-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Google Compute Engine SDK.
--   
--   Creates and runs virtual machines on Google Cloud Platform.
--   
--   <i>Warning:</i> 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 <tt>v1</tt> of the API.
@package gogol-compute
@version 0.3.0


module Network.Google.Compute.Types

-- | Default request referring to version <tt>v1</tt> of the Compute Engine
--   API. This contains the host and root path used as a starting point for
--   constructing service requests.
computeService :: ServiceConfig

-- | View and manage your Google Compute Engine resources
computeScope :: Proxy '["https://www.googleapis.com/auth/compute"]

-- | View and manage your data across Google Cloud Platform services
cloudPlatformScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform"]

-- | View your data in Google Cloud Storage
storageReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/devstorage.read_only"]

-- | Manage your data in Google Cloud Storage
storageReadWriteScope :: Proxy '["https://www.googleapis.com/auth/devstorage.read_write"]

-- | View your Google Compute Engine resources
computeReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/compute.readonly"]

-- | Manage your data and permissions in Google Cloud Storage
storageFullControlScope :: Proxy '["https://www.googleapis.com/auth/devstorage.full_control"]

-- | Contains a list of TargetHttpsProxy resources.
--   
--   <i>See:</i> <a>targetHTTPSProxyList</a> smart constructor.
data TargetHTTPSProxyList

-- | Creates a value of <a>TargetHTTPSProxyList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>thplNextPageToken</a></li>
--   <li><a>thplKind</a></li>
--   <li><a>thplItems</a></li>
--   <li><a>thplSelfLink</a></li>
--   <li><a>thplId</a></li>
--   </ul>
targetHTTPSProxyList :: TargetHTTPSProxyList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
thplNextPageToken :: Lens' TargetHTTPSProxyList (Maybe Text)

-- | Type of resource. Always compute#targetHttpsProxyList for lists of
--   target HTTPS proxies.
thplKind :: Lens' TargetHTTPSProxyList Text

-- | A list of TargetHttpsProxy resources.
thplItems :: Lens' TargetHTTPSProxyList [TargetHTTPSProxy]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
thplSelfLink :: Lens' TargetHTTPSProxyList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
thplId :: Lens' TargetHTTPSProxyList (Maybe Text)
data RoutersScopedList

-- | Creates a value of <a>RoutersScopedList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rslRouters</a></li>
--   <li><a>rslWarning</a></li>
--   </ul>
routersScopedList :: RoutersScopedList

-- | List of routers contained in this scope.
rslRouters :: Lens' RoutersScopedList [Router]

-- | Informational warning which replaces the list of routers when the list
--   is empty.
rslWarning :: Lens' RoutersScopedList (Maybe RoutersScopedListWarning)
data RouterStatusResponse

-- | Creates a value of <a>RouterStatusResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rsrKind</a></li>
--   <li><a>rsrResult</a></li>
--   </ul>
routerStatusResponse :: RouterStatusResponse

-- | Type of resource.
rsrKind :: Lens' RouterStatusResponse Text
rsrResult :: Lens' RouterStatusResponse (Maybe RouterStatus)
data RegionInstanceGroupManagersDeleteInstancesRequest

-- | Creates a value of
--   <a>RegionInstanceGroupManagersDeleteInstancesRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmdirInstances</a></li>
--   </ul>
regionInstanceGroupManagersDeleteInstancesRequest :: RegionInstanceGroupManagersDeleteInstancesRequest

-- | The names of one or more instances to delete.
rigmdirInstances :: Lens' RegionInstanceGroupManagersDeleteInstancesRequest [Text]
data AddressesScopedList

-- | Creates a value of <a>AddressesScopedList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aslAddresses</a></li>
--   <li><a>aslWarning</a></li>
--   </ul>
addressesScopedList :: AddressesScopedList

-- | <ul>
--   <li><i>Output Only</i> List of addresses contained in this scope.</li>
--   </ul>
aslAddresses :: Lens' AddressesScopedList [Address]

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of addresses when the list is empty.</li>
--   </ul>
aslWarning :: Lens' AddressesScopedList (Maybe AddressesScopedListWarning)
data OperationWarningsItemDataItem

-- | Creates a value of <a>OperationWarningsItemDataItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>owidiValue</a></li>
--   <li><a>owidiKey</a></li>
--   </ul>
operationWarningsItemDataItem :: OperationWarningsItemDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
owidiValue :: Lens' OperationWarningsItemDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
owidiKey :: Lens' OperationWarningsItemDataItem (Maybe Text)

-- | Defines the maintenance behavior for this instance. For standard
--   instances, the default behavior is MIGRATE. For preemptible instances,
--   the default and only possible behavior is TERMINATE. For more
--   information, see Setting Instance Scheduling Options.
data SchedulingOnHostMaintenance

-- | <pre>
--   MIGRATE
--   </pre>
Migrate :: SchedulingOnHostMaintenance

-- | <pre>
--   TERMINATE
--   </pre>
Terminate :: SchedulingOnHostMaintenance
data RegionInstanceGroupsListInstancesRequest

-- | Creates a value of <a>RegionInstanceGroupsListInstancesRequest</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>riglirInstanceState</a></li>
--   <li><a>riglirPortName</a></li>
--   </ul>
regionInstanceGroupsListInstancesRequest :: RegionInstanceGroupsListInstancesRequest

-- | Instances in which state should be returned. Valid options are: 'ALL',
--   'RUNNING'. By default, it lists all instances.
riglirInstanceState :: Lens' RegionInstanceGroupsListInstancesRequest (Maybe RegionInstanceGroupsListInstancesRequestInstanceState)

-- | Name of port user is interested in. It is optional. If it is set, only
--   information about this ports will be returned. If it is not set, all
--   the named ports will be returned. Always lists all instances.
riglirPortName :: Lens' RegionInstanceGroupsListInstancesRequest (Maybe Text)

-- | Defines how target utilization value is expressed for a Stackdriver
--   Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or
--   DELTA_PER_MINUTE. If not specified, the default is GAUGE.
data AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType

-- | <pre>
--   DELTA_PER_MINUTE
--   </pre>
DeltaPerMinute :: AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType

-- | <pre>
--   DELTA_PER_SECOND
--   </pre>
DeltaPerSecond :: AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType

-- | <pre>
--   GAUGE
--   </pre>
Gauge :: AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType
data InstanceGroupManagersAbandonInstancesRequest

-- | Creates a value of <a>InstanceGroupManagersAbandonInstancesRequest</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmairInstances</a></li>
--   </ul>
instanceGroupManagersAbandonInstancesRequest :: InstanceGroupManagersAbandonInstancesRequest

-- | The URL for one or more instances to abandon from the managed instance
--   group.
igmairInstances :: Lens' InstanceGroupManagersAbandonInstancesRequest [Text]

-- | <ul>
--   <li><i>Output Only</i> A map of scoped machine type lists.</li>
--   </ul>
--   
--   <i>See:</i> <a>machineTypeAggregatedListItems</a> smart constructor.
data MachineTypeAggregatedListItems

-- | Creates a value of <a>MachineTypeAggregatedListItems</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mtaliAddtional</a></li>
--   </ul>
machineTypeAggregatedListItems :: HashMap Text MachineTypesScopedList -> MachineTypeAggregatedListItems

-- | <ul>
--   <li><i>Output Only</i> Name of the scope containing this set of
--   machine types.</li>
--   </ul>
mtaliAddtional :: Lens' MachineTypeAggregatedListItems (HashMap Text MachineTypesScopedList)

-- | <ul>
--   <li><i>Output Only</i> A map of scoped disk type lists.</li>
--   </ul>
--   
--   <i>See:</i> <a>diskTypeAggregatedListItems</a> smart constructor.
data DiskTypeAggregatedListItems

-- | Creates a value of <a>DiskTypeAggregatedListItems</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtaliAddtional</a></li>
--   </ul>
diskTypeAggregatedListItems :: HashMap Text DiskTypesScopedList -> DiskTypeAggregatedListItems

-- | <ul>
--   <li><i>Output Only</i> Name of the scope containing this set of disk
--   types.</li>
--   </ul>
dtaliAddtional :: Lens' DiskTypeAggregatedListItems (HashMap Text DiskTypesScopedList)

-- | Contains a list of routers.
--   
--   <i>See:</i> <a>routerAggregatedList</a> smart constructor.
data RouterAggregatedList

-- | Creates a value of <a>RouterAggregatedList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ralNextPageToken</a></li>
--   <li><a>ralKind</a></li>
--   <li><a>ralItems</a></li>
--   <li><a>ralSelfLink</a></li>
--   <li><a>ralId</a></li>
--   </ul>
routerAggregatedList :: RouterAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
ralNextPageToken :: Lens' RouterAggregatedList (Maybe Text)

-- | Type of resource.
ralKind :: Lens' RouterAggregatedList Text

-- | A map of scoped router lists.
ralItems :: Lens' RouterAggregatedList (Maybe RouterAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
ralSelfLink :: Lens' RouterAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
ralId :: Lens' RouterAggregatedList (Maybe Text)

-- | Contains a list of firewalls.
--   
--   <i>See:</i> <a>firewallList</a> smart constructor.
data FirewallList

-- | Creates a value of <a>FirewallList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>flNextPageToken</a></li>
--   <li><a>flKind</a></li>
--   <li><a>flItems</a></li>
--   <li><a>flSelfLink</a></li>
--   <li><a>flId</a></li>
--   </ul>
firewallList :: FirewallList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
flNextPageToken :: Lens' FirewallList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#firewallList
--   for lists of firewalls.</li>
--   </ul>
flKind :: Lens' FirewallList Text

-- | <ul>
--   <li><i>Output Only</i> A list of Firewall resources.</li>
--   </ul>
flItems :: Lens' FirewallList [Firewall]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
flSelfLink :: Lens' FirewallList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
flId :: Lens' FirewallList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of instances when the list is empty.</li>
--   </ul>
--   
--   <i>See:</i> <a>instancesScopedListWarning</a> smart constructor.
data InstancesScopedListWarning

-- | Creates a value of <a>InstancesScopedListWarning</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>islwData</a></li>
--   <li><a>islwCode</a></li>
--   <li><a>islwMessage</a></li>
--   </ul>
instancesScopedListWarning :: InstancesScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
islwData :: Lens' InstancesScopedListWarning [InstancesScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
islwCode :: Lens' InstancesScopedListWarning (Maybe InstancesScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
islwMessage :: Lens' InstancesScopedListWarning (Maybe Text)
data RegionInstanceGroupManagersRecreateRequest

-- | Creates a value of <a>RegionInstanceGroupManagersRecreateRequest</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmrrInstances</a></li>
--   </ul>
regionInstanceGroupManagersRecreateRequest :: RegionInstanceGroupManagersRecreateRequest

-- | The URL for one or more instances to recreate.
rigmrrInstances :: Lens' RegionInstanceGroupManagersRecreateRequest [Text]

-- | Informational warning which replaces the list of backend services when
--   the list is empty.
--   
--   <i>See:</i> <a>backendServicesScopedListWarning</a> smart constructor.
data BackendServicesScopedListWarning

-- | Creates a value of <a>BackendServicesScopedListWarning</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bsslwData</a></li>
--   <li><a>bsslwCode</a></li>
--   <li><a>bsslwMessage</a></li>
--   </ul>
backendServicesScopedListWarning :: BackendServicesScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
bsslwData :: Lens' BackendServicesScopedListWarning [BackendServicesScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
bsslwCode :: Lens' BackendServicesScopedListWarning (Maybe BackendServicesScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
bsslwMessage :: Lens' BackendServicesScopedListWarning (Maybe Text)

-- | A list of InstanceGroup resources.
--   
--   <i>See:</i> <a>instanceGroupList</a> smart constructor.
data InstanceGroupList

-- | Creates a value of <a>InstanceGroupList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iglNextPageToken</a></li>
--   <li><a>iglKind</a></li>
--   <li><a>iglItems</a></li>
--   <li><a>iglSelfLink</a></li>
--   <li><a>iglId</a></li>
--   </ul>
instanceGroupList :: InstanceGroupList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
iglNextPageToken :: Lens' InstanceGroupList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The resource type, which is always
--   compute#instanceGroupList for instance group lists.</li>
--   </ul>
iglKind :: Lens' InstanceGroupList Text

-- | A list of instance groups.
iglItems :: Lens' InstanceGroupList [InstanceGroup]

-- | <ul>
--   <li><i>Output Only</i> The URL for this resource type. The server
--   generates this URL.</li>
--   </ul>
iglSelfLink :: Lens' InstanceGroupList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A unique identifier for this list of instance
--   groups. The server generates this identifier.</li>
--   </ul>
iglId :: Lens' InstanceGroupList (Maybe Text)
data InstancesSetMachineTypeRequest

-- | Creates a value of <a>InstancesSetMachineTypeRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ismtrMachineType</a></li>
--   </ul>
instancesSetMachineTypeRequest :: InstancesSetMachineTypeRequest

-- | Full or partial URL of the machine type resource. See Machine Types
--   for a full list of machine types. For example:
--   zones/us-central1-f/machineTypes/n1-standard-1
ismtrMachineType :: Lens' InstancesSetMachineTypeRequest (Maybe Text)

-- | Represents a customer-supplied encryption key
--   
--   <i>See:</i> <a>customerEncryptionKey</a> smart constructor.
data CustomerEncryptionKey

-- | Creates a value of <a>CustomerEncryptionKey</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cekSha256</a></li>
--   <li><a>cekRawKey</a></li>
--   </ul>
customerEncryptionKey :: CustomerEncryptionKey

-- | <ul>
--   <li><i>Output only</i> The RFC 4648 base64 encoded SHA-256 hash of the
--   customer-supplied encryption key that protects this resource.</li>
--   </ul>
cekSha256 :: Lens' CustomerEncryptionKey (Maybe Text)

-- | Specifies a 256-bit customer-supplied encryption key, encoded in RFC
--   4648 base64 to either encrypt or decrypt this resource.
cekRawKey :: Lens' CustomerEncryptionKey (Maybe Text)

-- | A map of scoped autoscaler lists.
--   
--   <i>See:</i> <a>autoscalerAggregatedListItems</a> smart constructor.
data AutoscalerAggregatedListItems

-- | Creates a value of <a>AutoscalerAggregatedListItems</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aaliAddtional</a></li>
--   </ul>
autoscalerAggregatedListItems :: HashMap Text AutoscalersScopedList -> AutoscalerAggregatedListItems

-- | <ul>
--   <li><i>Output Only</i> Name of the scope containing this set of
--   autoscalers.</li>
--   </ul>
aaliAddtional :: Lens' AutoscalerAggregatedListItems (HashMap Text AutoscalersScopedList)
data InstanceGroupManagersSetInstanceTemplateRequest

-- | Creates a value of
--   <a>InstanceGroupManagersSetInstanceTemplateRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmsitrInstanceTemplate</a></li>
--   </ul>
instanceGroupManagersSetInstanceTemplateRequest :: InstanceGroupManagersSetInstanceTemplateRequest

-- | The URL of the instance template that is specified for this managed
--   instance group. The group uses this template to create all new
--   instances in the managed instance group.
igmsitrInstanceTemplate :: Lens' InstanceGroupManagersSetInstanceTemplateRequest (Maybe Text)

-- | Deprecation status for a public resource.
--   
--   <i>See:</i> <a>deprecationStatus</a> smart constructor.
data DeprecationStatus

-- | Creates a value of <a>DeprecationStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsState</a></li>
--   <li><a>dsDeleted</a></li>
--   <li><a>dsReplacement</a></li>
--   <li><a>dsObsolete</a></li>
--   <li><a>dsDeprecated</a></li>
--   </ul>
deprecationStatus :: DeprecationStatus

-- | The deprecation state of this resource. This can be DEPRECATED,
--   OBSOLETE, or DELETED. Operations which create a new resource using a
--   DEPRECATED resource will return successfully, but with a warning
--   indicating the deprecated resource and recommending its replacement.
--   Operations which use OBSOLETE or DELETED resources will be rejected
--   and result in an error.
dsState :: Lens' DeprecationStatus (Maybe DeprecationStatusState)

-- | An optional RFC3339 timestamp on or after which the state of this
--   resource is intended to change to DELETED. This is only informational
--   and the status will not change unless the client explicitly changes
--   it.
dsDeleted :: Lens' DeprecationStatus (Maybe Text)

-- | The URL of the suggested replacement for a deprecated resource. The
--   suggested replacement resource must be the same kind of resource as
--   the deprecated resource.
dsReplacement :: Lens' DeprecationStatus (Maybe Text)

-- | An optional RFC3339 timestamp on or after which the state of this
--   resource is intended to change to OBSOLETE. This is only informational
--   and the status will not change unless the client explicitly changes
--   it.
dsObsolete :: Lens' DeprecationStatus (Maybe Text)

-- | An optional RFC3339 timestamp on or after which the state of this
--   resource is intended to change to DEPRECATED. This is only
--   informational and the status will not change unless the client
--   explicitly changes it.
dsDeprecated :: Lens' DeprecationStatus (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data OperationWarningsItemCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
CleanupFailed :: OperationWarningsItemCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
DeprecatedResourceUsed :: OperationWarningsItemCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
DiskSizeLargerThanImageSize :: OperationWarningsItemCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
FieldValueOverriden :: OperationWarningsItemCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
InjectedKernelsDeprecated :: OperationWarningsItemCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
NextHopAddressNotAssigned :: OperationWarningsItemCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
NextHopCannotIPForward :: OperationWarningsItemCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
NextHopInstanceNotFound :: OperationWarningsItemCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
NextHopInstanceNotOnNetwork :: OperationWarningsItemCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
NextHopNotRunning :: OperationWarningsItemCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
NotCriticalError :: OperationWarningsItemCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
NoResultsOnPage :: OperationWarningsItemCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
RequiredTosAgreement :: OperationWarningsItemCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
ResourceNotDeleted :: OperationWarningsItemCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
SingleInstancePropertyTemplate :: OperationWarningsItemCode

-- | <pre>
--   UNREACHABLE
--   </pre>
Unreachable :: OperationWarningsItemCode

-- | A persistent disk snapshot resource.
--   
--   <i>See:</i> <a>snapshot</a> smart constructor.
data Snapshot

-- | Creates a value of <a>Snapshot</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sStorageBytesStatus</a></li>
--   <li><a>sStatus</a></li>
--   <li><a>sDiskSizeGb</a></li>
--   <li><a>sSourceDiskId</a></li>
--   <li><a>sKind</a></li>
--   <li><a>sSourceDiskEncryptionKey</a></li>
--   <li><a>sStorageBytes</a></li>
--   <li><a>sSelfLink</a></li>
--   <li><a>sSnapshotEncryptionKey</a></li>
--   <li><a>sName</a></li>
--   <li><a>sCreationTimestamp</a></li>
--   <li><a>sId</a></li>
--   <li><a>sLicenses</a></li>
--   <li><a>sSourceDisk</a></li>
--   <li><a>sDescription</a></li>
--   </ul>
snapshot :: Snapshot

-- | <ul>
--   <li><i>Output Only</i> An indicator whether storageBytes is in a
--   stable state or it is being adjusted as a result of shared storage
--   reallocation. This status can either be UPDATING, meaning the size of
--   the snapshot is being updated, or UP_TO_DATE, meaning the size of the
--   snapshot is up-to-date.</li>
--   </ul>
sStorageBytesStatus :: Lens' Snapshot (Maybe SnapshotStorageBytesStatus)

-- | <ul>
--   <li><i>Output Only</i> The status of the snapshot. This can be
--   CREATING, DELETING, FAILED, READY, or UPLOADING.</li>
--   </ul>
sStatus :: Lens' Snapshot (Maybe SnapshotStatus)

-- | <ul>
--   <li><i>Output Only</i> Size of the snapshot, specified in GB.</li>
--   </ul>
sDiskSizeGb :: Lens' Snapshot (Maybe Int64)

-- | <ul>
--   <li><i>Output Only</i> The ID value of the disk used to create this
--   snapshot. This value may be used to determine whether the snapshot was
--   taken from the current or a previous instance of a given disk
--   name.</li>
--   </ul>
sSourceDiskId :: Lens' Snapshot (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#snapshot
--   for Snapshot resources.</li>
--   </ul>
sKind :: Lens' Snapshot Text

-- | The customer-supplied encryption key of the source disk. Required if
--   the source disk is protected by a customer-supplied encryption key.
sSourceDiskEncryptionKey :: Lens' Snapshot (Maybe CustomerEncryptionKey)

-- | <ul>
--   <li><i>Output Only</i> A size of the the storage used by the snapshot.
--   As snapshots share storage, this number is expected to change with
--   snapshot creation/deletion.</li>
--   </ul>
sStorageBytes :: Lens' Snapshot (Maybe Int64)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
sSelfLink :: Lens' Snapshot (Maybe Text)

-- | Encrypts the snapshot using a customer-supplied encryption key. After
--   you encrypt a snapshot using a customer-supplied key, you must provide
--   the same key if you use the image later For example, you must provide
--   the encryption key when you create a disk from the encrypted snapshot
--   in a future request. Customer-supplied encryption keys do not protect
--   access to metadata of the disk. If you do not provide an encryption
--   key when creating the snapshot, then the snapshot will be encrypted
--   using an automatically generated key and you do not need to provide a
--   key to use the snapshot later.
sSnapshotEncryptionKey :: Lens' Snapshot (Maybe CustomerEncryptionKey)

-- | Name of the resource; provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
sName :: Lens' Snapshot (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
sCreationTimestamp :: Lens' Snapshot (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
sId :: Lens' Snapshot (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> A list of public visible licenses that apply to
--   this snapshot. This can be because the original image had licenses
--   attached (such as a Windows image).</li>
--   </ul>
sLicenses :: Lens' Snapshot [Text]

-- | <ul>
--   <li><i>Output Only</i> The source disk used to create this
--   snapshot.</li>
--   </ul>
sSourceDisk :: Lens' Snapshot (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
sDescription :: Lens' Snapshot (Maybe Text)
data RouterStatus

-- | Creates a value of <a>RouterStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rsBGPPeerStatus</a></li>
--   <li><a>rsNetwork</a></li>
--   <li><a>rsBestRoutes</a></li>
--   </ul>
routerStatus :: RouterStatus
rsBGPPeerStatus :: Lens' RouterStatus [RouterStatusBGPPeerStatus]

-- | URI of the network to which this router belongs.
rsNetwork :: Lens' RouterStatus (Maybe Text)

-- | Best routes for this router's network.
rsBestRoutes :: Lens' RouterStatus [Route]

-- | Custom utilization metric policy.
--   
--   <i>See:</i> <a>autoscalingPolicyCustomMetricUtilization</a> smart
--   constructor.
data AutoscalingPolicyCustomMetricUtilization

-- | Creates a value of <a>AutoscalingPolicyCustomMetricUtilization</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>apcmuUtilizationTarget</a></li>
--   <li><a>apcmuMetric</a></li>
--   <li><a>apcmuUtilizationTargetType</a></li>
--   </ul>
autoscalingPolicyCustomMetricUtilization :: AutoscalingPolicyCustomMetricUtilization

-- | Target value of the metric which autoscaler should maintain. Must be a
--   positive value.
apcmuUtilizationTarget :: Lens' AutoscalingPolicyCustomMetricUtilization (Maybe Double)

-- | The identifier of the Stackdriver Monitoring metric. The metric cannot
--   have negative values and should be a utilization metric, which means
--   that the number of virtual machines handling requests should increase
--   or decrease proportionally to the metric. The metric must also have a
--   label of compute.googleapis.com/resource_id with the value of the
--   instance's unique ID, although this alone does not guarantee that the
--   metric is valid. For example, the following is a valid metric:
--   compute.googleapis.com/instance/network/received_bytes_count The
--   following is not a valid metric because it does not increase or
--   decrease based on usage:
--   compute.googleapis.com/instance/cpu/reserved_cores
apcmuMetric :: Lens' AutoscalingPolicyCustomMetricUtilization (Maybe Text)

-- | Defines how target utilization value is expressed for a Stackdriver
--   Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or
--   DELTA_PER_MINUTE. If not specified, the default is GAUGE.
apcmuUtilizationTargetType :: Lens' AutoscalingPolicyCustomMetricUtilization (Maybe AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType)

-- | Contains a list of ForwardingRule resources.
--   
--   <i>See:</i> <a>forwardingRuleList</a> smart constructor.
data ForwardingRuleList

-- | Creates a value of <a>ForwardingRuleList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>frlNextPageToken</a></li>
--   <li><a>frlKind</a></li>
--   <li><a>frlItems</a></li>
--   <li><a>frlSelfLink</a></li>
--   <li><a>frlId</a></li>
--   </ul>
forwardingRuleList :: ForwardingRuleList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
frlNextPageToken :: Lens' ForwardingRuleList (Maybe Text)

-- | Type of resource.
frlKind :: Lens' ForwardingRuleList Text

-- | A list of ForwardingRule resources.
frlItems :: Lens' ForwardingRuleList [ForwardingRule]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
frlSelfLink :: Lens' ForwardingRuleList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource. Set by the
--   server.</li>
--   </ul>
frlId :: Lens' ForwardingRuleList (Maybe Text)
data VPNTunnelsScopedList

-- | Creates a value of <a>VPNTunnelsScopedList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vtslVPNTunnels</a></li>
--   <li><a>vtslWarning</a></li>
--   </ul>
vpnTunnelsScopedList :: VPNTunnelsScopedList

-- | List of vpn tunnels contained in this scope.
vtslVPNTunnels :: Lens' VPNTunnelsScopedList [VPNTunnel]

-- | Informational warning which replaces the list of addresses when the
--   list is empty.
vtslWarning :: Lens' VPNTunnelsScopedList (Maybe VPNTunnelsScopedListWarning)

-- | The protocol this BackendService uses to communicate with backends.
--   Possible values are HTTP, HTTPS, HTTP2, TCP and SSL. The default is
--   HTTP. For internal load balancing, the possible values are TCP and
--   UDP, and the default is TCP.
data BackendServiceProtocol

-- | <pre>
--   HTTP
--   </pre>
HTTP :: BackendServiceProtocol

-- | <pre>
--   HTTPS
--   </pre>
HTTPS :: BackendServiceProtocol

-- | <pre>
--   SSL
--   </pre>
SSL :: BackendServiceProtocol

-- | <pre>
--   TCP
--   </pre>
TCP :: BackendServiceProtocol

-- | <pre>
--   UDP
--   </pre>
Udp :: BackendServiceProtocol
data InstanceGroupsSetNamedPortsRequest

-- | Creates a value of <a>InstanceGroupsSetNamedPortsRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igsnprFingerprint</a></li>
--   <li><a>igsnprNamedPorts</a></li>
--   </ul>
instanceGroupsSetNamedPortsRequest :: InstanceGroupsSetNamedPortsRequest

-- | The fingerprint of the named ports information for this instance
--   group. Use this optional property to prevent conflicts when multiple
--   users change the named ports settings concurrently. Obtain the
--   fingerprint with the instanceGroups.get method. Then, include the
--   fingerprint in your request to ensure that you do not overwrite
--   changes that were applied from another concurrent request.
igsnprFingerprint :: Lens' InstanceGroupsSetNamedPortsRequest (Maybe ByteString)

-- | The list of named ports to set for this instance group.
igsnprNamedPorts :: Lens' InstanceGroupsSetNamedPortsRequest [NamedPort]

-- | Contains a list of Operation resources.
--   
--   <i>See:</i> <a>operationList</a> smart constructor.
data OperationList

-- | Creates a value of <a>OperationList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>olNextPageToken</a></li>
--   <li><a>olKind</a></li>
--   <li><a>olItems</a></li>
--   <li><a>olSelfLink</a></li>
--   <li><a>olId</a></li>
--   </ul>
operationList :: OperationList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
olNextPageToken :: Lens' OperationList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#operations for
--   Operations resource.</li>
--   </ul>
olKind :: Lens' OperationList Text

-- | <ul>
--   <li><i>Output Only</i> A list of Operation resources.</li>
--   </ul>
olItems :: Lens' OperationList [Operation]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
olSelfLink :: Lens' OperationList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
olId :: Lens' OperationList (Maybe Text)

-- | A list of Disk resources.
--   
--   <i>See:</i> <a>diskList</a> smart constructor.
data DiskList

-- | Creates a value of <a>DiskList</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dlNextPageToken</a></li>
--   <li><a>dlKind</a></li>
--   <li><a>dlItems</a></li>
--   <li><a>dlSelfLink</a></li>
--   <li><a>dlId</a></li>
--   </ul>
diskList :: DiskList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
dlNextPageToken :: Lens' DiskList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#diskList for
--   lists of disks.</li>
--   </ul>
dlKind :: Lens' DiskList Text

-- | <ul>
--   <li><i>Output Only</i> A list of persistent disks.</li>
--   </ul>
dlItems :: Lens' DiskList [Disk]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
dlSelfLink :: Lens' DiskList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
dlId :: Lens' DiskList (Maybe Text)
data TargetPoolsAddInstanceRequest

-- | Creates a value of <a>TargetPoolsAddInstanceRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpairInstances</a></li>
--   </ul>
targetPoolsAddInstanceRequest :: TargetPoolsAddInstanceRequest

-- | A full or partial URL to an instance to add to this target pool. This
--   can be a full or partial URL. For example, the following are valid
--   URLs: -
--   https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-name
--   - projects/project-id/zones/zone/instances/instance-name -
--   zones/zone/instances/instance-name
tpairInstances :: Lens' TargetPoolsAddInstanceRequest [InstanceReference]

-- | Contains a list of autoscalers.
--   
--   <i>See:</i> <a>regionAutoscalerList</a> smart constructor.
data RegionAutoscalerList

-- | Creates a value of <a>RegionAutoscalerList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rNextPageToken</a></li>
--   <li><a>rKind</a></li>
--   <li><a>rItems</a></li>
--   <li><a>rSelfLink</a></li>
--   <li><a>rId</a></li>
--   </ul>
regionAutoscalerList :: RegionAutoscalerList

-- | <ul>
--   <li><i>Output Only</i> A token used to continue a truncated list
--   request.</li>
--   </ul>
rNextPageToken :: Lens' RegionAutoscalerList (Maybe Text)

-- | Type of resource.
rKind :: Lens' RegionAutoscalerList Text

-- | A list of autoscalers.
rItems :: Lens' RegionAutoscalerList [Autoscaler]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
rSelfLink :: Lens' RegionAutoscalerList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
rId :: Lens' RegionAutoscalerList (Maybe Text)
data InstanceGroupsAddInstancesRequest

-- | Creates a value of <a>InstanceGroupsAddInstancesRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igairInstances</a></li>
--   </ul>
instanceGroupsAddInstancesRequest :: InstanceGroupsAddInstancesRequest

-- | The list of instances to add to the instance group.
igairInstances :: Lens' InstanceGroupsAddInstancesRequest [InstanceReference]

-- | <ul>
--   <li><i>Output Only</i> A list of managed instance groups.</li>
--   </ul>
--   
--   <i>See:</i> <a>instanceGroupManagerList</a> smart constructor.
data InstanceGroupManagerList

-- | Creates a value of <a>InstanceGroupManagerList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmlNextPageToken</a></li>
--   <li><a>igmlKind</a></li>
--   <li><a>igmlItems</a></li>
--   <li><a>igmlSelfLink</a></li>
--   <li><a>igmlId</a></li>
--   </ul>
instanceGroupManagerList :: InstanceGroupManagerList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
igmlNextPageToken :: Lens' InstanceGroupManagerList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The resource type, which is always
--   compute#instanceGroupManagerList for a list of managed instance
--   groups.</li>
--   </ul>
igmlKind :: Lens' InstanceGroupManagerList Text

-- | <ul>
--   <li><i>Output Only</i> A list of managed instance groups.</li>
--   </ul>
igmlItems :: Lens' InstanceGroupManagerList [InstanceGroupManager]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
igmlSelfLink :: Lens' InstanceGroupManagerList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A unique identifier for this resource type. The
--   server generates this identifier.</li>
--   </ul>
igmlId :: Lens' InstanceGroupManagerList (Maybe Text)

-- | An informational warning that appears when the list of addresses is
--   empty.
--   
--   <i>See:</i> <a>subnetworksScopedListWarning</a> smart constructor.
data SubnetworksScopedListWarning

-- | Creates a value of <a>SubnetworksScopedListWarning</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sslwData</a></li>
--   <li><a>sslwCode</a></li>
--   <li><a>sslwMessage</a></li>
--   </ul>
subnetworksScopedListWarning :: SubnetworksScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
sslwData :: Lens' SubnetworksScopedListWarning [SubnetworksScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
sslwCode :: Lens' SubnetworksScopedListWarning (Maybe SubnetworksScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
sslwMessage :: Lens' SubnetworksScopedListWarning (Maybe Text)

-- | Specifies the type of the disk, either SCRATCH or PERSISTENT. If not
--   specified, the default is PERSISTENT.
data AttachedDiskType

-- | <pre>
--   PERSISTENT
--   </pre>
Persistent :: AttachedDiskType

-- | <pre>
--   SCRATCH
--   </pre>
Scratch :: AttachedDiskType

-- | An Image resource.
--   
--   <i>See:</i> <a>image</a> smart constructor.
data Image

-- | Creates a value of <a>Image</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iStatus</a></li>
--   <li><a>iImageEncryptionKey</a></li>
--   <li><a>iDiskSizeGb</a></li>
--   <li><a>iSourceType</a></li>
--   <li><a>iSourceDiskId</a></li>
--   <li><a>iKind</a></li>
--   <li><a>iSourceDiskEncryptionKey</a></li>
--   <li><a>iGuestOSFeatures</a></li>
--   <li><a>iArchiveSizeBytes</a></li>
--   <li><a>iFamily</a></li>
--   <li><a>iRawDisk</a></li>
--   <li><a>iSelfLink</a></li>
--   <li><a>iName</a></li>
--   <li><a>iCreationTimestamp</a></li>
--   <li><a>iId</a></li>
--   <li><a>iLicenses</a></li>
--   <li><a>iSourceDisk</a></li>
--   <li><a>iDescription</a></li>
--   <li><a>iDeprecated</a></li>
--   </ul>
image :: Image

-- | <ul>
--   <li><i>Output Only</i> The status of the image. An image can be used
--   to create other resources, such as instances, only after the image has
--   been successfully created and the status is set to READY. Possible
--   values are FAILED, PENDING, or READY.</li>
--   </ul>
iStatus :: Lens' Image (Maybe ImageStatus)

-- | Encrypts the image using a customer-supplied encryption key. After you
--   encrypt an image with a customer-supplied key, you must provide the
--   same key if you use the image later (e.g. to create a disk from the
--   image). Customer-supplied encryption keys do not protect access to
--   metadata of the disk. If you do not provide an encryption key when
--   creating the image, then the disk will be encrypted using an
--   automatically generated key and you do not need to provide a key to
--   use the image later.
iImageEncryptionKey :: Lens' Image (Maybe CustomerEncryptionKey)

-- | Size of the image when restored onto a persistent disk (in GB).
iDiskSizeGb :: Lens' Image (Maybe Int64)

-- | The type of the image used to create this disk. The default and only
--   value is RAW
iSourceType :: Lens' Image ImageSourceType

-- | The ID value of the disk used to create this image. This value may be
--   used to determine whether the image was taken from the current or a
--   previous instance of a given disk name.
iSourceDiskId :: Lens' Image (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#image for
--   images.</li>
--   </ul>
iKind :: Lens' Image Text

-- | The customer-supplied encryption key of the source disk. Required if
--   the source disk is protected by a customer-supplied encryption key.
iSourceDiskEncryptionKey :: Lens' Image (Maybe CustomerEncryptionKey)

-- | A list of features to enable on the guest OS. Applicable for bootable
--   images only. Currently, only one feature can be enabled,
--   VIRTIO_SCSCI_MULTIQUEUE, which allows each virtual CPU to have its own
--   queue. For Windows images, you can only enable VIRTIO_SCSCI_MULTIQUEUE
--   on images with driver version 1.2.0.1621 or higher. Linux images with
--   kernel versions 3.17 and higher will support VIRTIO_SCSCI_MULTIQUEUE.
--   For new Windows images, the server might also populate this field with
--   the value WINDOWS, to indicate that this is a Windows image. This
--   value is purely informational and does not enable or disable any
--   features.
iGuestOSFeatures :: Lens' Image [GuestOSFeature]

-- | Size of the image tar.gz archive stored in Google Cloud Storage (in
--   bytes).
iArchiveSizeBytes :: Lens' Image (Maybe Int64)

-- | The name of the image family to which this image belongs. You can
--   create disks by specifying an image family instead of a specific image
--   name. The image family always returns its latest image that is not
--   deprecated. The name of the image family must comply with RFC1035.
iFamily :: Lens' Image (Maybe Text)

-- | The parameters of the raw disk image.
iRawDisk :: Lens' Image (Maybe ImageRawDisk)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
iSelfLink :: Lens' Image (Maybe Text)

-- | Name of the resource; provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
iName :: Lens' Image (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
iCreationTimestamp :: Lens' Image (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
iId :: Lens' Image (Maybe Word64)

-- | Any applicable license URI.
iLicenses :: Lens' Image [Text]

-- | URL of the source disk used to create this image. This can be a full
--   or valid partial URL. You must provide either this property or the
--   rawDisk.source property but not both to create an image. For example,
--   the following are valid values: -
--   https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk
--   - projects/project/zones/zone/disks/disk - zones/zone/disks/disk
iSourceDisk :: Lens' Image (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
iDescription :: Lens' Image (Maybe Text)

-- | The deprecation status associated with this image.
iDeprecated :: Lens' Image (Maybe DeprecationStatus)

-- | A UrlMap resource. This resource defines the mapping from URL to the
--   BackendService resource, based on the "longest-match" of the URL's
--   host and path.
--   
--   <i>See:</i> <a>urlMap</a> smart constructor.
data URLMap

-- | Creates a value of <a>URLMap</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umTests</a></li>
--   <li><a>umKind</a></li>
--   <li><a>umFingerprint</a></li>
--   <li><a>umDefaultService</a></li>
--   <li><a>umSelfLink</a></li>
--   <li><a>umName</a></li>
--   <li><a>umCreationTimestamp</a></li>
--   <li><a>umPathMatchers</a></li>
--   <li><a>umId</a></li>
--   <li><a>umHostRules</a></li>
--   <li><a>umDescription</a></li>
--   </ul>
urlMap :: URLMap

-- | The list of expected URL mappings. Request to update this UrlMap will
--   succeed only if all of the test cases pass.
umTests :: Lens' URLMap [URLMapTest]

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#urlMaps
--   for url maps.</li>
--   </ul>
umKind :: Lens' URLMap Text

-- | Fingerprint of this resource. A hash of the contents stored in this
--   object. This field is used in optimistic locking. This field will be
--   ignored when inserting a UrlMap. An up-to-date fingerprint must be
--   provided in order to update the UrlMap.
umFingerprint :: Lens' URLMap (Maybe ByteString)

-- | The URL of the BackendService resource if none of the hostRules match.
umDefaultService :: Lens' URLMap (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
umSelfLink :: Lens' URLMap (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
umName :: Lens' URLMap (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
umCreationTimestamp :: Lens' URLMap (Maybe Text)

-- | The list of named PathMatchers to use against the URL.
umPathMatchers :: Lens' URLMap [PathMatcher]

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
umId :: Lens' URLMap (Maybe Word64)

-- | The list of HostRules to use against the URL.
umHostRules :: Lens' URLMap [HostRule]

-- | An optional description of this resource. Provide this property when
--   you create the resource.
umDescription :: Lens' URLMap (Maybe Text)

-- | A map of scoped instance group lists.
--   
--   <i>See:</i> <a>instanceGroupAggregatedListItems</a> smart constructor.
data InstanceGroupAggregatedListItems

-- | Creates a value of <a>InstanceGroupAggregatedListItems</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igaliAddtional</a></li>
--   </ul>
instanceGroupAggregatedListItems :: HashMap Text InstanceGroupsScopedList -> InstanceGroupAggregatedListItems

-- | The name of the scope that contains this set of instance groups.
igaliAddtional :: Lens' InstanceGroupAggregatedListItems (HashMap Text InstanceGroupsScopedList)

-- | Contains a list of TargetPool resources.
--   
--   <i>See:</i> <a>targetPoolList</a> smart constructor.
data TargetPoolList

-- | Creates a value of <a>TargetPoolList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tplNextPageToken</a></li>
--   <li><a>tplKind</a></li>
--   <li><a>tplItems</a></li>
--   <li><a>tplSelfLink</a></li>
--   <li><a>tplId</a></li>
--   </ul>
targetPoolList :: TargetPoolList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
tplNextPageToken :: Lens' TargetPoolList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#targetPoolList
--   for lists of target pools.</li>
--   </ul>
tplKind :: Lens' TargetPoolList Text

-- | A list of TargetPool resources.
tplItems :: Lens' TargetPoolList [TargetPool]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
tplSelfLink :: Lens' TargetPoolList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource. Defined by
--   the server.</li>
--   </ul>
tplId :: Lens' TargetPoolList (Maybe Text)
data TargetInstanceAggregatedList

-- | Creates a value of <a>TargetInstanceAggregatedList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tialNextPageToken</a></li>
--   <li><a>tialKind</a></li>
--   <li><a>tialItems</a></li>
--   <li><a>tialSelfLink</a></li>
--   <li><a>tialId</a></li>
--   </ul>
targetInstanceAggregatedList :: TargetInstanceAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
tialNextPageToken :: Lens' TargetInstanceAggregatedList (Maybe Text)

-- | Type of resource.
tialKind :: Lens' TargetInstanceAggregatedList Text

-- | A map of scoped target instance lists.
tialItems :: Lens' TargetInstanceAggregatedList (Maybe TargetInstanceAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
tialSelfLink :: Lens' TargetInstanceAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource; defined by
--   the server.</li>
--   </ul>
tialId :: Lens' TargetInstanceAggregatedList (Maybe Text)
data DisksScopedList

-- | Creates a value of <a>DisksScopedList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dslWarning</a></li>
--   <li><a>dslDisks</a></li>
--   </ul>
disksScopedList :: DisksScopedList

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of disks when the list is empty.</li>
--   </ul>
dslWarning :: Lens' DisksScopedList (Maybe DisksScopedListWarning)

-- | <ul>
--   <li><i>Output Only</i> List of disks contained in this scope.</li>
--   </ul>
dslDisks :: Lens' DisksScopedList [Disk]
data InstanceGroupManagersScopedList

-- | Creates a value of <a>InstanceGroupManagersScopedList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmslWarning</a></li>
--   <li><a>igmslInstanceGroupManagers</a></li>
--   </ul>
instanceGroupManagersScopedList :: InstanceGroupManagersScopedList

-- | <ul>
--   <li><i>Output Only</i> The warning that replaces the list of managed
--   instance groups when the list is empty.</li>
--   </ul>
igmslWarning :: Lens' InstanceGroupManagersScopedList (Maybe InstanceGroupManagersScopedListWarning)

-- | <ul>
--   <li><i>Output Only</i> The list of managed instance groups that are
--   contained in the specified project and zone.</li>
--   </ul>
igmslInstanceGroupManagers :: Lens' InstanceGroupManagersScopedList [InstanceGroupManager]

-- | An HealthCheck resource. This resource defines a template for how
--   individual virtual machines should be checked for health, via one of
--   the supported protocols.
--   
--   <i>See:</i> <a>healthCheck</a> smart constructor.
data HealthCheck

-- | Creates a value of <a>HealthCheck</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hcHealthyThreshold</a></li>
--   <li><a>hcTCPHealthCheck</a></li>
--   <li><a>hcKind</a></li>
--   <li><a>hcSSLHealthCheck</a></li>
--   <li><a>hcSelfLink</a></li>
--   <li><a>hcCheckIntervalSec</a></li>
--   <li><a>hcName</a></li>
--   <li><a>hcCreationTimestamp</a></li>
--   <li><a>hcHTTPHealthCheck</a></li>
--   <li><a>hcId</a></li>
--   <li><a>hcType</a></li>
--   <li><a>hcTimeoutSec</a></li>
--   <li><a>hcDescription</a></li>
--   <li><a>hcUnhealthyThreshold</a></li>
--   <li><a>hcHTTPSHealthCheck</a></li>
--   </ul>
healthCheck :: HealthCheck

-- | A so-far unhealthy instance will be marked healthy after this many
--   consecutive successes. The default value is 2.
hcHealthyThreshold :: Lens' HealthCheck (Maybe Int32)
hcTCPHealthCheck :: Lens' HealthCheck (Maybe TCPHealthCheck)

-- | Type of the resource.
hcKind :: Lens' HealthCheck Text
hcSSLHealthCheck :: Lens' HealthCheck (Maybe SSLHealthCheck)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
hcSelfLink :: Lens' HealthCheck (Maybe Text)

-- | How often (in seconds) to send a health check. The default value is 5
--   seconds.
hcCheckIntervalSec :: Lens' HealthCheck (Maybe Int32)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
hcName :: Lens' HealthCheck (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in 3339 text format.</li>
--   </ul>
hcCreationTimestamp :: Lens' HealthCheck (Maybe Text)
hcHTTPHealthCheck :: Lens' HealthCheck (Maybe HTTPHealthCheck)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
hcId :: Lens' HealthCheck (Maybe Word64)

-- | Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS.
--   If not specified, the default is TCP. Exactly one of the
--   protocol-specific health check field must be specified, which must
--   match type field.
hcType :: Lens' HealthCheck (Maybe HealthCheckType)

-- | How long (in seconds) to wait before claiming failure. The default
--   value is 5 seconds. It is invalid for timeoutSec to have greater value
--   than checkIntervalSec.
hcTimeoutSec :: Lens' HealthCheck (Maybe Int32)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
hcDescription :: Lens' HealthCheck (Maybe Text)

-- | A so-far healthy instance will be marked unhealthy after this many
--   consecutive failures. The default value is 2.
hcUnhealthyThreshold :: Lens' HealthCheck (Maybe Int32)
hcHTTPSHealthCheck :: Lens' HealthCheck (Maybe HTTPSHealthCheck)

-- | Specifies the type of proxy header to append before sending data to
--   the backend, either NONE or PROXY_V1. The default is NONE.
data TargetSSLProxyProxyHeader

-- | <pre>
--   NONE
--   </pre>
None :: TargetSSLProxyProxyHeader

-- | <pre>
--   PROXY_V1
--   </pre>
ProxyV1 :: TargetSSLProxyProxyHeader
data DiskAggregatedList

-- | Creates a value of <a>DiskAggregatedList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dalNextPageToken</a></li>
--   <li><a>dalKind</a></li>
--   <li><a>dalItems</a></li>
--   <li><a>dalSelfLink</a></li>
--   <li><a>dalId</a></li>
--   </ul>
diskAggregatedList :: DiskAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
dalNextPageToken :: Lens' DiskAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#diskAggregatedList for aggregated lists of persistent
--   disks.</li>
--   </ul>
dalKind :: Lens' DiskAggregatedList Text

-- | <ul>
--   <li><i>Output Only</i> A map of scoped disk lists.</li>
--   </ul>
dalItems :: Lens' DiskAggregatedList (Maybe DiskAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
dalSelfLink :: Lens' DiskAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
dalId :: Lens' DiskAggregatedList (Maybe Text)
data InstanceWithNamedPorts

-- | Creates a value of <a>InstanceWithNamedPorts</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iwnpStatus</a></li>
--   <li><a>iwnpNamedPorts</a></li>
--   <li><a>iwnpInstance</a></li>
--   </ul>
instanceWithNamedPorts :: InstanceWithNamedPorts

-- | <ul>
--   <li><i>Output Only</i> The status of the instance.</li>
--   </ul>
iwnpStatus :: Lens' InstanceWithNamedPorts (Maybe InstanceWithNamedPortsStatus)

-- | <ul>
--   <li><i>Output Only</i> The named ports that belong to this instance
--   group.</li>
--   </ul>
iwnpNamedPorts :: Lens' InstanceWithNamedPorts [NamedPort]

-- | <ul>
--   <li><i>Output Only</i> The URL of the instance.</li>
--   </ul>
iwnpInstance :: Lens' InstanceWithNamedPorts (Maybe Text)
data ForwardingRulesScopedList

-- | Creates a value of <a>ForwardingRulesScopedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>frslWarning</a></li>
--   <li><a>frslForwardingRules</a></li>
--   </ul>
forwardingRulesScopedList :: ForwardingRulesScopedList

-- | Informational warning which replaces the list of forwarding rules when
--   the list is empty.
frslWarning :: Lens' ForwardingRulesScopedList (Maybe ForwardingRulesScopedListWarning)

-- | List of forwarding rules contained in this scope.
frslForwardingRules :: Lens' ForwardingRulesScopedList [ForwardingRule]
data InstanceReference

-- | Creates a value of <a>InstanceReference</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iInstance</a></li>
--   </ul>
instanceReference :: InstanceReference

-- | The URL for a specific instance.
iInstance :: Lens' InstanceReference (Maybe Text)
data OperationAggregatedList

-- | Creates a value of <a>OperationAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oalNextPageToken</a></li>
--   <li><a>oalKind</a></li>
--   <li><a>oalItems</a></li>
--   <li><a>oalSelfLink</a></li>
--   <li><a>oalId</a></li>
--   </ul>
operationAggregatedList :: OperationAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
oalNextPageToken :: Lens' OperationAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#operationAggregatedList for aggregated lists of
--   operations.</li>
--   </ul>
oalKind :: Lens' OperationAggregatedList Text

-- | <ul>
--   <li><i>Output Only</i> A map of scoped operation lists.</li>
--   </ul>
oalItems :: Lens' OperationAggregatedList (Maybe OperationAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
oalSelfLink :: Lens' OperationAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
oalId :: Lens' OperationAggregatedList (Maybe Text)
data OperationsScopedList

-- | Creates a value of <a>OperationsScopedList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oslWarning</a></li>
--   <li><a>oslOperations</a></li>
--   </ul>
operationsScopedList :: OperationsScopedList

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of operations when the list is empty.</li>
--   </ul>
oslWarning :: Lens' OperationsScopedList (Maybe OperationsScopedListWarning)

-- | <ul>
--   <li><i>Output Only</i> List of operations contained in this
--   scope.</li>
--   </ul>
oslOperations :: Lens' OperationsScopedList [Operation]

-- | The named port. For example: .
--   
--   <i>See:</i> <a>namedPort</a> smart constructor.
data NamedPort

-- | Creates a value of <a>NamedPort</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>npName</a></li>
--   <li><a>npPort</a></li>
--   </ul>
namedPort :: NamedPort

-- | The name for this named port. The name must be 1-63 characters long,
--   and comply with RFC1035.
npName :: Lens' NamedPort (Maybe Text)

-- | The port number, which can be a value between 1 and 65535.
npPort :: Lens' NamedPort (Maybe Int32)

-- | Instances in which state should be returned. Valid options are: 'ALL',
--   'RUNNING'. By default, it lists all instances.
data RegionInstanceGroupsListInstancesRequestInstanceState

-- | <pre>
--   ALL
--   </pre>
All :: RegionInstanceGroupsListInstancesRequestInstanceState

-- | <pre>
--   RUNNING
--   </pre>
Running :: RegionInstanceGroupsListInstancesRequestInstanceState

-- | Contains a list of TargetInstance resources.
--   
--   <i>See:</i> <a>targetInstanceList</a> smart constructor.
data TargetInstanceList

-- | Creates a value of <a>TargetInstanceList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tilNextPageToken</a></li>
--   <li><a>tilKind</a></li>
--   <li><a>tilItems</a></li>
--   <li><a>tilSelfLink</a></li>
--   <li><a>tilId</a></li>
--   </ul>
targetInstanceList :: TargetInstanceList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
tilNextPageToken :: Lens' TargetInstanceList (Maybe Text)

-- | Type of resource.
tilKind :: Lens' TargetInstanceList Text

-- | A list of TargetInstance resources.
tilItems :: Lens' TargetInstanceList [TargetInstance]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
tilSelfLink :: Lens' TargetInstanceList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
tilId :: Lens' TargetInstanceList (Maybe Text)
data InstanceGroupManagerAggregatedList

-- | Creates a value of <a>InstanceGroupManagerAggregatedList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmalNextPageToken</a></li>
--   <li><a>igmalKind</a></li>
--   <li><a>igmalItems</a></li>
--   <li><a>igmalSelfLink</a></li>
--   <li><a>igmalId</a></li>
--   </ul>
instanceGroupManagerAggregatedList :: InstanceGroupManagerAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
igmalNextPageToken :: Lens' InstanceGroupManagerAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The resource type, which is always
--   compute#instanceGroupManagerAggregatedList for an aggregated list of
--   managed instance groups.</li>
--   </ul>
igmalKind :: Lens' InstanceGroupManagerAggregatedList Text

-- | <ul>
--   <li><i>Output Only</i> A map of filtered managed instance group
--   lists.</li>
--   </ul>
igmalItems :: Lens' InstanceGroupManagerAggregatedList (Maybe InstanceGroupManagerAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> The URL for this resource type. The server
--   generates this URL.</li>
--   </ul>
igmalSelfLink :: Lens' InstanceGroupManagerAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A unique identifier for this aggregated list of
--   managed instance groups. The server generates this identifier.</li>
--   </ul>
igmalId :: Lens' InstanceGroupManagerAggregatedList (Maybe Text)

-- | The type of the image used to create this disk. The default and only
--   value is RAW
data ImageSourceType

-- | <pre>
--   RAW
--   </pre>
Raw :: ImageSourceType
data TargetPoolsScopedList

-- | Creates a value of <a>TargetPoolsScopedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpslWarning</a></li>
--   <li><a>tpslTargetPools</a></li>
--   </ul>
targetPoolsScopedList :: TargetPoolsScopedList

-- | Informational warning which replaces the list of addresses when the
--   list is empty.
tpslWarning :: Lens' TargetPoolsScopedList (Maybe TargetPoolsScopedListWarning)

-- | List of target pools contained in this scope.
tpslTargetPools :: Lens' TargetPoolsScopedList [TargetPool]
data ForwardingRuleAggregatedList

-- | Creates a value of <a>ForwardingRuleAggregatedList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fralNextPageToken</a></li>
--   <li><a>fralKind</a></li>
--   <li><a>fralItems</a></li>
--   <li><a>fralSelfLink</a></li>
--   <li><a>fralId</a></li>
--   </ul>
forwardingRuleAggregatedList :: ForwardingRuleAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
fralNextPageToken :: Lens' ForwardingRuleAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#forwardingRuleAggregatedList for lists of forwarding
--   rules.</li>
--   </ul>
fralKind :: Lens' ForwardingRuleAggregatedList Text

-- | A map of scoped forwarding rule lists.
fralItems :: Lens' ForwardingRuleAggregatedList (Maybe ForwardingRuleAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
fralSelfLink :: Lens' ForwardingRuleAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
fralId :: Lens' ForwardingRuleAggregatedList (Maybe Text)
data TargetReference

-- | Creates a value of <a>TargetReference</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>trTarget</a></li>
--   </ul>
targetReference :: TargetReference
trTarget :: Lens' TargetReference (Maybe Text)
data TargetPoolAggregatedList

-- | Creates a value of <a>TargetPoolAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpalNextPageToken</a></li>
--   <li><a>tpalKind</a></li>
--   <li><a>tpalItems</a></li>
--   <li><a>tpalSelfLink</a></li>
--   <li><a>tpalId</a></li>
--   </ul>
targetPoolAggregatedList :: TargetPoolAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
tpalNextPageToken :: Lens' TargetPoolAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#targetPoolAggregatedList for aggregated lists of target
--   pools.</li>
--   </ul>
tpalKind :: Lens' TargetPoolAggregatedList Text

-- | <ul>
--   <li><i>Output Only</i> A map of scoped target pool lists.</li>
--   </ul>
tpalItems :: Lens' TargetPoolAggregatedList (Maybe TargetPoolAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
tpalSelfLink :: Lens' TargetPoolAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource. Defined by
--   the server.</li>
--   </ul>
tpalId :: Lens' TargetPoolAggregatedList (Maybe Text)
data OperationsScopedListWarningDataItem

-- | Creates a value of <a>OperationsScopedListWarningDataItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oslwdiValue</a></li>
--   <li><a>oslwdiKey</a></li>
--   </ul>
operationsScopedListWarningDataItem :: OperationsScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
oslwdiValue :: Lens' OperationsScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
oslwdiKey :: Lens' OperationsScopedListWarningDataItem (Maybe Text)

-- | Type of session affinity to use. The default is NONE. When the load
--   balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or
--   GENERATED_COOKIE. When the load balancing scheme is INTERNAL, can be
--   NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO. When the
--   protocol is UDP, this field is not used.
data BackendServiceSessionAffinity

-- | <pre>
--   CLIENT_IP
--   </pre>
BSSAClientIP :: BackendServiceSessionAffinity

-- | <pre>
--   CLIENT_IP_PORT_PROTO
--   </pre>
BSSAClientIPPortProto :: BackendServiceSessionAffinity

-- | <pre>
--   CLIENT_IP_PROTO
--   </pre>
BSSAClientIPProto :: BackendServiceSessionAffinity

-- | <pre>
--   GENERATED_COOKIE
--   </pre>
BSSAGeneratedCookie :: BackendServiceSessionAffinity

-- | <pre>
--   NONE
--   </pre>
BSSANone :: BackendServiceSessionAffinity

-- | A TargetPool resource. This resource defines a pool of instances,
--   associated HttpHealthCheck resources, and the fallback target pool.
--   
--   <i>See:</i> <a>targetPool</a> smart constructor.
data TargetPool

-- | Creates a value of <a>TargetPool</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpSessionAffinity</a></li>
--   <li><a>tpBackupPool</a></li>
--   <li><a>tpKind</a></li>
--   <li><a>tpSelfLink</a></li>
--   <li><a>tpName</a></li>
--   <li><a>tpCreationTimestamp</a></li>
--   <li><a>tpInstances</a></li>
--   <li><a>tpId</a></li>
--   <li><a>tpFailoverRatio</a></li>
--   <li><a>tpRegion</a></li>
--   <li><a>tpDescription</a></li>
--   <li><a>tpHealthChecks</a></li>
--   </ul>
targetPool :: TargetPool

-- | Sesssion affinity option, must be one of the following values: NONE:
--   Connections from the same client IP may go to any instance in the
--   pool. CLIENT_IP: Connections from the same client IP will go to the
--   same instance in the pool while that instance remains healthy.
--   CLIENT_IP_PROTO: Connections from the same client IP with the same IP
--   protocol will go to the same instance in the pool while that instance
--   remains healthy.
tpSessionAffinity :: Lens' TargetPool (Maybe TargetPoolSessionAffinity)

-- | This field is applicable only when the containing target pool is
--   serving a forwarding rule as the primary pool, and its failoverRatio
--   field is properly set to a value between [0, 1]. backupPool and
--   failoverRatio together define the fallback behavior of the primary
--   target pool: if the ratio of the healthy instances in the primary pool
--   is at or below failoverRatio, traffic arriving at the load-balanced IP
--   will be directed to the backup pool. In case where failoverRatio and
--   backupPool are not set, or all the instances in the backup pool are
--   unhealthy, the traffic will be directed back to the primary pool in
--   the "force" mode, where traffic will be spread to the healthy
--   instances with the best effort, or to all instances when no instance
--   is healthy.
tpBackupPool :: Lens' TargetPool (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#targetPool
--   for target pools.</li>
--   </ul>
tpKind :: Lens' TargetPool Text

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
tpSelfLink :: Lens' TargetPool (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
tpName :: Lens' TargetPool (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
tpCreationTimestamp :: Lens' TargetPool (Maybe Text)

-- | A list of resource URLs to the virtual machine instances serving this
--   pool. They must live in zones contained in the same region as this
--   pool.
tpInstances :: Lens' TargetPool [Text]

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
tpId :: Lens' TargetPool (Maybe Word64)

-- | This field is applicable only when the containing target pool is
--   serving a forwarding rule as the primary pool (i.e., not as a backup
--   pool to some other target pool). The value of the field must be in [0,
--   1]. If set, backupPool must also be set. They together define the
--   fallback behavior of the primary target pool: if the ratio of the
--   healthy instances in the primary pool is at or below this number,
--   traffic arriving at the load-balanced IP will be directed to the
--   backup pool. In case where failoverRatio is not set or all the
--   instances in the backup pool are unhealthy, the traffic will be
--   directed back to the primary pool in the "force" mode, where traffic
--   will be spread to the healthy instances with the best effort, or to
--   all instances when no instance is healthy.
tpFailoverRatio :: Lens' TargetPool (Maybe Double)

-- | <ul>
--   <li><i>Output Only</i> URL of the region where the target pool
--   resides.</li>
--   </ul>
tpRegion :: Lens' TargetPool (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
tpDescription :: Lens' TargetPool (Maybe Text)

-- | A list of URLs to the HttpHealthCheck resource. A member instance in
--   this pool is considered healthy if and only if all specified health
--   checks pass. An empty list means all member instances will be
--   considered healthy at all times.
tpHealthChecks :: Lens' TargetPool [Text]

-- | Contains a list of images.
--   
--   <i>See:</i> <a>imageList</a> smart constructor.
data ImageList

-- | Creates a value of <a>ImageList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ilNextPageToken</a></li>
--   <li><a>ilKind</a></li>
--   <li><a>ilItems</a></li>
--   <li><a>ilSelfLink</a></li>
--   <li><a>ilId</a></li>
--   </ul>
imageList :: ImageList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
ilNextPageToken :: Lens' ImageList (Maybe Text)

-- | Type of resource.
ilKind :: Lens' ImageList Text

-- | <ul>
--   <li><i>Output Only</i> A list of Image resources.</li>
--   </ul>
ilItems :: Lens' ImageList [Image]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
ilSelfLink :: Lens' ImageList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
ilId :: Lens' ImageList (Maybe Text)

-- | Informational warning which replaces the list of addresses when the
--   list is empty.
--   
--   <i>See:</i> <a>vpnTunnelsScopedListWarning</a> smart constructor.
data VPNTunnelsScopedListWarning

-- | Creates a value of <a>VPNTunnelsScopedListWarning</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vtslwData</a></li>
--   <li><a>vtslwCode</a></li>
--   <li><a>vtslwMessage</a></li>
--   </ul>
vpnTunnelsScopedListWarning :: VPNTunnelsScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
vtslwData :: Lens' VPNTunnelsScopedListWarning [VPNTunnelsScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
vtslwCode :: Lens' VPNTunnelsScopedListWarning (Maybe VPNTunnelsScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
vtslwMessage :: Lens' VPNTunnelsScopedListWarning (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data ForwardingRulesScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
FRSLWCCleanupFailed :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
FRSLWCDeprecatedResourceUsed :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
FRSLWCDiskSizeLargerThanImageSize :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
FRSLWCFieldValueOverriden :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
FRSLWCInjectedKernelsDeprecated :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
FRSLWCNextHopAddressNotAssigned :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
FRSLWCNextHopCannotIPForward :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
FRSLWCNextHopInstanceNotFound :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
FRSLWCNextHopInstanceNotOnNetwork :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
FRSLWCNextHopNotRunning :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
FRSLWCNotCriticalError :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
FRSLWCNoResultsOnPage :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
FRSLWCRequiredTosAgreement :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
FRSLWCResourceNotDeleted :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
FRSLWCSingleInstancePropertyTemplate :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
FRSLWCUnreachable :: ForwardingRulesScopedListWarningCode

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data OperationsScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
OSLWCCleanupFailed :: OperationsScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
OSLWCDeprecatedResourceUsed :: OperationsScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
OSLWCDiskSizeLargerThanImageSize :: OperationsScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
OSLWCFieldValueOverriden :: OperationsScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
OSLWCInjectedKernelsDeprecated :: OperationsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
OSLWCNextHopAddressNotAssigned :: OperationsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
OSLWCNextHopCannotIPForward :: OperationsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
OSLWCNextHopInstanceNotFound :: OperationsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
OSLWCNextHopInstanceNotOnNetwork :: OperationsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
OSLWCNextHopNotRunning :: OperationsScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
OSLWCNotCriticalError :: OperationsScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
OSLWCNoResultsOnPage :: OperationsScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
OSLWCRequiredTosAgreement :: OperationsScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
OSLWCResourceNotDeleted :: OperationsScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
OSLWCSingleInstancePropertyTemplate :: OperationsScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
OSLWCUnreachable :: OperationsScopedListWarningCode
data TargetSSLProxiesSetBackendServiceRequest

-- | Creates a value of <a>TargetSSLProxiesSetBackendServiceRequest</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tspsbsrService</a></li>
--   </ul>
targetSSLProxiesSetBackendServiceRequest :: TargetSSLProxiesSetBackendServiceRequest

-- | The URL of the new BackendService resource for the targetSslProxy.
tspsbsrService :: Lens' TargetSSLProxiesSetBackendServiceRequest (Maybe Text)

-- | A ForwardingRule resource. A ForwardingRule resource specifies which
--   pool of target virtual machines to forward a packet to if it matches
--   the given [IPAddress, IPProtocol, portRange] tuple.
--   
--   <i>See:</i> <a>forwardingRule</a> smart constructor.
data ForwardingRule

-- | Creates a value of <a>ForwardingRule</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>frIPAddress</a></li>
--   <li><a>frLoadBalancingScheme</a></li>
--   <li><a>frKind</a></li>
--   <li><a>frNetwork</a></li>
--   <li><a>frPortRange</a></li>
--   <li><a>frSelfLink</a></li>
--   <li><a>frName</a></li>
--   <li><a>frIPProtocol</a></li>
--   <li><a>frCreationTimestamp</a></li>
--   <li><a>frSubnetwork</a></li>
--   <li><a>frPorts</a></li>
--   <li><a>frId</a></li>
--   <li><a>frRegion</a></li>
--   <li><a>frDescription</a></li>
--   <li><a>frTarget</a></li>
--   <li><a>frBackendService</a></li>
--   </ul>
forwardingRule :: ForwardingRule

-- | The IP address that this forwarding rule is serving on behalf of. For
--   global forwarding rules, the address must be a global IP; for regional
--   forwarding rules, the address must live in the same region as the
--   forwarding rule. By default, this field is empty and an ephemeral IP
--   from the same scope (global or regional) will be assigned. When the
--   load balancing scheme is INTERNAL, this can only be an RFC 1918 IP
--   address belonging to the network/subnetwork configured for the
--   forwarding rule. A reserved address cannot be used. If the field is
--   empty, the IP address will be automatically allocated from the
--   internal IP range of the subnetwork or network configured for this
--   forwarding rule. Only IPv4 is supported.
frIPAddress :: Lens' ForwardingRule (Maybe Text)

-- | This signifies what the ForwardingRule will be used for and can only
--   take the following values: INTERNAL EXTERNAL The value of INTERNAL
--   means that this will be used for Internal Network Load Balancing (TCP,
--   UDP). The value of EXTERNAL means that this will be used for External
--   Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
frLoadBalancingScheme :: Lens' ForwardingRule (Maybe ForwardingRuleLoadBalancingScheme)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always
--   compute#forwardingRule for Forwarding Rule resources.</li>
--   </ul>
frKind :: Lens' ForwardingRule Text

-- | This field is not used for external load balancing. For internal load
--   balancing, this field identifies the network that the load balanced IP
--   should belong to for this Forwarding Rule. If this field is not
--   specified, the default network will be used.
frNetwork :: Lens' ForwardingRule (Maybe Text)

-- | Applicable only when IPProtocol is TCP, UDP, or SCTP, only packets
--   addressed to ports in the specified range will be forwarded to target.
--   Forwarding rules with the same [IPAddress, IPProtocol] pair must have
--   disjoint port ranges. This field is not used for internal load
--   balancing.
frPortRange :: Lens' ForwardingRule (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
frSelfLink :: Lens' ForwardingRule (Maybe Text)

-- | Name of the resource; provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
frName :: Lens' ForwardingRule (Maybe Text)

-- | The IP protocol to which this rule applies. Valid options are TCP,
--   UDP, ESP, AH, SCTP or ICMP. When the load balancing scheme is INTERNAL
frIPProtocol :: Lens' ForwardingRule (Maybe ForwardingRuleIPProtocol)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
frCreationTimestamp :: Lens' ForwardingRule (Maybe Text)

-- | This field is not used for external load balancing. For internal load
--   balancing, this field identifies the subnetwork that the load balanced
--   IP should belong to for this Forwarding Rule. If the network specified
--   is in auto subnet mode, this field is optional. However, if the
--   network is in custom subnet mode, a subnetwork must be specified.
frSubnetwork :: Lens' ForwardingRule (Maybe Text)

-- | This field is not used for external load balancing. When the load
--   balancing scheme is INTERNAL, a single port or a comma separated list
--   of ports can be configured. Only packets addressed to these ports will
--   be forwarded to the backends configured with this forwarding rule. If
--   the port list is not provided then all ports are allowed to pass
--   through. You may specify a maximum of up to 5 ports.
frPorts :: Lens' ForwardingRule [Text]

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
frId :: Lens' ForwardingRule (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> URL of the region where the regional forwarding
--   rule resides. This field is not applicable to global forwarding
--   rules.</li>
--   </ul>
frRegion :: Lens' ForwardingRule (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
frDescription :: Lens' ForwardingRule (Maybe Text)

-- | The URL of the target resource to receive the matched traffic. For
--   regional forwarding rules, this target must live in the same region as
--   the forwarding rule. For global forwarding rules, this target must be
--   a global TargetHttpProxy or TargetHttpsProxy resource. The forwarded
--   traffic must be of a type appropriate to the target object. For
--   example, TargetHttpProxy requires HTTP traffic, and TargetHttpsProxy
--   requires HTTPS traffic. This field is not used for internal load
--   balancing.
frTarget :: Lens' ForwardingRule (Maybe Text)

-- | This field is not used for external load balancing. For internal load
--   balancing, this field identifies the BackendService resource to
--   receive the matched traffic.
frBackendService :: Lens' ForwardingRule (Maybe Text)

-- | Contains a list of UrlMap resources.
--   
--   <i>See:</i> <a>urlMapList</a> smart constructor.
data URLMapList

-- | Creates a value of <a>URLMapList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umlNextPageToken</a></li>
--   <li><a>umlKind</a></li>
--   <li><a>umlItems</a></li>
--   <li><a>umlSelfLink</a></li>
--   <li><a>umlId</a></li>
--   </ul>
urlMapList :: URLMapList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
umlNextPageToken :: Lens' URLMapList (Maybe Text)

-- | Type of resource.
umlKind :: Lens' URLMapList Text

-- | A list of UrlMap resources.
umlItems :: Lens' URLMapList [URLMap]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
umlSelfLink :: Lens' URLMapList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource. Set by the
--   server.</li>
--   </ul>
umlId :: Lens' URLMapList (Maybe Text)
data ForwardingRulesScopedListWarningDataItem

-- | Creates a value of <a>ForwardingRulesScopedListWarningDataItem</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>frslwdiValue</a></li>
--   <li><a>frslwdiKey</a></li>
--   </ul>
forwardingRulesScopedListWarningDataItem :: ForwardingRulesScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
frslwdiValue :: Lens' ForwardingRulesScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
frslwdiKey :: Lens' ForwardingRulesScopedListWarningDataItem (Maybe Text)
data InstanceGroupManagersScopedListWarningDataItem

-- | Creates a value of
--   <a>InstanceGroupManagersScopedListWarningDataItem</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmslwdiValue</a></li>
--   <li><a>igmslwdiKey</a></li>
--   </ul>
instanceGroupManagersScopedListWarningDataItem :: InstanceGroupManagersScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
igmslwdiValue :: Lens' InstanceGroupManagersScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
igmslwdiKey :: Lens' InstanceGroupManagersScopedListWarningDataItem (Maybe Text)
data SubnetworksScopedList

-- | Creates a value of <a>SubnetworksScopedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sslSubnetworks</a></li>
--   <li><a>sslWarning</a></li>
--   </ul>
subnetworksScopedList :: SubnetworksScopedList

-- | List of subnetworks contained in this scope.
sslSubnetworks :: Lens' SubnetworksScopedList [Subnetwork]

-- | An informational warning that appears when the list of addresses is
--   empty.
sslWarning :: Lens' SubnetworksScopedList (Maybe SubnetworksScopedListWarning)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data DisksScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
DSLWCCleanupFailed :: DisksScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
DSLWCDeprecatedResourceUsed :: DisksScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
DSLWCDiskSizeLargerThanImageSize :: DisksScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
DSLWCFieldValueOverriden :: DisksScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
DSLWCInjectedKernelsDeprecated :: DisksScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
DSLWCNextHopAddressNotAssigned :: DisksScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
DSLWCNextHopCannotIPForward :: DisksScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
DSLWCNextHopInstanceNotFound :: DisksScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
DSLWCNextHopInstanceNotOnNetwork :: DisksScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
DSLWCNextHopNotRunning :: DisksScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
DSLWCNotCriticalError :: DisksScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
DSLWCNoResultsOnPage :: DisksScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
DSLWCRequiredTosAgreement :: DisksScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
DSLWCResourceNotDeleted :: DisksScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
DSLWCSingleInstancePropertyTemplate :: DisksScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
DSLWCUnreachable :: DisksScopedListWarningCode

-- | A Project resource. Projects can only be created in the Google Cloud
--   Platform Console. Unless marked otherwise, values can only be modified
--   in the console.
--   
--   <i>See:</i> <a>project</a> smart constructor.
data Project

-- | Creates a value of <a>Project</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pKind</a></li>
--   <li><a>pUsageExportLocation</a></li>
--   <li><a>pSelfLink</a></li>
--   <li><a>pName</a></li>
--   <li><a>pDefaultServiceAccount</a></li>
--   <li><a>pCreationTimestamp</a></li>
--   <li><a>pEnabledFeatures</a></li>
--   <li><a>pQuotas</a></li>
--   <li><a>pId</a></li>
--   <li><a>pDescription</a></li>
--   <li><a>pCommonInstanceMetadata</a></li>
--   </ul>
project :: Project

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#project
--   for projects.</li>
--   </ul>
pKind :: Lens' Project Text

-- | The naming prefix for daily usage reports and the Google Cloud Storage
--   bucket where they are stored.
pUsageExportLocation :: Lens' Project (Maybe UsageExportLocation)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
pSelfLink :: Lens' Project (Maybe Text)

-- | The project ID. For example: my-example-project. Use the project ID to
--   make requests to Compute Engine.
pName :: Lens' Project (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Default service account used by VMs running in
--   this project.</li>
--   </ul>
pDefaultServiceAccount :: Lens' Project (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
pCreationTimestamp :: Lens' Project (Maybe Text)

-- | Restricted features enabled for use on this project.
pEnabledFeatures :: Lens' Project [Text]

-- | <ul>
--   <li><i>Output Only</i> Quotas assigned to this project.</li>
--   </ul>
pQuotas :: Lens' Project [Quota]

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server. This is not the project ID, and
--   is just a unique ID used by Compute Engine to identify resources.</li>
--   </ul>
pId :: Lens' Project (Maybe Word64)

-- | An optional textual description of the resource.
pDescription :: Lens' Project (Maybe Text)

-- | Metadata key/value pairs available to all instances contained in this
--   project. See Custom metadata for more information.
pCommonInstanceMetadata :: Lens' Project (Maybe Metadata)
data RegionInstanceGroupManagersListInstancesResponse

-- | Creates a value of
--   <a>RegionInstanceGroupManagersListInstancesResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmlirManagedInstances</a></li>
--   </ul>
regionInstanceGroupManagersListInstancesResponse :: RegionInstanceGroupManagersListInstancesResponse

-- | List of managed instances.
rigmlirManagedInstances :: Lens' RegionInstanceGroupManagersListInstancesResponse [ManagedInstance]

-- | An Operation resource, used to manage asynchronous API requests.
--   
--   <i>See:</i> <a>operation</a> smart constructor.
data Operation

-- | Creates a value of <a>Operation</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oTargetId</a></li>
--   <li><a>oStatus</a></li>
--   <li><a>oInsertTime</a></li>
--   <li><a>oProgress</a></li>
--   <li><a>oStartTime</a></li>
--   <li><a>oKind</a></li>
--   <li><a>oError</a></li>
--   <li><a>oHTTPErrorMessage</a></li>
--   <li><a>oZone</a></li>
--   <li><a>oWarnings</a></li>
--   <li><a>oHTTPErrorStatusCode</a></li>
--   <li><a>oUser</a></li>
--   <li><a>oSelfLink</a></li>
--   <li><a>oName</a></li>
--   <li><a>oStatusMessage</a></li>
--   <li><a>oCreationTimestamp</a></li>
--   <li><a>oEndTime</a></li>
--   <li><a>oId</a></li>
--   <li><a>oOperationType</a></li>
--   <li><a>oRegion</a></li>
--   <li><a>oDescription</a></li>
--   <li><a>oTargetLink</a></li>
--   <li><a>oClientOperationId</a></li>
--   </ul>
operation :: Operation

-- | <ul>
--   <li><i>Output Only</i> The unique target ID, which identifies a
--   specific incarnation of the target resource.</li>
--   </ul>
oTargetId :: Lens' Operation (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> The status of the operation, which can be one
--   of the following: PENDING, RUNNING, or DONE.</li>
--   </ul>
oStatus :: Lens' Operation (Maybe OperationStatus)

-- | <ul>
--   <li><i>Output Only</i> The time that this operation was requested.
--   This value is in RFC3339 text format.</li>
--   </ul>
oInsertTime :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> An optional progress indicator that ranges from
--   0 to 100. There is no requirement that this be linear or support any
--   granularity of operations. This should not be used to guess when the
--   operation will be complete. This number should monotonically increase
--   as the operation progresses.</li>
--   </ul>
oProgress :: Lens' Operation (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The time that this operation was started by the
--   server. This value is in RFC3339 text format.</li>
--   </ul>
oStartTime :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#operation
--   for Operation resources.</li>
--   </ul>
oKind :: Lens' Operation Text

-- | <ul>
--   <li><i>Output Only</i> If errors are generated during processing of
--   the operation, this field will be populated.</li>
--   </ul>
oError :: Lens' Operation (Maybe OperationError)

-- | <ul>
--   <li><i>Output Only</i> If the operation fails, this field contains the
--   HTTP error message that was returned, such as NOT FOUND.</li>
--   </ul>
oHTTPErrorMessage :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The URL of the zone where the operation
--   resides. Only available when performing per-zone operations.</li>
--   </ul>
oZone :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> If warning messages are generated during
--   processing of the operation, this field will be populated.</li>
--   </ul>
oWarnings :: Lens' Operation [OperationWarningsItem]

-- | <ul>
--   <li><i>Output Only</i> If the operation fails, this field contains the
--   HTTP error status code that was returned. For example, a 404 means the
--   resource was not found.</li>
--   </ul>
oHTTPErrorStatusCode :: Lens' Operation (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> User who requested the operation, for example:
--   user'example.com.</li>
--   </ul>
oUser :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
oSelfLink :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Name of the resource.</li>
--   </ul>
oName :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> An optional textual description of the current
--   status of the operation.</li>
--   </ul>
oStatusMessage :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
oCreationTimestamp :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The time that this operation was completed.
--   This value is in RFC3339 text format.</li>
--   </ul>
oEndTime :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
oId :: Lens' Operation (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> The type of operation, such as insert, update,
--   or delete, and so on.</li>
--   </ul>
oOperationType :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The URL of the region where the operation
--   resides. Only available when performing regional operations.</li>
--   </ul>
oRegion :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A textual description of the operation, which
--   is set when the operation is created.</li>
--   </ul>
oDescription :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The URL of the resource that the operation
--   modifies. For operations related to creating a snapshot, this points
--   to the persistent disk that the snapshot was created from.</li>
--   </ul>
oTargetLink :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Reserved for future use.</li>
--   </ul>
oClientOperationId :: Lens' Operation (Maybe Text)
data DisksScopedListWarningDataItem

-- | Creates a value of <a>DisksScopedListWarningDataItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dslwdiValue</a></li>
--   <li><a>dslwdiKey</a></li>
--   </ul>
disksScopedListWarningDataItem :: DisksScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
dslwdiValue :: Lens' DisksScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
dslwdiKey :: Lens' DisksScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
IGMSLWCCleanupFailed :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
IGMSLWCDeprecatedResourceUsed :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
IGMSLWCDiskSizeLargerThanImageSize :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
IGMSLWCFieldValueOverriden :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
IGMSLWCInjectedKernelsDeprecated :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
IGMSLWCNextHopAddressNotAssigned :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
IGMSLWCNextHopCannotIPForward :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
IGMSLWCNextHopInstanceNotFound :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
IGMSLWCNextHopInstanceNotOnNetwork :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
IGMSLWCNextHopNotRunning :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
IGMSLWCNotCriticalError :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
IGMSLWCNoResultsOnPage :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
IGMSLWCRequiredTosAgreement :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
IGMSLWCResourceNotDeleted :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
IGMSLWCSingleInstancePropertyTemplate :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
IGMSLWCUnreachable :: InstanceGroupManagersScopedListWarningCode

-- | A Disk resource.
--   
--   <i>See:</i> <a>disk</a> smart constructor.
data Disk

-- | Creates a value of <a>Disk</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dStatus</a></li>
--   <li><a>dSourceSnapshotId</a></li>
--   <li><a>dLastAttachTimestamp</a></li>
--   <li><a>dUsers</a></li>
--   <li><a>dSourceImage</a></li>
--   <li><a>dDiskEncryptionKey</a></li>
--   <li><a>dSizeGb</a></li>
--   <li><a>dKind</a></li>
--   <li><a>dLastDetachTimestamp</a></li>
--   <li><a>dZone</a></li>
--   <li><a>dSelfLink</a></li>
--   <li><a>dName</a></li>
--   <li><a>dSourceImageId</a></li>
--   <li><a>dCreationTimestamp</a></li>
--   <li><a>dSourceImageEncryptionKey</a></li>
--   <li><a>dId</a></li>
--   <li><a>dLicenses</a></li>
--   <li><a>dOptions</a></li>
--   <li><a>dType</a></li>
--   <li><a>dDescription</a></li>
--   <li><a>dSourceSnapshotEncryptionKey</a></li>
--   <li><a>dSourceSnapshot</a></li>
--   </ul>
disk :: Disk

-- | <ul>
--   <li><i>Output Only</i> The status of disk creation.</li>
--   </ul>
dStatus :: Lens' Disk (Maybe DiskStatus)

-- | <ul>
--   <li><i>Output Only</i> The unique ID of the snapshot used to create
--   this disk. This value identifies the exact snapshot that was used to
--   create this persistent disk. For example, if you created the
--   persistent disk from a snapshot that was later deleted and recreated
--   under the same name, the source snapshot ID would identify the exact
--   version of the snapshot that was used.</li>
--   </ul>
dSourceSnapshotId :: Lens' Disk (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Last attach timestamp in RFC3339 text
--   format.</li>
--   </ul>
dLastAttachTimestamp :: Lens' Disk (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Links to the users of the disk (attached
--   instances) in form: project/zones/zone/instances/instance</li>
--   </ul>
dUsers :: Lens' Disk [Text]

-- | The source image used to create this disk. If the source image is
--   deleted, this field will not be set. To create a disk with one of the
--   public operating system images, specify the image by its family name.
--   For example, specify family/debian-8 to use the latest Debian 8 image:
--   projects/debian-cloud/global/images/family/debian-8 Alternatively, use
--   a specific version of a public operating system image:
--   projects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD To
--   create a disk with a private image that you created, specify the image
--   name in the following format: global/images/my-private-image You can
--   also specify a private image by its image family, which returns the
--   latest version of the image in that family. Replace the image name
--   with family/family-name: global/images/family/my-private-family
dSourceImage :: Lens' Disk (Maybe Text)

-- | Encrypts the disk using a customer-supplied encryption key. After you
--   encrypt a disk with a customer-supplied key, you must provide the same
--   key if you use the disk later (e.g. to create a disk snapshot or an
--   image, or to attach the disk to a virtual machine). Customer-supplied
--   encryption keys do not protect access to metadata of the disk. If you
--   do not provide an encryption key when creating the disk, then the disk
--   will be encrypted using an automatically generated key and you do not
--   need to provide a key to use the disk later.
dDiskEncryptionKey :: Lens' Disk (Maybe CustomerEncryptionKey)

-- | Size of the persistent disk, specified in GB. You can specify this
--   field when creating a persistent disk using the sourceImage or
--   sourceSnapshot parameter, or specify it alone to create an empty
--   persistent disk. If you specify this field along with sourceImage or
--   sourceSnapshot, the value of sizeGb must not be less than the size of
--   the sourceImage or the size of the snapshot.
dSizeGb :: Lens' Disk (Maybe Int64)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#disk for
--   disks.</li>
--   </ul>
dKind :: Lens' Disk Text

-- | <ul>
--   <li><i>Output Only</i> Last detach timestamp in RFC3339 text
--   format.</li>
--   </ul>
dLastDetachTimestamp :: Lens' Disk (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> URL of the zone where the disk resides.</li>
--   </ul>
dZone :: Lens' Disk (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined fully-qualified URL for this
--   resource.</li>
--   </ul>
dSelfLink :: Lens' Disk (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
dName :: Lens' Disk (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The ID value of the image used to create this
--   disk. This value identifies the exact image that was used to create
--   this persistent disk. For example, if you created the persistent disk
--   from an image that was later deleted and recreated under the same
--   name, the source image ID would identify the exact version of the
--   image that was used.</li>
--   </ul>
dSourceImageId :: Lens' Disk (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
dCreationTimestamp :: Lens' Disk (Maybe Text)

-- | The customer-supplied encryption key of the source image. Required if
--   the source image is protected by a customer-supplied encryption key.
dSourceImageEncryptionKey :: Lens' Disk (Maybe CustomerEncryptionKey)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
dId :: Lens' Disk (Maybe Word64)

-- | Any applicable publicly visible licenses.
dLicenses :: Lens' Disk [Text]

-- | Internal use only.
dOptions :: Lens' Disk (Maybe Text)

-- | URL of the disk type resource describing which disk type to use to
--   create the disk. Provide this when creating the disk.
dType :: Lens' Disk (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
dDescription :: Lens' Disk (Maybe Text)

-- | The customer-supplied encryption key of the source snapshot. Required
--   if the source snapshot is protected by a customer-supplied encryption
--   key.
dSourceSnapshotEncryptionKey :: Lens' Disk (Maybe CustomerEncryptionKey)

-- | The source snapshot used to create this disk. You can provide this as
--   a partial or full URL to the resource. For example, the following are
--   valid values: -
--   https://www.googleapis.com/compute/v1/projects/project/global/snapshots/snapshot
--   - projects/project/global/snapshots/snapshot -
--   global/snapshots/snapshot
dSourceSnapshot :: Lens' Disk (Maybe Text)
data DiskMoveRequest

-- | Creates a value of <a>DiskMoveRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dmrTargetDisk</a></li>
--   <li><a>dmrDestinationZone</a></li>
--   </ul>
diskMoveRequest :: DiskMoveRequest

-- | The URL of the target disk to move. This can be a full or partial URL.
--   For example, the following are all valid URLs to a disk: -
--   https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk
--   - projects/project/zones/zone/disks/disk - zones/zone/disks/disk
dmrTargetDisk :: Lens' DiskMoveRequest (Maybe Text)

-- | The URL of the destination zone to move the disk. This can be a full
--   or partial URL. For example, the following are all valid URLs to a
--   zone: -
--   https://www.googleapis.com/compute/v1/projects/project/zones/zone -
--   projects/project/zones/zone - zones/zone
dmrDestinationZone :: Lens' DiskMoveRequest (Maybe Text)

-- | Configuration parameters of autoscaling based on load balancing.
--   
--   <i>See:</i> <a>autoscalingPolicyLoadBalancingUtilization</a> smart
--   constructor.
data AutoscalingPolicyLoadBalancingUtilization

-- | Creates a value of <a>AutoscalingPolicyLoadBalancingUtilization</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aplbuUtilizationTarget</a></li>
--   </ul>
autoscalingPolicyLoadBalancingUtilization :: AutoscalingPolicyLoadBalancingUtilization

-- | Fraction of backend capacity utilization (set in HTTP(s) load
--   balancing configuration) that autoscaler should maintain. Must be a
--   positive float value. If not defined, the default is 0.8.
aplbuUtilizationTarget :: Lens' AutoscalingPolicyLoadBalancingUtilization (Maybe Double)
data TargetPoolsScopedListWarningDataItem

-- | Creates a value of <a>TargetPoolsScopedListWarningDataItem</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpslwdiValue</a></li>
--   <li><a>tpslwdiKey</a></li>
--   </ul>
targetPoolsScopedListWarningDataItem :: TargetPoolsScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
tpslwdiValue :: Lens' TargetPoolsScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
tpslwdiKey :: Lens' TargetPoolsScopedListWarningDataItem (Maybe Text)

-- | An Instance Group Manager resource.
--   
--   <i>See:</i> <a>instanceGroupManager</a> smart constructor.
data InstanceGroupManager

-- | Creates a value of <a>InstanceGroupManager</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmKind</a></li>
--   <li><a>igmFingerprint</a></li>
--   <li><a>igmBaseInstanceName</a></li>
--   <li><a>igmZone</a></li>
--   <li><a>igmInstanceTemplate</a></li>
--   <li><a>igmTargetSize</a></li>
--   <li><a>igmSelfLink</a></li>
--   <li><a>igmCurrentActions</a></li>
--   <li><a>igmName</a></li>
--   <li><a>igmCreationTimestamp</a></li>
--   <li><a>igmId</a></li>
--   <li><a>igmRegion</a></li>
--   <li><a>igmTargetPools</a></li>
--   <li><a>igmDescription</a></li>
--   <li><a>igmInstanceGroup</a></li>
--   <li><a>igmNamedPorts</a></li>
--   </ul>
instanceGroupManager :: InstanceGroupManager

-- | <ul>
--   <li><i>Output Only</i> The resource type, which is always
--   compute#instanceGroupManager for managed instance groups.</li>
--   </ul>
igmKind :: Lens' InstanceGroupManager Text

-- | <ul>
--   <li><i>Output Only</i> The fingerprint of the resource data. You can
--   use this optional field for optimistic locking when you update the
--   resource.</li>
--   </ul>
igmFingerprint :: Lens' InstanceGroupManager (Maybe ByteString)

-- | The base instance name to use for instances in this group. The value
--   must be 1-58 characters long. Instances are named by appending a
--   hyphen and a random four-character string to the base instance name.
--   The base instance name must comply with RFC1035.
igmBaseInstanceName :: Lens' InstanceGroupManager (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The URL of the zone where the managed instance
--   group is located (for zonal resources).</li>
--   </ul>
igmZone :: Lens' InstanceGroupManager (Maybe Text)

-- | The URL of the instance template that is specified for this managed
--   instance group. The group uses this template to create all new
--   instances in the managed instance group.
igmInstanceTemplate :: Lens' InstanceGroupManager (Maybe Text)

-- | The target number of running instances for this managed instance
--   group. Deleting or abandoning instances reduces this number. Resizing
--   the group changes this number.
igmTargetSize :: Lens' InstanceGroupManager (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The URL for this managed instance group. The
--   server defines this URL.</li>
--   </ul>
igmSelfLink :: Lens' InstanceGroupManager (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The list of instance actions and the number of
--   instances in this managed instance group that are scheduled for each
--   of those actions.</li>
--   </ul>
igmCurrentActions :: Lens' InstanceGroupManager (Maybe InstanceGroupManagerActionsSummary)

-- | The name of the managed instance group. The name must be 1-63
--   characters long, and comply with RFC1035.
igmName :: Lens' InstanceGroupManager (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The creation timestamp for this managed
--   instance group in RFC3339 text format.</li>
--   </ul>
igmCreationTimestamp :: Lens' InstanceGroupManager (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A unique identifier for this resource type. The
--   server generates this identifier.</li>
--   </ul>
igmId :: Lens' InstanceGroupManager (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> The URL of the region where the managed
--   instance group resides (for regional resources).</li>
--   </ul>
igmRegion :: Lens' InstanceGroupManager (Maybe Text)

-- | The URLs for all TargetPool resources to which instances in the
--   instanceGroup field are added. The target pools automatically apply to
--   all of the instances in the managed instance group.
igmTargetPools :: Lens' InstanceGroupManager [Text]

-- | An optional description of this resource. Provide this property when
--   you create the resource.
igmDescription :: Lens' InstanceGroupManager (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The URL of the Instance Group resource.</li>
--   </ul>
igmInstanceGroup :: Lens' InstanceGroupManager (Maybe Text)

-- | Named ports configured for the Instance Groups complementary to this
--   Instance Group Manager.
igmNamedPorts :: Lens' InstanceGroupManager [NamedPort]
data RegionInstanceGroupsListInstances

-- | Creates a value of <a>RegionInstanceGroupsListInstances</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigliNextPageToken</a></li>
--   <li><a>rigliKind</a></li>
--   <li><a>rigliItems</a></li>
--   <li><a>rigliSelfLink</a></li>
--   <li><a>rigliId</a></li>
--   </ul>
regionInstanceGroupsListInstances :: RegionInstanceGroupsListInstances

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
rigliNextPageToken :: Lens' RegionInstanceGroupsListInstances (Maybe Text)

-- | The resource type.
rigliKind :: Lens' RegionInstanceGroupsListInstances Text

-- | A list of instances and any named ports that are assigned to those
--   instances.
rigliItems :: Lens' RegionInstanceGroupsListInstances [InstanceWithNamedPorts]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
rigliSelfLink :: Lens' RegionInstanceGroupsListInstances (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource. Defined by
--   the server.</li>
--   </ul>
rigliId :: Lens' RegionInstanceGroupsListInstances (Maybe Text)
data TCPHealthCheck

-- | Creates a value of <a>TCPHealthCheck</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>thcResponse</a></li>
--   <li><a>thcProxyHeader</a></li>
--   <li><a>thcPortName</a></li>
--   <li><a>thcPort</a></li>
--   <li><a>thcRequest</a></li>
--   </ul>
tcpHealthCheck :: TCPHealthCheck

-- | The bytes to match against the beginning of the response data. If left
--   empty (the default value), any response will indicate health. The
--   response data can only be ASCII.
thcResponse :: Lens' TCPHealthCheck (Maybe Text)

-- | Specifies the type of proxy header to append before sending data to
--   the backend, either NONE or PROXY_V1. The default is NONE.
thcProxyHeader :: Lens' TCPHealthCheck (Maybe TCPHealthCheckProxyHeader)

-- | Port name as defined in InstanceGroupname. If both port and port_name
--   are defined, port takes precedence.
thcPortName :: Lens' TCPHealthCheck (Maybe Text)

-- | The TCP port number for the health check request. The default value is
--   80.
thcPort :: Lens' TCPHealthCheck (Maybe Int32)

-- | The application data to send once the TCP connection has been
--   established (default value is empty). If both request and response are
--   empty, the connection establishment alone will indicate health. The
--   request data can only be ASCII.
thcRequest :: Lens' TCPHealthCheck (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data TargetPoolsScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
TPSLWCCleanupFailed :: TargetPoolsScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
TPSLWCDeprecatedResourceUsed :: TargetPoolsScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
TPSLWCDiskSizeLargerThanImageSize :: TargetPoolsScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
TPSLWCFieldValueOverriden :: TargetPoolsScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
TPSLWCInjectedKernelsDeprecated :: TargetPoolsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
TPSLWCNextHopAddressNotAssigned :: TargetPoolsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
TPSLWCNextHopCannotIPForward :: TargetPoolsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
TPSLWCNextHopInstanceNotFound :: TargetPoolsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
TPSLWCNextHopInstanceNotOnNetwork :: TargetPoolsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
TPSLWCNextHopNotRunning :: TargetPoolsScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
TPSLWCNotCriticalError :: TargetPoolsScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
TPSLWCNoResultsOnPage :: TargetPoolsScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
TPSLWCRequiredTosAgreement :: TargetPoolsScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
TPSLWCResourceNotDeleted :: TargetPoolsScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
TPSLWCSingleInstancePropertyTemplate :: TargetPoolsScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
TPSLWCUnreachable :: TargetPoolsScopedListWarningCode

-- | Specifies the type of proxy header to append before sending data to
--   the backend, either NONE or PROXY_V1. The default is NONE.
data SSLHealthCheckProxyHeader

-- | <pre>
--   NONE
--   </pre>
SHCPHNone :: SSLHealthCheckProxyHeader

-- | <pre>
--   PROXY_V1
--   </pre>
SHCPHProxyV1 :: SSLHealthCheckProxyHeader

-- | <ul>
--   <li><i>Output Only</i> The status of the VPN gateway.</li>
--   </ul>
data TargetVPNGatewayStatus

-- | <pre>
--   CREATING
--   </pre>
Creating :: TargetVPNGatewayStatus

-- | <pre>
--   DELETING
--   </pre>
Deleting :: TargetVPNGatewayStatus

-- | <pre>
--   FAILED
--   </pre>
Failed :: TargetVPNGatewayStatus

-- | <pre>
--   READY
--   </pre>
Ready :: TargetVPNGatewayStatus
data InstanceGroupsRemoveInstancesRequest

-- | Creates a value of <a>InstanceGroupsRemoveInstancesRequest</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igrirInstances</a></li>
--   </ul>
instanceGroupsRemoveInstancesRequest :: InstanceGroupsRemoveInstancesRequest

-- | The list of instances to remove from the instance group.
igrirInstances :: Lens' InstanceGroupsRemoveInstancesRequest [InstanceReference]

-- | <ul>
--   <li><i>Output Only</i> The status of the snapshot. This can be
--   CREATING, DELETING, FAILED, READY, or UPLOADING.</li>
--   </ul>
data SnapshotStatus

-- | <pre>
--   CREATING
--   </pre>
SSCreating :: SnapshotStatus

-- | <pre>
--   DELETING
--   </pre>
SSDeleting :: SnapshotStatus

-- | <pre>
--   FAILED
--   </pre>
SSFailed :: SnapshotStatus

-- | <pre>
--   READY
--   </pre>
SSReady :: SnapshotStatus

-- | <pre>
--   UPLOADING
--   </pre>
SSUploading :: SnapshotStatus
data RouteWarningsItemDataItem

-- | Creates a value of <a>RouteWarningsItemDataItem</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rwidiValue</a></li>
--   <li><a>rwidiKey</a></li>
--   </ul>
routeWarningsItemDataItem :: RouteWarningsItemDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
rwidiValue :: Lens' RouteWarningsItemDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
rwidiKey :: Lens' RouteWarningsItemDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data TargetInstancesScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
TISLWCCleanupFailed :: TargetInstancesScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
TISLWCDeprecatedResourceUsed :: TargetInstancesScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
TISLWCDiskSizeLargerThanImageSize :: TargetInstancesScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
TISLWCFieldValueOverriden :: TargetInstancesScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
TISLWCInjectedKernelsDeprecated :: TargetInstancesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
TISLWCNextHopAddressNotAssigned :: TargetInstancesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
TISLWCNextHopCannotIPForward :: TargetInstancesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
TISLWCNextHopInstanceNotFound :: TargetInstancesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
TISLWCNextHopInstanceNotOnNetwork :: TargetInstancesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
TISLWCNextHopNotRunning :: TargetInstancesScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
TISLWCNotCriticalError :: TargetInstancesScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
TISLWCNoResultsOnPage :: TargetInstancesScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
TISLWCRequiredTosAgreement :: TargetInstancesScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
TISLWCResourceNotDeleted :: TargetInstancesScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
TISLWCSingleInstancePropertyTemplate :: TargetInstancesScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
TISLWCUnreachable :: TargetInstancesScopedListWarningCode

-- | A map of scoped BackendService lists.
--   
--   <i>See:</i> <a>backendServiceAggregatedListItems</a> smart
--   constructor.
data BackendServiceAggregatedListItems

-- | Creates a value of <a>BackendServiceAggregatedListItems</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bsaliAddtional</a></li>
--   </ul>
backendServiceAggregatedListItems :: HashMap Text BackendServicesScopedList -> BackendServiceAggregatedListItems

-- | Name of the scope containing this set of BackendServices.
bsaliAddtional :: Lens' BackendServiceAggregatedListItems (HashMap Text BackendServicesScopedList)

-- | <ul>
--   <li><i>Output Only</i> A map of scoped instance lists.</li>
--   </ul>
--   
--   <i>See:</i> <a>instanceAggregatedListItems</a> smart constructor.
data InstanceAggregatedListItems

-- | Creates a value of <a>InstanceAggregatedListItems</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ialiAddtional</a></li>
--   </ul>
instanceAggregatedListItems :: HashMap Text InstancesScopedList -> InstanceAggregatedListItems

-- | <ul>
--   <li><i>Output Only</i> Name of the scope containing this set of
--   instances.</li>
--   </ul>
ialiAddtional :: Lens' InstanceAggregatedListItems (HashMap Text InstancesScopedList)

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of autoscalers when the list is empty.</li>
--   </ul>
--   
--   <i>See:</i> <a>autoscalersScopedListWarning</a> smart constructor.
data AutoscalersScopedListWarning

-- | Creates a value of <a>AutoscalersScopedListWarning</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aslwData</a></li>
--   <li><a>aslwCode</a></li>
--   <li><a>aslwMessage</a></li>
--   </ul>
autoscalersScopedListWarning :: AutoscalersScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
aslwData :: Lens' AutoscalersScopedListWarning [AutoscalersScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
aslwCode :: Lens' AutoscalersScopedListWarning (Maybe AutoscalersScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
aslwMessage :: Lens' AutoscalersScopedListWarning (Maybe Text)

-- | Contains a list of HealthCheck resources.
--   
--   <i>See:</i> <a>healthCheckList</a> smart constructor.
data HealthCheckList

-- | Creates a value of <a>HealthCheckList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hclNextPageToken</a></li>
--   <li><a>hclKind</a></li>
--   <li><a>hclItems</a></li>
--   <li><a>hclSelfLink</a></li>
--   <li><a>hclId</a></li>
--   </ul>
healthCheckList :: HealthCheckList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
hclNextPageToken :: Lens' HealthCheckList (Maybe Text)

-- | Type of resource.
hclKind :: Lens' HealthCheckList Text

-- | A list of HealthCheck resources.
hclItems :: Lens' HealthCheckList [HealthCheck]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
hclSelfLink :: Lens' HealthCheckList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
hclId :: Lens' HealthCheckList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Encountered errors during the last attempt to
--   create or delete the instance.</li>
--   </ul>
--   
--   <i>See:</i> <a>managedInstanceLastAttemptErrors</a> smart constructor.
data ManagedInstanceLastAttemptErrors

-- | Creates a value of <a>ManagedInstanceLastAttemptErrors</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>milaeErrors</a></li>
--   </ul>
managedInstanceLastAttemptErrors :: ManagedInstanceLastAttemptErrors

-- | <ul>
--   <li><i>Output Only</i> The array of errors encountered while
--   processing this operation.</li>
--   </ul>
milaeErrors :: Lens' ManagedInstanceLastAttemptErrors [ManagedInstanceLastAttemptErrorsErrorsItem]

-- | The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is
--   supported. For newer Windows images, the server might also populate
--   this property with the value WINDOWS to indicate that this is a
--   Windows image. This value is purely informational and does not enable
--   or disable any features.
data GuestOSFeatureType

-- | <pre>
--   FEATURE_TYPE_UNSPECIFIED
--   </pre>
FeatureTypeUnspecified :: GuestOSFeatureType

-- | <pre>
--   VIRTIO_SCSI_MULTIQUEUE
--   </pre>
VirtioScsiMultiQueue :: GuestOSFeatureType

-- | <pre>
--   WINDOWS
--   </pre>
Windows :: GuestOSFeatureType

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data RouteWarningsItemCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
RWICCleanupFailed :: RouteWarningsItemCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
RWICDeprecatedResourceUsed :: RouteWarningsItemCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
RWICDiskSizeLargerThanImageSize :: RouteWarningsItemCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
RWICFieldValueOverriden :: RouteWarningsItemCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
RWICInjectedKernelsDeprecated :: RouteWarningsItemCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
RWICNextHopAddressNotAssigned :: RouteWarningsItemCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
RWICNextHopCannotIPForward :: RouteWarningsItemCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
RWICNextHopInstanceNotFound :: RouteWarningsItemCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
RWICNextHopInstanceNotOnNetwork :: RouteWarningsItemCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
RWICNextHopNotRunning :: RouteWarningsItemCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
RWICNotCriticalError :: RouteWarningsItemCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
RWICNoResultsOnPage :: RouteWarningsItemCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
RWICRequiredTosAgreement :: RouteWarningsItemCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
RWICResourceNotDeleted :: RouteWarningsItemCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
RWICSingleInstancePropertyTemplate :: RouteWarningsItemCode

-- | <pre>
--   UNREACHABLE
--   </pre>
RWICUnreachable :: RouteWarningsItemCode
data TargetPoolsRemoveInstanceRequest

-- | Creates a value of <a>TargetPoolsRemoveInstanceRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tprirInstances</a></li>
--   </ul>
targetPoolsRemoveInstanceRequest :: TargetPoolsRemoveInstanceRequest

-- | URLs of the instances to be removed from target pool.
tprirInstances :: Lens' TargetPoolsRemoveInstanceRequest [InstanceReference]
data TargetInstancesScopedListWarningDataItem

-- | Creates a value of <a>TargetInstancesScopedListWarningDataItem</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tislwdiValue</a></li>
--   <li><a>tislwdiKey</a></li>
--   </ul>
targetInstancesScopedListWarningDataItem :: TargetInstancesScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
tislwdiValue :: Lens' TargetInstancesScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
tislwdiKey :: Lens' TargetInstancesScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> An informational warning that appears when the
--   machine types list is empty.</li>
--   </ul>
--   
--   <i>See:</i> <a>machineTypesScopedListWarning</a> smart constructor.
data MachineTypesScopedListWarning

-- | Creates a value of <a>MachineTypesScopedListWarning</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mtslwData</a></li>
--   <li><a>mtslwCode</a></li>
--   <li><a>mtslwMessage</a></li>
--   </ul>
machineTypesScopedListWarning :: MachineTypesScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
mtslwData :: Lens' MachineTypesScopedListWarning [MachineTypesScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
mtslwCode :: Lens' MachineTypesScopedListWarning (Maybe MachineTypesScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
mtslwMessage :: Lens' MachineTypesScopedListWarning (Maybe Text)

-- | A TargetInstance resource. This resource defines an endpoint instance
--   that terminates traffic of certain protocols.
--   
--   <i>See:</i> <a>targetInstance</a> smart constructor.
data TargetInstance

-- | Creates a value of <a>TargetInstance</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tiKind</a></li>
--   <li><a>tiNATPolicy</a></li>
--   <li><a>tiZone</a></li>
--   <li><a>tiSelfLink</a></li>
--   <li><a>tiName</a></li>
--   <li><a>tiCreationTimestamp</a></li>
--   <li><a>tiId</a></li>
--   <li><a>tiDescription</a></li>
--   <li><a>tiInstance</a></li>
--   </ul>
targetInstance :: TargetInstance

-- | <ul>
--   <li><i>Output Only</i> The type of the resource. Always
--   compute#targetInstance for target instances.</li>
--   </ul>
tiKind :: Lens' TargetInstance Text

-- | NAT option controlling how IPs are NAT'ed to the instance. Currently
--   only NO_NAT (default value) is supported.
tiNATPolicy :: Lens' TargetInstance (Maybe TargetInstanceNATPolicy)

-- | <ul>
--   <li><i>Output Only</i> URL of the zone where the target instance
--   resides.</li>
--   </ul>
tiZone :: Lens' TargetInstance (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
tiSelfLink :: Lens' TargetInstance (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
tiName :: Lens' TargetInstance (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
tiCreationTimestamp :: Lens' TargetInstance (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
tiId :: Lens' TargetInstance (Maybe Word64)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
tiDescription :: Lens' TargetInstance (Maybe Text)

-- | A URL to the virtual machine instance that handles traffic for this
--   target instance. When creating a target instance, you can provide the
--   fully-qualified URL or a valid partial URL to the desired virtual
--   machine. For example, the following are all valid URLs: -
--   https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance
--   - projects/project/zones/zone/instances/instance -
--   zones/zone/instances/instance
tiInstance :: Lens' TargetInstance (Maybe Text)
data TargetPoolInstanceHealth

-- | Creates a value of <a>TargetPoolInstanceHealth</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpihKind</a></li>
--   <li><a>tpihHealthStatus</a></li>
--   </ul>
targetPoolInstanceHealth :: TargetPoolInstanceHealth

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#targetPoolInstanceHealth when checking the health of an
--   instance.</li>
--   </ul>
tpihKind :: Lens' TargetPoolInstanceHealth Text
tpihHealthStatus :: Lens' TargetPoolInstanceHealth [HealthStatus]

-- | <ul>
--   <li><i>Output Only</i> An indicator whether storageBytes is in a
--   stable state or it is being adjusted as a result of shared storage
--   reallocation. This status can either be UPDATING, meaning the size of
--   the snapshot is being updated, or UP_TO_DATE, meaning the size of the
--   snapshot is up-to-date.</li>
--   </ul>
data SnapshotStorageBytesStatus

-- | <pre>
--   UPDATING
--   </pre>
Updating :: SnapshotStorageBytesStatus

-- | <pre>
--   UP_TO_DATE
--   </pre>
UpToDate :: SnapshotStorageBytesStatus
data InstanceGroupManagersListManagedInstancesResponse

-- | Creates a value of
--   <a>InstanceGroupManagersListManagedInstancesResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmlmirManagedInstances</a></li>
--   </ul>
instanceGroupManagersListManagedInstancesResponse :: InstanceGroupManagersListManagedInstancesResponse

-- | <ul>
--   <li><i>Output Only</i> The list of instances in the managed instance
--   group.</li>
--   </ul>
igmlmirManagedInstances :: Lens' InstanceGroupManagersListManagedInstancesResponse [ManagedInstance]

-- | <i>See:</i> <a>instanceProperties</a> smart constructor.
data InstanceProperties

-- | Creates a value of <a>InstanceProperties</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ipServiceAccounts</a></li>
--   <li><a>ipNetworkInterfaces</a></li>
--   <li><a>ipMachineType</a></li>
--   <li><a>ipMetadata</a></li>
--   <li><a>ipScheduling</a></li>
--   <li><a>ipDisks</a></li>
--   <li><a>ipCanIPForward</a></li>
--   <li><a>ipDescription</a></li>
--   <li><a>ipTags</a></li>
--   </ul>
instanceProperties :: InstanceProperties

-- | A list of service accounts with specified scopes. Access tokens for
--   these service accounts are available to the instances that are created
--   from this template. Use metadata queries to obtain the access tokens
--   for these instances.
ipServiceAccounts :: Lens' InstanceProperties [ServiceAccount]

-- | An array of network access configurations for this interface.
ipNetworkInterfaces :: Lens' InstanceProperties [NetworkInterface]

-- | The machine type to use for instances that are created from this
--   template.
ipMachineType :: Lens' InstanceProperties (Maybe Text)

-- | The metadata key/value pairs to assign to instances that are created
--   from this template. These pairs can consist of custom metadata or
--   predefined keys. See Project and instance metadata for more
--   information.
ipMetadata :: Lens' InstanceProperties (Maybe Metadata)

-- | Specifies the scheduling options for the instances that are created
--   from this template.
ipScheduling :: Lens' InstanceProperties (Maybe Scheduling)

-- | An array of disks that are associated with the instances that are
--   created from this template.
ipDisks :: Lens' InstanceProperties [AttachedDisk]

-- | Enables instances created based on this template to send packets with
--   source IP addresses other than their own and receive packets with
--   destination IP addresses other than their own. If these instances will
--   be used as an IP gateway or it will be set as the next-hop in a Route
--   resource, specify true. If unsure, leave this set to false. See the
--   Enable IP forwarding for instances documentation for more information.
ipCanIPForward :: Lens' InstanceProperties (Maybe Bool)

-- | An optional text description for the instances that are created from
--   this instance template.
ipDescription :: Lens' InstanceProperties (Maybe Text)

-- | A list of tags to apply to the instances that are created from this
--   template. The tags identify valid sources or targets for network
--   firewalls. The setTags method can modify this list of tags. Each tag
--   within the list must comply with RFC1035.
ipTags :: Lens' InstanceProperties (Maybe Tags)

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of disk types when the list is empty.</li>
--   </ul>
--   
--   <i>See:</i> <a>diskTypesScopedListWarning</a> smart constructor.
data DiskTypesScopedListWarning

-- | Creates a value of <a>DiskTypesScopedListWarning</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtslwData</a></li>
--   <li><a>dtslwCode</a></li>
--   <li><a>dtslwMessage</a></li>
--   </ul>
diskTypesScopedListWarning :: DiskTypesScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
dtslwData :: Lens' DiskTypesScopedListWarning [DiskTypesScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
dtslwCode :: Lens' DiskTypesScopedListWarning (Maybe DiskTypesScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
dtslwMessage :: Lens' DiskTypesScopedListWarning (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data AddressesScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
ASLWCCleanupFailed :: AddressesScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
ASLWCDeprecatedResourceUsed :: AddressesScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
ASLWCDiskSizeLargerThanImageSize :: AddressesScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
ASLWCFieldValueOverriden :: AddressesScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
ASLWCInjectedKernelsDeprecated :: AddressesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
ASLWCNextHopAddressNotAssigned :: AddressesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
ASLWCNextHopCannotIPForward :: AddressesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
ASLWCNextHopInstanceNotFound :: AddressesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
ASLWCNextHopInstanceNotOnNetwork :: AddressesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
ASLWCNextHopNotRunning :: AddressesScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
ASLWCNotCriticalError :: AddressesScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
ASLWCNoResultsOnPage :: AddressesScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
ASLWCRequiredTosAgreement :: AddressesScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
ASLWCResourceNotDeleted :: AddressesScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
ASLWCSingleInstancePropertyTemplate :: AddressesScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
ASLWCUnreachable :: AddressesScopedListWarningCode

-- | <ul>
--   <li><i>Input Only</i> Specifies the parameters for a new disk that
--   will be created alongside the new instance. Use initialization
--   parameters to create boot disks or local SSDs attached to the new
--   instance. This property is mutually exclusive with the source
--   property; you can only define one or the other, but not both.</li>
--   </ul>
--   
--   <i>See:</i> <a>attachedDiskInitializeParams</a> smart constructor.
data AttachedDiskInitializeParams

-- | Creates a value of <a>AttachedDiskInitializeParams</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>adipSourceImage</a></li>
--   <li><a>adipDiskSizeGb</a></li>
--   <li><a>adipDiskName</a></li>
--   <li><a>adipSourceImageEncryptionKey</a></li>
--   <li><a>adipDiskType</a></li>
--   </ul>
attachedDiskInitializeParams :: AttachedDiskInitializeParams

-- | The source image to create this disk. When creating a new instance,
--   one of initializeParams.sourceImage or disks.source is required. To
--   create a disk with one of the public operating system images, specify
--   the image by its family name. For example, specify family/debian-8 to
--   use the latest Debian 8 image:
--   projects/debian-cloud/global/images/family/debian-8 Alternatively, use
--   a specific version of a public operating system image:
--   projects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD To
--   create a disk with a private image that you created, specify the image
--   name in the following format: global/images/my-private-image You can
--   also specify a private image by its image family, which returns the
--   latest version of the image in that family. Replace the image name
--   with family/family-name: global/images/family/my-private-family If the
--   source image is deleted later, this field will not be set.
adipSourceImage :: Lens' AttachedDiskInitializeParams (Maybe Text)

-- | Specifies the size of the disk in base-2 GB.
adipDiskSizeGb :: Lens' AttachedDiskInitializeParams (Maybe Int64)

-- | Specifies the disk name. If not specified, the default is to use the
--   name of the instance.
adipDiskName :: Lens' AttachedDiskInitializeParams (Maybe Text)

-- | The customer-supplied encryption key of the source image. Required if
--   the source image is protected by a customer-supplied encryption key.
--   Instance templates do not store customer-supplied encryption keys, so
--   you cannot create disks for instances in a managed instance group if
--   the source images are encrypted with your own keys.
adipSourceImageEncryptionKey :: Lens' AttachedDiskInitializeParams (Maybe CustomerEncryptionKey)

-- | Specifies the disk type to use to create the instance. If not
--   specified, the default is pd-standard, specified using the full URL.
--   For example:
--   https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/pd-standard
--   Other values include pd-ssd and local-ssd. If you define this field,
--   you can provide either the full or partial URL. For example, the
--   following are valid values: -
--   https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/diskType
--   - projects/project/zones/zone/diskTypes/diskType -
--   zones/zone/diskTypes/diskType Note that for InstanceTemplate, this is
--   the name of the disk type, not URL.
adipDiskType :: Lens' AttachedDiskInitializeParams (Maybe Text)
data AddressesScopedListWarningDataItem

-- | Creates a value of <a>AddressesScopedListWarningDataItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aslwdiValue</a></li>
--   <li><a>aslwdiKey</a></li>
--   </ul>
addressesScopedListWarningDataItem :: AddressesScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
aslwdiValue :: Lens' AddressesScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
aslwdiKey :: Lens' AddressesScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The status of the image. An image can be used
--   to create other resources, such as instances, only after the image has
--   been successfully created and the status is set to READY. Possible
--   values are FAILED, PENDING, or READY.</li>
--   </ul>
data ImageStatus

-- | <pre>
--   FAILED
--   </pre>
ISFailed :: ImageStatus

-- | <pre>
--   PENDING
--   </pre>
ISPending :: ImageStatus

-- | <pre>
--   READY
--   </pre>
ISReady :: ImageStatus

-- | A network interface resource attached to an instance.
--   
--   <i>See:</i> <a>networkInterface</a> smart constructor.
data NetworkInterface

-- | Creates a value of <a>NetworkInterface</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>niKind</a></li>
--   <li><a>niNetwork</a></li>
--   <li><a>niName</a></li>
--   <li><a>niNetworkIP</a></li>
--   <li><a>niSubnetwork</a></li>
--   <li><a>niAccessConfigs</a></li>
--   </ul>
networkInterface :: NetworkInterface

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always
--   compute#networkInterface for network interfaces.</li>
--   </ul>
niKind :: Lens' NetworkInterface Text

-- | URL of the network resource for this instance. This is required for
--   creating an instance but optional when creating a firewall rule. If
--   not specified when creating a firewall rule, the default network is
--   used: global/networks/default If you specify this property, you can
--   specify the network as a full or partial URL. For example, the
--   following are all valid URLs: -
--   https://www.googleapis.com/compute/v1/projects/project/global/networks/network
--   - projects/project/global/networks/network - global/networks/default
niNetwork :: Lens' NetworkInterface (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The name of the network interface, generated by
--   the server. For network devices, these are eth0, eth1, etc.</li>
--   </ul>
niName :: Lens' NetworkInterface (Maybe Text)

-- | An IPv4 internal network address to assign to the instance for this
--   network interface. If not specified by the user, an unused internal IP
--   is assigned by the system.
niNetworkIP :: Lens' NetworkInterface (Maybe Text)

-- | The URL of the Subnetwork resource for this instance. If the network
--   resource is in legacy mode, do not provide this property. If the
--   network is in auto subnet mode, providing the subnetwork is optional.
--   If the network is in custom subnet mode, then this field should be
--   specified. If you specify this property, you can specify the
--   subnetwork as a full or partial URL. For example, the following are
--   all valid URLs: -
--   https://www.googleapis.com/compute/v1/projects/project/regions/region/subnetworks/subnetwork
--   - regions/region/subnetworks/subnetwork
niSubnetwork :: Lens' NetworkInterface (Maybe Text)

-- | An array of configurations for this interface. Currently, only one
--   access config, ONE_TO_ONE_NAT, is supported. If there are no
--   accessConfigs specified, then this instance will have no external
--   internet access.
niAccessConfigs :: Lens' NetworkInterface [AccessConfig]
data TargetPoolsRemoveHealthCheckRequest

-- | Creates a value of <a>TargetPoolsRemoveHealthCheckRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tprhcrHealthChecks</a></li>
--   </ul>
targetPoolsRemoveHealthCheckRequest :: TargetPoolsRemoveHealthCheckRequest

-- | Health check URL to be removed. This can be a full or valid partial
--   URL. For example, the following are valid URLs: -
--   https://www.googleapis.com/compute/beta/projects/project/global/httpHealthChecks/health-check
--   - projects/project/global/httpHealthChecks/health-check -
--   global/httpHealthChecks/health-check
tprhcrHealthChecks :: Lens' TargetPoolsRemoveHealthCheckRequest [HealthCheckReference]
data RegionInstanceGroupManagersSetTargetPoolsRequest

-- | Creates a value of
--   <a>RegionInstanceGroupManagersSetTargetPoolsRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmstprFingerprint</a></li>
--   <li><a>rigmstprTargetPools</a></li>
--   </ul>
regionInstanceGroupManagersSetTargetPoolsRequest :: RegionInstanceGroupManagersSetTargetPoolsRequest

-- | Fingerprint of the target pools information, which is a hash of the
--   contents. This field is used for optimistic locking when you update
--   the target pool entries. This field is optional.
rigmstprFingerprint :: Lens' RegionInstanceGroupManagersSetTargetPoolsRequest (Maybe ByteString)

-- | The URL of all TargetPool resources to which instances in the
--   instanceGroup field are added. The target pools automatically apply to
--   all of the instances in the managed instance group.
rigmstprTargetPools :: Lens' RegionInstanceGroupManagersSetTargetPoolsRequest [Text]

-- | Contains a list of TargetSslProxy resources.
--   
--   <i>See:</i> <a>targetSSLProxyList</a> smart constructor.
data TargetSSLProxyList

-- | Creates a value of <a>TargetSSLProxyList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tsplNextPageToken</a></li>
--   <li><a>tsplKind</a></li>
--   <li><a>tsplItems</a></li>
--   <li><a>tsplSelfLink</a></li>
--   <li><a>tsplId</a></li>
--   </ul>
targetSSLProxyList :: TargetSSLProxyList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
tsplNextPageToken :: Lens' TargetSSLProxyList (Maybe Text)

-- | Type of resource.
tsplKind :: Lens' TargetSSLProxyList Text

-- | A list of TargetSslProxy resources.
tsplItems :: Lens' TargetSSLProxyList [TargetSSLProxy]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
tsplSelfLink :: Lens' TargetSSLProxyList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
tsplId :: Lens' TargetSSLProxyList (Maybe Text)
data CustomerEncryptionKeyProtectedDisk

-- | Creates a value of <a>CustomerEncryptionKeyProtectedDisk</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cekpdDiskEncryptionKey</a></li>
--   <li><a>cekpdSource</a></li>
--   </ul>
customerEncryptionKeyProtectedDisk :: CustomerEncryptionKeyProtectedDisk

-- | Decrypts data associated with the disk with a customer-supplied
--   encryption key.
cekpdDiskEncryptionKey :: Lens' CustomerEncryptionKeyProtectedDisk (Maybe CustomerEncryptionKey)

-- | Specifies a valid partial or full URL to an existing Persistent Disk
--   resource. This field is only applicable for persistent disks.
cekpdSource :: Lens' CustomerEncryptionKeyProtectedDisk (Maybe Text)

-- | Health state of the instance.
data HealthStatusHealthState

-- | <pre>
--   HEALTHY
--   </pre>
Healthy :: HealthStatusHealthState

-- | <pre>
--   UNHEALTHY
--   </pre>
Unhealthy :: HealthStatusHealthState

-- | A list of instance templates.
--   
--   <i>See:</i> <a>instanceTemplateList</a> smart constructor.
data InstanceTemplateList

-- | Creates a value of <a>InstanceTemplateList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>itlNextPageToken</a></li>
--   <li><a>itlKind</a></li>
--   <li><a>itlItems</a></li>
--   <li><a>itlSelfLink</a></li>
--   <li><a>itlId</a></li>
--   </ul>
instanceTemplateList :: InstanceTemplateList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
itlNextPageToken :: Lens' InstanceTemplateList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The resource type, which is always
--   compute#instanceTemplatesListResponse for instance template
--   lists.</li>
--   </ul>
itlKind :: Lens' InstanceTemplateList Text

-- | <ul>
--   <li><i>Output Only</i> list of InstanceTemplate resources.</li>
--   </ul>
itlItems :: Lens' InstanceTemplateList [InstanceTemplate]

-- | <ul>
--   <li><i>Output Only</i> The URL for this instance template list. The
--   server defines this URL.</li>
--   </ul>
itlSelfLink :: Lens' InstanceTemplateList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A unique identifier for this instance template.
--   The server defines this identifier.</li>
--   </ul>
itlId :: Lens' InstanceTemplateList (Maybe Text)

-- | Contains a list of Route resources.
--   
--   <i>See:</i> <a>routeList</a> smart constructor.
data RouteList

-- | Creates a value of <a>RouteList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rlNextPageToken</a></li>
--   <li><a>rlKind</a></li>
--   <li><a>rlItems</a></li>
--   <li><a>rlSelfLink</a></li>
--   <li><a>rlId</a></li>
--   </ul>
routeList :: RouteList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
rlNextPageToken :: Lens' RouteList (Maybe Text)

-- | Type of resource.
rlKind :: Lens' RouteList Text

-- | <ul>
--   <li><i>Output Only</i> A list of Route resources.</li>
--   </ul>
rlItems :: Lens' RouteList [Route]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
rlSelfLink :: Lens' RouteList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource. Defined by
--   the server.</li>
--   </ul>
rlId :: Lens' RouteList (Maybe Text)

-- | The deprecation state of this resource. This can be DEPRECATED,
--   OBSOLETE, or DELETED. Operations which create a new resource using a
--   DEPRECATED resource will return successfully, but with a warning
--   indicating the deprecated resource and recommending its replacement.
--   Operations which use OBSOLETE or DELETED resources will be rejected
--   and result in an error.
data DeprecationStatusState

-- | <pre>
--   DELETED
--   </pre>
Deleted :: DeprecationStatusState

-- | <pre>
--   DEPRECATED
--   </pre>
Deprecated :: DeprecationStatusState

-- | <pre>
--   OBSOLETE
--   </pre>
Obsolete :: DeprecationStatusState

-- | Router resource.
--   
--   <i>See:</i> <a>router</a> smart constructor.
data Router

-- | Creates a value of <a>Router</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rouBGPPeers</a></li>
--   <li><a>rouBGP</a></li>
--   <li><a>rouKind</a></li>
--   <li><a>rouNetwork</a></li>
--   <li><a>rouInterfaces</a></li>
--   <li><a>rouSelfLink</a></li>
--   <li><a>rouName</a></li>
--   <li><a>rouCreationTimestamp</a></li>
--   <li><a>rouId</a></li>
--   <li><a>rouRegion</a></li>
--   <li><a>rouDescription</a></li>
--   </ul>
router :: Router

-- | BGP information that needs to be configured into the routing stack to
--   establish the BGP peering. It must specify peer ASN and either
--   interface name, IP, or peer IP. Please refer to RFC4273.
rouBGPPeers :: Lens' Router [RouterBGPPeer]

-- | BGP information specific to this router.
rouBGP :: Lens' Router (Maybe RouterBGP)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#router for
--   routers.</li>
--   </ul>
rouKind :: Lens' Router Text

-- | URI of the network to which this router belongs.
rouNetwork :: Lens' Router (Maybe Text)

-- | Router interfaces. Each interface requires either one linked resource
--   (e.g. linkedVpnTunnel), or IP address and IP address range (e.g.
--   ipRange), or both.
rouInterfaces :: Lens' Router [RouterInterface]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
rouSelfLink :: Lens' Router (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
rouName :: Lens' Router (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
rouCreationTimestamp :: Lens' Router (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
rouId :: Lens' Router (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> URI of the region where the router
--   resides.</li>
--   </ul>
rouRegion :: Lens' Router (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
rouDescription :: Lens' Router (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data RoutersScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
RSLWCCleanupFailed :: RoutersScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
RSLWCDeprecatedResourceUsed :: RoutersScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
RSLWCDiskSizeLargerThanImageSize :: RoutersScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
RSLWCFieldValueOverriden :: RoutersScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
RSLWCInjectedKernelsDeprecated :: RoutersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
RSLWCNextHopAddressNotAssigned :: RoutersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
RSLWCNextHopCannotIPForward :: RoutersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
RSLWCNextHopInstanceNotFound :: RoutersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
RSLWCNextHopInstanceNotOnNetwork :: RoutersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
RSLWCNextHopNotRunning :: RoutersScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
RSLWCNotCriticalError :: RoutersScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
RSLWCNoResultsOnPage :: RoutersScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
RSLWCRequiredTosAgreement :: RoutersScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
RSLWCResourceNotDeleted :: RoutersScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
RSLWCSingleInstancePropertyTemplate :: RoutersScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
RSLWCUnreachable :: RoutersScopedListWarningCode
data RoutersScopedListWarningDataItem

-- | Creates a value of <a>RoutersScopedListWarningDataItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rslwdiValue</a></li>
--   <li><a>rslwdiKey</a></li>
--   </ul>
routersScopedListWarningDataItem :: RoutersScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
rslwdiValue :: Lens' RoutersScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
rslwdiKey :: Lens' RoutersScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The current action that the managed instance
--   group has scheduled for the instance. Possible values: - NONE The
--   instance is running, and the managed instance group does not have any
--   scheduled actions for this instance. - CREATING The managed instance
--   group is creating this instance. If the group fails to create this
--   instance, it will try again until it is successful. -
--   CREATING_WITHOUT_RETRIES The managed instance group is attempting to
--   create this instance only once. If the group fails to create this
--   instance, it does not try again and the group's targetSize value is
--   decreased instead. - RECREATING The managed instance group is
--   recreating this instance. - DELETING The managed instance group is
--   permanently deleting this instance. - ABANDONING The managed instance
--   group is abandoning this instance. The instance will be removed from
--   the instance group and from any target pools that are associated with
--   this group. - RESTARTING The managed instance group is restarting the
--   instance. - REFRESHING The managed instance group is applying
--   configuration changes to the instance without stopping it. For
--   example, the group can update the target pool list for an instance
--   without stopping that instance.</li>
--   </ul>
data ManagedInstanceCurrentAction

-- | <pre>
--   ABANDONING
--   </pre>
MICAAbandoning :: ManagedInstanceCurrentAction

-- | <pre>
--   CREATING
--   </pre>
MICACreating :: ManagedInstanceCurrentAction

-- | <pre>
--   CREATING_WITHOUT_RETRIES
--   </pre>
MICACreatingWithoutRetries :: ManagedInstanceCurrentAction

-- | <pre>
--   DELETING
--   </pre>
MICADeleting :: ManagedInstanceCurrentAction

-- | <pre>
--   NONE
--   </pre>
MICANone :: ManagedInstanceCurrentAction

-- | <pre>
--   RECREATING
--   </pre>
MICARecreating :: ManagedInstanceCurrentAction

-- | <pre>
--   REFRESHING
--   </pre>
MICARefreshing :: ManagedInstanceCurrentAction

-- | <pre>
--   RESTARTING
--   </pre>
MICARestarting :: ManagedInstanceCurrentAction

-- | Contains a list of TargetVpnGateway resources.
--   
--   <i>See:</i> <a>targetVPNGatewayList</a> smart constructor.
data TargetVPNGatewayList

-- | Creates a value of <a>TargetVPNGatewayList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tvglNextPageToken</a></li>
--   <li><a>tvglKind</a></li>
--   <li><a>tvglItems</a></li>
--   <li><a>tvglSelfLink</a></li>
--   <li><a>tvglId</a></li>
--   </ul>
targetVPNGatewayList :: TargetVPNGatewayList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
tvglNextPageToken :: Lens' TargetVPNGatewayList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#targetVpnGateway for target VPN gateways.</li>
--   </ul>
tvglKind :: Lens' TargetVPNGatewayList Text

-- | <ul>
--   <li><i>Output Only</i> A list of TargetVpnGateway resources.</li>
--   </ul>
tvglItems :: Lens' TargetVPNGatewayList [TargetVPNGateway]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
tvglSelfLink :: Lens' TargetVPNGatewayList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
tvglId :: Lens' TargetVPNGatewayList (Maybe Text)

-- | NAT option controlling how IPs are NAT'ed to the instance. Currently
--   only NO_NAT (default value) is supported.
data TargetInstanceNATPolicy

-- | <pre>
--   NO_NAT
--   </pre>
NoNAT :: TargetInstanceNATPolicy

-- | Contains a list of SslCertificate resources.
--   
--   <i>See:</i> <a>sslCertificateList</a> smart constructor.
data SSLCertificateList

-- | Creates a value of <a>SSLCertificateList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sclNextPageToken</a></li>
--   <li><a>sclKind</a></li>
--   <li><a>sclItems</a></li>
--   <li><a>sclSelfLink</a></li>
--   <li><a>sclId</a></li>
--   </ul>
sslCertificateList :: SSLCertificateList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
sclNextPageToken :: Lens' SSLCertificateList (Maybe Text)

-- | Type of resource.
sclKind :: Lens' SSLCertificateList Text

-- | A list of SslCertificate resources.
sclItems :: Lens' SSLCertificateList [SSLCertificate]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
sclSelfLink :: Lens' SSLCertificateList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource. Defined by
--   the server.</li>
--   </ul>
sclId :: Lens' SSLCertificateList (Maybe Text)
data FirewallAllowedItem

-- | Creates a value of <a>FirewallAllowedItem</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>faiIPProtocol</a></li>
--   <li><a>faiPorts</a></li>
--   </ul>
firewallAllowedItem :: FirewallAllowedItem

-- | The IP protocol to which this rule applies. The protocol type is
--   required when creating a firewall rule. This value can either be one
--   of the following well known protocol strings (tcp, udp, icmp, esp, ah,
--   sctp), or the IP protocol number.
faiIPProtocol :: Lens' FirewallAllowedItem (Maybe Text)

-- | An optional list of ports to which this rule applies. This field is
--   only applicable for UDP or TCP protocol. Each entry must be either an
--   integer or a range. If not specified, this rule applies to connections
--   through any port. Example inputs include: ["22"], ["80","443"], and
--   ["12345-12349"].
faiPorts :: Lens' FirewallAllowedItem [Text]

-- | Contains a list of BackendServicesScopedList.
--   
--   <i>See:</i> <a>backendServiceAggregatedList</a> smart constructor.
data BackendServiceAggregatedList

-- | Creates a value of <a>BackendServiceAggregatedList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bsalNextPageToken</a></li>
--   <li><a>bsalKind</a></li>
--   <li><a>bsalItems</a></li>
--   <li><a>bsalSelfLink</a></li>
--   <li><a>bsalId</a></li>
--   </ul>
backendServiceAggregatedList :: BackendServiceAggregatedList

-- | <ul>
--   <li><i>Output Only</i> A token used to continue a truncated list
--   request.</li>
--   </ul>
bsalNextPageToken :: Lens' BackendServiceAggregatedList (Maybe Text)

-- | Type of resource.
bsalKind :: Lens' BackendServiceAggregatedList Text

-- | A map of scoped BackendService lists.
bsalItems :: Lens' BackendServiceAggregatedList (Maybe BackendServiceAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
bsalSelfLink :: Lens' BackendServiceAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource; defined by
--   the server.</li>
--   </ul>
bsalId :: Lens' BackendServiceAggregatedList (Maybe Text)

-- | Represents a Network resource. Read Networks and Firewalls for more
--   information.
--   
--   <i>See:</i> <a>network</a> smart constructor.
data Network

-- | Creates a value of <a>Network</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nAutoCreateSubnetworks</a></li>
--   <li><a>nKind</a></li>
--   <li><a>nSubnetworks</a></li>
--   <li><a>nIPv4Range</a></li>
--   <li><a>nSelfLink</a></li>
--   <li><a>nName</a></li>
--   <li><a>nCreationTimestamp</a></li>
--   <li><a>nId</a></li>
--   <li><a>nGatewayIPv4</a></li>
--   <li><a>nDescription</a></li>
--   </ul>
network :: Network

-- | When set to true, the network is created in "auto subnet mode". When
--   set to false, the network is in "custom subnet mode". In "auto subnet
--   mode", a newly created network is assigned the default CIDR of
--   10.128.0.0/9 and it automatically creates one subnetwork per region.
nAutoCreateSubnetworks :: Lens' Network (Maybe Bool)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#network
--   for networks.</li>
--   </ul>
nKind :: Lens' Network Text

-- | <ul>
--   <li><i>Output Only</i> Server-defined fully-qualified URLs for all
--   subnetworks in this network.</li>
--   </ul>
nSubnetworks :: Lens' Network [Text]

-- | The range of internal addresses that are legal on this network. This
--   range is a CIDR specification, for example: 192.168.0.0/16. Provided
--   by the client when the network is created.
nIPv4Range :: Lens' Network (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
nSelfLink :: Lens' Network (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
nName :: Lens' Network (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
nCreationTimestamp :: Lens' Network (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
nId :: Lens' Network (Maybe Word64)

-- | A gateway address for default routing to other networks. This value is
--   read only and is selected by the Google Compute Engine, typically as
--   the first usable address in the IPv4Range.
nGatewayIPv4 :: Lens' Network (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
nDescription :: Lens' Network (Maybe Text)

-- | Informational warning which replaces the list of routers when the list
--   is empty.
--   
--   <i>See:</i> <a>routersScopedListWarning</a> smart constructor.
data RoutersScopedListWarning

-- | Creates a value of <a>RoutersScopedListWarning</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rslwData</a></li>
--   <li><a>rslwCode</a></li>
--   <li><a>rslwMessage</a></li>
--   </ul>
routersScopedListWarning :: RoutersScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
rslwData :: Lens' RoutersScopedListWarning [RoutersScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
rslwCode :: Lens' RoutersScopedListWarning (Maybe RoutersScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
rslwMessage :: Lens' RoutersScopedListWarning (Maybe Text)

-- | The type of configuration. The default and only option is
--   ONE_TO_ONE_NAT.
data AccessConfigType

-- | <pre>
--   ONE_TO_ONE_NAT
--   </pre>
OneToOneNAT :: AccessConfigType

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of addresses when the list is empty.</li>
--   </ul>
--   
--   <i>See:</i> <a>addressesScopedListWarning</a> smart constructor.
data AddressesScopedListWarning

-- | Creates a value of <a>AddressesScopedListWarning</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aData</a></li>
--   <li><a>aCode</a></li>
--   <li><a>aMessage</a></li>
--   </ul>
addressesScopedListWarning :: AddressesScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
aData :: Lens' AddressesScopedListWarning [AddressesScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
aCode :: Lens' AddressesScopedListWarning (Maybe AddressesScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
aMessage :: Lens' AddressesScopedListWarning (Maybe Text)

-- | The parameters of the raw disk image.
--   
--   <i>See:</i> <a>imageRawDisk</a> smart constructor.
data ImageRawDisk

-- | Creates a value of <a>ImageRawDisk</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>irdContainerType</a></li>
--   <li><a>irdSource</a></li>
--   <li><a>irdSha1Checksum</a></li>
--   </ul>
imageRawDisk :: ImageRawDisk

-- | The format used to encode and transmit the block device, which should
--   be TAR. This is just a container and transmission format and not a
--   runtime format. Provided by the client when the disk image is created.
irdContainerType :: Lens' ImageRawDisk (Maybe ImageRawDiskContainerType)

-- | The full Google Cloud Storage URL where the disk image is stored. You
--   must provide either this property or the sourceDisk property but not
--   both.
irdSource :: Lens' ImageRawDisk (Maybe Text)

-- | An optional SHA1 checksum of the disk image before unpackaging;
--   provided by the client when the disk image is created.
irdSha1Checksum :: Lens' ImageRawDisk (Maybe Text)
data InstanceAggregatedList

-- | Creates a value of <a>InstanceAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ialNextPageToken</a></li>
--   <li><a>ialKind</a></li>
--   <li><a>ialItems</a></li>
--   <li><a>ialSelfLink</a></li>
--   <li><a>ialId</a></li>
--   </ul>
instanceAggregatedList :: InstanceAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
ialNextPageToken :: Lens' InstanceAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#instanceAggregatedList for aggregated lists of Instance
--   resources.</li>
--   </ul>
ialKind :: Lens' InstanceAggregatedList Text

-- | <ul>
--   <li><i>Output Only</i> A map of scoped instance lists.</li>
--   </ul>
ialItems :: Lens' InstanceAggregatedList (Maybe InstanceAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
ialSelfLink :: Lens' InstanceAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
ialId :: Lens' InstanceAggregatedList (Maybe Text)
data SSLHealthCheck

-- | Creates a value of <a>SSLHealthCheck</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>shcResponse</a></li>
--   <li><a>shcProxyHeader</a></li>
--   <li><a>shcPortName</a></li>
--   <li><a>shcPort</a></li>
--   <li><a>shcRequest</a></li>
--   </ul>
sslHealthCheck :: SSLHealthCheck

-- | The bytes to match against the beginning of the response data. If left
--   empty (the default value), any response will indicate health. The
--   response data can only be ASCII.
shcResponse :: Lens' SSLHealthCheck (Maybe Text)

-- | Specifies the type of proxy header to append before sending data to
--   the backend, either NONE or PROXY_V1. The default is NONE.
shcProxyHeader :: Lens' SSLHealthCheck (Maybe SSLHealthCheckProxyHeader)

-- | Port name as defined in InstanceGroupname. If both port and port_name
--   are defined, port takes precedence.
shcPortName :: Lens' SSLHealthCheck (Maybe Text)

-- | The TCP port number for the health check request. The default value is
--   443.
shcPort :: Lens' SSLHealthCheck (Maybe Int32)

-- | The application data to send once the SSL connection has been
--   established (default value is empty). If both request and response are
--   empty, the connection establishment alone will indicate health. The
--   request data can only be ASCII.
shcRequest :: Lens' SSLHealthCheck (Maybe Text)

-- | A reserved address resource.
--   
--   <i>See:</i> <a>address</a> smart constructor.
data Address

-- | Creates a value of <a>Address</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aStatus</a></li>
--   <li><a>aUsers</a></li>
--   <li><a>aKind</a></li>
--   <li><a>aAddress</a></li>
--   <li><a>aSelfLink</a></li>
--   <li><a>aName</a></li>
--   <li><a>aCreationTimestamp</a></li>
--   <li><a>aId</a></li>
--   <li><a>aRegion</a></li>
--   <li><a>aDescription</a></li>
--   </ul>
address :: Address

-- | <ul>
--   <li><i>Output Only</i> The status of the address, which can be either
--   IN_USE or RESERVED. An address that is RESERVED is currently reserved
--   and available to use. An IN_USE address is currently being used by
--   another resource and is not available.</li>
--   </ul>
aStatus :: Lens' Address (Maybe AddressStatus)

-- | <ul>
--   <li><i>Output Only</i> The URLs of the resources that are using this
--   address.</li>
--   </ul>
aUsers :: Lens' Address [Text]

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#address
--   for addresses.</li>
--   </ul>
aKind :: Lens' Address Text

-- | The static external IP address represented by this resource. Only IPv4
--   is supported.
aAddress :: Lens' Address (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
aSelfLink :: Lens' Address (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
aName :: Lens' Address (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
aCreationTimestamp :: Lens' Address (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
aId :: Lens' Address (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> URL of the region where the regional address
--   resides. This field is not applicable to global addresses.</li>
--   </ul>
aRegion :: Lens' Address (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
aDescription :: Lens' Address (Maybe Text)

-- | A Zone resource.
--   
--   <i>See:</i> <a>zone</a> smart constructor.
data Zone

-- | Creates a value of <a>Zone</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>zStatus</a></li>
--   <li><a>zKind</a></li>
--   <li><a>zSelfLink</a></li>
--   <li><a>zName</a></li>
--   <li><a>zCreationTimestamp</a></li>
--   <li><a>zId</a></li>
--   <li><a>zRegion</a></li>
--   <li><a>zDescription</a></li>
--   <li><a>zDeprecated</a></li>
--   </ul>
zone :: Zone

-- | <ul>
--   <li><i>Output Only</i> Status of the zone, either UP or DOWN.</li>
--   </ul>
zStatus :: Lens' Zone (Maybe ZoneStatus)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#zone for
--   zones.</li>
--   </ul>
zKind :: Lens' Zone Text

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
zSelfLink :: Lens' Zone (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Name of the resource.</li>
--   </ul>
zName :: Lens' Zone (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
zCreationTimestamp :: Lens' Zone (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
zId :: Lens' Zone (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> Full URL reference to the region which hosts
--   the zone.</li>
--   </ul>
zRegion :: Lens' Zone (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Textual description of the resource.</li>
--   </ul>
zDescription :: Lens' Zone (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The deprecation status associated with this
--   zone.</li>
--   </ul>
zDeprecated :: Lens' Zone (Maybe DeprecationStatus)
data RouterBGP

-- | Creates a value of <a>RouterBGP</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rbASN</a></li>
--   </ul>
routerBGP :: RouterBGP

-- | Local BGP Autonomous System Number (ASN). Must be an RFC6996 private
--   ASN, either 16-bit or 32-bit. The value will be fixed for this router
--   resource. All VPN tunnels that link to this router will have the same
--   local ASN.
rbASN :: Lens' RouterBGP (Maybe Word32)
data BackendServicesScopedList

-- | Creates a value of <a>BackendServicesScopedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bsslWarning</a></li>
--   <li><a>bsslBackendServices</a></li>
--   </ul>
backendServicesScopedList :: BackendServicesScopedList

-- | Informational warning which replaces the list of backend services when
--   the list is empty.
bsslWarning :: Lens' BackendServicesScopedList (Maybe BackendServicesScopedListWarning)

-- | List of BackendServices contained in this scope.
bsslBackendServices :: Lens' BackendServicesScopedList [BackendService]
data InstanceGroupManagersRecreateInstancesRequest

-- | Creates a value of
--   <a>InstanceGroupManagersRecreateInstancesRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmrirInstances</a></li>
--   </ul>
instanceGroupManagersRecreateInstancesRequest :: InstanceGroupManagersRecreateInstancesRequest

-- | The URL for one or more instances to recreate.
igmrirInstances :: Lens' InstanceGroupManagersRecreateInstancesRequest [Text]
data TargetSSLProxiesSetSSLCertificatesRequest

-- | Creates a value of <a>TargetSSLProxiesSetSSLCertificatesRequest</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tspsscrSSLCertificates</a></li>
--   </ul>
targetSSLProxiesSetSSLCertificatesRequest :: TargetSSLProxiesSetSSLCertificatesRequest

-- | New set of URLs to SslCertificate resources to associate with this
--   TargetSslProxy. Currently exactly one ssl certificate must be
--   specified.
tspsscrSSLCertificates :: Lens' TargetSSLProxiesSetSSLCertificatesRequest [Text]
data InstancesScopedList

-- | Creates a value of <a>InstancesScopedList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>islWarning</a></li>
--   <li><a>islInstances</a></li>
--   </ul>
instancesScopedList :: InstancesScopedList

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of instances when the list is empty.</li>
--   </ul>
islWarning :: Lens' InstancesScopedList (Maybe InstancesScopedListWarning)

-- | <ul>
--   <li><i>Output Only</i> List of instances contained in this scope.</li>
--   </ul>
islInstances :: Lens' InstancesScopedList [Instance]
data BackendServiceLoadBalancingScheme

-- | <pre>
--   EXTERNAL
--   </pre>
External :: BackendServiceLoadBalancingScheme

-- | <pre>
--   INTERNAL
--   </pre>
Internal :: BackendServiceLoadBalancingScheme

-- | <pre>
--   INVALID_LOAD_BALANCING_SCHEME
--   </pre>
InvalidLoadBalancingScheme :: BackendServiceLoadBalancingScheme

-- | A full or valid partial URL to a health check. For example, the
--   following are valid URLs: -
--   https://www.googleapis.com/compute/beta/projects/project-id/global/httpHealthChecks/health-check
--   - projects/project-id/global/httpHealthChecks/health-check -
--   global/httpHealthChecks/health-check
--   
--   <i>See:</i> <a>healthCheckReference</a> smart constructor.
data HealthCheckReference

-- | Creates a value of <a>HealthCheckReference</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hcrHealthCheck</a></li>
--   </ul>
healthCheckReference :: HealthCheckReference
hcrHealthCheck :: Lens' HealthCheckReference (Maybe Text)

-- | A map of scoped target instance lists.
--   
--   <i>See:</i> <a>targetInstanceAggregatedListItems</a> smart
--   constructor.
data TargetInstanceAggregatedListItems

-- | Creates a value of <a>TargetInstanceAggregatedListItems</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tialiAddtional</a></li>
--   </ul>
targetInstanceAggregatedListItems :: HashMap Text TargetInstancesScopedList -> TargetInstanceAggregatedListItems

-- | Name of the scope containing this set of target instances.
tialiAddtional :: Lens' TargetInstanceAggregatedListItems (HashMap Text TargetInstancesScopedList)
data InstanceGroupAggregatedList

-- | Creates a value of <a>InstanceGroupAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igalNextPageToken</a></li>
--   <li><a>igalKind</a></li>
--   <li><a>igalItems</a></li>
--   <li><a>igalSelfLink</a></li>
--   <li><a>igalId</a></li>
--   </ul>
instanceGroupAggregatedList :: InstanceGroupAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
igalNextPageToken :: Lens' InstanceGroupAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The resource type, which is always
--   compute#instanceGroupAggregatedList for aggregated lists of instance
--   groups.</li>
--   </ul>
igalKind :: Lens' InstanceGroupAggregatedList Text

-- | A map of scoped instance group lists.
igalItems :: Lens' InstanceGroupAggregatedList (Maybe InstanceGroupAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> The URL for this resource type. The server
--   generates this URL.</li>
--   </ul>
igalSelfLink :: Lens' InstanceGroupAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A unique identifier for this aggregated list of
--   instance groups. The server generates this identifier.</li>
--   </ul>
igalId :: Lens' InstanceGroupAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The status of the operation, which can be one
--   of the following: PENDING, RUNNING, or DONE.</li>
--   </ul>
data OperationStatus

-- | <pre>
--   DONE
--   </pre>
OSDone :: OperationStatus

-- | <pre>
--   PENDING
--   </pre>
OSPending :: OperationStatus

-- | <pre>
--   RUNNING
--   </pre>
OSRunning :: OperationStatus

-- | Represents a Route resource. A route specifies how certain packets
--   should be handled by the network. Routes are associated with instances
--   by tags and the set of routes for a particular instance is called its
--   routing table. For each packet leaving a instance, the system searches
--   that instance's routing table for a single best matching route. Routes
--   match packets by destination IP address, preferring smaller or more
--   specific ranges over larger ones. If there is a tie, the system
--   selects the route with the smallest priority value. If there is still
--   a tie, it uses the layer three and four packet headers to select just
--   one of the remaining matching routes. The packet is then forwarded as
--   specified by the nextHop field of the winning route - either to
--   another instance destination, a instance gateway or a Google Compute
--   Engine-operated gateway. Packets that do not match any route in the
--   sending instance's routing table are dropped.
--   
--   <i>See:</i> <a>route</a> smart constructor.
data Route

-- | Creates a value of <a>Route</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rrPriority</a></li>
--   <li><a>rrKind</a></li>
--   <li><a>rrNextHopGateway</a></li>
--   <li><a>rrNextHopNetwork</a></li>
--   <li><a>rrNetwork</a></li>
--   <li><a>rrWarnings</a></li>
--   <li><a>rrNextHopIP</a></li>
--   <li><a>rrDestRange</a></li>
--   <li><a>rrSelfLink</a></li>
--   <li><a>rrName</a></li>
--   <li><a>rrCreationTimestamp</a></li>
--   <li><a>rrId</a></li>
--   <li><a>rrNextHopVPNTunnel</a></li>
--   <li><a>rrDescription</a></li>
--   <li><a>rrTags</a></li>
--   <li><a>rrNextHopInstance</a></li>
--   </ul>
route :: Route

-- | The priority of this route. Priority is used to break ties in cases
--   where there is more than one matching route of equal prefix length. In
--   the case of two routes with equal prefix length, the one with the
--   lowest-numbered priority value wins. Default value is 1000. Valid
--   range is 0 through 65535.
rrPriority :: Lens' Route (Maybe Word32)

-- | <ul>
--   <li><i>Output Only</i> Type of this resource. Always compute#routes
--   for Route resources.</li>
--   </ul>
rrKind :: Lens' Route Text

-- | The URL to a gateway that should handle matching packets. You can only
--   specify the internet gateway using a full or partial valid URL:
--   projects//global/gateways/default-internet-gateway
rrNextHopGateway :: Lens' Route (Maybe Text)

-- | The URL of the local network if it should handle matching packets.
rrNextHopNetwork :: Lens' Route (Maybe Text)

-- | Fully-qualified URL of the network that this route applies to.
rrNetwork :: Lens' Route (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> If potential misconfigurations are detected for
--   this route, this field will be populated with warning messages.</li>
--   </ul>
rrWarnings :: Lens' Route [RouteWarningsItem]

-- | The network IP address of an instance that should handle matching
--   packets. Only IPv4 is supported.
rrNextHopIP :: Lens' Route (Maybe Text)

-- | The destination range of outgoing packets that this route applies to.
--   Only IPv4 is supported.
rrDestRange :: Lens' Route (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined fully-qualified URL for this
--   resource.</li>
--   </ul>
rrSelfLink :: Lens' Route (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
rrName :: Lens' Route (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
rrCreationTimestamp :: Lens' Route (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
rrId :: Lens' Route (Maybe Word64)

-- | The URL to a VpnTunnel that should handle matching packets.
rrNextHopVPNTunnel :: Lens' Route (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
rrDescription :: Lens' Route (Maybe Text)

-- | A list of instance tags to which this route applies.
rrTags :: Lens' Route [Text]

-- | The URL to an instance that should handle matching packets. You can
--   specify this as a full or partial URL. For example:
--   https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/
rrNextHopInstance :: Lens' Route (Maybe Text)
data TargetVPNGatewaysScopedListWarningDataItem

-- | Creates a value of <a>TargetVPNGatewaysScopedListWarningDataItem</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tvgslwdiValue</a></li>
--   <li><a>tvgslwdiKey</a></li>
--   </ul>
targetVPNGatewaysScopedListWarningDataItem :: TargetVPNGatewaysScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
tvgslwdiValue :: Lens' TargetVPNGatewaysScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
tvgslwdiKey :: Lens' TargetVPNGatewaysScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
TVGSLWCCleanupFailed :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
TVGSLWCDeprecatedResourceUsed :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
TVGSLWCDiskSizeLargerThanImageSize :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
TVGSLWCFieldValueOverriden :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
TVGSLWCInjectedKernelsDeprecated :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
TVGSLWCNextHopAddressNotAssigned :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
TVGSLWCNextHopCannotIPForward :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
TVGSLWCNextHopInstanceNotFound :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
TVGSLWCNextHopInstanceNotOnNetwork :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
TVGSLWCNextHopNotRunning :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
TVGSLWCNotCriticalError :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
TVGSLWCNoResultsOnPage :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
TVGSLWCRequiredTosAgreement :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
TVGSLWCResourceNotDeleted :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
TVGSLWCSingleInstancePropertyTemplate :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
TVGSLWCUnreachable :: TargetVPNGatewaysScopedListWarningCode
data TargetHTTPSProxiesSetSSLCertificatesRequest

-- | Creates a value of <a>TargetHTTPSProxiesSetSSLCertificatesRequest</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>thpsscrSSLCertificates</a></li>
--   </ul>
targetHTTPSProxiesSetSSLCertificatesRequest :: TargetHTTPSProxiesSetSSLCertificatesRequest

-- | New set of SslCertificate resources to associate with this
--   TargetHttpsProxy resource. Currently exactly one SslCertificate
--   resource must be specified.
thpsscrSSLCertificates :: Lens' TargetHTTPSProxiesSetSSLCertificatesRequest [Text]

-- | An Instance Template resource.
--   
--   <i>See:</i> <a>instanceTemplate</a> smart constructor.
data InstanceTemplate

-- | Creates a value of <a>InstanceTemplate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>itKind</a></li>
--   <li><a>itSelfLink</a></li>
--   <li><a>itName</a></li>
--   <li><a>itCreationTimestamp</a></li>
--   <li><a>itId</a></li>
--   <li><a>itDescription</a></li>
--   <li><a>itProperties</a></li>
--   </ul>
instanceTemplate :: InstanceTemplate

-- | <ul>
--   <li><i>Output Only</i> The resource type, which is always
--   compute#instanceTemplate for instance templates.</li>
--   </ul>
itKind :: Lens' InstanceTemplate Text

-- | <ul>
--   <li><i>Output Only</i> The URL for this instance template. The server
--   defines this URL.</li>
--   </ul>
itSelfLink :: Lens' InstanceTemplate (Maybe Text)

-- | Name of the resource; provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
itName :: Lens' InstanceTemplate (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The creation timestamp for this instance
--   template in RFC3339 text format.</li>
--   </ul>
itCreationTimestamp :: Lens' InstanceTemplate (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A unique identifier for this instance template.
--   The server defines this identifier.</li>
--   </ul>
itId :: Lens' InstanceTemplate (Maybe Word64)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
itDescription :: Lens' InstanceTemplate (Maybe Text)

-- | The instance properties for this instance template.
itProperties :: Lens' InstanceTemplate (Maybe InstanceProperties)

-- | Contains a list of Router resources.
--   
--   <i>See:</i> <a>routerList</a> smart constructor.
data RouterList

-- | Creates a value of <a>RouterList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rllNextPageToken</a></li>
--   <li><a>rllKind</a></li>
--   <li><a>rllItems</a></li>
--   <li><a>rllSelfLink</a></li>
--   <li><a>rllId</a></li>
--   </ul>
routerList :: RouterList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
rllNextPageToken :: Lens' RouterList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#router for
--   routers.</li>
--   </ul>
rllKind :: Lens' RouterList Text

-- | A list of Router resources.
rllItems :: Lens' RouterList [Router]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
rllSelfLink :: Lens' RouterList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
rllId :: Lens' RouterList (Maybe Text)

-- | A TargetSslProxy resource. This resource defines an SSL proxy.
--   
--   <i>See:</i> <a>targetSSLProxy</a> smart constructor.
data TargetSSLProxy

-- | Creates a value of <a>TargetSSLProxy</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tspSSLCertificates</a></li>
--   <li><a>tspService</a></li>
--   <li><a>tspKind</a></li>
--   <li><a>tspSelfLink</a></li>
--   <li><a>tspName</a></li>
--   <li><a>tspCreationTimestamp</a></li>
--   <li><a>tspId</a></li>
--   <li><a>tspProxyHeader</a></li>
--   <li><a>tspDescription</a></li>
--   </ul>
targetSSLProxy :: TargetSSLProxy

-- | URLs to SslCertificate resources that are used to authenticate
--   connections to Backends. Currently exactly one SSL certificate must be
--   specified.
tspSSLCertificates :: Lens' TargetSSLProxy [Text]

-- | URL to the BackendService resource.
tspService :: Lens' TargetSSLProxy (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always
--   compute#targetSslProxy for target SSL proxies.</li>
--   </ul>
tspKind :: Lens' TargetSSLProxy Text

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
tspSelfLink :: Lens' TargetSSLProxy (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
tspName :: Lens' TargetSSLProxy (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
tspCreationTimestamp :: Lens' TargetSSLProxy (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
tspId :: Lens' TargetSSLProxy (Maybe Word64)

-- | Specifies the type of proxy header to append before sending data to
--   the backend, either NONE or PROXY_V1. The default is NONE.
tspProxyHeader :: Lens' TargetSSLProxy (Maybe TargetSSLProxyProxyHeader)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
tspDescription :: Lens' TargetSSLProxy (Maybe Text)

-- | Represents a Target VPN gateway resource.
--   
--   <i>See:</i> <a>targetVPNGateway</a> smart constructor.
data TargetVPNGateway

-- | Creates a value of <a>TargetVPNGateway</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tvgStatus</a></li>
--   <li><a>tvgKind</a></li>
--   <li><a>tvgNetwork</a></li>
--   <li><a>tvgSelfLink</a></li>
--   <li><a>tvgName</a></li>
--   <li><a>tvgCreationTimestamp</a></li>
--   <li><a>tvgId</a></li>
--   <li><a>tvgRegion</a></li>
--   <li><a>tvgTunnels</a></li>
--   <li><a>tvgDescription</a></li>
--   <li><a>tvgForwardingRules</a></li>
--   </ul>
targetVPNGateway :: TargetVPNGateway

-- | <ul>
--   <li><i>Output Only</i> The status of the VPN gateway.</li>
--   </ul>
tvgStatus :: Lens' TargetVPNGateway (Maybe TargetVPNGatewayStatus)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#targetVpnGateway for target VPN gateways.</li>
--   </ul>
tvgKind :: Lens' TargetVPNGateway Text

-- | URL of the network to which this VPN gateway is attached. Provided by
--   the client when the VPN gateway is created.
tvgNetwork :: Lens' TargetVPNGateway (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
tvgSelfLink :: Lens' TargetVPNGateway (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
tvgName :: Lens' TargetVPNGateway (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
tvgCreationTimestamp :: Lens' TargetVPNGateway (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
tvgId :: Lens' TargetVPNGateway (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> URL of the region where the target VPN gateway
--   resides.</li>
--   </ul>
tvgRegion :: Lens' TargetVPNGateway (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A list of URLs to VpnTunnel resources.
--   VpnTunnels are created using compute.vpntunnels.insert method and
--   associated to a VPN gateway.</li>
--   </ul>
tvgTunnels :: Lens' TargetVPNGateway [Text]

-- | An optional description of this resource. Provide this property when
--   you create the resource.
tvgDescription :: Lens' TargetVPNGateway (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A list of URLs to the ForwardingRule resources.
--   ForwardingRules are created using compute.forwardingRules.insert and
--   associated to a VPN gateway.</li>
--   </ul>
tvgForwardingRules :: Lens' TargetVPNGateway [Text]

-- | <ul>
--   <li><i>Output Only</i> The status of disk creation.</li>
--   </ul>
data DiskStatus

-- | <pre>
--   CREATING
--   </pre>
DSCreating :: DiskStatus

-- | <pre>
--   FAILED
--   </pre>
DSFailed :: DiskStatus

-- | <pre>
--   READY
--   </pre>
DSReady :: DiskStatus

-- | <pre>
--   RESTORING
--   </pre>
DSRestoring :: DiskStatus

-- | <ul>
--   <li><i>Output Only</i> The status of the instance. This field is empty
--   when the instance does not exist.</li>
--   </ul>
data ManagedInstanceInstanceStatus

-- | <pre>
--   PROVISIONING
--   </pre>
MIISProvisioning :: ManagedInstanceInstanceStatus

-- | <pre>
--   RUNNING
--   </pre>
MIISRunning :: ManagedInstanceInstanceStatus

-- | <pre>
--   STAGING
--   </pre>
MIISStaging :: ManagedInstanceInstanceStatus

-- | <pre>
--   STOPPED
--   </pre>
MIISStopped :: ManagedInstanceInstanceStatus

-- | <pre>
--   STOPPING
--   </pre>
MIISStopping :: ManagedInstanceInstanceStatus

-- | <pre>
--   SUSPENDED
--   </pre>
MIISSuspended :: ManagedInstanceInstanceStatus

-- | <pre>
--   SUSPENDING
--   </pre>
MIISSuspending :: ManagedInstanceInstanceStatus

-- | <pre>
--   TERMINATED
--   </pre>
MIISTerminated :: ManagedInstanceInstanceStatus

-- | Specifies the type of proxy header to append before sending data to
--   the backend, either NONE or PROXY_V1. The default is NONE.
data HTTPHealthCheckProxyHeader

-- | <pre>
--   NONE
--   </pre>
HTTPHCPHNone :: HTTPHealthCheckProxyHeader

-- | <pre>
--   PROXY_V1
--   </pre>
HTTPHCPHProxyV1 :: HTTPHealthCheckProxyHeader
data URLMapsValidateResponse

-- | Creates a value of <a>URLMapsValidateResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umvrResult</a></li>
--   </ul>
urlMapsValidateResponse :: URLMapsValidateResponse
umvrResult :: Lens' URLMapsValidateResponse (Maybe URLMapValidationResult)

-- | An SslCertificate resource. This resource provides a mechanism to
--   upload an SSL key and certificate to the load balancer to serve secure
--   connections from the user.
--   
--   <i>See:</i> <a>sslCertificate</a> smart constructor.
data SSLCertificate

-- | Creates a value of <a>SSLCertificate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>scPrivateKey</a></li>
--   <li><a>scKind</a></li>
--   <li><a>scSelfLink</a></li>
--   <li><a>scName</a></li>
--   <li><a>scCreationTimestamp</a></li>
--   <li><a>scId</a></li>
--   <li><a>scCertificate</a></li>
--   <li><a>scDescription</a></li>
--   </ul>
sslCertificate :: SSLCertificate

-- | A write-only private key in PEM format. Only insert requests will
--   include this field.
scPrivateKey :: Lens' SSLCertificate (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always
--   compute#sslCertificate for SSL certificates.</li>
--   </ul>
scKind :: Lens' SSLCertificate Text

-- | <ul>
--   <li><i>Output only</i> Server-defined URL for the resource.</li>
--   </ul>
scSelfLink :: Lens' SSLCertificate (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
scName :: Lens' SSLCertificate (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
scCreationTimestamp :: Lens' SSLCertificate (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
scId :: Lens' SSLCertificate (Maybe Word64)

-- | A local certificate file. The certificate must be in PEM format. The
--   certificate chain must be no greater than 5 certs long. The chain must
--   include at least one intermediate cert.
scCertificate :: Lens' SSLCertificate (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
scDescription :: Lens' SSLCertificate (Maybe Text)
data RouterStatusBGPPeerStatus

-- | Creates a value of <a>RouterStatusBGPPeerStatus</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rsbpsStatus</a></li>
--   <li><a>rsbpsIPAddress</a></li>
--   <li><a>rsbpsState</a></li>
--   <li><a>rsbpsPeerIPAddress</a></li>
--   <li><a>rsbpsUptime</a></li>
--   <li><a>rsbpsNumLearnedRoutes</a></li>
--   <li><a>rsbpsName</a></li>
--   <li><a>rsbpsUptimeSeconds</a></li>
--   <li><a>rsbpsAdvertisedRoutes</a></li>
--   <li><a>rsbpsLinkedVPNTunnel</a></li>
--   </ul>
routerStatusBGPPeerStatus :: RouterStatusBGPPeerStatus

-- | Status of the BGP peer: {UP, DOWN}
rsbpsStatus :: Lens' RouterStatusBGPPeerStatus (Maybe RouterStatusBGPPeerStatusStatus)

-- | IP address of the local BGP interface.
rsbpsIPAddress :: Lens' RouterStatusBGPPeerStatus (Maybe Text)

-- | BGP state as specified in RFC1771.
rsbpsState :: Lens' RouterStatusBGPPeerStatus (Maybe Text)

-- | IP address of the remote BGP interface.
rsbpsPeerIPAddress :: Lens' RouterStatusBGPPeerStatus (Maybe Text)

-- | Time this session has been up. Format: 14 years, 51 weeks, 6 days, 23
--   hours, 59 minutes, 59 seconds
rsbpsUptime :: Lens' RouterStatusBGPPeerStatus (Maybe Text)

-- | Number of routes learned from the remote BGP Peer.
rsbpsNumLearnedRoutes :: Lens' RouterStatusBGPPeerStatus (Maybe Word32)

-- | Name of this BGP peer. Unique within the Routers resource.
rsbpsName :: Lens' RouterStatusBGPPeerStatus (Maybe Text)

-- | Time this session has been up, in seconds. Format: 145
rsbpsUptimeSeconds :: Lens' RouterStatusBGPPeerStatus (Maybe Text)

-- | Routes that were advertised to the remote BGP peer
rsbpsAdvertisedRoutes :: Lens' RouterStatusBGPPeerStatus [Route]

-- | URL of the VPN tunnel that this BGP peer controls.
rsbpsLinkedVPNTunnel :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
data URLMapReference

-- | Creates a value of <a>URLMapReference</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umrURLMap</a></li>
--   </ul>
urlMapReference :: URLMapReference
umrURLMap :: Lens' URLMapReference (Maybe Text)

-- | The mode in which to attach this disk, either READ_WRITE or READ_ONLY.
--   If not specified, the default is to attach the disk in READ_WRITE
--   mode.
data AttachedDiskMode

-- | <pre>
--   READ_ONLY
--   </pre>
ReadOnly :: AttachedDiskMode

-- | <pre>
--   READ_WRITE
--   </pre>
ReadWrite :: AttachedDiskMode
data TargetPoolsAddHealthCheckRequest

-- | Creates a value of <a>TargetPoolsAddHealthCheckRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpahcrHealthChecks</a></li>
--   </ul>
targetPoolsAddHealthCheckRequest :: TargetPoolsAddHealthCheckRequest

-- | A list of HttpHealthCheck resources to add to the target pool.
tpahcrHealthChecks :: Lens' TargetPoolsAddHealthCheckRequest [HealthCheckReference]

-- | <ul>
--   <li><i>Output Only</i> A map of scoped disk lists.</li>
--   </ul>
--   
--   <i>See:</i> <a>diskAggregatedListItems</a> smart constructor.
data DiskAggregatedListItems

-- | Creates a value of <a>DiskAggregatedListItems</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>daliAddtional</a></li>
--   </ul>
diskAggregatedListItems :: HashMap Text DisksScopedList -> DiskAggregatedListItems

-- | <ul>
--   <li><i>Output Only</i> Name of the scope containing this set of
--   disks.</li>
--   </ul>
daliAddtional :: Lens' DiskAggregatedListItems (HashMap Text DisksScopedList)

-- | The location in Cloud Storage and naming method of the daily usage
--   report. Contains bucket_name and report_name prefix.
--   
--   <i>See:</i> <a>usageExportLocation</a> smart constructor.
data UsageExportLocation

-- | Creates a value of <a>UsageExportLocation</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uelReportNamePrefix</a></li>
--   <li><a>uelBucketName</a></li>
--   </ul>
usageExportLocation :: UsageExportLocation

-- | An optional prefix for the name of the usage report object stored in
--   bucketName. If not supplied, defaults to usage. The report is stored
--   as a CSV file named report_name_prefix_gce_YYYYMMDD.csv where YYYYMMDD
--   is the day of the usage according to Pacific Time. If you supply a
--   prefix, it should conform to Cloud Storage object naming conventions.
uelReportNamePrefix :: Lens' UsageExportLocation (Maybe Text)

-- | The name of an existing bucket in Cloud Storage where the usage report
--   object is stored. The Google Service Account is granted write access
--   to this bucket. This can either be the bucket name by itself, such as
--   example-bucket, or the bucket name with gs:// or
--   https://storage.googleapis.com/ in front of it, such as
--   gs://example-bucket.
uelBucketName :: Lens' UsageExportLocation (Maybe Text)

-- | Contains a list of zone resources.
--   
--   <i>See:</i> <a>zoneList</a> smart constructor.
data ZoneList

-- | Creates a value of <a>ZoneList</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>zlNextPageToken</a></li>
--   <li><a>zlKind</a></li>
--   <li><a>zlItems</a></li>
--   <li><a>zlSelfLink</a></li>
--   <li><a>zlId</a></li>
--   </ul>
zoneList :: ZoneList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
zlNextPageToken :: Lens' ZoneList (Maybe Text)

-- | Type of resource.
zlKind :: Lens' ZoneList Text

-- | <ul>
--   <li><i>Output Only</i> A list of Zone resources.</li>
--   </ul>
zlItems :: Lens' ZoneList [Zone]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
zlSelfLink :: Lens' ZoneList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource; defined by
--   the server.</li>
--   </ul>
zlId :: Lens' ZoneList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Status of the region, either UP or DOWN.</li>
--   </ul>
data RegionStatus

-- | <pre>
--   DOWN
--   </pre>
Down :: RegionStatus

-- | <pre>
--   UP
--   </pre>
UP :: RegionStatus
data RouterBGPPeer

-- | Creates a value of <a>RouterBGPPeer</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rbpIPAddress</a></li>
--   <li><a>rbpInterfaceName</a></li>
--   <li><a>rbpPeerIPAddress</a></li>
--   <li><a>rbpAdvertisedRoutePriority</a></li>
--   <li><a>rbpPeerASN</a></li>
--   <li><a>rbpName</a></li>
--   </ul>
routerBGPPeer :: RouterBGPPeer

-- | IP address of the interface inside Google Cloud Platform. Only IPv4 is
--   supported.
rbpIPAddress :: Lens' RouterBGPPeer (Maybe Text)

-- | Name of the interface the BGP peer is associated with.
rbpInterfaceName :: Lens' RouterBGPPeer (Maybe Text)

-- | IP address of the BGP interface outside Google cloud. Only IPv4 is
--   supported.
rbpPeerIPAddress :: Lens' RouterBGPPeer (Maybe Text)

-- | The priority of routes advertised to this BGP peer. In the case where
--   there is more than one matching route of maximum length, the routes
--   with lowest priority value win.
rbpAdvertisedRoutePriority :: Lens' RouterBGPPeer (Maybe Word32)

-- | Peer BGP Autonomous System Number (ASN). For VPN use case, this value
--   can be different for every tunnel.
rbpPeerASN :: Lens' RouterBGPPeer (Maybe Word32)

-- | Name of this BGP peer. The name must be 1-63 characters long and
--   comply with RFC1035.
rbpName :: Lens' RouterBGPPeer (Maybe Text)
data SubnetworksExpandIPCIdRRangeRequest

-- | Creates a value of <a>SubnetworksExpandIPCIdRRangeRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>seicirrrIPCIdRRange</a></li>
--   </ul>
subnetworksExpandIPCIdRRangeRequest :: SubnetworksExpandIPCIdRRangeRequest

-- | The IP (in CIDR format or netmask) of internal addresses that are
--   legal on this Subnetwork. This range should be disjoint from other
--   subnetworks within this network. This range can only be larger than
--   (i.e. a superset of) the range previously defined before the update.
seicirrrIPCIdRRange :: Lens' SubnetworksExpandIPCIdRRangeRequest (Maybe Text)
data ManagedInstance

-- | Creates a value of <a>ManagedInstance</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>miLastAttempt</a></li>
--   <li><a>miCurrentAction</a></li>
--   <li><a>miId</a></li>
--   <li><a>miInstanceStatus</a></li>
--   <li><a>miInstance</a></li>
--   </ul>
managedInstance :: ManagedInstance

-- | <ul>
--   <li><i>Output Only</i> Information about the last attempt to create or
--   delete the instance.</li>
--   </ul>
miLastAttempt :: Lens' ManagedInstance (Maybe ManagedInstanceLastAttempt)

-- | <ul>
--   <li><i>Output Only</i> The current action that the managed instance
--   group has scheduled for the instance. Possible values: - NONE The
--   instance is running, and the managed instance group does not have any
--   scheduled actions for this instance. - CREATING The managed instance
--   group is creating this instance. If the group fails to create this
--   instance, it will try again until it is successful. -
--   CREATING_WITHOUT_RETRIES The managed instance group is attempting to
--   create this instance only once. If the group fails to create this
--   instance, it does not try again and the group's targetSize value is
--   decreased instead. - RECREATING The managed instance group is
--   recreating this instance. - DELETING The managed instance group is
--   permanently deleting this instance. - ABANDONING The managed instance
--   group is abandoning this instance. The instance will be removed from
--   the instance group and from any target pools that are associated with
--   this group. - RESTARTING The managed instance group is restarting the
--   instance. - REFRESHING The managed instance group is applying
--   configuration changes to the instance without stopping it. For
--   example, the group can update the target pool list for an instance
--   without stopping that instance.</li>
--   </ul>
miCurrentAction :: Lens' ManagedInstance (Maybe ManagedInstanceCurrentAction)

-- | <ul>
--   <li><i>Output only</i> The unique identifier for this resource. This
--   field is empty when instance does not exist.</li>
--   </ul>
miId :: Lens' ManagedInstance (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> The status of the instance. This field is empty
--   when the instance does not exist.</li>
--   </ul>
miInstanceStatus :: Lens' ManagedInstance (Maybe ManagedInstanceInstanceStatus)

-- | <ul>
--   <li><i>Output Only</i> The URL of the instance. The URL can exist even
--   if the instance has not yet been created.</li>
--   </ul>
miInstance :: Lens' ManagedInstance (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A map of filtered managed instance group
--   lists.</li>
--   </ul>
--   
--   <i>See:</i> <a>instanceGroupManagerAggregatedListItems</a> smart
--   constructor.
data InstanceGroupManagerAggregatedListItems

-- | Creates a value of <a>InstanceGroupManagerAggregatedListItems</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmaliAddtional</a></li>
--   </ul>
instanceGroupManagerAggregatedListItems :: HashMap Text InstanceGroupManagersScopedList -> InstanceGroupManagerAggregatedListItems

-- | <ul>
--   <li><i>Output Only</i> The name of the scope that contains this set of
--   managed instance groups.</li>
--   </ul>
igmaliAddtional :: Lens' InstanceGroupManagerAggregatedListItems (HashMap Text InstanceGroupManagersScopedList)
data InstanceGroupManagersDeleteInstancesRequest

-- | Creates a value of <a>InstanceGroupManagersDeleteInstancesRequest</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmdirInstances</a></li>
--   </ul>
instanceGroupManagersDeleteInstancesRequest :: InstanceGroupManagersDeleteInstancesRequest

-- | The list of instances to delete from this managed instance group.
--   Specify one or more instance URLs.
igmdirInstances :: Lens' InstanceGroupManagersDeleteInstancesRequest [Text]

-- | Message containing information of one individual backend.
--   
--   <i>See:</i> <a>backend</a> smart constructor.
data Backend

-- | Creates a value of <a>Backend</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bGroup</a></li>
--   <li><a>bBalancingMode</a></li>
--   <li><a>bMaxUtilization</a></li>
--   <li><a>bMaxRate</a></li>
--   <li><a>bMaxConnections</a></li>
--   <li><a>bMaxConnectionsPerInstance</a></li>
--   <li><a>bMaxRatePerInstance</a></li>
--   <li><a>bDescription</a></li>
--   <li><a>bCapacityScaler</a></li>
--   </ul>
backend :: Backend

-- | The fully-qualified URL of a zonal Instance Group resource. This
--   instance group defines the list of instances that serve traffic.
--   Member virtual machine instances from each instance group must live in
--   the same zone as the instance group itself. No two backends in a
--   backend service are allowed to use same Instance Group resource. Note
--   that you must specify an Instance Group resource using the
--   fully-qualified URL, rather than a partial URL. When the
--   BackendService has load balancing scheme INTERNAL, the instance group
--   must be in a zone within the same region as the BackendService.
bGroup :: Lens' Backend (Maybe Text)

-- | Specifies the balancing mode for this backend. For global HTTP(S) or
--   TCP/SSL load balancing, the default is UTILIZATION. Valid values are
--   UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP/SSL). This
--   cannot be used for internal load balancing.
bBalancingMode :: Lens' Backend (Maybe BackendBalancingMode)

-- | Used when balancingMode is UTILIZATION. This ratio defines the CPU
--   utilization target for the group. The default is 0.8. Valid range is
--   [0.0, 1.0]. This cannot be used for internal load balancing.
bMaxUtilization :: Lens' Backend (Maybe Double)

-- | The max requests per second (RPS) of the group. Can be used with
--   either RATE or UTILIZATION balancing modes, but required if RATE mode.
--   For RATE mode, either maxRate or maxRatePerInstance must be set. This
--   cannot be used for internal load balancing.
bMaxRate :: Lens' Backend (Maybe Int32)

-- | The max number of simultaneous connections for the group. Can be used
--   with either CONNECTION or UTILIZATION balancing modes. For CONNECTION
--   mode, either maxConnections or maxConnectionsPerInstance must be set.
--   This cannot be used for internal load balancing.
bMaxConnections :: Lens' Backend (Maybe Int32)

-- | The max number of simultaneous connections that a single backend
--   instance can handle. This is used to calculate the capacity of the
--   group. Can be used in either CONNECTION or UTILIZATION balancing
--   modes. For CONNECTION mode, either maxConnections or
--   maxConnectionsPerInstance must be set. This cannot be used for
--   internal load balancing.
bMaxConnectionsPerInstance :: Lens' Backend (Maybe Int32)

-- | The max requests per second (RPS) that a single backend instance can
--   handle.This is used to calculate the capacity of the group. Can be
--   used in either balancing mode. For RATE mode, either maxRate or
--   maxRatePerInstance must be set. This cannot be used for internal load
--   balancing.
bMaxRatePerInstance :: Lens' Backend (Maybe Double)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
bDescription :: Lens' Backend (Maybe Text)

-- | A multiplier applied to the group's maximum servicing capacity (based
--   on UTILIZATION, RATE or CONNECTION). Default value is 1, which means
--   the group will serve up to 100% of its configured capacity (depending
--   on balancingMode). A setting of 0 means the group is completely
--   drained, offering 0% of its available Capacity. Valid range is
--   [0.0,1.0]. This cannot be used for internal load balancing.
bCapacityScaler :: Lens' Backend (Maybe Double)

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of addresses when the list is empty.</li>
--   </ul>
--   
--   <i>See:</i> <a>targetVPNGatewaysScopedListWarning</a> smart
--   constructor.
data TargetVPNGatewaysScopedListWarning

-- | Creates a value of <a>TargetVPNGatewaysScopedListWarning</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tvgslwData</a></li>
--   <li><a>tvgslwCode</a></li>
--   <li><a>tvgslwMessage</a></li>
--   </ul>
targetVPNGatewaysScopedListWarning :: TargetVPNGatewaysScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
tvgslwData :: Lens' TargetVPNGatewaysScopedListWarning [TargetVPNGatewaysScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
tvgslwCode :: Lens' TargetVPNGatewaysScopedListWarning (Maybe TargetVPNGatewaysScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
tvgslwMessage :: Lens' TargetVPNGatewaysScopedListWarning (Maybe Text)

-- | The new type of proxy header to append before sending data to the
--   backend. NONE or PROXY_V1 are allowed.
data TargetSSLProxiesSetProxyHeaderRequestProxyHeader

-- | <pre>
--   NONE
--   </pre>
TSPSPHRPHNone :: TargetSSLProxiesSetProxyHeaderRequestProxyHeader

-- | <pre>
--   PROXY_V1
--   </pre>
TSPSPHRPHProxyV1 :: TargetSSLProxiesSetProxyHeaderRequestProxyHeader

-- | Contains a list of addresses.
--   
--   <i>See:</i> <a>addressList</a> smart constructor.
data AddressList

-- | Creates a value of <a>AddressList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>alNextPageToken</a></li>
--   <li><a>alKind</a></li>
--   <li><a>alItems</a></li>
--   <li><a>alSelfLink</a></li>
--   <li><a>alId</a></li>
--   </ul>
addressList :: AddressList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
alNextPageToken :: Lens' AddressList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#addressList
--   for lists of addresses.</li>
--   </ul>
alKind :: Lens' AddressList Text

-- | <ul>
--   <li><i>Output Only</i> A list of addresses.</li>
--   </ul>
alItems :: Lens' AddressList [Address]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
alSelfLink :: Lens' AddressList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
alId :: Lens' AddressList (Maybe Text)

-- | A map of scoped forwarding rule lists.
--   
--   <i>See:</i> <a>forwardingRuleAggregatedListItems</a> smart
--   constructor.
data ForwardingRuleAggregatedListItems

-- | Creates a value of <a>ForwardingRuleAggregatedListItems</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fraliAddtional</a></li>
--   </ul>
forwardingRuleAggregatedListItems :: HashMap Text ForwardingRulesScopedList -> ForwardingRuleAggregatedListItems

-- | Name of the scope containing this set of addresses.
fraliAddtional :: Lens' ForwardingRuleAggregatedListItems (HashMap Text ForwardingRulesScopedList)

-- | <ul>
--   <li><i>Output Only</i> A map of scoped operation lists.</li>
--   </ul>
--   
--   <i>See:</i> <a>operationAggregatedListItems</a> smart constructor.
data OperationAggregatedListItems

-- | Creates a value of <a>OperationAggregatedListItems</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oaliAddtional</a></li>
--   </ul>
operationAggregatedListItems :: HashMap Text OperationsScopedList -> OperationAggregatedListItems

-- | <ul>
--   <li><i>Output Only</i> Name of the scope containing this set of
--   operations.</li>
--   </ul>
oaliAddtional :: Lens' OperationAggregatedListItems (HashMap Text OperationsScopedList)
data InstanceGroupManagerActionsSummary

-- | Creates a value of <a>InstanceGroupManagerActionsSummary</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmasDeleting</a></li>
--   <li><a>igmasRestarting</a></li>
--   <li><a>igmasNone</a></li>
--   <li><a>igmasCreating</a></li>
--   <li><a>igmasRefreshing</a></li>
--   <li><a>igmasCreatingWithoutRetries</a></li>
--   <li><a>igmasRecreating</a></li>
--   <li><a>igmasAbandoning</a></li>
--   </ul>
instanceGroupManagerActionsSummary :: InstanceGroupManagerActionsSummary

-- | <ul>
--   <li><i>Output Only</i> The number of instances in the managed instance
--   group that are scheduled to be deleted or are currently being
--   deleted.</li>
--   </ul>
igmasDeleting :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The number of instances in the managed instance
--   group that are scheduled to be restarted or are currently being
--   restarted.</li>
--   </ul>
igmasRestarting :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The number of instances in the managed instance
--   group that are running and have no scheduled actions.</li>
--   </ul>
igmasNone :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The number of instances in the managed instance
--   group that are scheduled to be created or are currently being created.
--   If the group fails to create any of these instances, it tries again
--   until it creates the instance successfully. If you have disabled
--   creation retries, this field will not be populated; instead, the
--   creatingWithoutRetries field will be populated.</li>
--   </ul>
igmasCreating :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The number of instances in the managed instance
--   group that are being reconfigured with properties that do not require
--   a restart or a recreate action. For example, setting or removing
--   target pools for the instance.</li>
--   </ul>
igmasRefreshing :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The number of instances that the managed
--   instance group will attempt to create. The group attempts to create
--   each instance only once. If the group fails to create any of these
--   instances, it decreases the group's targetSize value accordingly.</li>
--   </ul>
igmasCreatingWithoutRetries :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The number of instances in the managed instance
--   group that are scheduled to be recreated or are currently being being
--   recreated. Recreating an instance deletes the existing root persistent
--   disk and creates a new disk from the image that is defined in the
--   instance template.</li>
--   </ul>
igmasRecreating :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The total number of instances in the managed
--   instance group that are scheduled to be abandoned. Abandoning an
--   instance removes it from the managed instance group without deleting
--   it.</li>
--   </ul>
igmasAbandoning :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The status of the VPN tunnel.</li>
--   </ul>
data VPNTunnelStatus

-- | <pre>
--   ALLOCATING_RESOURCES
--   </pre>
VTSAllocatingResources :: VPNTunnelStatus

-- | <pre>
--   AUTHORIZATION_ERROR
--   </pre>
VTSAuthorizationError :: VPNTunnelStatus

-- | <pre>
--   DEPROVISIONING
--   </pre>
VTSDeprovisioning :: VPNTunnelStatus

-- | <pre>
--   ESTABLISHED
--   </pre>
VTSEstablished :: VPNTunnelStatus

-- | <pre>
--   FAILED
--   </pre>
VTSFailed :: VPNTunnelStatus

-- | <pre>
--   FIRST_HANDSHAKE
--   </pre>
VTSFirstHandshake :: VPNTunnelStatus

-- | <pre>
--   NEGOTIATION_FAILURE
--   </pre>
VTSNegotiationFailure :: VPNTunnelStatus

-- | <pre>
--   NETWORK_ERROR
--   </pre>
VTSNetworkError :: VPNTunnelStatus

-- | <pre>
--   NO_INCOMING_PACKETS
--   </pre>
VTSNoIncomingPackets :: VPNTunnelStatus

-- | <pre>
--   PROVISIONING
--   </pre>
VTSProvisioning :: VPNTunnelStatus

-- | <pre>
--   REJECTED
--   </pre>
VTSRejected :: VPNTunnelStatus

-- | <pre>
--   WAITING_FOR_FULL_CONFIG
--   </pre>
VTSWaitingForFullConfig :: VPNTunnelStatus

-- | A service account.
--   
--   <i>See:</i> <a>serviceAccount</a> smart constructor.
data ServiceAccount

-- | Creates a value of <a>ServiceAccount</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>saEmail</a></li>
--   <li><a>saScopes</a></li>
--   </ul>
serviceAccount :: ServiceAccount

-- | Email address of the service account.
saEmail :: Lens' ServiceAccount (Maybe Text)

-- | The list of scopes to be made available for this service account.
saScopes :: Lens' ServiceAccount [Text]
data RegionInstanceGroupManagersAbandonInstancesRequest

-- | Creates a value of
--   <a>RegionInstanceGroupManagersAbandonInstancesRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmairInstances</a></li>
--   </ul>
regionInstanceGroupManagersAbandonInstancesRequest :: RegionInstanceGroupManagersAbandonInstancesRequest

-- | The names of one or more instances to abandon.
rigmairInstances :: Lens' RegionInstanceGroupManagersAbandonInstancesRequest [Text]

-- | Contains a list of networks.
--   
--   <i>See:</i> <a>networkList</a> smart constructor.
data NetworkList

-- | Creates a value of <a>NetworkList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nlNextPageToken</a></li>
--   <li><a>nlKind</a></li>
--   <li><a>nlItems</a></li>
--   <li><a>nlSelfLink</a></li>
--   <li><a>nlId</a></li>
--   </ul>
networkList :: NetworkList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
nlNextPageToken :: Lens' NetworkList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#networkList
--   for lists of networks.</li>
--   </ul>
nlKind :: Lens' NetworkList Text

-- | <ul>
--   <li><i>Output Only</i> A list of Network resources.</li>
--   </ul>
nlItems :: Lens' NetworkList [Network]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
nlSelfLink :: Lens' NetworkList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
nlId :: Lens' NetworkList (Maybe Text)
data InstanceGroupsListInstancesRequest

-- | Creates a value of <a>InstanceGroupsListInstancesRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iglirInstanceState</a></li>
--   </ul>
instanceGroupsListInstancesRequest :: InstanceGroupsListInstancesRequest

-- | A filter for the state of the instances in the instance group. Valid
--   options are ALL or RUNNING. If you do not specify this parameter the
--   list includes all instances regardless of their state.
iglirInstanceState :: Lens' InstanceGroupsListInstancesRequest (Maybe InstanceGroupsListInstancesRequestInstanceState)

-- | Specifies the balancing mode for this backend. For global HTTP(S) or
--   TCP/SSL load balancing, the default is UTILIZATION. Valid values are
--   UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP/SSL). This
--   cannot be used for internal load balancing.
data BackendBalancingMode

-- | <pre>
--   CONNECTION
--   </pre>
Connection :: BackendBalancingMode

-- | <pre>
--   RATE
--   </pre>
Rate :: BackendBalancingMode

-- | <pre>
--   UTILIZATION
--   </pre>
Utilization :: BackendBalancingMode

-- | Contains a list of InstanceGroup resources.
--   
--   <i>See:</i> <a>regionInstanceGroupList</a> smart constructor.
data RegionInstanceGroupList

-- | Creates a value of <a>RegionInstanceGroupList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>riglNextPageToken</a></li>
--   <li><a>riglKind</a></li>
--   <li><a>riglItems</a></li>
--   <li><a>riglSelfLink</a></li>
--   <li><a>riglId</a></li>
--   </ul>
regionInstanceGroupList :: RegionInstanceGroupList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
riglNextPageToken :: Lens' RegionInstanceGroupList (Maybe Text)

-- | The resource type.
riglKind :: Lens' RegionInstanceGroupList Text

-- | A list of InstanceGroup resources.
riglItems :: Lens' RegionInstanceGroupList [InstanceGroup]

-- | <ul>
--   <li><i>Output Only</i> The URL for this resource type. The server
--   generates this URL.</li>
--   </ul>
riglSelfLink :: Lens' RegionInstanceGroupList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
riglId :: Lens' RegionInstanceGroupList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A map of scoped target pool lists.</li>
--   </ul>
--   
--   <i>See:</i> <a>targetPoolAggregatedListItems</a> smart constructor.
data TargetPoolAggregatedListItems

-- | Creates a value of <a>TargetPoolAggregatedListItems</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpaliAddtional</a></li>
--   </ul>
targetPoolAggregatedListItems :: HashMap Text TargetPoolsScopedList -> TargetPoolAggregatedListItems

-- | Name of the scope containing this set of target pools.
tpaliAddtional :: Lens' TargetPoolAggregatedListItems (HashMap Text TargetPoolsScopedList)
data TargetInstancesScopedList

-- | Creates a value of <a>TargetInstancesScopedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tislWarning</a></li>
--   <li><a>tislTargetInstances</a></li>
--   </ul>
targetInstancesScopedList :: TargetInstancesScopedList

-- | Informational warning which replaces the list of addresses when the
--   list is empty.
tislWarning :: Lens' TargetInstancesScopedList (Maybe TargetInstancesScopedListWarning)

-- | List of target instances contained in this scope.
tislTargetInstances :: Lens' TargetInstancesScopedList [TargetInstance]

-- | <ul>
--   <li><i>Output Only</i> A map of scoped address lists.</li>
--   </ul>
--   
--   <i>See:</i> <a>addressAggregatedListItems</a> smart constructor.
data AddressAggregatedListItems

-- | Creates a value of <a>AddressAggregatedListItems</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aAddtional</a></li>
--   </ul>
addressAggregatedListItems :: HashMap Text AddressesScopedList -> AddressAggregatedListItems

-- | <ul>
--   <li><i>Output Only</i> Name of the scope containing this set of
--   addresses.</li>
--   </ul>
aAddtional :: Lens' AddressAggregatedListItems (HashMap Text AddressesScopedList)

-- | Contains a list of Autoscaler resources.
--   
--   <i>See:</i> <a>autoscalerList</a> smart constructor.
data AutoscalerList

-- | Creates a value of <a>AutoscalerList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>autNextPageToken</a></li>
--   <li><a>autKind</a></li>
--   <li><a>autItems</a></li>
--   <li><a>autSelfLink</a></li>
--   <li><a>autId</a></li>
--   </ul>
autoscalerList :: AutoscalerList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
autNextPageToken :: Lens' AutoscalerList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#autoscalerList
--   for lists of autoscalers.</li>
--   </ul>
autKind :: Lens' AutoscalerList Text

-- | A list of Autoscaler resources.
autItems :: Lens' AutoscalerList [Autoscaler]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
autSelfLink :: Lens' AutoscalerList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
autId :: Lens' AutoscalerList (Maybe Text)
data TargetSSLProxiesSetProxyHeaderRequest

-- | Creates a value of <a>TargetSSLProxiesSetProxyHeaderRequest</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tspsphrProxyHeader</a></li>
--   </ul>
targetSSLProxiesSetProxyHeaderRequest :: TargetSSLProxiesSetProxyHeaderRequest

-- | The new type of proxy header to append before sending data to the
--   backend. NONE or PROXY_V1 are allowed.
tspsphrProxyHeader :: Lens' TargetSSLProxiesSetProxyHeaderRequest (Maybe TargetSSLProxiesSetProxyHeaderRequestProxyHeader)
data VPNTunnelAggregatedList

-- | Creates a value of <a>VPNTunnelAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vtalNextPageToken</a></li>
--   <li><a>vtalKind</a></li>
--   <li><a>vtalItems</a></li>
--   <li><a>vtalSelfLink</a></li>
--   <li><a>vtalId</a></li>
--   </ul>
vpnTunnelAggregatedList :: VPNTunnelAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
vtalNextPageToken :: Lens' VPNTunnelAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#vpnTunnel for
--   VPN tunnels.</li>
--   </ul>
vtalKind :: Lens' VPNTunnelAggregatedList Text

-- | <ul>
--   <li><i>Output Only</i> A map of scoped vpn tunnel lists.</li>
--   </ul>
vtalItems :: Lens' VPNTunnelAggregatedList (Maybe VPNTunnelAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
vtalSelfLink :: Lens' VPNTunnelAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
vtalId :: Lens' VPNTunnelAggregatedList (Maybe Text)

-- | An instance-attached disk resource.
--   
--   <i>See:</i> <a>attachedDisk</a> smart constructor.
data AttachedDisk

-- | Creates a value of <a>AttachedDisk</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>adDiskEncryptionKey</a></li>
--   <li><a>adKind</a></li>
--   <li><a>adMode</a></li>
--   <li><a>adBoot</a></li>
--   <li><a>adAutoDelete</a></li>
--   <li><a>adInitializeParams</a></li>
--   <li><a>adDeviceName</a></li>
--   <li><a>adInterface</a></li>
--   <li><a>adSource</a></li>
--   <li><a>adLicenses</a></li>
--   <li><a>adType</a></li>
--   <li><a>adIndex</a></li>
--   </ul>
attachedDisk :: AttachedDisk

-- | Encrypts or decrypts a disk using a customer-supplied encryption key.
--   If you are creating a new disk, this field encrypts the new disk using
--   an encryption key that you provide. If you are attaching an existing
--   disk that is already encrypted, this field decrypts the disk using the
--   customer-supplied encryption key. If you encrypt a disk using a
--   customer-supplied key, you must provide the same key again when you
--   attempt to use this resource at a later time. For example, you must
--   provide the key when you create a snapshot or an image from the disk
--   or when you attach the disk to a virtual machine instance. If you do
--   not provide an encryption key, then the disk will be encrypted using
--   an automatically generated key and you do not need to provide a key to
--   use the disk later. Instance templates do not store customer-supplied
--   encryption keys, so you cannot use your own keys to encrypt disks in a
--   managed instance group.
adDiskEncryptionKey :: Lens' AttachedDisk (Maybe CustomerEncryptionKey)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always
--   compute#attachedDisk for attached disks.</li>
--   </ul>
adKind :: Lens' AttachedDisk Text

-- | The mode in which to attach this disk, either READ_WRITE or READ_ONLY.
--   If not specified, the default is to attach the disk in READ_WRITE
--   mode.
adMode :: Lens' AttachedDisk (Maybe AttachedDiskMode)

-- | Indicates that this is a boot disk. The virtual machine will use the
--   first partition of the disk for its root filesystem.
adBoot :: Lens' AttachedDisk (Maybe Bool)

-- | Specifies whether the disk will be auto-deleted when the instance is
--   deleted (but not when the disk is detached from the instance).
adAutoDelete :: Lens' AttachedDisk (Maybe Bool)

-- | <ul>
--   <li><i>Input Only</i> Specifies the parameters for a new disk that
--   will be created alongside the new instance. Use initialization
--   parameters to create boot disks or local SSDs attached to the new
--   instance. This property is mutually exclusive with the source
--   property; you can only define one or the other, but not both.</li>
--   </ul>
adInitializeParams :: Lens' AttachedDisk (Maybe AttachedDiskInitializeParams)

-- | Specifies a unique device name of your choice that is reflected into
--   the /dev/disk/by-id/google-* tree of a Linux operating system running
--   within the instance. This name can be used to reference the device for
--   mounting, resizing, and so on, from within the instance. If not
--   specified, the server chooses a default device name to apply to this
--   disk, in the form persistent-disks-x, where x is a number assigned by
--   Google Compute Engine. This field is only applicable for persistent
--   disks.
adDeviceName :: Lens' AttachedDisk (Maybe Text)

-- | Specifies the disk interface to use for attaching this disk, which is
--   either SCSI or NVME. The default is SCSI. Persistent disks must always
--   use SCSI and the request will fail if you attempt to attach a
--   persistent disk in any other format than SCSI. Local SSDs can use
--   either NVME or SCSI. For performance characteristics of SCSI over
--   NVMe, see Local SSD performance.
adInterface :: Lens' AttachedDisk (Maybe AttachedDiskInterface)

-- | Specifies a valid partial or full URL to an existing Persistent Disk
--   resource. When creating a new instance, one of
--   initializeParams.sourceImage or disks.source is required. If desired,
--   you can also attach existing non-root persistent disks using this
--   property. This field is only applicable for persistent disks. Note
--   that for InstanceTemplate, specify the disk name, not the URL for the
--   disk.
adSource :: Lens' AttachedDisk (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Any valid publicly visible licenses.</li>
--   </ul>
adLicenses :: Lens' AttachedDisk [Text]

-- | Specifies the type of the disk, either SCRATCH or PERSISTENT. If not
--   specified, the default is PERSISTENT.
adType :: Lens' AttachedDisk (Maybe AttachedDiskType)

-- | Assigns a zero-based index to this disk, where 0 is reserved for the
--   boot disk. For example, if you have many disks attached to an
--   instance, each disk would have a unique index number. If not
--   specified, the server will choose an appropriate value.
adIndex :: Lens' AttachedDisk (Maybe Int32)

-- | Contains a list of disk types.
--   
--   <i>See:</i> <a>diskTypeList</a> smart constructor.
data DiskTypeList

-- | Creates a value of <a>DiskTypeList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtlNextPageToken</a></li>
--   <li><a>dtlKind</a></li>
--   <li><a>dtlItems</a></li>
--   <li><a>dtlSelfLink</a></li>
--   <li><a>dtlId</a></li>
--   </ul>
diskTypeList :: DiskTypeList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
dtlNextPageToken :: Lens' DiskTypeList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#diskTypeList
--   for disk types.</li>
--   </ul>
dtlKind :: Lens' DiskTypeList Text

-- | <ul>
--   <li><i>Output Only</i> A list of Disk Type resources.</li>
--   </ul>
dtlItems :: Lens' DiskTypeList [DiskType]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
dtlSelfLink :: Lens' DiskTypeList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
dtlId :: Lens' DiskTypeList (Maybe Text)
data RegionInstanceGroupsSetNamedPortsRequest

-- | Creates a value of <a>RegionInstanceGroupsSetNamedPortsRequest</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigsnprFingerprint</a></li>
--   <li><a>rigsnprNamedPorts</a></li>
--   </ul>
regionInstanceGroupsSetNamedPortsRequest :: RegionInstanceGroupsSetNamedPortsRequest

-- | The fingerprint of the named ports information for this instance
--   group. Use this optional property to prevent conflicts when multiple
--   users change the named ports settings concurrently. Obtain the
--   fingerprint with the instanceGroups.get method. Then, include the
--   fingerprint in your request to ensure that you do not overwrite
--   changes that were applied from another concurrent request.
rigsnprFingerprint :: Lens' RegionInstanceGroupsSetNamedPortsRequest (Maybe ByteString)

-- | The list of named ports to set for this instance group.
rigsnprNamedPorts :: Lens' RegionInstanceGroupsSetNamedPortsRequest [NamedPort]

-- | Contains a list of machine types.
--   
--   <i>See:</i> <a>machineTypeList</a> smart constructor.
data MachineTypeList

-- | Creates a value of <a>MachineTypeList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mtlNextPageToken</a></li>
--   <li><a>mtlKind</a></li>
--   <li><a>mtlItems</a></li>
--   <li><a>mtlSelfLink</a></li>
--   <li><a>mtlId</a></li>
--   </ul>
machineTypeList :: MachineTypeList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
mtlNextPageToken :: Lens' MachineTypeList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#machineTypeList for lists of machine types.</li>
--   </ul>
mtlKind :: Lens' MachineTypeList Text

-- | <ul>
--   <li><i>Output Only</i> A list of Machine Type resources.</li>
--   </ul>
mtlItems :: Lens' MachineTypeList [MachineType]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
mtlSelfLink :: Lens' MachineTypeList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
mtlId :: Lens' MachineTypeList (Maybe Text)

-- | A list of TargetHttpProxy resources.
--   
--   <i>See:</i> <a>targetHTTPProxyList</a> smart constructor.
data TargetHTTPProxyList

-- | Creates a value of <a>TargetHTTPProxyList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>thttpplNextPageToken</a></li>
--   <li><a>thttpplKind</a></li>
--   <li><a>thttpplItems</a></li>
--   <li><a>thttpplSelfLink</a></li>
--   <li><a>thttpplId</a></li>
--   </ul>
targetHTTPProxyList :: TargetHTTPProxyList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
thttpplNextPageToken :: Lens' TargetHTTPProxyList (Maybe Text)

-- | Type of resource. Always compute#targetHttpProxyList for lists of
--   target HTTP proxies.
thttpplKind :: Lens' TargetHTTPProxyList Text

-- | A list of TargetHttpProxy resources.
thttpplItems :: Lens' TargetHTTPProxyList [TargetHTTPProxy]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
thttpplSelfLink :: Lens' TargetHTTPProxyList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
thttpplId :: Lens' TargetHTTPProxyList (Maybe Text)

-- | Contains a list of managed instance groups.
--   
--   <i>See:</i> <a>regionInstanceGroupManagerList</a> smart constructor.
data RegionInstanceGroupManagerList

-- | Creates a value of <a>RegionInstanceGroupManagerList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmlNextPageToken</a></li>
--   <li><a>rigmlKind</a></li>
--   <li><a>rigmlItems</a></li>
--   <li><a>rigmlSelfLink</a></li>
--   <li><a>rigmlId</a></li>
--   </ul>
regionInstanceGroupManagerList :: RegionInstanceGroupManagerList

-- | <ul>
--   <li><i>Output only</i> A token used to continue a truncated list
--   request.</li>
--   </ul>
rigmlNextPageToken :: Lens' RegionInstanceGroupManagerList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The resource type, which is always
--   compute#instanceGroupManagerList for a list of managed instance groups
--   that exist in th regional scope.</li>
--   </ul>
rigmlKind :: Lens' RegionInstanceGroupManagerList Text

-- | A list of managed instance groups.
rigmlItems :: Lens' RegionInstanceGroupManagerList [InstanceGroupManager]

-- | <ul>
--   <li><i>Output only</i> The URL for this resource type. The server
--   generates this URL.</li>
--   </ul>
rigmlSelfLink :: Lens' RegionInstanceGroupManagerList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
rigmlId :: Lens' RegionInstanceGroupManagerList (Maybe Text)

-- | The IP protocol to which this rule applies. Valid options are TCP,
--   UDP, ESP, AH, SCTP or ICMP. When the load balancing scheme is INTERNAL
data ForwardingRuleIPProtocol

-- | <pre>
--   AH
--   </pre>
FRIPAH :: ForwardingRuleIPProtocol

-- | <pre>
--   ESP
--   </pre>
FRIPEsp :: ForwardingRuleIPProtocol

-- | <pre>
--   SCTP
--   </pre>
FRIPSctp :: ForwardingRuleIPProtocol

-- | <pre>
--   TCP
--   </pre>
FRIPTCP :: ForwardingRuleIPProtocol

-- | <pre>
--   UDP
--   </pre>
FRIPUdp :: ForwardingRuleIPProtocol
data DiskTypesScopedList

-- | Creates a value of <a>DiskTypesScopedList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtslDiskTypes</a></li>
--   <li><a>dtslWarning</a></li>
--   </ul>
diskTypesScopedList :: DiskTypesScopedList

-- | <ul>
--   <li><i>Output Only</i> List of disk types contained in this
--   scope.</li>
--   </ul>
dtslDiskTypes :: Lens' DiskTypesScopedList [DiskType]

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of disk types when the list is empty.</li>
--   </ul>
dtslWarning :: Lens' DiskTypesScopedList (Maybe DiskTypesScopedListWarning)

-- | <ul>
--   <li><i>Output Only</i> The status of the address, which can be either
--   IN_USE or RESERVED. An address that is RESERVED is currently reserved
--   and available to use. An IN_USE address is currently being used by
--   another resource and is not available.</li>
--   </ul>
data AddressStatus

-- | <pre>
--   IN_USE
--   </pre>
InUse :: AddressStatus

-- | <pre>
--   RESERVED
--   </pre>
Reserved :: AddressStatus
data DiskTypeAggregatedList

-- | Creates a value of <a>DiskTypeAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtalNextPageToken</a></li>
--   <li><a>dtalKind</a></li>
--   <li><a>dtalItems</a></li>
--   <li><a>dtalSelfLink</a></li>
--   <li><a>dtalId</a></li>
--   </ul>
diskTypeAggregatedList :: DiskTypeAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
dtalNextPageToken :: Lens' DiskTypeAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#diskTypeAggregatedList.</li>
--   </ul>
dtalKind :: Lens' DiskTypeAggregatedList Text

-- | <ul>
--   <li><i>Output Only</i> A map of scoped disk type lists.</li>
--   </ul>
dtalItems :: Lens' DiskTypeAggregatedList (Maybe DiskTypeAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
dtalSelfLink :: Lens' DiskTypeAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
dtalId :: Lens' DiskTypeAggregatedList (Maybe Text)
data HTTPHealthCheck

-- | Creates a value of <a>HTTPHealthCheck</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>httphcRequestPath</a></li>
--   <li><a>httphcHost</a></li>
--   <li><a>httphcProxyHeader</a></li>
--   <li><a>httphcPortName</a></li>
--   <li><a>httphcPort</a></li>
--   </ul>
hTTPHealthCheck :: HTTPHealthCheck

-- | The request path of the HTTP health check request. The default value
--   is /.
httphcRequestPath :: Lens' HTTPHealthCheck (Maybe Text)

-- | The value of the host header in the HTTP health check request. If left
--   empty (default value), the IP on behalf of which this health check is
--   performed will be used.
httphcHost :: Lens' HTTPHealthCheck (Maybe Text)

-- | Specifies the type of proxy header to append before sending data to
--   the backend, either NONE or PROXY_V1. The default is NONE.
httphcProxyHeader :: Lens' HTTPHealthCheck (Maybe HTTPHealthCheckProxyHeader)

-- | Port name as defined in InstanceGroupname. If both port and port_name
--   are defined, port takes precedence.
httphcPortName :: Lens' HTTPHealthCheck (Maybe Text)

-- | The TCP port number for the health check request. The default value is
--   80.
httphcPort :: Lens' HTTPHealthCheck (Maybe Int32)
data BackendServiceGroupHealth

-- | Creates a value of <a>BackendServiceGroupHealth</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bsghKind</a></li>
--   <li><a>bsghHealthStatus</a></li>
--   </ul>
backendServiceGroupHealth :: BackendServiceGroupHealth

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#backendServiceGroupHealth for the health of backend
--   services.</li>
--   </ul>
bsghKind :: Lens' BackendServiceGroupHealth Text
bsghHealthStatus :: Lens' BackendServiceGroupHealth [HealthStatus]

-- | A filter for the state of the instances in the instance group. Valid
--   options are ALL or RUNNING. If you do not specify this parameter the
--   list includes all instances regardless of their state.
data InstanceGroupsListInstancesRequestInstanceState

-- | <pre>
--   ALL
--   </pre>
IGLIRISAll :: InstanceGroupsListInstancesRequestInstanceState

-- | <pre>
--   RUNNING
--   </pre>
IGLIRISRunning :: InstanceGroupsListInstancesRequestInstanceState
data AutoscalersScopedList

-- | Creates a value of <a>AutoscalersScopedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aAutoscalers</a></li>
--   <li><a>aWarning</a></li>
--   </ul>
autoscalersScopedList :: AutoscalersScopedList

-- | <ul>
--   <li><i>Output Only</i> List of autoscalers contained in this
--   scope.</li>
--   </ul>
aAutoscalers :: Lens' AutoscalersScopedList [Autoscaler]

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of autoscalers when the list is empty.</li>
--   </ul>
aWarning :: Lens' AutoscalersScopedList (Maybe AutoscalersScopedListWarning)
data AutoscalerAggregatedList

-- | Creates a value of <a>AutoscalerAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aalNextPageToken</a></li>
--   <li><a>aalKind</a></li>
--   <li><a>aalItems</a></li>
--   <li><a>aalSelfLink</a></li>
--   <li><a>aalId</a></li>
--   </ul>
autoscalerAggregatedList :: AutoscalerAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
aalNextPageToken :: Lens' AutoscalerAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#autoscalerAggregatedList for aggregated lists of
--   autoscalers.</li>
--   </ul>
aalKind :: Lens' AutoscalerAggregatedList Text

-- | A map of scoped autoscaler lists.
aalItems :: Lens' AutoscalerAggregatedList (Maybe AutoscalerAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
aalSelfLink :: Lens' AutoscalerAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
aalId :: Lens' AutoscalerAggregatedList (Maybe Text)

-- | A map of scoped router lists.
--   
--   <i>See:</i> <a>routerAggregatedListItems</a> smart constructor.
data RouterAggregatedListItems

-- | Creates a value of <a>RouterAggregatedListItems</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>raliAddtional</a></li>
--   </ul>
routerAggregatedListItems :: HashMap Text RoutersScopedList -> RouterAggregatedListItems

-- | Name of the scope containing this set of routers.
raliAddtional :: Lens' RouterAggregatedListItems (HashMap Text RoutersScopedList)

-- | Specifies the type of proxy header to append before sending data to
--   the backend, either NONE or PROXY_V1. The default is NONE.
data HTTPSHealthCheckProxyHeader

-- | <pre>
--   NONE
--   </pre>
HHCPHNone :: HTTPSHealthCheckProxyHeader

-- | <pre>
--   PROXY_V1
--   </pre>
HHCPHProxyV1 :: HTTPSHealthCheckProxyHeader

-- | Cloud Autoscaler policy.
--   
--   <i>See:</i> <a>autoscalingPolicy</a> smart constructor.
data AutoscalingPolicy

-- | Creates a value of <a>AutoscalingPolicy</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>apCustomMetricUtilizations</a></li>
--   <li><a>apMaxNumReplicas</a></li>
--   <li><a>apCPUUtilization</a></li>
--   <li><a>apLoadBalancingUtilization</a></li>
--   <li><a>apMinNumReplicas</a></li>
--   <li><a>apCoolDownPeriodSec</a></li>
--   </ul>
autoscalingPolicy :: AutoscalingPolicy

-- | Configuration parameters of autoscaling based on a custom metric.
apCustomMetricUtilizations :: Lens' AutoscalingPolicy [AutoscalingPolicyCustomMetricUtilization]

-- | The maximum number of instances that the autoscaler can scale up to.
--   This is required when creating or updating an autoscaler. The maximum
--   number of replicas should not be lower than minimal number of
--   replicas.
apMaxNumReplicas :: Lens' AutoscalingPolicy (Maybe Int32)

-- | Defines the CPU utilization policy that allows the autoscaler to scale
--   based on the average CPU utilization of a managed instance group.
apCPUUtilization :: Lens' AutoscalingPolicy (Maybe AutoscalingPolicyCPUUtilization)

-- | Configuration parameters of autoscaling based on load balancer.
apLoadBalancingUtilization :: Lens' AutoscalingPolicy (Maybe AutoscalingPolicyLoadBalancingUtilization)

-- | The minimum number of replicas that the autoscaler can scale down to.
--   This cannot be less than 0. If not provided, autoscaler will choose a
--   default value depending on maximum number of instances allowed.
apMinNumReplicas :: Lens' AutoscalingPolicy (Maybe Int32)

-- | The number of seconds that the autoscaler should wait before it starts
--   collecting information from a new instance. This prevents the
--   autoscaler from collecting information when the instance is
--   initializing, during which the collected usage would not be reliable.
--   The default time autoscaler waits is 60 seconds. Virtual machine
--   initialization times might vary because of numerous factors. We
--   recommend that you test how long an instance may take to initialize.
--   To do this, create an instance and time the startup process.
apCoolDownPeriodSec :: Lens' AutoscalingPolicy (Maybe Int32)

-- | Contains a list of region resources.
--   
--   <i>See:</i> <a>regionList</a> smart constructor.
data RegionList

-- | Creates a value of <a>RegionList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>regNextPageToken</a></li>
--   <li><a>regKind</a></li>
--   <li><a>regItems</a></li>
--   <li><a>regSelfLink</a></li>
--   <li><a>regId</a></li>
--   </ul>
regionList :: RegionList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
regNextPageToken :: Lens' RegionList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#regionList for
--   lists of regions.</li>
--   </ul>
regKind :: Lens' RegionList Text

-- | <ul>
--   <li><i>Output Only</i> A list of Region resources.</li>
--   </ul>
regItems :: Lens' RegionList [Region]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
regSelfLink :: Lens' RegionList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
regId :: Lens' RegionList (Maybe Text)

-- | Specifies the disk interface to use for attaching this disk, which is
--   either SCSI or NVME. The default is SCSI. Persistent disks must always
--   use SCSI and the request will fail if you attempt to attach a
--   persistent disk in any other format than SCSI. Local SSDs can use
--   either NVME or SCSI. For performance characteristics of SCSI over
--   NVMe, see Local SSD performance.
data AttachedDiskInterface

-- | <pre>
--   NVME
--   </pre>
Nvme :: AttachedDiskInterface

-- | <pre>
--   SCSI
--   </pre>
Scsi :: AttachedDiskInterface

-- | Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS.
--   If not specified, the default is TCP. Exactly one of the
--   protocol-specific health check field must be specified, which must
--   match type field.
data HealthCheckType

-- | <pre>
--   HTTP
--   </pre>
HCTHTTP :: HealthCheckType

-- | <pre>
--   HTTPS
--   </pre>
HCTHTTPS :: HealthCheckType

-- | <pre>
--   INVALID
--   </pre>
HCTInvalid :: HealthCheckType

-- | <pre>
--   SSL
--   </pre>
HCTSSL :: HealthCheckType

-- | <pre>
--   TCP
--   </pre>
HCTTCP :: HealthCheckType

-- | <ul>
--   <li><i>Output Only</i> Status of the zone, either UP or DOWN.</li>
--   </ul>
data ZoneStatus

-- | <pre>
--   DOWN
--   </pre>
ZSDown :: ZoneStatus

-- | <pre>
--   UP
--   </pre>
ZSUP :: ZoneStatus

-- | Contains a list of VpnTunnel resources.
--   
--   <i>See:</i> <a>vpnTunnelList</a> smart constructor.
data VPNTunnelList

-- | Creates a value of <a>VPNTunnelList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vtlNextPageToken</a></li>
--   <li><a>vtlKind</a></li>
--   <li><a>vtlItems</a></li>
--   <li><a>vtlSelfLink</a></li>
--   <li><a>vtlId</a></li>
--   </ul>
vpnTunnelList :: VPNTunnelList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
vtlNextPageToken :: Lens' VPNTunnelList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#vpnTunnel for
--   VPN tunnels.</li>
--   </ul>
vtlKind :: Lens' VPNTunnelList Text

-- | <ul>
--   <li><i>Output Only</i> A list of VpnTunnel resources.</li>
--   </ul>
vtlItems :: Lens' VPNTunnelList [VPNTunnel]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
vtlSelfLink :: Lens' VPNTunnelList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
vtlId :: Lens' VPNTunnelList (Maybe Text)
data MachineTypeScratchDisksItem

-- | Creates a value of <a>MachineTypeScratchDisksItem</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mtsdiDiskGb</a></li>
--   </ul>
machineTypeScratchDisksItem :: MachineTypeScratchDisksItem

-- | Size of the scratch disk, defined in GB.
mtsdiDiskGb :: Lens' MachineTypeScratchDisksItem (Maybe Int32)
data SubnetworksScopedListWarningDataItem

-- | Creates a value of <a>SubnetworksScopedListWarningDataItem</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sslwdiValue</a></li>
--   <li><a>sslwdiKey</a></li>
--   </ul>
subnetworksScopedListWarningDataItem :: SubnetworksScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
sslwdiValue :: Lens' SubnetworksScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
sslwdiKey :: Lens' SubnetworksScopedListWarningDataItem (Maybe Text)
data MachineTypesScopedList

-- | Creates a value of <a>MachineTypesScopedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mtslMachineTypes</a></li>
--   <li><a>mtslWarning</a></li>
--   </ul>
machineTypesScopedList :: MachineTypesScopedList

-- | <ul>
--   <li><i>Output Only</i> List of machine types contained in this
--   scope.</li>
--   </ul>
mtslMachineTypes :: Lens' MachineTypesScopedList [MachineType]

-- | <ul>
--   <li><i>Output Only</i> An informational warning that appears when the
--   machine types list is empty.</li>
--   </ul>
mtslWarning :: Lens' MachineTypesScopedList (Maybe MachineTypesScopedListWarning)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data SubnetworksScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
SSLWCCleanupFailed :: SubnetworksScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
SSLWCDeprecatedResourceUsed :: SubnetworksScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
SSLWCDiskSizeLargerThanImageSize :: SubnetworksScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
SSLWCFieldValueOverriden :: SubnetworksScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
SSLWCInjectedKernelsDeprecated :: SubnetworksScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
SSLWCNextHopAddressNotAssigned :: SubnetworksScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
SSLWCNextHopCannotIPForward :: SubnetworksScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
SSLWCNextHopInstanceNotFound :: SubnetworksScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
SSLWCNextHopInstanceNotOnNetwork :: SubnetworksScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
SSLWCNextHopNotRunning :: SubnetworksScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
SSLWCNotCriticalError :: SubnetworksScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
SSLWCNoResultsOnPage :: SubnetworksScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
SSLWCRequiredTosAgreement :: SubnetworksScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
SSLWCResourceNotDeleted :: SubnetworksScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
SSLWCSingleInstancePropertyTemplate :: SubnetworksScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
SSLWCUnreachable :: SubnetworksScopedListWarningCode

-- | A Subnetwork resource.
--   
--   <i>See:</i> <a>subnetwork</a> smart constructor.
data Subnetwork

-- | Creates a value of <a>Subnetwork</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>subKind</a></li>
--   <li><a>subNetwork</a></li>
--   <li><a>subGatewayAddress</a></li>
--   <li><a>subSelfLink</a></li>
--   <li><a>subName</a></li>
--   <li><a>subCreationTimestamp</a></li>
--   <li><a>subIPCIdRRange</a></li>
--   <li><a>subId</a></li>
--   <li><a>subRegion</a></li>
--   <li><a>subDescription</a></li>
--   </ul>
subnetwork :: Subnetwork

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#subnetwork
--   for Subnetwork resources.</li>
--   </ul>
subKind :: Lens' Subnetwork Text

-- | The URL of the network to which this subnetwork belongs, provided by
--   the client when initially creating the subnetwork. Only networks that
--   are in the distributed mode can have subnetworks.
subNetwork :: Lens' Subnetwork (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The gateway address for default routes to reach
--   destination addresses outside this subnetwork.</li>
--   </ul>
subGatewayAddress :: Lens' Subnetwork (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
subSelfLink :: Lens' Subnetwork (Maybe Text)

-- | The name of the resource, provided by the client when initially
--   creating the resource. The name must be 1-63 characters long, and
--   comply with RFC1035. Specifically, the name must be 1-63 characters
--   long and match the regular expression <a>a-z</a>? which means the
--   first character must be a lowercase letter, and all following
--   characters must be a dash, lowercase letter, or digit, except the last
--   character, which cannot be a dash.
subName :: Lens' Subnetwork (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
subCreationTimestamp :: Lens' Subnetwork (Maybe Text)

-- | The range of internal addresses that are owned by this subnetwork.
--   Provide this property when you create the subnetwork. For example,
--   10.0.0.0/8 or 192.168.0.0/16. Ranges must be unique and
--   non-overlapping within a network. Only IPv4 is supported.
subIPCIdRRange :: Lens' Subnetwork (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
subId :: Lens' Subnetwork (Maybe Word64)

-- | URL of the region where the Subnetwork resides.
subRegion :: Lens' Subnetwork (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
subDescription :: Lens' Subnetwork (Maybe Text)
data MachineTypeAggregatedList

-- | Creates a value of <a>MachineTypeAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mtalNextPageToken</a></li>
--   <li><a>mtalKind</a></li>
--   <li><a>mtalItems</a></li>
--   <li><a>mtalSelfLink</a></li>
--   <li><a>mtalId</a></li>
--   </ul>
machineTypeAggregatedList :: MachineTypeAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
mtalNextPageToken :: Lens' MachineTypeAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#machineTypeAggregatedList for aggregated lists of machine
--   types.</li>
--   </ul>
mtalKind :: Lens' MachineTypeAggregatedList Text

-- | <ul>
--   <li><i>Output Only</i> A map of scoped machine type lists.</li>
--   </ul>
mtalItems :: Lens' MachineTypeAggregatedList (Maybe MachineTypeAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
mtalSelfLink :: Lens' MachineTypeAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
mtalId :: Lens' MachineTypeAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Name of the quota metric.</li>
--   </ul>
data QuotaMetric

-- | <pre>
--   AUTOSCALERS
--   </pre>
Autoscalers :: QuotaMetric

-- | <pre>
--   BACKEND_SERVICES
--   </pre>
BackendServices :: QuotaMetric

-- | <pre>
--   CPUS
--   </pre>
CPUs :: QuotaMetric

-- | <pre>
--   DISKS_TOTAL_GB
--   </pre>
DisksTotalGb :: QuotaMetric

-- | <pre>
--   FIREWALLS
--   </pre>
Firewalls :: QuotaMetric

-- | <pre>
--   FORWARDING_RULES
--   </pre>
ForwardingRules :: QuotaMetric

-- | <pre>
--   HEALTH_CHECKS
--   </pre>
HealthChecks :: QuotaMetric

-- | <pre>
--   IMAGES
--   </pre>
Images :: QuotaMetric

-- | <pre>
--   INSTANCES
--   </pre>
Instances :: QuotaMetric

-- | <pre>
--   INSTANCE_GROUPS
--   </pre>
InstanceGroups :: QuotaMetric

-- | <pre>
--   INSTANCE_GROUP_MANAGERS
--   </pre>
InstanceGroupManagers :: QuotaMetric

-- | <pre>
--   INSTANCE_TEMPLATES
--   </pre>
InstanceTemplates :: QuotaMetric

-- | <pre>
--   IN_USE_ADDRESSES
--   </pre>
InUseAddresses :: QuotaMetric

-- | <pre>
--   LOCAL_SSD_TOTAL_GB
--   </pre>
LocalSsdTotalGb :: QuotaMetric

-- | <pre>
--   NETWORKS
--   </pre>
Networks :: QuotaMetric

-- | <pre>
--   PREEMPTIBLE_CPUS
--   </pre>
PreemptibleCPUs :: QuotaMetric

-- | <pre>
--   REGIONAL_AUTOSCALERS
--   </pre>
RegionalAutoscalers :: QuotaMetric

-- | <pre>
--   REGIONAL_INSTANCE_GROUP_MANAGERS
--   </pre>
RegionalInstanceGroupManagers :: QuotaMetric

-- | <pre>
--   ROUTERS
--   </pre>
Routers :: QuotaMetric

-- | <pre>
--   ROUTES
--   </pre>
Routes :: QuotaMetric

-- | <pre>
--   SNAPSHOTS
--   </pre>
Snapshots :: QuotaMetric

-- | <pre>
--   SSD_TOTAL_GB
--   </pre>
SsdTotalGb :: QuotaMetric

-- | <pre>
--   SSL_CERTIFICATES
--   </pre>
SSLCertificates :: QuotaMetric

-- | <pre>
--   STATIC_ADDRESSES
--   </pre>
StaticAddresses :: QuotaMetric

-- | <pre>
--   SUBNETWORKS
--   </pre>
Subnetworks :: QuotaMetric

-- | <pre>
--   TARGET_HTTPS_PROXIES
--   </pre>
TargetHTTPSProxies :: QuotaMetric

-- | <pre>
--   TARGET_HTTP_PROXIES
--   </pre>
TargetHTTPProxies :: QuotaMetric

-- | <pre>
--   TARGET_INSTANCES
--   </pre>
TargetInstances :: QuotaMetric

-- | <pre>
--   TARGET_POOLS
--   </pre>
TargetPools :: QuotaMetric

-- | <pre>
--   TARGET_SSL_PROXIES
--   </pre>
TargetSSLProxies :: QuotaMetric

-- | <pre>
--   TARGET_VPN_GATEWAYS
--   </pre>
TargetVPNGateways :: QuotaMetric

-- | <pre>
--   TOTAL_CPUS
--   </pre>
TotalCPUs :: QuotaMetric

-- | <pre>
--   URL_MAPS
--   </pre>
URLMaps :: QuotaMetric

-- | <pre>
--   VPN_TUNNELS
--   </pre>
VPNTunnels :: QuotaMetric

-- | A DiskType resource.
--   
--   <i>See:</i> <a>diskType</a> smart constructor.
data DiskType

-- | Creates a value of <a>DiskType</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtKind</a></li>
--   <li><a>dtZone</a></li>
--   <li><a>dtSelfLink</a></li>
--   <li><a>dtName</a></li>
--   <li><a>dtCreationTimestamp</a></li>
--   <li><a>dtId</a></li>
--   <li><a>dtValidDiskSize</a></li>
--   <li><a>dtDescription</a></li>
--   <li><a>dtDefaultDiskSizeGb</a></li>
--   <li><a>dtDeprecated</a></li>
--   </ul>
diskType :: DiskType

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#diskType
--   for disk types.</li>
--   </ul>
dtKind :: Lens' DiskType Text

-- | <ul>
--   <li><i>Output Only</i> URL of the zone where the disk type
--   resides.</li>
--   </ul>
dtZone :: Lens' DiskType (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
dtSelfLink :: Lens' DiskType (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Name of the resource.</li>
--   </ul>
dtName :: Lens' DiskType (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
dtCreationTimestamp :: Lens' DiskType (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
dtId :: Lens' DiskType (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> An optional textual description of the valid
--   disk size, such as "10GB-10TB".</li>
--   </ul>
dtValidDiskSize :: Lens' DiskType (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> An optional description of this resource.</li>
--   </ul>
dtDescription :: Lens' DiskType (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined default disk size in GB.</li>
--   </ul>
dtDefaultDiskSizeGb :: Lens' DiskType (Maybe Int64)

-- | <ul>
--   <li><i>Output Only</i> The deprecation status associated with this
--   disk type.</li>
--   </ul>
dtDeprecated :: Lens' DiskType (Maybe DeprecationStatus)

-- | Message representing the validation result for a UrlMap.
--   
--   <i>See:</i> <a>urlMapValidationResult</a> smart constructor.
data URLMapValidationResult

-- | Creates a value of <a>URLMapValidationResult</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umvrLoadErrors</a></li>
--   <li><a>umvrLoadSucceeded</a></li>
--   <li><a>umvrTestPassed</a></li>
--   <li><a>umvrTestFailures</a></li>
--   </ul>
urlMapValidationResult :: URLMapValidationResult
umvrLoadErrors :: Lens' URLMapValidationResult [Text]

-- | Whether the given UrlMap can be successfully loaded. If false,
--   'loadErrors' indicates the reasons.
umvrLoadSucceeded :: Lens' URLMapValidationResult (Maybe Bool)

-- | If successfully loaded, this field indicates whether the test passed.
--   If false, 'testFailures's indicate the reason of failure.
umvrTestPassed :: Lens' URLMapValidationResult (Maybe Bool)
umvrTestFailures :: Lens' URLMapValidationResult [TestFailure]

-- | A metadata key/value entry.
--   
--   <i>See:</i> <a>metadata</a> smart constructor.
data Metadata

-- | Creates a value of <a>Metadata</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mKind</a></li>
--   <li><a>mFingerprint</a></li>
--   <li><a>mItems</a></li>
--   </ul>
metadata :: Metadata

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#metadata
--   for metadata.</li>
--   </ul>
mKind :: Lens' Metadata Text

-- | Specifies a fingerprint for this request, which is essentially a hash
--   of the metadata's contents and used for optimistic locking. The
--   fingerprint is initially generated by Compute Engine and changes after
--   every request to modify or update metadata. You must always provide an
--   up-to-date fingerprint hash in order to update or change metadata.
mFingerprint :: Lens' Metadata (Maybe ByteString)

-- | Array of key/value pairs. The total size of all keys and values must
--   be less than 512 KB.
mItems :: Lens' Metadata [MetadataItemsItem]
data RouteWarningsItem

-- | Creates a value of <a>RouteWarningsItem</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rwiData</a></li>
--   <li><a>rwiCode</a></li>
--   <li><a>rwiMessage</a></li>
--   </ul>
routeWarningsItem :: RouteWarningsItem

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
rwiData :: Lens' RouteWarningsItem [RouteWarningsItemDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
rwiCode :: Lens' RouteWarningsItem (Maybe RouteWarningsItemCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
rwiMessage :: Lens' RouteWarningsItem (Maybe Text)
data MachineTypesScopedListWarningDataItem

-- | Creates a value of <a>MachineTypesScopedListWarningDataItem</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mtslwdiValue</a></li>
--   <li><a>mtslwdiKey</a></li>
--   </ul>
machineTypesScopedListWarningDataItem :: MachineTypesScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
mtslwdiValue :: Lens' MachineTypesScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
mtslwdiKey :: Lens' MachineTypesScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The status of the instance. One of the
--   following values: PROVISIONING, STAGING, RUNNING, STOPPING,
--   SUSPENDING, SUSPENDED, and TERMINATED.</li>
--   </ul>
data InstanceStatus

-- | <pre>
--   PROVISIONING
--   </pre>
ISProvisioning :: InstanceStatus

-- | <pre>
--   RUNNING
--   </pre>
ISRunning :: InstanceStatus

-- | <pre>
--   STAGING
--   </pre>
ISStaging :: InstanceStatus

-- | <pre>
--   STOPPED
--   </pre>
ISStopped :: InstanceStatus

-- | <pre>
--   STOPPING
--   </pre>
ISStopping :: InstanceStatus

-- | <pre>
--   SUSPENDED
--   </pre>
ISSuspended :: InstanceStatus

-- | <pre>
--   SUSPENDING
--   </pre>
ISSuspending :: InstanceStatus

-- | <pre>
--   TERMINATED
--   </pre>
ISTerminated :: InstanceStatus

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data MachineTypesScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
MTSLWCCleanupFailed :: MachineTypesScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
MTSLWCDeprecatedResourceUsed :: MachineTypesScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
MTSLWCDiskSizeLargerThanImageSize :: MachineTypesScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
MTSLWCFieldValueOverriden :: MachineTypesScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
MTSLWCInjectedKernelsDeprecated :: MachineTypesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
MTSLWCNextHopAddressNotAssigned :: MachineTypesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
MTSLWCNextHopCannotIPForward :: MachineTypesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
MTSLWCNextHopInstanceNotFound :: MachineTypesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
MTSLWCNextHopInstanceNotOnNetwork :: MachineTypesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
MTSLWCNextHopNotRunning :: MachineTypesScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
MTSLWCNotCriticalError :: MachineTypesScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
MTSLWCNoResultsOnPage :: MachineTypesScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
MTSLWCRequiredTosAgreement :: MachineTypesScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
MTSLWCResourceNotDeleted :: MachineTypesScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
MTSLWCSingleInstancePropertyTemplate :: MachineTypesScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
MTSLWCUnreachable :: MachineTypesScopedListWarningCode
data InstancesSetServiceAccountRequest

-- | Creates a value of <a>InstancesSetServiceAccountRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>issarEmail</a></li>
--   <li><a>issarScopes</a></li>
--   </ul>
instancesSetServiceAccountRequest :: InstancesSetServiceAccountRequest

-- | Email address of the service account.
issarEmail :: Lens' InstancesSetServiceAccountRequest (Maybe Text)

-- | The list of scopes to be made available for this service account.
issarScopes :: Lens' InstancesSetServiceAccountRequest [Text]
data DiskTypesScopedListWarningDataItem

-- | Creates a value of <a>DiskTypesScopedListWarningDataItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtslwdiValue</a></li>
--   <li><a>dtslwdiKey</a></li>
--   </ul>
diskTypesScopedListWarningDataItem :: DiskTypesScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
dtslwdiValue :: Lens' DiskTypesScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
dtslwdiKey :: Lens' DiskTypesScopedListWarningDataItem (Maybe Text)

-- | A TargetHttpProxy resource. This resource defines an HTTP proxy.
--   
--   <i>See:</i> <a>targetHTTPProxy</a> smart constructor.
data TargetHTTPProxy

-- | Creates a value of <a>TargetHTTPProxy</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>thttppURLMap</a></li>
--   <li><a>thttppKind</a></li>
--   <li><a>thttppSelfLink</a></li>
--   <li><a>thttppName</a></li>
--   <li><a>thttppCreationTimestamp</a></li>
--   <li><a>thttppId</a></li>
--   <li><a>thttppDescription</a></li>
--   </ul>
targetHTTPProxy :: TargetHTTPProxy

-- | URL to the UrlMap resource that defines the mapping from URL to the
--   BackendService.
thttppURLMap :: Lens' TargetHTTPProxy (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#targetHttpProxy for target HTTP proxies.</li>
--   </ul>
thttppKind :: Lens' TargetHTTPProxy Text

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
thttppSelfLink :: Lens' TargetHTTPProxy (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
thttppName :: Lens' TargetHTTPProxy (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
thttppCreationTimestamp :: Lens' TargetHTTPProxy (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
thttppId :: Lens' TargetHTTPProxy (Maybe Word64)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
thttppDescription :: Lens' TargetHTTPProxy (Maybe Text)

-- | A Machine Type resource.
--   
--   <i>See:</i> <a>machineType</a> smart constructor.
data MachineType

-- | Creates a value of <a>MachineType</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mtIsSharedCPU</a></li>
--   <li><a>mtKind</a></li>
--   <li><a>mtImageSpaceGb</a></li>
--   <li><a>mtZone</a></li>
--   <li><a>mtSelfLink</a></li>
--   <li><a>mtName</a></li>
--   <li><a>mtCreationTimestamp</a></li>
--   <li><a>mtScratchDisks</a></li>
--   <li><a>mtId</a></li>
--   <li><a>mtGuestCPUs</a></li>
--   <li><a>mtMaximumPersistentDisksSizeGb</a></li>
--   <li><a>mtMaximumPersistentDisks</a></li>
--   <li><a>mtMemoryMb</a></li>
--   <li><a>mtDescription</a></li>
--   <li><a>mtDeprecated</a></li>
--   </ul>
machineType :: MachineType

-- | <ul>
--   <li><i>Output Only</i> Whether this machine type has a shared CPU. See
--   Shared-core machine types for more information.</li>
--   </ul>
mtIsSharedCPU :: Lens' MachineType (Maybe Bool)

-- | <ul>
--   <li><i>Output Only</i> The type of the resource. Always
--   compute#machineType for machine types.</li>
--   </ul>
mtKind :: Lens' MachineType Text

-- | <ul>
--   <li><i>Deprecated</i> This property is deprecated and will never be
--   populated with any relevant values.</li>
--   </ul>
mtImageSpaceGb :: Lens' MachineType (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The name of the zone where the machine type
--   resides, such as us-central1-a.</li>
--   </ul>
mtZone :: Lens' MachineType (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
mtSelfLink :: Lens' MachineType (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Name of the resource.</li>
--   </ul>
mtName :: Lens' MachineType (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
mtCreationTimestamp :: Lens' MachineType (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> List of extended scratch disks assigned to the
--   instance.</li>
--   </ul>
mtScratchDisks :: Lens' MachineType [MachineTypeScratchDisksItem]

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
mtId :: Lens' MachineType (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> The number of virtual CPUs that are available
--   to the instance.</li>
--   </ul>
mtGuestCPUs :: Lens' MachineType (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> Maximum total persistent disks size (GB)
--   allowed.</li>
--   </ul>
mtMaximumPersistentDisksSizeGb :: Lens' MachineType (Maybe Int64)

-- | <ul>
--   <li><i>Output Only</i> Maximum persistent disks allowed.</li>
--   </ul>
mtMaximumPersistentDisks :: Lens' MachineType (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The amount of physical memory available to the
--   instance, defined in MB.</li>
--   </ul>
mtMemoryMb :: Lens' MachineType (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> An optional textual description of the
--   resource.</li>
--   </ul>
mtDescription :: Lens' MachineType (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The deprecation status associated with this
--   machine type.</li>
--   </ul>
mtDeprecated :: Lens' MachineType (Maybe DeprecationStatus)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data DiskTypesScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
DTSLWCCleanupFailed :: DiskTypesScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
DTSLWCDeprecatedResourceUsed :: DiskTypesScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
DTSLWCDiskSizeLargerThanImageSize :: DiskTypesScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
DTSLWCFieldValueOverriden :: DiskTypesScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
DTSLWCInjectedKernelsDeprecated :: DiskTypesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
DTSLWCNextHopAddressNotAssigned :: DiskTypesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
DTSLWCNextHopCannotIPForward :: DiskTypesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
DTSLWCNextHopInstanceNotFound :: DiskTypesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
DTSLWCNextHopInstanceNotOnNetwork :: DiskTypesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
DTSLWCNextHopNotRunning :: DiskTypesScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
DTSLWCNotCriticalError :: DiskTypesScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
DTSLWCNoResultsOnPage :: DiskTypesScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
DTSLWCRequiredTosAgreement :: DiskTypesScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
DTSLWCResourceNotDeleted :: DiskTypesScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
DTSLWCSingleInstancePropertyTemplate :: DiskTypesScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
DTSLWCUnreachable :: DiskTypesScopedListWarningCode

-- | <ul>
--   <li><i>Output Only</i> If errors are generated during processing of
--   the operation, this field will be populated.</li>
--   </ul>
--   
--   <i>See:</i> <a>operationError</a> smart constructor.
data OperationError

-- | Creates a value of <a>OperationError</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oeErrors</a></li>
--   </ul>
operationError :: OperationError

-- | <ul>
--   <li><i>Output Only</i> The array of errors encountered while
--   processing this operation.</li>
--   </ul>
oeErrors :: Lens' OperationError [OperationErrorErrorsItem]

-- | Informational warning which replaces the list of addresses when the
--   list is empty.
--   
--   <i>See:</i> <a>targetInstancesScopedListWarning</a> smart constructor.
data TargetInstancesScopedListWarning

-- | Creates a value of <a>TargetInstancesScopedListWarning</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tislwData</a></li>
--   <li><a>tislwCode</a></li>
--   <li><a>tislwMessage</a></li>
--   </ul>
targetInstancesScopedListWarning :: TargetInstancesScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
tislwData :: Lens' TargetInstancesScopedListWarning [TargetInstancesScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
tislwCode :: Lens' TargetInstancesScopedListWarning (Maybe TargetInstancesScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
tislwMessage :: Lens' TargetInstancesScopedListWarning (Maybe Text)
data SubnetworkAggregatedList

-- | Creates a value of <a>SubnetworkAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>salNextPageToken</a></li>
--   <li><a>salKind</a></li>
--   <li><a>salItems</a></li>
--   <li><a>salSelfLink</a></li>
--   <li><a>salId</a></li>
--   </ul>
subnetworkAggregatedList :: SubnetworkAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
salNextPageToken :: Lens' SubnetworkAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#subnetworkAggregatedList for aggregated lists of
--   subnetworks.</li>
--   </ul>
salKind :: Lens' SubnetworkAggregatedList Text

-- | <ul>
--   <li><i>Output</i> A map of scoped Subnetwork lists.</li>
--   </ul>
salItems :: Lens' SubnetworkAggregatedList (Maybe SubnetworkAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
salSelfLink :: Lens' SubnetworkAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
salId :: Lens' SubnetworkAggregatedList (Maybe Text)
data DisksResizeRequest

-- | Creates a value of <a>DisksResizeRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drrSizeGb</a></li>
--   </ul>
disksResizeRequest :: DisksResizeRequest

-- | The new size of the persistent disk, which is specified in GB.
drrSizeGb :: Lens' DisksResizeRequest (Maybe Int64)
data AutoscalersScopedListWarningDataItem

-- | Creates a value of <a>AutoscalersScopedListWarningDataItem</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aValue</a></li>
--   <li><a>aKey</a></li>
--   </ul>
autoscalersScopedListWarningDataItem :: AutoscalersScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
aValue :: Lens' AutoscalersScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
aKey :: Lens' AutoscalersScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data AutoscalersScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
ACleanupFailed :: AutoscalersScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
ADeprecatedResourceUsed :: AutoscalersScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
ADiskSizeLargerThanImageSize :: AutoscalersScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
AFieldValueOverriden :: AutoscalersScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
AInjectedKernelsDeprecated :: AutoscalersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
ANextHopAddressNotAssigned :: AutoscalersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
ANextHopCannotIPForward :: AutoscalersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
ANextHopInstanceNotFound :: AutoscalersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
ANextHopInstanceNotOnNetwork :: AutoscalersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
ANextHopNotRunning :: AutoscalersScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
ANotCriticalError :: AutoscalersScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
ANoResultsOnPage :: AutoscalersScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
ARequiredTosAgreement :: AutoscalersScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
AResourceNotDeleted :: AutoscalersScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
ASingleInstancePropertyTemplate :: AutoscalersScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
AUnreachable :: AutoscalersScopedListWarningCode

-- | This signifies what the ForwardingRule will be used for and can only
--   take the following values: INTERNAL EXTERNAL The value of INTERNAL
--   means that this will be used for Internal Network Load Balancing (TCP,
--   UDP). The value of EXTERNAL means that this will be used for External
--   Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
data ForwardingRuleLoadBalancingScheme

-- | <pre>
--   EXTERNAL
--   </pre>
FRLBSExternal :: ForwardingRuleLoadBalancingScheme

-- | <pre>
--   INTERNAL
--   </pre>
FRLBSInternal :: ForwardingRuleLoadBalancingScheme

-- | <pre>
--   INVALID
--   </pre>
FRLBSInvalid :: ForwardingRuleLoadBalancingScheme
data RegionInstanceGroupManagersSetTemplateRequest

-- | Creates a value of
--   <a>RegionInstanceGroupManagersSetTemplateRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmstrInstanceTemplate</a></li>
--   </ul>
regionInstanceGroupManagersSetTemplateRequest :: RegionInstanceGroupManagersSetTemplateRequest

-- | URL of the InstanceTemplate resource from which all new instances will
--   be created.
rigmstrInstanceTemplate :: Lens' RegionInstanceGroupManagersSetTemplateRequest (Maybe Text)
data InstanceGroupsListInstances

-- | Creates a value of <a>InstanceGroupsListInstances</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igliNextPageToken</a></li>
--   <li><a>igliKind</a></li>
--   <li><a>igliItems</a></li>
--   <li><a>igliSelfLink</a></li>
--   <li><a>igliId</a></li>
--   </ul>
instanceGroupsListInstances :: InstanceGroupsListInstances

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
igliNextPageToken :: Lens' InstanceGroupsListInstances (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The resource type, which is always
--   compute#instanceGroupsListInstances for the list of instances in the
--   specified instance group.</li>
--   </ul>
igliKind :: Lens' InstanceGroupsListInstances Text

-- | <ul>
--   <li><i>Output Only</i> A list of instances and any named ports that
--   are assigned to those instances.</li>
--   </ul>
igliItems :: Lens' InstanceGroupsListInstances [InstanceWithNamedPorts]

-- | <ul>
--   <li><i>Output Only</i> The URL for this list of instances in the
--   specified instance groups. The server generates this URL.</li>
--   </ul>
igliSelfLink :: Lens' InstanceGroupsListInstances (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A unique identifier for this list of instances
--   in the specified instance group. The server generates this
--   identifier.</li>
--   </ul>
igliId :: Lens' InstanceGroupsListInstances (Maybe Text)

-- | Represents an Autoscaler resource. Autoscalers allow you to
--   automatically scale virtual machine instances in managed instance
--   groups according to an autoscaling policy that you define. For more
--   information, read Autoscaling Groups of Instances.
--   
--   <i>See:</i> <a>autoscaler</a> smart constructor.
data Autoscaler

-- | Creates a value of <a>Autoscaler</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aaKind</a></li>
--   <li><a>aaZone</a></li>
--   <li><a>aaSelfLink</a></li>
--   <li><a>aaName</a></li>
--   <li><a>aaCreationTimestamp</a></li>
--   <li><a>aaAutoscalingPolicy</a></li>
--   <li><a>aaId</a></li>
--   <li><a>aaRegion</a></li>
--   <li><a>aaDescription</a></li>
--   <li><a>aaTarget</a></li>
--   </ul>
autoscaler :: Autoscaler

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#autoscaler
--   for autoscalers.</li>
--   </ul>
aaKind :: Lens' Autoscaler Text

-- | <ul>
--   <li><i>Output Only</i> URL of the zone where the instance group
--   resides (for autoscalers living in zonal scope).</li>
--   </ul>
aaZone :: Lens' Autoscaler (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
aaSelfLink :: Lens' Autoscaler (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
aaName :: Lens' Autoscaler (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
aaCreationTimestamp :: Lens' Autoscaler (Maybe Text)

-- | The configuration parameters for the autoscaling algorithm. You can
--   define one or more of the policies for an autoscaler: cpuUtilization,
--   customMetricUtilizations, and loadBalancingUtilization. If none of
--   these are specified, the default will be to autoscale based on
--   cpuUtilization to 0.6 or 60%.
aaAutoscalingPolicy :: Lens' Autoscaler (Maybe AutoscalingPolicy)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
aaId :: Lens' Autoscaler (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> URL of the region where the instance group
--   resides (for autoscalers living in regional scope).</li>
--   </ul>
aaRegion :: Lens' Autoscaler (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
aaDescription :: Lens' Autoscaler (Maybe Text)

-- | URL of the managed instance group that this autoscaler will scale.
aaTarget :: Lens' Autoscaler (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of disks when the list is empty.</li>
--   </ul>
--   
--   <i>See:</i> <a>disksScopedListWarning</a> smart constructor.
data DisksScopedListWarning

-- | Creates a value of <a>DisksScopedListWarning</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dslwData</a></li>
--   <li><a>dslwCode</a></li>
--   <li><a>dslwMessage</a></li>
--   </ul>
disksScopedListWarning :: DisksScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
dslwData :: Lens' DisksScopedListWarning [DisksScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
dslwCode :: Lens' DisksScopedListWarning (Maybe DisksScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
dslwMessage :: Lens' DisksScopedListWarning (Maybe Text)

-- | A map of scoped target vpn gateway lists.
--   
--   <i>See:</i> <a>targetVPNGatewayAggregatedListItems</a> smart
--   constructor.
data TargetVPNGatewayAggregatedListItems

-- | Creates a value of <a>TargetVPNGatewayAggregatedListItems</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tvgaliAddtional</a></li>
--   </ul>
targetVPNGatewayAggregatedListItems :: HashMap Text TargetVPNGatewaysScopedList -> TargetVPNGatewayAggregatedListItems

-- | <ul>
--   <li><i>Output Only</i> Name of the scope containing this set of target
--   VPN gateways.</li>
--   </ul>
tvgaliAddtional :: Lens' TargetVPNGatewayAggregatedListItems (HashMap Text TargetVPNGatewaysScopedList)

-- | Status of the BGP peer: {UP, DOWN}
data RouterStatusBGPPeerStatusStatus

-- | <pre>
--   DOWN
--   </pre>
RSBPSSDown :: RouterStatusBGPPeerStatusStatus

-- | <pre>
--   UNKNOWN
--   </pre>
RSBPSSUnknown :: RouterStatusBGPPeerStatusStatus

-- | <pre>
--   UP
--   </pre>
RSBPSSUP :: RouterStatusBGPPeerStatusStatus

-- | Informational warning which replaces the list of addresses when the
--   list is empty.
--   
--   <i>See:</i> <a>targetPoolsScopedListWarning</a> smart constructor.
data TargetPoolsScopedListWarning

-- | Creates a value of <a>TargetPoolsScopedListWarning</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpslwData</a></li>
--   <li><a>tpslwCode</a></li>
--   <li><a>tpslwMessage</a></li>
--   </ul>
targetPoolsScopedListWarning :: TargetPoolsScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
tpslwData :: Lens' TargetPoolsScopedListWarning [TargetPoolsScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
tpslwCode :: Lens' TargetPoolsScopedListWarning (Maybe TargetPoolsScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
tpslwMessage :: Lens' TargetPoolsScopedListWarning (Maybe Text)
data HealthStatus

-- | Creates a value of <a>HealthStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hsIPAddress</a></li>
--   <li><a>hsHealthState</a></li>
--   <li><a>hsPort</a></li>
--   <li><a>hsInstance</a></li>
--   </ul>
healthStatus :: HealthStatus

-- | The IP address represented by this resource.
hsIPAddress :: Lens' HealthStatus (Maybe Text)

-- | Health state of the instance.
hsHealthState :: Lens' HealthStatus (Maybe HealthStatusHealthState)

-- | The port on the instance.
hsPort :: Lens' HealthStatus (Maybe Int32)

-- | URL of the instance resource.
hsInstance :: Lens' HealthStatus (Maybe Text)

-- | Region resource.
--   
--   <i>See:</i> <a>region</a> smart constructor.
data Region

-- | Creates a value of <a>Region</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>regeStatus</a></li>
--   <li><a>regeZones</a></li>
--   <li><a>regeKind</a></li>
--   <li><a>regeSelfLink</a></li>
--   <li><a>regeName</a></li>
--   <li><a>regeCreationTimestamp</a></li>
--   <li><a>regeQuotas</a></li>
--   <li><a>regeId</a></li>
--   <li><a>regeDescription</a></li>
--   <li><a>regeDeprecated</a></li>
--   </ul>
region :: Region

-- | <ul>
--   <li><i>Output Only</i> Status of the region, either UP or DOWN.</li>
--   </ul>
regeStatus :: Lens' Region (Maybe RegionStatus)

-- | <ul>
--   <li><i>Output Only</i> A list of zones available in this region, in
--   the form of resource URLs.</li>
--   </ul>
regeZones :: Lens' Region [Text]

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#region for
--   regions.</li>
--   </ul>
regeKind :: Lens' Region Text

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
regeSelfLink :: Lens' Region (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Name of the resource.</li>
--   </ul>
regeName :: Lens' Region (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
regeCreationTimestamp :: Lens' Region (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Quotas assigned to this region.</li>
--   </ul>
regeQuotas :: Lens' Region [Quota]

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
regeId :: Lens' Region (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> Textual description of the resource.</li>
--   </ul>
regeDescription :: Lens' Region (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The deprecation status associated with this
--   region.</li>
--   </ul>
regeDeprecated :: Lens' Region (Maybe DeprecationStatus)

-- | Guest OS features.
--   
--   <i>See:</i> <a>guestOSFeature</a> smart constructor.
data GuestOSFeature

-- | Creates a value of <a>GuestOSFeature</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gofType</a></li>
--   </ul>
guestOSFeature :: GuestOSFeature

-- | The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is
--   supported. For newer Windows images, the server might also populate
--   this property with the value WINDOWS to indicate that this is a
--   Windows image. This value is purely informational and does not enable
--   or disable any features.
gofType :: Lens' GuestOSFeature (Maybe GuestOSFeatureType)
data VPNTunnel

-- | Creates a value of <a>VPNTunnel</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vtDetailedStatus</a></li>
--   <li><a>vtStatus</a></li>
--   <li><a>vtLocalTrafficSelector</a></li>
--   <li><a>vtKind</a></li>
--   <li><a>vtPeerIP</a></li>
--   <li><a>vtRouter</a></li>
--   <li><a>vtTargetVPNGateway</a></li>
--   <li><a>vtRemoteTrafficSelector</a></li>
--   <li><a>vtSelfLink</a></li>
--   <li><a>vtSharedSecret</a></li>
--   <li><a>vtName</a></li>
--   <li><a>vtCreationTimestamp</a></li>
--   <li><a>vtSharedSecretHash</a></li>
--   <li><a>vtId</a></li>
--   <li><a>vtIkeVersion</a></li>
--   <li><a>vtRegion</a></li>
--   <li><a>vtDescription</a></li>
--   </ul>
vpnTunnel :: VPNTunnel

-- | <ul>
--   <li><i>Output Only</i> Detailed status message for the VPN
--   tunnel.</li>
--   </ul>
vtDetailedStatus :: Lens' VPNTunnel (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The status of the VPN tunnel.</li>
--   </ul>
vtStatus :: Lens' VPNTunnel (Maybe VPNTunnelStatus)

-- | Local traffic selector to use when establishing the VPN tunnel with
--   peer VPN gateway. The value should be a CIDR formatted string, for
--   example: 192.168.0.0/16. The ranges should be disjoint. Only IPv4 is
--   supported.
vtLocalTrafficSelector :: Lens' VPNTunnel [Text]

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#vpnTunnel for
--   VPN tunnels.</li>
--   </ul>
vtKind :: Lens' VPNTunnel Text

-- | IP address of the peer VPN gateway. Only IPv4 is supported.
vtPeerIP :: Lens' VPNTunnel (Maybe Text)

-- | URL of router resource to be used for dynamic routing.
vtRouter :: Lens' VPNTunnel (Maybe Text)

-- | URL of the VPN gateway with which this VPN tunnel is associated.
--   Provided by the client when the VPN tunnel is created.
vtTargetVPNGateway :: Lens' VPNTunnel (Maybe Text)

-- | Remote traffic selectors to use when establishing the VPN tunnel with
--   peer VPN gateway. The value should be a CIDR formatted string, for
--   example: 192.168.0.0/16. The ranges should be disjoint. Only IPv4 is
--   supported.
vtRemoteTrafficSelector :: Lens' VPNTunnel [Text]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
vtSelfLink :: Lens' VPNTunnel (Maybe Text)

-- | Shared secret used to set the secure session between the Cloud VPN
--   gateway and the peer VPN gateway.
vtSharedSecret :: Lens' VPNTunnel (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
vtName :: Lens' VPNTunnel (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
vtCreationTimestamp :: Lens' VPNTunnel (Maybe Text)

-- | Hash of the shared secret.
vtSharedSecretHash :: Lens' VPNTunnel (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
vtId :: Lens' VPNTunnel (Maybe Word64)

-- | IKE protocol version to use when establishing the VPN tunnel with peer
--   VPN gateway. Acceptable IKE versions are 1 or 2. Default version is 2.
vtIkeVersion :: Lens' VPNTunnel (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> URL of the region where the VPN tunnel
--   resides.</li>
--   </ul>
vtRegion :: Lens' VPNTunnel (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
vtDescription :: Lens' VPNTunnel (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data VPNTunnelsScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
VTSLWCCleanupFailed :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
VTSLWCDeprecatedResourceUsed :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
VTSLWCDiskSizeLargerThanImageSize :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
VTSLWCFieldValueOverriden :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
VTSLWCInjectedKernelsDeprecated :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
VTSLWCNextHopAddressNotAssigned :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
VTSLWCNextHopCannotIPForward :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
VTSLWCNextHopInstanceNotFound :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
VTSLWCNextHopInstanceNotOnNetwork :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
VTSLWCNextHopNotRunning :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
VTSLWCNotCriticalError :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
VTSLWCNoResultsOnPage :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
VTSLWCRequiredTosAgreement :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
VTSLWCResourceNotDeleted :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
VTSLWCSingleInstancePropertyTemplate :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
VTSLWCUnreachable :: VPNTunnelsScopedListWarningCode

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of operations when the list is empty.</li>
--   </ul>
--   
--   <i>See:</i> <a>operationsScopedListWarning</a> smart constructor.
data OperationsScopedListWarning

-- | Creates a value of <a>OperationsScopedListWarning</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oslwData</a></li>
--   <li><a>oslwCode</a></li>
--   <li><a>oslwMessage</a></li>
--   </ul>
operationsScopedListWarning :: OperationsScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
oslwData :: Lens' OperationsScopedListWarning [OperationsScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
oslwCode :: Lens' OperationsScopedListWarning (Maybe OperationsScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
oslwMessage :: Lens' OperationsScopedListWarning (Maybe Text)

-- | Sets the scheduling options for an Instance.
--   
--   <i>See:</i> <a>scheduling</a> smart constructor.
data Scheduling

-- | Creates a value of <a>Scheduling</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sAutomaticRestart</a></li>
--   <li><a>sOnHostMaintenance</a></li>
--   <li><a>sPreemptible</a></li>
--   </ul>
scheduling :: Scheduling

-- | Specifies whether the instance should be automatically restarted if it
--   is terminated by Compute Engine (not terminated by a user). You can
--   only set the automatic restart option for standard instances.
--   Preemptible instances cannot be automatically restarted.
sAutomaticRestart :: Lens' Scheduling (Maybe Bool)

-- | Defines the maintenance behavior for this instance. For standard
--   instances, the default behavior is MIGRATE. For preemptible instances,
--   the default and only possible behavior is TERMINATE. For more
--   information, see Setting Instance Scheduling Options.
sOnHostMaintenance :: Lens' Scheduling (Maybe SchedulingOnHostMaintenance)

-- | Whether the instance is preemptible.
sPreemptible :: Lens' Scheduling (Maybe Bool)
data VPNTunnelsScopedListWarningDataItem

-- | Creates a value of <a>VPNTunnelsScopedListWarningDataItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vtslwdiValue</a></li>
--   <li><a>vtslwdiKey</a></li>
--   </ul>
vpnTunnelsScopedListWarningDataItem :: VPNTunnelsScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
vtslwdiValue :: Lens' VPNTunnelsScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
vtslwdiKey :: Lens' VPNTunnelsScopedListWarningDataItem (Maybe Text)

-- | Contains a list of Subnetwork resources.
--   
--   <i>See:</i> <a>subnetworkList</a> smart constructor.
data SubnetworkList

-- | Creates a value of <a>SubnetworkList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>slNextPageToken</a></li>
--   <li><a>slKind</a></li>
--   <li><a>slItems</a></li>
--   <li><a>slSelfLink</a></li>
--   <li><a>slId</a></li>
--   </ul>
subnetworkList :: SubnetworkList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
slNextPageToken :: Lens' SubnetworkList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#subnetworkList
--   for lists of subnetworks.</li>
--   </ul>
slKind :: Lens' SubnetworkList Text

-- | The Subnetwork resources.
slItems :: Lens' SubnetworkList [Subnetwork]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
slSelfLink :: Lens' SubnetworkList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
slId :: Lens' SubnetworkList (Maybe Text)

-- | Informational warning which replaces the list of forwarding rules when
--   the list is empty.
--   
--   <i>See:</i> <a>forwardingRulesScopedListWarning</a> smart constructor.
data ForwardingRulesScopedListWarning

-- | Creates a value of <a>ForwardingRulesScopedListWarning</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>frslwData</a></li>
--   <li><a>frslwCode</a></li>
--   <li><a>frslwMessage</a></li>
--   </ul>
forwardingRulesScopedListWarning :: ForwardingRulesScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
frslwData :: Lens' ForwardingRulesScopedListWarning [ForwardingRulesScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
frslwCode :: Lens' ForwardingRulesScopedListWarning (Maybe ForwardingRulesScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
frslwMessage :: Lens' ForwardingRulesScopedListWarning (Maybe Text)

-- | Contains a list of HttpHealthCheck resources.
--   
--   <i>See:</i> <a>hTTPHealthCheckList</a> smart constructor.
data HTTPHealthCheckList

-- | Creates a value of <a>HTTPHealthCheckList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>httphclNextPageToken</a></li>
--   <li><a>httphclKind</a></li>
--   <li><a>httphclItems</a></li>
--   <li><a>httphclSelfLink</a></li>
--   <li><a>httphclId</a></li>
--   </ul>
hTTPHealthCheckList :: HTTPHealthCheckList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
httphclNextPageToken :: Lens' HTTPHealthCheckList (Maybe Text)

-- | Type of resource.
httphclKind :: Lens' HTTPHealthCheckList Text

-- | A list of HttpHealthCheck resources.
httphclItems :: Lens' HTTPHealthCheckList [HTTPHealthCheck]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
httphclSelfLink :: Lens' HTTPHealthCheckList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource. Defined by
--   the server.</li>
--   </ul>
httphclId :: Lens' HTTPHealthCheckList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The warning that replaces the list of managed
--   instance groups when the list is empty.</li>
--   </ul>
--   
--   <i>See:</i> <a>instanceGroupManagersScopedListWarning</a> smart
--   constructor.
data InstanceGroupManagersScopedListWarning

-- | Creates a value of <a>InstanceGroupManagersScopedListWarning</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmslwData</a></li>
--   <li><a>igmslwCode</a></li>
--   <li><a>igmslwMessage</a></li>
--   </ul>
instanceGroupManagersScopedListWarning :: InstanceGroupManagersScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
igmslwData :: Lens' InstanceGroupManagersScopedListWarning [InstanceGroupManagersScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
igmslwCode :: Lens' InstanceGroupManagersScopedListWarning (Maybe InstanceGroupManagersScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
igmslwMessage :: Lens' InstanceGroupManagersScopedListWarning (Maybe Text)
data URLMapsValidateRequest

-- | Creates a value of <a>URLMapsValidateRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umvrResource</a></li>
--   </ul>
urlMapsValidateRequest :: URLMapsValidateRequest

-- | Content of the UrlMap to be validated.
umvrResource :: Lens' URLMapsValidateRequest (Maybe URLMap)
data InstanceGroupManagersSetTargetPoolsRequest

-- | Creates a value of <a>InstanceGroupManagersSetTargetPoolsRequest</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmstprFingerprint</a></li>
--   <li><a>igmstprTargetPools</a></li>
--   </ul>
instanceGroupManagersSetTargetPoolsRequest :: InstanceGroupManagersSetTargetPoolsRequest

-- | The fingerprint of the target pools information. Use this optional
--   property to prevent conflicts when multiple users change the target
--   pools settings concurrently. Obtain the fingerprint with the
--   instanceGroupManagers.get method. Then, include the fingerprint in
--   your request to ensure that you do not overwrite changes that were
--   applied from another concurrent request.
igmstprFingerprint :: Lens' InstanceGroupManagersSetTargetPoolsRequest (Maybe ByteString)

-- | The list of target pool URLs that instances in this managed instance
--   group belong to. The managed instance group applies these target pools
--   to all of the instances in the group. Existing instances and new
--   instances in the group all receive these target pool settings.
igmstprTargetPools :: Lens' InstanceGroupManagersSetTargetPoolsRequest [Text]

-- | Contains a list of HttpsHealthCheck resources.
--   
--   <i>See:</i> <a>httpsHealthCheckList</a> smart constructor.
data HTTPSHealthCheckList

-- | Creates a value of <a>HTTPSHealthCheckList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hhclNextPageToken</a></li>
--   <li><a>hhclKind</a></li>
--   <li><a>hhclItems</a></li>
--   <li><a>hhclSelfLink</a></li>
--   <li><a>hhclId</a></li>
--   </ul>
httpsHealthCheckList :: HTTPSHealthCheckList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
hhclNextPageToken :: Lens' HTTPSHealthCheckList (Maybe Text)

-- | Type of resource.
hhclKind :: Lens' HTTPSHealthCheckList Text

-- | A list of HttpsHealthCheck resources.
hhclItems :: Lens' HTTPSHealthCheckList [HTTPSHealthCheck]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
hhclSelfLink :: Lens' HTTPSHealthCheckList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource; defined by
--   the server.</li>
--   </ul>
hhclId :: Lens' HTTPSHealthCheckList (Maybe Text)
data OperationErrorErrorsItem

-- | Creates a value of <a>OperationErrorErrorsItem</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oeeiLocation</a></li>
--   <li><a>oeeiCode</a></li>
--   <li><a>oeeiMessage</a></li>
--   </ul>
operationErrorErrorsItem :: OperationErrorErrorsItem

-- | <ul>
--   <li><i>Output Only</i> Indicates the field in the request that caused
--   the error. This property is optional.</li>
--   </ul>
oeeiLocation :: Lens' OperationErrorErrorsItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The error type identifier for this error.</li>
--   </ul>
oeeiCode :: Lens' OperationErrorErrorsItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> An optional, human-readable error message.</li>
--   </ul>
oeeiMessage :: Lens' OperationErrorErrorsItem (Maybe Text)

-- | A license resource.
--   
--   <i>See:</i> <a>license</a> smart constructor.
data License

-- | Creates a value of <a>License</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lChargesUseFee</a></li>
--   <li><a>lKind</a></li>
--   <li><a>lSelfLink</a></li>
--   <li><a>lName</a></li>
--   </ul>
license :: License

-- | <ul>
--   <li><i>Output Only</i> If true, the customer will be charged license
--   fee for running software that contains this license on an
--   instance.</li>
--   </ul>
lChargesUseFee :: Lens' License (Maybe Bool)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#license for
--   licenses.</li>
--   </ul>
lKind :: Lens' License Text

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
lSelfLink :: Lens' License (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Name of the resource. The name is 1-63
--   characters long and complies with RFC1035.</li>
--   </ul>
lName :: Lens' License (Maybe Text)

-- | A path-matching rule for a URL. If matched, will use the specified
--   BackendService to handle the traffic arriving at this URL.
--   
--   <i>See:</i> <a>pathRule</a> smart constructor.
data PathRule

-- | Creates a value of <a>PathRule</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>prService</a></li>
--   <li><a>prPaths</a></li>
--   </ul>
pathRule :: PathRule

-- | The URL of the BackendService resource if this rule is matched.
prService :: Lens' PathRule (Maybe Text)

-- | The list of path patterns to match. Each must start with / and the
--   only place a * is allowed is at the end following a /. The string fed
--   to the path matcher does not include any text after the first ? or #,
--   and those chars are not allowed here.
prPaths :: Lens' PathRule [Text]

-- | Contains a list of instances.
--   
--   <i>See:</i> <a>instanceList</a> smart constructor.
data InstanceList

-- | Creates a value of <a>InstanceList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>insNextPageToken</a></li>
--   <li><a>insKind</a></li>
--   <li><a>insItems</a></li>
--   <li><a>insSelfLink</a></li>
--   <li><a>insId</a></li>
--   </ul>
instanceList :: InstanceList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
insNextPageToken :: Lens' InstanceList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#instanceList
--   for lists of Instance resources.</li>
--   </ul>
insKind :: Lens' InstanceList Text

-- | <ul>
--   <li><i>Output Only</i> A list of instances.</li>
--   </ul>
insItems :: Lens' InstanceList [Instance]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
insSelfLink :: Lens' InstanceList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
insId :: Lens' InstanceList (Maybe Text)

-- | <ul>
--   <li><i>Output</i> A map of scoped Subnetwork lists.</li>
--   </ul>
--   
--   <i>See:</i> <a>subnetworkAggregatedListItems</a> smart constructor.
data SubnetworkAggregatedListItems

-- | Creates a value of <a>SubnetworkAggregatedListItems</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>saliAddtional</a></li>
--   </ul>
subnetworkAggregatedListItems :: HashMap Text SubnetworksScopedList -> SubnetworkAggregatedListItems

-- | Name of the scope containing this set of Subnetworks.
saliAddtional :: Lens' SubnetworkAggregatedListItems (HashMap Text SubnetworksScopedList)
data ManagedInstanceLastAttempt

-- | Creates a value of <a>ManagedInstanceLastAttempt</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>milaErrors</a></li>
--   </ul>
managedInstanceLastAttempt :: ManagedInstanceLastAttempt

-- | <ul>
--   <li><i>Output Only</i> Encountered errors during the last attempt to
--   create or delete the instance.</li>
--   </ul>
milaErrors :: Lens' ManagedInstanceLastAttempt (Maybe ManagedInstanceLastAttemptErrors)

-- | Contains a list of BackendService resources.
--   
--   <i>See:</i> <a>backendServiceList</a> smart constructor.
data BackendServiceList

-- | Creates a value of <a>BackendServiceList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bslNextPageToken</a></li>
--   <li><a>bslKind</a></li>
--   <li><a>bslItems</a></li>
--   <li><a>bslSelfLink</a></li>
--   <li><a>bslId</a></li>
--   </ul>
backendServiceList :: BackendServiceList

-- | <ul>
--   <li><i>Output Only</i> A token used to continue a truncated list
--   request.</li>
--   </ul>
bslNextPageToken :: Lens' BackendServiceList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#backendServiceList for lists of backend services.</li>
--   </ul>
bslKind :: Lens' BackendServiceList Text

-- | A list of BackendService resources.
bslItems :: Lens' BackendServiceList [BackendService]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
bslSelfLink :: Lens' BackendServiceList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource; defined by
--   the server.</li>
--   </ul>
bslId :: Lens' BackendServiceList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> An informational warning that replaces the list
--   of instance groups when the list is empty.</li>
--   </ul>
--   
--   <i>See:</i> <a>instanceGroupsScopedListWarning</a> smart constructor.
data InstanceGroupsScopedListWarning

-- | Creates a value of <a>InstanceGroupsScopedListWarning</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igslwData</a></li>
--   <li><a>igslwCode</a></li>
--   <li><a>igslwMessage</a></li>
--   </ul>
instanceGroupsScopedListWarning :: InstanceGroupsScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
igslwData :: Lens' InstanceGroupsScopedListWarning [InstanceGroupsScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
igslwCode :: Lens' InstanceGroupsScopedListWarning (Maybe InstanceGroupsScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
igslwMessage :: Lens' InstanceGroupsScopedListWarning (Maybe Text)

-- | CPU utilization policy.
--   
--   <i>See:</i> <a>autoscalingPolicyCPUUtilization</a> smart constructor.
data AutoscalingPolicyCPUUtilization

-- | Creates a value of <a>AutoscalingPolicyCPUUtilization</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>apcuUtilizationTarget</a></li>
--   </ul>
autoscalingPolicyCPUUtilization :: AutoscalingPolicyCPUUtilization

-- | The target CPU utilization that the autoscaler should maintain. Must
--   be a float value in the range (0, 1]. If not specified, the default is
--   0.6. If the CPU level is below the target utilization, the autoscaler
--   scales down the number of instances until it reaches the minimum
--   number of instances you specified or until the average CPU of your
--   instances reaches the target utilization. If the average CPU is above
--   the target utilization, the autoscaler scales up until it reaches the
--   maximum number of instances you specified or until the average
--   utilization reaches the target utilization.
apcuUtilizationTarget :: Lens' AutoscalingPolicyCPUUtilization (Maybe Double)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data InstanceGroupsScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
IGSLWCCleanupFailed :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
IGSLWCDeprecatedResourceUsed :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
IGSLWCDiskSizeLargerThanImageSize :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
IGSLWCFieldValueOverriden :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
IGSLWCInjectedKernelsDeprecated :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
IGSLWCNextHopAddressNotAssigned :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
IGSLWCNextHopCannotIPForward :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
IGSLWCNextHopInstanceNotFound :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
IGSLWCNextHopInstanceNotOnNetwork :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
IGSLWCNextHopNotRunning :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
IGSLWCNotCriticalError :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
IGSLWCNoResultsOnPage :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
IGSLWCRequiredTosAgreement :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
IGSLWCResourceNotDeleted :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
IGSLWCSingleInstancePropertyTemplate :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
IGSLWCUnreachable :: InstanceGroupsScopedListWarningCode
data InstanceGroupsScopedListWarningDataItem

-- | Creates a value of <a>InstanceGroupsScopedListWarningDataItem</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igslwdiValue</a></li>
--   <li><a>igslwdiKey</a></li>
--   </ul>
instanceGroupsScopedListWarningDataItem :: InstanceGroupsScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
igslwdiValue :: Lens' InstanceGroupsScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
igslwdiKey :: Lens' InstanceGroupsScopedListWarningDataItem (Maybe Text)
data ResourceGroupReference

-- | Creates a value of <a>ResourceGroupReference</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rgrGroup</a></li>
--   </ul>
resourceGroupReference :: ResourceGroupReference

-- | A URI referencing one of the instance groups listed in the backend
--   service.
rgrGroup :: Lens' ResourceGroupReference (Maybe Text)

-- | Represents a Firewall resource.
--   
--   <i>See:</i> <a>firewall</a> smart constructor.
data Firewall

-- | Creates a value of <a>Firewall</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fSourceTags</a></li>
--   <li><a>fKind</a></li>
--   <li><a>fTargetTags</a></li>
--   <li><a>fNetwork</a></li>
--   <li><a>fSourceRanges</a></li>
--   <li><a>fSelfLink</a></li>
--   <li><a>fName</a></li>
--   <li><a>fCreationTimestamp</a></li>
--   <li><a>fId</a></li>
--   <li><a>fAllowed</a></li>
--   <li><a>fDescription</a></li>
--   </ul>
firewall :: Firewall

-- | If source tags are specified, the firewall will apply only to traffic
--   with source IP that belongs to a tag listed in source tags. Source
--   tags cannot be used to control traffic to an instance's external IP
--   address. Because tags are associated with an instance, not an IP
--   address. One or both of sourceRanges and sourceTags may be set. If
--   both properties are set, the firewall will apply to traffic that has
--   source IP address within sourceRanges OR the source IP that belongs to
--   a tag listed in the sourceTags property. The connection does not need
--   to match both properties for the firewall to apply.
fSourceTags :: Lens' Firewall [Text]

-- | <ul>
--   <li><i>Output Ony</i> Type of the resource. Always compute#firewall
--   for firewall rules.</li>
--   </ul>
fKind :: Lens' Firewall Text

-- | A list of instance tags indicating sets of instances located in the
--   network that may make network connections as specified in allowed[].
--   If no targetTags are specified, the firewall rule applies to all
--   instances on the specified network.
fTargetTags :: Lens' Firewall [Text]

-- | URL of the network resource for this firewall rule. If not specified
--   when creating a firewall rule, the default network is used:
--   global/networks/default If you choose to specify this property, you
--   can specify the network as a full or partial URL. For example, the
--   following are all valid URLs: -
--   https://www.googleapis.com/compute/v1/projects/myproject/global/networks/my-network
--   - projects/myproject/global/networks/my-network -
--   global/networks/default
fNetwork :: Lens' Firewall (Maybe Text)

-- | If source ranges are specified, the firewall will apply only to
--   traffic that has source IP address in these ranges. These ranges must
--   be expressed in CIDR format. One or both of sourceRanges and
--   sourceTags may be set. If both properties are set, the firewall will
--   apply to traffic that has source IP address within sourceRanges OR the
--   source IP that belongs to a tag listed in the sourceTags property. The
--   connection does not need to match both properties for the firewall to
--   apply. Only IPv4 is supported.
fSourceRanges :: Lens' Firewall [Text]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
fSelfLink :: Lens' Firewall (Maybe Text)

-- | Name of the resource; provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
fName :: Lens' Firewall (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
fCreationTimestamp :: Lens' Firewall (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
fId :: Lens' Firewall (Maybe Word64)

-- | The list of ALLOW rules specified by this firewall. Each rule
--   specifies a protocol and port-range tuple that describes a permitted
--   connection.
fAllowed :: Lens' Firewall [FirewallAllowedItem]

-- | An optional description of this resource. Provide this property when
--   you create the resource.
fDescription :: Lens' Firewall (Maybe Text)

-- | UrlMaps A host-matching rule for a URL. If matched, will use the named
--   PathMatcher to select the BackendService.
--   
--   <i>See:</i> <a>hostRule</a> smart constructor.
data HostRule

-- | Creates a value of <a>HostRule</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hrHosts</a></li>
--   <li><a>hrDescription</a></li>
--   <li><a>hrPathMatcher</a></li>
--   </ul>
hostRule :: HostRule

-- | The list of host patterns to match. They must be valid hostnames,
--   except * will match any string of ([a-z0-9-.]*). In that case, * must
--   be the first character and must be followed in the pattern by either -
--   or ..
hrHosts :: Lens' HostRule [Text]

-- | An optional description of this resource. Provide this property when
--   you create the resource.
hrDescription :: Lens' HostRule (Maybe Text)

-- | The name of the PathMatcher to use to match the path portion of the
--   URL if the hostRule matches the URL's host portion.
hrPathMatcher :: Lens' HostRule (Maybe Text)

-- | A quotas entry.
--   
--   <i>See:</i> <a>quota</a> smart constructor.
data Quota

-- | Creates a value of <a>Quota</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>qMetric</a></li>
--   <li><a>qLimit</a></li>
--   <li><a>qUsage</a></li>
--   </ul>
quota :: Quota

-- | <ul>
--   <li><i>Output Only</i> Name of the quota metric.</li>
--   </ul>
qMetric :: Lens' Quota (Maybe QuotaMetric)

-- | <ul>
--   <li><i>Output Only</i> Quota limit for this metric.</li>
--   </ul>
qLimit :: Lens' Quota (Maybe Double)

-- | <ul>
--   <li><i>Output Only</i> Current usage of this metric.</li>
--   </ul>
qUsage :: Lens' Quota (Maybe Double)
data InstanceGroup

-- | Creates a value of <a>InstanceGroup</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iiSize</a></li>
--   <li><a>iiKind</a></li>
--   <li><a>iiFingerprint</a></li>
--   <li><a>iiNetwork</a></li>
--   <li><a>iiZone</a></li>
--   <li><a>iiSelfLink</a></li>
--   <li><a>iiName</a></li>
--   <li><a>iiCreationTimestamp</a></li>
--   <li><a>iiSubnetwork</a></li>
--   <li><a>iiId</a></li>
--   <li><a>iiRegion</a></li>
--   <li><a>iiDescription</a></li>
--   <li><a>iiNamedPorts</a></li>
--   </ul>
instanceGroup :: InstanceGroup

-- | <ul>
--   <li><i>Output Only</i> The total number of instances in the instance
--   group.</li>
--   </ul>
iiSize :: Lens' InstanceGroup (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The resource type, which is always
--   compute#instanceGroup for instance groups.</li>
--   </ul>
iiKind :: Lens' InstanceGroup Text

-- | <ul>
--   <li><i>Output Only</i> The fingerprint of the named ports. The system
--   uses this fingerprint to detect conflicts when multiple users change
--   the named ports concurrently.</li>
--   </ul>
iiFingerprint :: Lens' InstanceGroup (Maybe ByteString)

-- | The URL of the network to which all instances in the instance group
--   belong.
iiNetwork :: Lens' InstanceGroup (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The URL of the zone where the instance group is
--   located (for zonal resources).</li>
--   </ul>
iiZone :: Lens' InstanceGroup (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The URL for this instance group. The server
--   generates this URL.</li>
--   </ul>
iiSelfLink :: Lens' InstanceGroup (Maybe Text)

-- | The name of the instance group. The name must be 1-63 characters long,
--   and comply with RFC1035.
iiName :: Lens' InstanceGroup (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The creation timestamp for this instance group
--   in RFC3339 text format.</li>
--   </ul>
iiCreationTimestamp :: Lens' InstanceGroup (Maybe Text)

-- | The URL of the subnetwork to which all instances in the instance group
--   belong.
iiSubnetwork :: Lens' InstanceGroup (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A unique identifier for this instance group,
--   generated by the server.</li>
--   </ul>
iiId :: Lens' InstanceGroup (Maybe Word64)

-- | The URL of the region where the instance group is located (for
--   regional resources).
iiRegion :: Lens' InstanceGroup (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
iiDescription :: Lens' InstanceGroup (Maybe Text)

-- | Assigns a name to a port number. For example: {name: "http", port: 80}
--   This allows the system to reference ports by the assigned name instead
--   of a port number. Named ports can also contain multiple ports. For
--   example: [{name: "http", port: 80},{name: "http", port: 8080}] Named
--   ports apply to all instances in this instance group.
iiNamedPorts :: Lens' InstanceGroup [NamedPort]
data RouterInterface

-- | Creates a value of <a>RouterInterface</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>riName</a></li>
--   <li><a>riIPRange</a></li>
--   <li><a>riLinkedVPNTunnel</a></li>
--   </ul>
routerInterface :: RouterInterface

-- | Name of this interface entry. The name must be 1-63 characters long
--   and comply with RFC1035.
riName :: Lens' RouterInterface (Maybe Text)

-- | IP address and range of the interface. The IP range must be in the
--   RFC3927 link-local IP space. The value must be a CIDR-formatted
--   string, for example: 169.254.0.1/30. NOTE: Do not truncate the address
--   as it represents the IP address of the interface.
riIPRange :: Lens' RouterInterface (Maybe Text)

-- | URI of linked VPN tunnel. It must be in the same region as the router.
--   Each interface can have at most one linked resource.
riLinkedVPNTunnel :: Lens' RouterInterface (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The status of the instance.</li>
--   </ul>
data InstanceWithNamedPortsStatus

-- | <pre>
--   PROVISIONING
--   </pre>
IWNPSProvisioning :: InstanceWithNamedPortsStatus

-- | <pre>
--   RUNNING
--   </pre>
IWNPSRunning :: InstanceWithNamedPortsStatus

-- | <pre>
--   STAGING
--   </pre>
IWNPSStaging :: InstanceWithNamedPortsStatus

-- | <pre>
--   STOPPED
--   </pre>
IWNPSStopped :: InstanceWithNamedPortsStatus

-- | <pre>
--   STOPPING
--   </pre>
IWNPSStopping :: InstanceWithNamedPortsStatus

-- | <pre>
--   SUSPENDED
--   </pre>
IWNPSSuspended :: InstanceWithNamedPortsStatus

-- | <pre>
--   SUSPENDING
--   </pre>
IWNPSSuspending :: InstanceWithNamedPortsStatus

-- | <pre>
--   TERMINATED
--   </pre>
IWNPSTerminated :: InstanceWithNamedPortsStatus

-- | Specifies the type of proxy header to append before sending data to
--   the backend, either NONE or PROXY_V1. The default is NONE.
data TCPHealthCheckProxyHeader

-- | <pre>
--   NONE
--   </pre>
THCPHNone :: TCPHealthCheckProxyHeader

-- | <pre>
--   PROXY_V1
--   </pre>
THCPHProxyV1 :: TCPHealthCheckProxyHeader

-- | Contains a list of Snapshot resources.
--   
--   <i>See:</i> <a>snapshotList</a> smart constructor.
data SnapshotList

-- | Creates a value of <a>SnapshotList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>snaNextPageToken</a></li>
--   <li><a>snaKind</a></li>
--   <li><a>snaItems</a></li>
--   <li><a>snaSelfLink</a></li>
--   <li><a>snaId</a></li>
--   </ul>
snapshotList :: SnapshotList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
snaNextPageToken :: Lens' SnapshotList (Maybe Text)

-- | Type of resource.
snaKind :: Lens' SnapshotList Text

-- | <ul>
--   <li><i>Output Only</i> A list of Snapshot resources.</li>
--   </ul>
snaItems :: Lens' SnapshotList [Snapshot]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
snaSelfLink :: Lens' SnapshotList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
snaId :: Lens' SnapshotList (Maybe Text)
data TestFailure

-- | Creates a value of <a>TestFailure</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tfPath</a></li>
--   <li><a>tfExpectedService</a></li>
--   <li><a>tfHost</a></li>
--   <li><a>tfActualService</a></li>
--   </ul>
testFailure :: TestFailure
tfPath :: Lens' TestFailure (Maybe Text)
tfExpectedService :: Lens' TestFailure (Maybe Text)
tfHost :: Lens' TestFailure (Maybe Text)
tfActualService :: Lens' TestFailure (Maybe Text)

-- | An instance's serial console output.
--   
--   <i>See:</i> <a>serialPortOutput</a> smart constructor.
data SerialPortOutput

-- | Creates a value of <a>SerialPortOutput</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>spoNext</a></li>
--   <li><a>spoContents</a></li>
--   <li><a>spoKind</a></li>
--   <li><a>spoStart</a></li>
--   <li><a>spoSelfLink</a></li>
--   </ul>
serialPortOutput :: SerialPortOutput

-- | <ul>
--   <li><i>Output Only</i> The position of the next byte of content from
--   the serial console output. Use this value in the next request as the
--   start parameter.</li>
--   </ul>
spoNext :: Lens' SerialPortOutput (Maybe Int64)

-- | <ul>
--   <li><i>Output Only</i> The contents of the console output.</li>
--   </ul>
spoContents :: Lens' SerialPortOutput (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always
--   compute#serialPortOutput for serial port output.</li>
--   </ul>
spoKind :: Lens' SerialPortOutput Text

-- | <ul>
--   <li><i>Output Only</i> The starting byte position of the output that
--   was returned. This should match the start parameter sent with the
--   request. If the serial console output exceeds the size of the buffer,
--   older output will be overwritten by newer content and the start values
--   will be mismatched.</li>
--   </ul>
spoStart :: Lens' SerialPortOutput (Maybe Int64)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
spoSelfLink :: Lens' SerialPortOutput (Maybe Text)
data TargetVPNGatewayAggregatedList

-- | Creates a value of <a>TargetVPNGatewayAggregatedList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tvgalNextPageToken</a></li>
--   <li><a>tvgalKind</a></li>
--   <li><a>tvgalItems</a></li>
--   <li><a>tvgalSelfLink</a></li>
--   <li><a>tvgalId</a></li>
--   </ul>
targetVPNGatewayAggregatedList :: TargetVPNGatewayAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
tvgalNextPageToken :: Lens' TargetVPNGatewayAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#targetVpnGateway for target VPN gateways.</li>
--   </ul>
tvgalKind :: Lens' TargetVPNGatewayAggregatedList Text

-- | A map of scoped target vpn gateway lists.
tvgalItems :: Lens' TargetVPNGatewayAggregatedList (Maybe TargetVPNGatewayAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
tvgalSelfLink :: Lens' TargetVPNGatewayAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
tvgalId :: Lens' TargetVPNGatewayAggregatedList (Maybe Text)
data MetadataItemsItem

-- | Creates a value of <a>MetadataItemsItem</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>miiValue</a></li>
--   <li><a>miiKey</a></li>
--   </ul>
metadataItemsItem :: MetadataItemsItem

-- | Value for the metadata entry. These are free-form strings, and only
--   have meaning as interpreted by the image running in the instance. The
--   only restriction placed on values is that their size must be less than
--   or equal to 32768 bytes.
miiValue :: Lens' MetadataItemsItem (Maybe Text)

-- | Key for the metadata entry. Keys must conform to the following regexp:
--   [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is
--   reflected as part of a URL in the metadata server. Additionally, to
--   avoid ambiguity, keys must not conflict with any other metadata keys
--   for the project.
miiKey :: Lens' MetadataItemsItem (Maybe Text)

-- | A TargetHttpsProxy resource. This resource defines an HTTPS proxy.
--   
--   <i>See:</i> <a>targetHTTPSProxy</a> smart constructor.
data TargetHTTPSProxy

-- | Creates a value of <a>TargetHTTPSProxy</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>thpURLMap</a></li>
--   <li><a>thpSSLCertificates</a></li>
--   <li><a>thpKind</a></li>
--   <li><a>thpSelfLink</a></li>
--   <li><a>thpName</a></li>
--   <li><a>thpCreationTimestamp</a></li>
--   <li><a>thpId</a></li>
--   <li><a>thpDescription</a></li>
--   </ul>
targetHTTPSProxy :: TargetHTTPSProxy

-- | A fully-qualified or valid partial URL to the UrlMap resource that
--   defines the mapping from URL to the BackendService. For example, the
--   following are all valid URLs for specifying a URL map: -
--   https://www.googleapis.compute/v1/projects/project/global/urlMaps/url-map
--   - projects/project/global/urlMaps/url-map - global/urlMaps/url-map
thpURLMap :: Lens' TargetHTTPSProxy (Maybe Text)

-- | URLs to SslCertificate resources that are used to authenticate
--   connections between users and the load balancer. Currently, exactly
--   one SSL certificate must be specified.
thpSSLCertificates :: Lens' TargetHTTPSProxy [Text]

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#targetHttpsProxy for target HTTPS proxies.</li>
--   </ul>
thpKind :: Lens' TargetHTTPSProxy Text

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
thpSelfLink :: Lens' TargetHTTPSProxy (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
thpName :: Lens' TargetHTTPSProxy (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
thpCreationTimestamp :: Lens' TargetHTTPSProxy (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
thpId :: Lens' TargetHTTPSProxy (Maybe Word64)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
thpDescription :: Lens' TargetHTTPSProxy (Maybe Text)

-- | Message containing connection draining configuration.
--   
--   <i>See:</i> <a>connectionDraining</a> smart constructor.
data ConnectionDraining

-- | Creates a value of <a>ConnectionDraining</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cdDrainingTimeoutSec</a></li>
--   </ul>
connectionDraining :: ConnectionDraining

-- | Time for which instance will be drained (not accept new connections,
--   but still work to finish started).
cdDrainingTimeoutSec :: Lens' ConnectionDraining (Maybe Int32)
data CacheInvalidationRule

-- | Creates a value of <a>CacheInvalidationRule</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cirPath</a></li>
--   <li><a>cirHost</a></li>
--   </ul>
cacheInvalidationRule :: CacheInvalidationRule
cirPath :: Lens' CacheInvalidationRule (Maybe Text)

-- | If set, this invalidation rule will only apply to requests with a Host
--   header matching host.
cirHost :: Lens' CacheInvalidationRule (Maybe Text)
data TargetVPNGatewaysScopedList

-- | Creates a value of <a>TargetVPNGatewaysScopedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tvgslTargetVPNGateways</a></li>
--   <li><a>tvgslWarning</a></li>
--   </ul>
targetVPNGatewaysScopedList :: TargetVPNGatewaysScopedList

-- | <ul>
--   <li><i>Output Only</i> List of target vpn gateways contained in this
--   scope.</li>
--   </ul>
tvgslTargetVPNGateways :: Lens' TargetVPNGatewaysScopedList [TargetVPNGateway]

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of addresses when the list is empty.</li>
--   </ul>
tvgslWarning :: Lens' TargetVPNGatewaysScopedList (Maybe TargetVPNGatewaysScopedListWarning)

-- | An access configuration attached to an instance's network interface.
--   Only one access config per instance is supported.
--   
--   <i>See:</i> <a>accessConfig</a> smart constructor.
data AccessConfig

-- | Creates a value of <a>AccessConfig</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acKind</a></li>
--   <li><a>acName</a></li>
--   <li><a>acNATIP</a></li>
--   <li><a>acType</a></li>
--   </ul>
accessConfig :: AccessConfig

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always
--   compute#accessConfig for access configs.</li>
--   </ul>
acKind :: Lens' AccessConfig Text

-- | Name of this access configuration.
acName :: Lens' AccessConfig (Maybe Text)

-- | An external IP address associated with this instance. Specify an
--   unused static external IP address available to the project or leave
--   this field undefined to use an IP from a shared ephemeral IP address
--   pool. If you specify a static external IP address, it must live in the
--   same region as the zone of the instance.
acNATIP :: Lens' AccessConfig (Maybe Text)

-- | The type of configuration. The default and only option is
--   ONE_TO_ONE_NAT.
acType :: Lens' AccessConfig AccessConfigType
data ManagedInstanceLastAttemptErrorsErrorsItem

-- | Creates a value of <a>ManagedInstanceLastAttemptErrorsErrorsItem</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>milaeeiLocation</a></li>
--   <li><a>milaeeiCode</a></li>
--   <li><a>milaeeiMessage</a></li>
--   </ul>
managedInstanceLastAttemptErrorsErrorsItem :: ManagedInstanceLastAttemptErrorsErrorsItem

-- | <ul>
--   <li><i>Output Only</i> Indicates the field in the request that caused
--   the error. This property is optional.</li>
--   </ul>
milaeeiLocation :: Lens' ManagedInstanceLastAttemptErrorsErrorsItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The error type identifier for this error.</li>
--   </ul>
milaeeiCode :: Lens' ManagedInstanceLastAttemptErrorsErrorsItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> An optional, human-readable error message.</li>
--   </ul>
milaeeiMessage :: Lens' ManagedInstanceLastAttemptErrorsErrorsItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data InstancesScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
ISLWCCleanupFailed :: InstancesScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
ISLWCDeprecatedResourceUsed :: InstancesScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
ISLWCDiskSizeLargerThanImageSize :: InstancesScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
ISLWCFieldValueOverriden :: InstancesScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
ISLWCInjectedKernelsDeprecated :: InstancesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
ISLWCNextHopAddressNotAssigned :: InstancesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
ISLWCNextHopCannotIPForward :: InstancesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
ISLWCNextHopInstanceNotFound :: InstancesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
ISLWCNextHopInstanceNotOnNetwork :: InstancesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
ISLWCNextHopNotRunning :: InstancesScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
ISLWCNotCriticalError :: InstancesScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
ISLWCNoResultsOnPage :: InstancesScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
ISLWCRequiredTosAgreement :: InstancesScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
ISLWCResourceNotDeleted :: InstancesScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
ISLWCSingleInstancePropertyTemplate :: InstancesScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
ISLWCUnreachable :: InstancesScopedListWarningCode
data InstancesScopedListWarningDataItem

-- | Creates a value of <a>InstancesScopedListWarningDataItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>islwdiValue</a></li>
--   <li><a>islwdiKey</a></li>
--   </ul>
instancesScopedListWarningDataItem :: InstancesScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
islwdiValue :: Lens' InstancesScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
islwdiKey :: Lens' InstancesScopedListWarningDataItem (Maybe Text)
data BackendServicesScopedListWarningDataItem

-- | Creates a value of <a>BackendServicesScopedListWarningDataItem</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bsslwdiValue</a></li>
--   <li><a>bsslwdiKey</a></li>
--   </ul>
backendServicesScopedListWarningDataItem :: BackendServicesScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
bsslwdiValue :: Lens' BackendServicesScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
bsslwdiKey :: Lens' BackendServicesScopedListWarningDataItem (Maybe Text)

-- | A BackendService resource. This resource defines a group of backend
--   virtual machines and their serving capacity.
--   
--   <i>See:</i> <a>backendService</a> smart constructor.
data BackendService

-- | Creates a value of <a>BackendService</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bsSessionAffinity</a></li>
--   <li><a>bsBackends</a></li>
--   <li><a>bsAffinityCookieTtlSec</a></li>
--   <li><a>bsLoadBalancingScheme</a></li>
--   <li><a>bsKind</a></li>
--   <li><a>bsEnableCDN</a></li>
--   <li><a>bsFingerprint</a></li>
--   <li><a>bsProtocol</a></li>
--   <li><a>bsSelfLink</a></li>
--   <li><a>bsName</a></li>
--   <li><a>bsCreationTimestamp</a></li>
--   <li><a>bsId</a></li>
--   <li><a>bsRegion</a></li>
--   <li><a>bsConnectionDraining</a></li>
--   <li><a>bsTimeoutSec</a></li>
--   <li><a>bsDescription</a></li>
--   <li><a>bsPortName</a></li>
--   <li><a>bsHealthChecks</a></li>
--   <li><a>bsPort</a></li>
--   </ul>
backendService :: BackendService

-- | Type of session affinity to use. The default is NONE. When the load
--   balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or
--   GENERATED_COOKIE. When the load balancing scheme is INTERNAL, can be
--   NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO. When the
--   protocol is UDP, this field is not used.
bsSessionAffinity :: Lens' BackendService (Maybe BackendServiceSessionAffinity)

-- | The list of backends that serve this BackendService.
bsBackends :: Lens' BackendService [Backend]

-- | Lifetime of cookies in seconds if session_affinity is
--   GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts
--   only until the end of the browser session (or equivalent). The maximum
--   allowed value for TTL is one day. When the load balancing scheme is
--   INTERNAL, this field is not used.
bsAffinityCookieTtlSec :: Lens' BackendService (Maybe Int32)
bsLoadBalancingScheme :: Lens' BackendService (Maybe BackendServiceLoadBalancingScheme)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#backendService
--   for backend services.</li>
--   </ul>
bsKind :: Lens' BackendService Text

-- | If true, enable Cloud CDN for this BackendService. When the load
--   balancing scheme is INTERNAL, this field is not used.
bsEnableCDN :: Lens' BackendService (Maybe Bool)

-- | Fingerprint of this resource. A hash of the contents stored in this
--   object. This field is used in optimistic locking. This field will be
--   ignored when inserting a BackendService. An up-to-date fingerprint
--   must be provided in order to update the BackendService.
bsFingerprint :: Lens' BackendService (Maybe ByteString)

-- | The protocol this BackendService uses to communicate with backends.
--   Possible values are HTTP, HTTPS, HTTP2, TCP and SSL. The default is
--   HTTP. For internal load balancing, the possible values are TCP and
--   UDP, and the default is TCP.
bsProtocol :: Lens' BackendService (Maybe BackendServiceProtocol)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
bsSelfLink :: Lens' BackendService (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
bsName :: Lens' BackendService (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
bsCreationTimestamp :: Lens' BackendService (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
bsId :: Lens' BackendService (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> URL of the region where the regional backend
--   service resides. This field is not applicable to global backend
--   services.</li>
--   </ul>
bsRegion :: Lens' BackendService (Maybe Text)
bsConnectionDraining :: Lens' BackendService (Maybe ConnectionDraining)

-- | How many seconds to wait for the backend before considering it a
--   failed request. Default is 30 seconds.
bsTimeoutSec :: Lens' BackendService (Maybe Int32)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
bsDescription :: Lens' BackendService (Maybe Text)

-- | Name of backend port. The same name should appear in the instance
--   groups referenced by this service. Required when the load balancing
--   scheme is EXTERNAL. When the load balancing scheme is INTERNAL, this
--   field is not used.
bsPortName :: Lens' BackendService (Maybe Text)

-- | The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource
--   for health checking this BackendService. Currently at most one health
--   check can be specified, and a health check is required. For internal
--   load balancing, a URL to a HealthCheck resource must be specified
--   instead.
bsHealthChecks :: Lens' BackendService [Text]

-- | Deprecated in favor of portName. The TCP port to connect on the
--   backend. The default value is 80. This cannot be used for internal
--   load balancing.
bsPort :: Lens' BackendService (Maybe Int32)
data InstanceMoveRequest

-- | Creates a value of <a>InstanceMoveRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>imrTargetInstance</a></li>
--   <li><a>imrDestinationZone</a></li>
--   </ul>
instanceMoveRequest :: InstanceMoveRequest

-- | The URL of the target instance to move. This can be a full or partial
--   URL. For example, the following are all valid URLs to an instance: -
--   https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance
--   - projects/project/zones/zone/instances/instance -
--   zones/zone/instances/instance
imrTargetInstance :: Lens' InstanceMoveRequest (Maybe Text)

-- | The URL of the destination zone to move the instance. This can be a
--   full or partial URL. For example, the following are all valid URLs to
--   a zone: -
--   https://www.googleapis.com/compute/v1/projects/project/zones/zone -
--   projects/project/zones/zone - zones/zone
imrDestinationZone :: Lens' InstanceMoveRequest (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data BackendServicesScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
BSSLWCCleanupFailed :: BackendServicesScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
BSSLWCDeprecatedResourceUsed :: BackendServicesScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
BSSLWCDiskSizeLargerThanImageSize :: BackendServicesScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
BSSLWCFieldValueOverriden :: BackendServicesScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
BSSLWCInjectedKernelsDeprecated :: BackendServicesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
BSSLWCNextHopAddressNotAssigned :: BackendServicesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
BSSLWCNextHopCannotIPForward :: BackendServicesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
BSSLWCNextHopInstanceNotFound :: BackendServicesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
BSSLWCNextHopInstanceNotOnNetwork :: BackendServicesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
BSSLWCNextHopNotRunning :: BackendServicesScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
BSSLWCNotCriticalError :: BackendServicesScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
BSSLWCNoResultsOnPage :: BackendServicesScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
BSSLWCRequiredTosAgreement :: BackendServicesScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
BSSLWCResourceNotDeleted :: BackendServicesScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
BSSLWCSingleInstancePropertyTemplate :: BackendServicesScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
BSSLWCUnreachable :: BackendServicesScopedListWarningCode

-- | Sesssion affinity option, must be one of the following values: NONE:
--   Connections from the same client IP may go to any instance in the
--   pool. CLIENT_IP: Connections from the same client IP will go to the
--   same instance in the pool while that instance remains healthy.
--   CLIENT_IP_PROTO: Connections from the same client IP with the same IP
--   protocol will go to the same instance in the pool while that instance
--   remains healthy.
data TargetPoolSessionAffinity

-- | <pre>
--   CLIENT_IP
--   </pre>
TPSAClientIP :: TargetPoolSessionAffinity

-- | <pre>
--   CLIENT_IP_PORT_PROTO
--   </pre>
TPSAClientIPPortProto :: TargetPoolSessionAffinity

-- | <pre>
--   CLIENT_IP_PROTO
--   </pre>
TPSAClientIPProto :: TargetPoolSessionAffinity

-- | <pre>
--   GENERATED_COOKIE
--   </pre>
TPSAGeneratedCookie :: TargetPoolSessionAffinity

-- | <pre>
--   NONE
--   </pre>
TPSANone :: TargetPoolSessionAffinity
data InstanceGroupsScopedList

-- | Creates a value of <a>InstanceGroupsScopedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igslWarning</a></li>
--   <li><a>igslInstanceGroups</a></li>
--   </ul>
instanceGroupsScopedList :: InstanceGroupsScopedList

-- | <ul>
--   <li><i>Output Only</i> An informational warning that replaces the list
--   of instance groups when the list is empty.</li>
--   </ul>
igslWarning :: Lens' InstanceGroupsScopedList (Maybe InstanceGroupsScopedListWarning)

-- | <ul>
--   <li><i>Output Only</i> The list of instance groups that are contained
--   in this scope.</li>
--   </ul>
igslInstanceGroups :: Lens' InstanceGroupsScopedList [InstanceGroup]
data InstancesStartWithEncryptionKeyRequest

-- | Creates a value of <a>InstancesStartWithEncryptionKeyRequest</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iswekrDisks</a></li>
--   </ul>
instancesStartWithEncryptionKeyRequest :: InstancesStartWithEncryptionKeyRequest

-- | Array of disks associated with this instance that are protected with a
--   customer-supplied encryption key. In order to start the instance, the
--   disk url and its corresponding key must be provided. If the disk is
--   not protected with a customer-supplied encryption key it should not be
--   specified.
iswekrDisks :: Lens' InstancesStartWithEncryptionKeyRequest [CustomerEncryptionKeyProtectedDisk]
data HTTPSHealthCheck

-- | Creates a value of <a>HTTPSHealthCheck</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hhcRequestPath</a></li>
--   <li><a>hhcHost</a></li>
--   <li><a>hhcProxyHeader</a></li>
--   <li><a>hhcPortName</a></li>
--   <li><a>hhcPort</a></li>
--   </ul>
httpsHealthCheck :: HTTPSHealthCheck

-- | The request path of the HTTPS health check request. The default value
--   is /.
hhcRequestPath :: Lens' HTTPSHealthCheck (Maybe Text)

-- | The value of the host header in the HTTPS health check request. If
--   left empty (default value), the IP on behalf of which this health
--   check is performed will be used.
hhcHost :: Lens' HTTPSHealthCheck (Maybe Text)

-- | Specifies the type of proxy header to append before sending data to
--   the backend, either NONE or PROXY_V1. The default is NONE.
hhcProxyHeader :: Lens' HTTPSHealthCheck (Maybe HTTPSHealthCheckProxyHeader)

-- | Port name as defined in InstanceGroupname. If both port and port_name
--   are defined, port takes precedence.
hhcPortName :: Lens' HTTPSHealthCheck (Maybe Text)

-- | The TCP port number for the health check request. The default value is
--   443.
hhcPort :: Lens' HTTPSHealthCheck (Maybe Int32)

-- | The format used to encode and transmit the block device, which should
--   be TAR. This is just a container and transmission format and not a
--   runtime format. Provided by the client when the disk image is created.
data ImageRawDiskContainerType

-- | <pre>
--   TAR
--   </pre>
TAR :: ImageRawDiskContainerType

-- | <ul>
--   <li><i>Output Only</i> A map of scoped vpn tunnel lists.</li>
--   </ul>
--   
--   <i>See:</i> <a>vpnTunnelAggregatedListItems</a> smart constructor.
data VPNTunnelAggregatedListItems

-- | Creates a value of <a>VPNTunnelAggregatedListItems</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vtaliAddtional</a></li>
--   </ul>
vpnTunnelAggregatedListItems :: HashMap Text VPNTunnelsScopedList -> VPNTunnelAggregatedListItems

-- | Name of the scope containing this set of vpn tunnels.
vtaliAddtional :: Lens' VPNTunnelAggregatedListItems (HashMap Text VPNTunnelsScopedList)

-- | A set of instance tags.
--   
--   <i>See:</i> <a>tags</a> smart constructor.
data Tags

-- | Creates a value of <a>Tags</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tFingerprint</a></li>
--   <li><a>tItems</a></li>
--   </ul>
tags :: Tags

-- | Specifies a fingerprint for this request, which is essentially a hash
--   of the metadata's contents and used for optimistic locking. The
--   fingerprint is initially generated by Compute Engine and changes after
--   every request to modify or update metadata. You must always provide an
--   up-to-date fingerprint hash in order to update or change metadata. To
--   see the latest fingerprint, make get() request to the instance.
tFingerprint :: Lens' Tags (Maybe ByteString)

-- | An array of tags. Each tag must be 1-63 characters long, and comply
--   with RFC1035.
tItems :: Lens' Tags [Text]
data AddressAggregatedList

-- | Creates a value of <a>AddressAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>addNextPageToken</a></li>
--   <li><a>addKind</a></li>
--   <li><a>addItems</a></li>
--   <li><a>addSelfLink</a></li>
--   <li><a>addId</a></li>
--   </ul>
addressAggregatedList :: AddressAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
addNextPageToken :: Lens' AddressAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#addressAggregatedList for aggregated lists of addresses.</li>
--   </ul>
addKind :: Lens' AddressAggregatedList Text

-- | <ul>
--   <li><i>Output Only</i> A map of scoped address lists.</li>
--   </ul>
addItems :: Lens' AddressAggregatedList (Maybe AddressAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
addSelfLink :: Lens' AddressAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource; defined by
--   the server.</li>
--   </ul>
addId :: Lens' AddressAggregatedList (Maybe Text)
data OperationWarningsItem

-- | Creates a value of <a>OperationWarningsItem</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>owiData</a></li>
--   <li><a>owiCode</a></li>
--   <li><a>owiMessage</a></li>
--   </ul>
operationWarningsItem :: OperationWarningsItem

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
owiData :: Lens' OperationWarningsItem [OperationWarningsItemDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
owiCode :: Lens' OperationWarningsItem (Maybe OperationWarningsItemCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
owiMessage :: Lens' OperationWarningsItem (Maybe Text)

-- | Message for the expected URL mappings.
--   
--   <i>See:</i> <a>urlMapTest</a> smart constructor.
data URLMapTest

-- | Creates a value of <a>URLMapTest</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umtPath</a></li>
--   <li><a>umtService</a></li>
--   <li><a>umtHost</a></li>
--   <li><a>umtDescription</a></li>
--   </ul>
urlMapTest :: URLMapTest

-- | Path portion of the URL.
umtPath :: Lens' URLMapTest (Maybe Text)

-- | Expected BackendService resource the given URL should be mapped to.
umtService :: Lens' URLMapTest (Maybe Text)

-- | Host portion of the URL.
umtHost :: Lens' URLMapTest (Maybe Text)

-- | Description of this test case.
umtDescription :: Lens' URLMapTest (Maybe Text)
data RoutersPreviewResponse

-- | Creates a value of <a>RoutersPreviewResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rprResource</a></li>
--   </ul>
routersPreviewResponse :: RoutersPreviewResponse

-- | Preview of given router.
rprResource :: Lens' RoutersPreviewResponse (Maybe Router)

-- | An Instance resource.
--   
--   <i>See:</i> <a>instance'</a> smart constructor.
data Instance

-- | Creates a value of <a>Instance</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>insnStatus</a></li>
--   <li><a>insnServiceAccounts</a></li>
--   <li><a>insnNetworkInterfaces</a></li>
--   <li><a>insnKind</a></li>
--   <li><a>insnZone</a></li>
--   <li><a>insnCPUPlatform</a></li>
--   <li><a>insnSelfLink</a></li>
--   <li><a>insnName</a></li>
--   <li><a>insnStatusMessage</a></li>
--   <li><a>insnCreationTimestamp</a></li>
--   <li><a>insnMachineType</a></li>
--   <li><a>insnMetadata</a></li>
--   <li><a>insnId</a></li>
--   <li><a>insnScheduling</a></li>
--   <li><a>insnDisks</a></li>
--   <li><a>insnCanIPForward</a></li>
--   <li><a>insnDescription</a></li>
--   <li><a>insnTags</a></li>
--   </ul>
instance' :: Instance

-- | <ul>
--   <li><i>Output Only</i> The status of the instance. One of the
--   following values: PROVISIONING, STAGING, RUNNING, STOPPING,
--   SUSPENDING, SUSPENDED, and TERMINATED.</li>
--   </ul>
insnStatus :: Lens' Instance (Maybe InstanceStatus)

-- | A list of service accounts, with their specified scopes, authorized
--   for this instance. Service accounts generate access tokens that can be
--   accessed through the metadata server and used to authenticate
--   applications on the instance. See Service Accounts for more
--   information.
insnServiceAccounts :: Lens' Instance [ServiceAccount]

-- | An array of configurations for this interface. This specifies how this
--   interface is configured to interact with other network services, such
--   as connecting to the internet. Only one interface is supported per
--   instance.
insnNetworkInterfaces :: Lens' Instance [NetworkInterface]

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#instance
--   for instances.</li>
--   </ul>
insnKind :: Lens' Instance Text

-- | <ul>
--   <li><i>Output Only</i> URL of the zone where the instance
--   resides.</li>
--   </ul>
insnZone :: Lens' Instance (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The CPU platform used by this instance.</li>
--   </ul>
insnCPUPlatform :: Lens' Instance (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
insnSelfLink :: Lens' Instance (Maybe Text)

-- | The name of the resource, provided by the client when initially
--   creating the resource. The resource name must be 1-63 characters long,
--   and comply with RFC1035. Specifically, the name must be 1-63
--   characters long and match the regular expression <a>a-z</a>? which
--   means the first character must be a lowercase letter, and all
--   following characters must be a dash, lowercase letter, or digit,
--   except the last character, which cannot be a dash.
insnName :: Lens' Instance (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> An optional, human-readable explanation of the
--   status.</li>
--   </ul>
insnStatusMessage :: Lens' Instance (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
insnCreationTimestamp :: Lens' Instance (Maybe Text)

-- | Full or partial URL of the machine type resource to use for this
--   instance, in the format: zones/zone/machineTypes/machine-type. This is
--   provided by the client when the instance is created. For example, the
--   following is a valid partial url to a predefined machine type:
--   zones/us-central1-f/machineTypes/n1-standard-1 To create a custom
--   machine type, provide a URL to a machine type in the following format,
--   where CPUS is 1 or an even number up to 32 (2, 4, 6, ... 24, etc), and
--   MEMORY is the total memory for this instance. Memory must be a
--   multiple of 256 MB and must be supplied in MB (e.g. 5 GB of memory is
--   5120 MB): zones/zone/machineTypes/custom-CPUS-MEMORY For example:
--   zones/us-central1-f/machineTypes/custom-4-5120 For a full list of
--   restrictions, read the Specifications for custom machine types.
insnMachineType :: Lens' Instance (Maybe Text)

-- | The metadata key/value pairs assigned to this instance. This includes
--   custom metadata and predefined keys.
insnMetadata :: Lens' Instance (Maybe Metadata)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
insnId :: Lens' Instance (Maybe Word64)

-- | Scheduling options for this instance.
insnScheduling :: Lens' Instance (Maybe Scheduling)

-- | Array of disks associated with this instance. Persistent disks must be
--   created before you can assign them.
insnDisks :: Lens' Instance [AttachedDisk]

-- | Allows this instance to send and receive packets with non-matching
--   destination or source IPs. This is required if you plan to use this
--   instance to forward routes. For more information, see Enabling IP
--   Forwarding.
insnCanIPForward :: Lens' Instance (Maybe Bool)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
insnDescription :: Lens' Instance (Maybe Text)

-- | A list of tags to apply to this instance. Tags are used to identify
--   valid sources or targets for network firewalls and are specified by
--   the client during instance creation. The tags can be later modified by
--   the setTags method. Each tag within the list must comply with RFC1035.
insnTags :: Lens' Instance (Maybe Tags)

-- | A matcher for the path portion of the URL. The BackendService from the
--   longest-matched rule will serve the URL. If no rule was matched, the
--   default service will be used.
--   
--   <i>See:</i> <a>pathMatcher</a> smart constructor.
data PathMatcher

-- | Creates a value of <a>PathMatcher</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pmDefaultService</a></li>
--   <li><a>pmName</a></li>
--   <li><a>pmPathRules</a></li>
--   <li><a>pmDescription</a></li>
--   </ul>
pathMatcher :: PathMatcher

-- | The full or partial URL to the BackendService resource. This will be
--   used if none of the pathRules defined by this PathMatcher is matched
--   by the URL's path portion. For example, the following are all valid
--   URLs to a BackendService resource: -
--   https://www.googleapis.com/compute/v1/projects/project/global/backendServices/backendService
--   - compute/v1/projects/project/global/backendServices/backendService -
--   global/backendServices/backendService
pmDefaultService :: Lens' PathMatcher (Maybe Text)

-- | The name to which this PathMatcher is referred by the HostRule.
pmName :: Lens' PathMatcher (Maybe Text)

-- | The list of path rules.
pmPathRules :: Lens' PathMatcher [PathRule]

-- | An optional description of this resource. Provide this property when
--   you create the resource.
pmDescription :: Lens' PathMatcher (Maybe Text)


-- | Retrieves an aggregated list of addresses.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.addresses.aggregatedList</tt>.
module Network.Google.Resource.Compute.Addresses.AggregatedList

-- | A resource alias for <tt>compute.addresses.aggregatedList</tt> method
--   which the <a>AddressesAggregatedList</a> request conforms to.
type AddressesAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("addresses" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] AddressAggregatedList))))))))))

-- | Creates a value of <a>AddressesAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aalOrderBy</a></li>
--   <li><a>aalProject</a></li>
--   <li><a>aalFilter</a></li>
--   <li><a>aalPageToken</a></li>
--   <li><a>aalMaxResults</a></li>
--   </ul>
addressesAggregatedList :: Text -> AddressesAggregatedList

-- | Retrieves an aggregated list of addresses.
--   
--   <i>See:</i> <a>addressesAggregatedList</a> smart constructor.
data AddressesAggregatedList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
aalOrderBy :: Lens' AddressesAggregatedList (Maybe Text)

-- | Project ID for this request.
aalProject :: Lens' AddressesAggregatedList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
aalFilter :: Lens' AddressesAggregatedList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
aalPageToken :: Lens' AddressesAggregatedList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
aalMaxResults :: Lens' AddressesAggregatedList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.Addresses.AggregatedList.AddressesAggregatedList
instance Data.Data.Data Network.Google.Resource.Compute.Addresses.AggregatedList.AddressesAggregatedList
instance GHC.Show.Show Network.Google.Resource.Compute.Addresses.AggregatedList.AddressesAggregatedList
instance GHC.Classes.Eq Network.Google.Resource.Compute.Addresses.AggregatedList.AddressesAggregatedList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Addresses.AggregatedList.AddressesAggregatedList


-- | Deletes the specified address resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.addresses.delete</tt>.
module Network.Google.Resource.Compute.Addresses.Delete

-- | A resource alias for <tt>compute.addresses.delete</tt> method which
--   the <a>AddressesDelete</a> request conforms to.
type AddressesDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("addresses" :> (Capture "address" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation))))))))

-- | Creates a value of <a>AddressesDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>adddProject</a></li>
--   <li><a>adddAddress</a></li>
--   <li><a>adddRegion</a></li>
--   </ul>
addressesDelete :: Text -> Text -> Text -> AddressesDelete

-- | Deletes the specified address resource.
--   
--   <i>See:</i> <a>addressesDelete</a> smart constructor.
data AddressesDelete

-- | Project ID for this request.
adddProject :: Lens' AddressesDelete Text

-- | Name of the address resource to delete.
adddAddress :: Lens' AddressesDelete Text

-- | Name of the region for this request.
adddRegion :: Lens' AddressesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Addresses.Delete.AddressesDelete
instance Data.Data.Data Network.Google.Resource.Compute.Addresses.Delete.AddressesDelete
instance GHC.Show.Show Network.Google.Resource.Compute.Addresses.Delete.AddressesDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.Addresses.Delete.AddressesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Addresses.Delete.AddressesDelete


-- | Returns the specified address resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.addresses.get</tt>.
module Network.Google.Resource.Compute.Addresses.Get

-- | A resource alias for <tt>compute.addresses.get</tt> method which the
--   <a>AddressesGet</a> request conforms to.
type AddressesGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("addresses" :> (Capture "address" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Address))))))))

-- | Creates a value of <a>AddressesGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>addProject</a></li>
--   <li><a>addAddress</a></li>
--   <li><a>addRegion</a></li>
--   </ul>
addressesGet :: Text -> Text -> Text -> AddressesGet

-- | Returns the specified address resource.
--   
--   <i>See:</i> <a>addressesGet</a> smart constructor.
data AddressesGet

-- | Project ID for this request.
addProject :: Lens' AddressesGet Text

-- | Name of the address resource to return.
addAddress :: Lens' AddressesGet Text

-- | Name of the region for this request.
addRegion :: Lens' AddressesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Addresses.Get.AddressesGet
instance Data.Data.Data Network.Google.Resource.Compute.Addresses.Get.AddressesGet
instance GHC.Show.Show Network.Google.Resource.Compute.Addresses.Get.AddressesGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.Addresses.Get.AddressesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Addresses.Get.AddressesGet


-- | Creates an address resource in the specified project using the data
--   included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.addresses.insert</tt>.
module Network.Google.Resource.Compute.Addresses.Insert

-- | A resource alias for <tt>compute.addresses.insert</tt> method which
--   the <a>AddressesInsert</a> request conforms to.
type AddressesInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("addresses" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Address :> Post '[JSON] Operation))))))))

-- | Creates a value of <a>AddressesInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aiProject</a></li>
--   <li><a>aiPayload</a></li>
--   <li><a>aiRegion</a></li>
--   </ul>
addressesInsert :: Text -> Address -> Text -> AddressesInsert

-- | Creates an address resource in the specified project using the data
--   included in the request.
--   
--   <i>See:</i> <a>addressesInsert</a> smart constructor.
data AddressesInsert

-- | Project ID for this request.
aiProject :: Lens' AddressesInsert Text

-- | Multipart request metadata.
aiPayload :: Lens' AddressesInsert Address

-- | Name of the region for this request.
aiRegion :: Lens' AddressesInsert Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Addresses.Insert.AddressesInsert
instance Data.Data.Data Network.Google.Resource.Compute.Addresses.Insert.AddressesInsert
instance GHC.Show.Show Network.Google.Resource.Compute.Addresses.Insert.AddressesInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.Addresses.Insert.AddressesInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Addresses.Insert.AddressesInsert


-- | Retrieves a list of addresses contained within the specified region.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.addresses.list</tt>.
module Network.Google.Resource.Compute.Addresses.List

-- | A resource alias for <tt>compute.addresses.list</tt> method which the
--   <a>AddressesList</a> request conforms to.
type AddressesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("addresses" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] AddressList)))))))))))

-- | Creates a value of <a>AddressesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>alOrderBy</a></li>
--   <li><a>alProject</a></li>
--   <li><a>alFilter</a></li>
--   <li><a>alRegion</a></li>
--   <li><a>alPageToken</a></li>
--   <li><a>alMaxResults</a></li>
--   </ul>
addressesList :: Text -> Text -> AddressesList

-- | Retrieves a list of addresses contained within the specified region.
--   
--   <i>See:</i> <a>addressesList</a> smart constructor.
data AddressesList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
alOrderBy :: Lens' AddressesList (Maybe Text)

-- | Project ID for this request.
alProject :: Lens' AddressesList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
alFilter :: Lens' AddressesList (Maybe Text)

-- | Name of the region for this request.
alRegion :: Lens' AddressesList Text

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
alPageToken :: Lens' AddressesList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
alMaxResults :: Lens' AddressesList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.Addresses.List.AddressesList
instance Data.Data.Data Network.Google.Resource.Compute.Addresses.List.AddressesList
instance GHC.Show.Show Network.Google.Resource.Compute.Addresses.List.AddressesList
instance GHC.Classes.Eq Network.Google.Resource.Compute.Addresses.List.AddressesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Addresses.List.AddressesList


-- | Retrieves an aggregated list of autoscalers.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.autoscalers.aggregatedList</tt>.
module Network.Google.Resource.Compute.Autoscalers.AggregatedList

-- | A resource alias for <tt>compute.autoscalers.aggregatedList</tt>
--   method which the <a>AutoscalersAggregatedList</a> request conforms to.
type AutoscalersAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("autoscalers" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] AutoscalerAggregatedList))))))))))

-- | Creates a value of <a>AutoscalersAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>autOrderBy</a></li>
--   <li><a>autProject</a></li>
--   <li><a>autFilter</a></li>
--   <li><a>autPageToken</a></li>
--   <li><a>autMaxResults</a></li>
--   </ul>
autoscalersAggregatedList :: Text -> AutoscalersAggregatedList

-- | Retrieves an aggregated list of autoscalers.
--   
--   <i>See:</i> <a>autoscalersAggregatedList</a> smart constructor.
data AutoscalersAggregatedList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
autOrderBy :: Lens' AutoscalersAggregatedList (Maybe Text)

-- | Project ID for this request.
autProject :: Lens' AutoscalersAggregatedList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
autFilter :: Lens' AutoscalersAggregatedList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
autPageToken :: Lens' AutoscalersAggregatedList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
autMaxResults :: Lens' AutoscalersAggregatedList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.Autoscalers.AggregatedList.AutoscalersAggregatedList
instance Data.Data.Data Network.Google.Resource.Compute.Autoscalers.AggregatedList.AutoscalersAggregatedList
instance GHC.Show.Show Network.Google.Resource.Compute.Autoscalers.AggregatedList.AutoscalersAggregatedList
instance GHC.Classes.Eq Network.Google.Resource.Compute.Autoscalers.AggregatedList.AutoscalersAggregatedList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Autoscalers.AggregatedList.AutoscalersAggregatedList


-- | Deletes the specified autoscaler.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.autoscalers.delete</tt>.
module Network.Google.Resource.Compute.Autoscalers.Delete

-- | A resource alias for <tt>compute.autoscalers.delete</tt> method which
--   the <a>AutoscalersDelete</a> request conforms to.
type AutoscalersDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("autoscalers" :> (Capture "autoscaler" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation))))))))

-- | Creates a value of <a>AutoscalersDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>adProject</a></li>
--   <li><a>adZone</a></li>
--   <li><a>adAutoscaler</a></li>
--   </ul>
autoscalersDelete :: Text -> Text -> Text -> AutoscalersDelete

-- | Deletes the specified autoscaler.
--   
--   <i>See:</i> <a>autoscalersDelete</a> smart constructor.
data AutoscalersDelete

-- | Project ID for this request.
adProject :: Lens' AutoscalersDelete Text

-- | Name of the zone for this request.
adZone :: Lens' AutoscalersDelete Text

-- | Name of the autoscaler to delete.
adAutoscaler :: Lens' AutoscalersDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Autoscalers.Delete.AutoscalersDelete
instance Data.Data.Data Network.Google.Resource.Compute.Autoscalers.Delete.AutoscalersDelete
instance GHC.Show.Show Network.Google.Resource.Compute.Autoscalers.Delete.AutoscalersDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.Autoscalers.Delete.AutoscalersDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Autoscalers.Delete.AutoscalersDelete


-- | Returns the specified autoscaler resource. Get a list of available
--   autoscalers by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.autoscalers.get</tt>.
module Network.Google.Resource.Compute.Autoscalers.Get

-- | A resource alias for <tt>compute.autoscalers.get</tt> method which the
--   <a>AutoscalersGet</a> request conforms to.
type AutoscalersGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("autoscalers" :> (Capture "autoscaler" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Autoscaler))))))))

-- | Creates a value of <a>AutoscalersGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>agProject</a></li>
--   <li><a>agZone</a></li>
--   <li><a>agAutoscaler</a></li>
--   </ul>
autoscalersGet :: Text -> Text -> Text -> AutoscalersGet

-- | Returns the specified autoscaler resource. Get a list of available
--   autoscalers by making a list() request.
--   
--   <i>See:</i> <a>autoscalersGet</a> smart constructor.
data AutoscalersGet

-- | Project ID for this request.
agProject :: Lens' AutoscalersGet Text

-- | Name of the zone for this request.
agZone :: Lens' AutoscalersGet Text

-- | Name of the autoscaler to return.
agAutoscaler :: Lens' AutoscalersGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Autoscalers.Get.AutoscalersGet
instance Data.Data.Data Network.Google.Resource.Compute.Autoscalers.Get.AutoscalersGet
instance GHC.Show.Show Network.Google.Resource.Compute.Autoscalers.Get.AutoscalersGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.Autoscalers.Get.AutoscalersGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Autoscalers.Get.AutoscalersGet


-- | Creates an autoscaler in the specified project using the data included
--   in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.autoscalers.insert</tt>.
module Network.Google.Resource.Compute.Autoscalers.Insert

-- | A resource alias for <tt>compute.autoscalers.insert</tt> method which
--   the <a>AutoscalersInsert</a> request conforms to.
type AutoscalersInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("autoscalers" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Autoscaler :> Post '[JSON] Operation))))))))

-- | Creates a value of <a>AutoscalersInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aiiProject</a></li>
--   <li><a>aiiZone</a></li>
--   <li><a>aiiPayload</a></li>
--   </ul>
autoscalersInsert :: Text -> Text -> Autoscaler -> AutoscalersInsert

-- | Creates an autoscaler in the specified project using the data included
--   in the request.
--   
--   <i>See:</i> <a>autoscalersInsert</a> smart constructor.
data AutoscalersInsert

-- | Project ID for this request.
aiiProject :: Lens' AutoscalersInsert Text

-- | Name of the zone for this request.
aiiZone :: Lens' AutoscalersInsert Text

-- | Multipart request metadata.
aiiPayload :: Lens' AutoscalersInsert Autoscaler
instance GHC.Generics.Generic Network.Google.Resource.Compute.Autoscalers.Insert.AutoscalersInsert
instance Data.Data.Data Network.Google.Resource.Compute.Autoscalers.Insert.AutoscalersInsert
instance GHC.Show.Show Network.Google.Resource.Compute.Autoscalers.Insert.AutoscalersInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.Autoscalers.Insert.AutoscalersInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Autoscalers.Insert.AutoscalersInsert


-- | Retrieves a list of autoscalers contained within the specified zone.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.autoscalers.list</tt>.
module Network.Google.Resource.Compute.Autoscalers.List

-- | A resource alias for <tt>compute.autoscalers.list</tt> method which
--   the <a>AutoscalersList</a> request conforms to.
type AutoscalersListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("autoscalers" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] AutoscalerList)))))))))))

-- | Creates a value of <a>AutoscalersList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aOrderBy</a></li>
--   <li><a>aProject</a></li>
--   <li><a>aZone</a></li>
--   <li><a>aFilter</a></li>
--   <li><a>aPageToken</a></li>
--   <li><a>aMaxResults</a></li>
--   </ul>
autoscalersList :: Text -> Text -> AutoscalersList

-- | Retrieves a list of autoscalers contained within the specified zone.
--   
--   <i>See:</i> <a>autoscalersList</a> smart constructor.
data AutoscalersList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
aOrderBy :: Lens' AutoscalersList (Maybe Text)

-- | Project ID for this request.
aProject :: Lens' AutoscalersList Text

-- | Name of the zone for this request.
aZone :: Lens' AutoscalersList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
aFilter :: Lens' AutoscalersList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
aPageToken :: Lens' AutoscalersList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
aMaxResults :: Lens' AutoscalersList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.Autoscalers.List.AutoscalersList
instance Data.Data.Data Network.Google.Resource.Compute.Autoscalers.List.AutoscalersList
instance GHC.Show.Show Network.Google.Resource.Compute.Autoscalers.List.AutoscalersList
instance GHC.Classes.Eq Network.Google.Resource.Compute.Autoscalers.List.AutoscalersList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Autoscalers.List.AutoscalersList


-- | Updates an autoscaler in the specified project using the data included
--   in the request. This method supports patch semantics.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.autoscalers.patch</tt>.
module Network.Google.Resource.Compute.Autoscalers.Patch

-- | A resource alias for <tt>compute.autoscalers.patch</tt> method which
--   the <a>AutoscalersPatch</a> request conforms to.
type AutoscalersPatchResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("autoscalers" :> (QueryParam "autoscaler" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Autoscaler :> Patch '[JSON] Operation)))))))))

-- | Creates a value of <a>AutoscalersPatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>apProject</a></li>
--   <li><a>apZone</a></li>
--   <li><a>apPayload</a></li>
--   <li><a>apAutoscaler</a></li>
--   </ul>
autoscalersPatch :: Text -> Text -> Autoscaler -> Text -> AutoscalersPatch

-- | Updates an autoscaler in the specified project using the data included
--   in the request. This method supports patch semantics.
--   
--   <i>See:</i> <a>autoscalersPatch</a> smart constructor.
data AutoscalersPatch

-- | Project ID for this request.
apProject :: Lens' AutoscalersPatch Text

-- | Name of the zone for this request.
apZone :: Lens' AutoscalersPatch Text

-- | Multipart request metadata.
apPayload :: Lens' AutoscalersPatch Autoscaler

-- | Name of the autoscaler to update.
apAutoscaler :: Lens' AutoscalersPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Autoscalers.Patch.AutoscalersPatch
instance Data.Data.Data Network.Google.Resource.Compute.Autoscalers.Patch.AutoscalersPatch
instance GHC.Show.Show Network.Google.Resource.Compute.Autoscalers.Patch.AutoscalersPatch
instance GHC.Classes.Eq Network.Google.Resource.Compute.Autoscalers.Patch.AutoscalersPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Autoscalers.Patch.AutoscalersPatch


-- | Updates an autoscaler in the specified project using the data included
--   in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.autoscalers.update</tt>.
module Network.Google.Resource.Compute.Autoscalers.Update

-- | A resource alias for <tt>compute.autoscalers.update</tt> method which
--   the <a>AutoscalersUpdate</a> request conforms to.
type AutoscalersUpdateResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("autoscalers" :> (QueryParam "autoscaler" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Autoscaler :> Put '[JSON] Operation)))))))))

-- | Creates a value of <a>AutoscalersUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>auProject</a></li>
--   <li><a>auZone</a></li>
--   <li><a>auPayload</a></li>
--   <li><a>auAutoscaler</a></li>
--   </ul>
autoscalersUpdate :: Text -> Text -> Autoscaler -> AutoscalersUpdate

-- | Updates an autoscaler in the specified project using the data included
--   in the request.
--   
--   <i>See:</i> <a>autoscalersUpdate</a> smart constructor.
data AutoscalersUpdate

-- | Project ID for this request.
auProject :: Lens' AutoscalersUpdate Text

-- | Name of the zone for this request.
auZone :: Lens' AutoscalersUpdate Text

-- | Multipart request metadata.
auPayload :: Lens' AutoscalersUpdate Autoscaler

-- | Name of the autoscaler to update.
auAutoscaler :: Lens' AutoscalersUpdate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Compute.Autoscalers.Update.AutoscalersUpdate
instance Data.Data.Data Network.Google.Resource.Compute.Autoscalers.Update.AutoscalersUpdate
instance GHC.Show.Show Network.Google.Resource.Compute.Autoscalers.Update.AutoscalersUpdate
instance GHC.Classes.Eq Network.Google.Resource.Compute.Autoscalers.Update.AutoscalersUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Autoscalers.Update.AutoscalersUpdate


-- | Retrieves the list of all BackendService resources, regional and
--   global, available to the specified project.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.backendServices.aggregatedList</tt>.
module Network.Google.Resource.Compute.BackendServices.AggregatedList

-- | A resource alias for <tt>compute.backendServices.aggregatedList</tt>
--   method which the <a>BackendServicesAggregatedList</a> request conforms
--   to.
type BackendServicesAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("backendServices" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] BackendServiceAggregatedList))))))))))

-- | Creates a value of <a>BackendServicesAggregatedList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bsalOrderBy</a></li>
--   <li><a>bsalProject</a></li>
--   <li><a>bsalFilter</a></li>
--   <li><a>bsalPageToken</a></li>
--   <li><a>bsalMaxResults</a></li>
--   </ul>
backendServicesAggregatedList :: Text -> BackendServicesAggregatedList

-- | Retrieves the list of all BackendService resources, regional and
--   global, available to the specified project.
--   
--   <i>See:</i> <a>backendServicesAggregatedList</a> smart constructor.
data BackendServicesAggregatedList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
bsalOrderBy :: Lens' BackendServicesAggregatedList (Maybe Text)

-- | Name of the project scoping this request.
bsalProject :: Lens' BackendServicesAggregatedList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
bsalFilter :: Lens' BackendServicesAggregatedList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
bsalPageToken :: Lens' BackendServicesAggregatedList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
bsalMaxResults :: Lens' BackendServicesAggregatedList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.BackendServices.AggregatedList.BackendServicesAggregatedList
instance Data.Data.Data Network.Google.Resource.Compute.BackendServices.AggregatedList.BackendServicesAggregatedList
instance GHC.Show.Show Network.Google.Resource.Compute.BackendServices.AggregatedList.BackendServicesAggregatedList
instance GHC.Classes.Eq Network.Google.Resource.Compute.BackendServices.AggregatedList.BackendServicesAggregatedList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.BackendServices.AggregatedList.BackendServicesAggregatedList


-- | Deletes the specified BackendService resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.backendServices.delete</tt>.
module Network.Google.Resource.Compute.BackendServices.Delete

-- | A resource alias for <tt>compute.backendServices.delete</tt> method
--   which the <a>BackendServicesDelete</a> request conforms to.
type BackendServicesDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("backendServices" :> (Capture "backendService" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation)))))))

-- | Creates a value of <a>BackendServicesDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bsdProject</a></li>
--   <li><a>bsdBackendService</a></li>
--   </ul>
backendServicesDelete :: Text -> Text -> BackendServicesDelete

-- | Deletes the specified BackendService resource.
--   
--   <i>See:</i> <a>backendServicesDelete</a> smart constructor.
data BackendServicesDelete

-- | Project ID for this request.
bsdProject :: Lens' BackendServicesDelete Text

-- | Name of the BackendService resource to delete.
bsdBackendService :: Lens' BackendServicesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.BackendServices.Delete.BackendServicesDelete
instance Data.Data.Data Network.Google.Resource.Compute.BackendServices.Delete.BackendServicesDelete
instance GHC.Show.Show Network.Google.Resource.Compute.BackendServices.Delete.BackendServicesDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.BackendServices.Delete.BackendServicesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.BackendServices.Delete.BackendServicesDelete


-- | Returns the specified BackendService resource. Get a list of available
--   backend services by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.backendServices.get</tt>.
module Network.Google.Resource.Compute.BackendServices.Get

-- | A resource alias for <tt>compute.backendServices.get</tt> method which
--   the <a>BackendServicesGet</a> request conforms to.
type BackendServicesGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("backendServices" :> (Capture "backendService" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] BackendService)))))))

-- | Creates a value of <a>BackendServicesGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bsgProject</a></li>
--   <li><a>bsgBackendService</a></li>
--   </ul>
backendServicesGet :: Text -> Text -> BackendServicesGet

-- | Returns the specified BackendService resource. Get a list of available
--   backend services by making a list() request.
--   
--   <i>See:</i> <a>backendServicesGet</a> smart constructor.
data BackendServicesGet

-- | Project ID for this request.
bsgProject :: Lens' BackendServicesGet Text

-- | Name of the BackendService resource to return.
bsgBackendService :: Lens' BackendServicesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.BackendServices.Get.BackendServicesGet
instance Data.Data.Data Network.Google.Resource.Compute.BackendServices.Get.BackendServicesGet
instance GHC.Show.Show Network.Google.Resource.Compute.BackendServices.Get.BackendServicesGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.BackendServices.Get.BackendServicesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.BackendServices.Get.BackendServicesGet


-- | Gets the most recent health check results for this BackendService.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.backendServices.getHealth</tt>.
module Network.Google.Resource.Compute.BackendServices.GetHealth

-- | A resource alias for <tt>compute.backendServices.getHealth</tt> method
--   which the <a>BackendServicesGetHealth</a> request conforms to.
type BackendServicesGetHealthResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("backendServices" :> (Capture "backendService" Text :> ("getHealth" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ResourceGroupReference :> Post '[JSON] BackendServiceGroupHealth)))))))))

-- | Creates a value of <a>BackendServicesGetHealth</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bsghProject</a></li>
--   <li><a>bsghPayload</a></li>
--   <li><a>bsghBackendService</a></li>
--   </ul>
backendServicesGetHealth :: Text -> ResourceGroupReference -> Text -> BackendServicesGetHealth

-- | Gets the most recent health check results for this BackendService.
--   
--   <i>See:</i> <a>backendServicesGetHealth</a> smart constructor.
data BackendServicesGetHealth
bsghProject :: Lens' BackendServicesGetHealth Text

-- | Multipart request metadata.
bsghPayload :: Lens' BackendServicesGetHealth ResourceGroupReference

-- | Name of the BackendService resource to which the queried instance
--   belongs.
bsghBackendService :: Lens' BackendServicesGetHealth Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.BackendServices.GetHealth.BackendServicesGetHealth
instance Data.Data.Data Network.Google.Resource.Compute.BackendServices.GetHealth.BackendServicesGetHealth
instance GHC.Show.Show Network.Google.Resource.Compute.BackendServices.GetHealth.BackendServicesGetHealth
instance GHC.Classes.Eq Network.Google.Resource.Compute.BackendServices.GetHealth.BackendServicesGetHealth
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.BackendServices.GetHealth.BackendServicesGetHealth


-- | Creates a BackendService resource in the specified project using the
--   data included in the request. There are several restrictions and
--   guidelines to keep in mind when creating a backend service. Read
--   Restrictions and Guidelines for more information.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.backendServices.insert</tt>.
module Network.Google.Resource.Compute.BackendServices.Insert

-- | A resource alias for <tt>compute.backendServices.insert</tt> method
--   which the <a>BackendServicesInsert</a> request conforms to.
type BackendServicesInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("backendServices" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] BackendService :> Post '[JSON] Operation)))))))

-- | Creates a value of <a>BackendServicesInsert</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bsiProject</a></li>
--   <li><a>bsiPayload</a></li>
--   </ul>
backendServicesInsert :: Text -> BackendService -> BackendServicesInsert

-- | Creates a BackendService resource in the specified project using the
--   data included in the request. There are several restrictions and
--   guidelines to keep in mind when creating a backend service. Read
--   Restrictions and Guidelines for more information.
--   
--   <i>See:</i> <a>backendServicesInsert</a> smart constructor.
data BackendServicesInsert

-- | Project ID for this request.
bsiProject :: Lens' BackendServicesInsert Text

-- | Multipart request metadata.
bsiPayload :: Lens' BackendServicesInsert BackendService
instance GHC.Generics.Generic Network.Google.Resource.Compute.BackendServices.Insert.BackendServicesInsert
instance Data.Data.Data Network.Google.Resource.Compute.BackendServices.Insert.BackendServicesInsert
instance GHC.Show.Show Network.Google.Resource.Compute.BackendServices.Insert.BackendServicesInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.BackendServices.Insert.BackendServicesInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.BackendServices.Insert.BackendServicesInsert


-- | Retrieves the list of BackendService resources available to the
--   specified project.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.backendServices.list</tt>.
module Network.Google.Resource.Compute.BackendServices.List

-- | A resource alias for <tt>compute.backendServices.list</tt> method
--   which the <a>BackendServicesList</a> request conforms to.
type BackendServicesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("backendServices" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] BackendServiceList))))))))))

-- | Creates a value of <a>BackendServicesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bslOrderBy</a></li>
--   <li><a>bslProject</a></li>
--   <li><a>bslFilter</a></li>
--   <li><a>bslPageToken</a></li>
--   <li><a>bslMaxResults</a></li>
--   </ul>
backendServicesList :: Text -> BackendServicesList

-- | Retrieves the list of BackendService resources available to the
--   specified project.
--   
--   <i>See:</i> <a>backendServicesList</a> smart constructor.
data BackendServicesList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
bslOrderBy :: Lens' BackendServicesList (Maybe Text)

-- | Project ID for this request.
bslProject :: Lens' BackendServicesList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
bslFilter :: Lens' BackendServicesList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
bslPageToken :: Lens' BackendServicesList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
bslMaxResults :: Lens' BackendServicesList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.BackendServices.List.BackendServicesList
instance Data.Data.Data Network.Google.Resource.Compute.BackendServices.List.BackendServicesList
instance GHC.Show.Show Network.Google.Resource.Compute.BackendServices.List.BackendServicesList
instance GHC.Classes.Eq Network.Google.Resource.Compute.BackendServices.List.BackendServicesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.BackendServices.List.BackendServicesList


-- | Updates the specified BackendService resource with the data included
--   in the request. There are several restrictions and guidelines to keep
--   in mind when updating a backend service. Read Restrictions and
--   Guidelines for more information. This method supports patch semantics.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.backendServices.patch</tt>.
module Network.Google.Resource.Compute.BackendServices.Patch

-- | A resource alias for <tt>compute.backendServices.patch</tt> method
--   which the <a>BackendServicesPatch</a> request conforms to.
type BackendServicesPatchResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("backendServices" :> (Capture "backendService" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] BackendService :> Patch '[JSON] Operation))))))))

-- | Creates a value of <a>BackendServicesPatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bspProject</a></li>
--   <li><a>bspPayload</a></li>
--   <li><a>bspBackendService</a></li>
--   </ul>
backendServicesPatch :: Text -> BackendService -> Text -> BackendServicesPatch

-- | Updates the specified BackendService resource with the data included
--   in the request. There are several restrictions and guidelines to keep
--   in mind when updating a backend service. Read Restrictions and
--   Guidelines for more information. This method supports patch semantics.
--   
--   <i>See:</i> <a>backendServicesPatch</a> smart constructor.
data BackendServicesPatch

-- | Project ID for this request.
bspProject :: Lens' BackendServicesPatch Text

-- | Multipart request metadata.
bspPayload :: Lens' BackendServicesPatch BackendService

-- | Name of the BackendService resource to update.
bspBackendService :: Lens' BackendServicesPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.BackendServices.Patch.BackendServicesPatch
instance Data.Data.Data Network.Google.Resource.Compute.BackendServices.Patch.BackendServicesPatch
instance GHC.Show.Show Network.Google.Resource.Compute.BackendServices.Patch.BackendServicesPatch
instance GHC.Classes.Eq Network.Google.Resource.Compute.BackendServices.Patch.BackendServicesPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.BackendServices.Patch.BackendServicesPatch


-- | Updates the specified BackendService resource with the data included
--   in the request. There are several restrictions and guidelines to keep
--   in mind when updating a backend service. Read Restrictions and
--   Guidelines for more information.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.backendServices.update</tt>.
module Network.Google.Resource.Compute.BackendServices.Update

-- | A resource alias for <tt>compute.backendServices.update</tt> method
--   which the <a>BackendServicesUpdate</a> request conforms to.
type BackendServicesUpdateResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("backendServices" :> (Capture "backendService" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] BackendService :> Put '[JSON] Operation))))))))

-- | Creates a value of <a>BackendServicesUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bsuProject</a></li>
--   <li><a>bsuPayload</a></li>
--   <li><a>bsuBackendService</a></li>
--   </ul>
backendServicesUpdate :: Text -> BackendService -> Text -> BackendServicesUpdate

-- | Updates the specified BackendService resource with the data included
--   in the request. There are several restrictions and guidelines to keep
--   in mind when updating a backend service. Read Restrictions and
--   Guidelines for more information.
--   
--   <i>See:</i> <a>backendServicesUpdate</a> smart constructor.
data BackendServicesUpdate

-- | Project ID for this request.
bsuProject :: Lens' BackendServicesUpdate Text

-- | Multipart request metadata.
bsuPayload :: Lens' BackendServicesUpdate BackendService

-- | Name of the BackendService resource to update.
bsuBackendService :: Lens' BackendServicesUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.BackendServices.Update.BackendServicesUpdate
instance Data.Data.Data Network.Google.Resource.Compute.BackendServices.Update.BackendServicesUpdate
instance GHC.Show.Show Network.Google.Resource.Compute.BackendServices.Update.BackendServicesUpdate
instance GHC.Classes.Eq Network.Google.Resource.Compute.BackendServices.Update.BackendServicesUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.BackendServices.Update.BackendServicesUpdate


-- | Retrieves an aggregated list of disk types.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.diskTypes.aggregatedList</tt>.
module Network.Google.Resource.Compute.DiskTypes.AggregatedList

-- | A resource alias for <tt>compute.diskTypes.aggregatedList</tt> method
--   which the <a>DiskTypesAggregatedList</a> request conforms to.
type DiskTypesAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("diskTypes" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] DiskTypeAggregatedList))))))))))

-- | Creates a value of <a>DiskTypesAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtalOrderBy</a></li>
--   <li><a>dtalProject</a></li>
--   <li><a>dtalFilter</a></li>
--   <li><a>dtalPageToken</a></li>
--   <li><a>dtalMaxResults</a></li>
--   </ul>
diskTypesAggregatedList :: Text -> DiskTypesAggregatedList

-- | Retrieves an aggregated list of disk types.
--   
--   <i>See:</i> <a>diskTypesAggregatedList</a> smart constructor.
data DiskTypesAggregatedList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
dtalOrderBy :: Lens' DiskTypesAggregatedList (Maybe Text)

-- | Project ID for this request.
dtalProject :: Lens' DiskTypesAggregatedList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
dtalFilter :: Lens' DiskTypesAggregatedList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
dtalPageToken :: Lens' DiskTypesAggregatedList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
dtalMaxResults :: Lens' DiskTypesAggregatedList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.DiskTypes.AggregatedList.DiskTypesAggregatedList
instance Data.Data.Data Network.Google.Resource.Compute.DiskTypes.AggregatedList.DiskTypesAggregatedList
instance GHC.Show.Show Network.Google.Resource.Compute.DiskTypes.AggregatedList.DiskTypesAggregatedList
instance GHC.Classes.Eq Network.Google.Resource.Compute.DiskTypes.AggregatedList.DiskTypesAggregatedList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.DiskTypes.AggregatedList.DiskTypesAggregatedList


-- | Returns the specified disk type. Get a list of available disk types by
--   making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.diskTypes.get</tt>.
module Network.Google.Resource.Compute.DiskTypes.Get

-- | A resource alias for <tt>compute.diskTypes.get</tt> method which the
--   <a>DiskTypesGet</a> request conforms to.
type DiskTypesGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("diskTypes" :> (Capture "diskType" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] DiskType))))))))

-- | Creates a value of <a>DiskTypesGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtgProject</a></li>
--   <li><a>dtgZone</a></li>
--   <li><a>dtgDiskType</a></li>
--   </ul>
diskTypesGet :: Text -> Text -> Text -> DiskTypesGet

-- | Returns the specified disk type. Get a list of available disk types by
--   making a list() request.
--   
--   <i>See:</i> <a>diskTypesGet</a> smart constructor.
data DiskTypesGet

-- | Project ID for this request.
dtgProject :: Lens' DiskTypesGet Text

-- | The name of the zone for this request.
dtgZone :: Lens' DiskTypesGet Text

-- | Name of the disk type to return.
dtgDiskType :: Lens' DiskTypesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.DiskTypes.Get.DiskTypesGet
instance Data.Data.Data Network.Google.Resource.Compute.DiskTypes.Get.DiskTypesGet
instance GHC.Show.Show Network.Google.Resource.Compute.DiskTypes.Get.DiskTypesGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.DiskTypes.Get.DiskTypesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.DiskTypes.Get.DiskTypesGet


-- | Retrieves a list of disk types available to the specified project.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.diskTypes.list</tt>.
module Network.Google.Resource.Compute.DiskTypes.List

-- | A resource alias for <tt>compute.diskTypes.list</tt> method which the
--   <a>DiskTypesList</a> request conforms to.
type DiskTypesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("diskTypes" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] DiskTypeList)))))))))))

-- | Creates a value of <a>DiskTypesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtlOrderBy</a></li>
--   <li><a>dtlProject</a></li>
--   <li><a>dtlZone</a></li>
--   <li><a>dtlFilter</a></li>
--   <li><a>dtlPageToken</a></li>
--   <li><a>dtlMaxResults</a></li>
--   </ul>
diskTypesList :: Text -> Text -> DiskTypesList

-- | Retrieves a list of disk types available to the specified project.
--   
--   <i>See:</i> <a>diskTypesList</a> smart constructor.
data DiskTypesList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
dtlOrderBy :: Lens' DiskTypesList (Maybe Text)

-- | Project ID for this request.
dtlProject :: Lens' DiskTypesList Text

-- | The name of the zone for this request.
dtlZone :: Lens' DiskTypesList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
dtlFilter :: Lens' DiskTypesList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
dtlPageToken :: Lens' DiskTypesList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
dtlMaxResults :: Lens' DiskTypesList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.DiskTypes.List.DiskTypesList
instance Data.Data.Data Network.Google.Resource.Compute.DiskTypes.List.DiskTypesList
instance GHC.Show.Show Network.Google.Resource.Compute.DiskTypes.List.DiskTypesList
instance GHC.Classes.Eq Network.Google.Resource.Compute.DiskTypes.List.DiskTypesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.DiskTypes.List.DiskTypesList


-- | Retrieves an aggregated list of persistent disks.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.disks.aggregatedList</tt>.
module Network.Google.Resource.Compute.Disks.AggregatedList

-- | A resource alias for <tt>compute.disks.aggregatedList</tt> method
--   which the <a>DisksAggregatedList</a> request conforms to.
type DisksAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("disks" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] DiskAggregatedList))))))))))

-- | Creates a value of <a>DisksAggregatedList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dalOrderBy</a></li>
--   <li><a>dalProject</a></li>
--   <li><a>dalFilter</a></li>
--   <li><a>dalPageToken</a></li>
--   <li><a>dalMaxResults</a></li>
--   </ul>
disksAggregatedList :: Text -> DisksAggregatedList

-- | Retrieves an aggregated list of persistent disks.
--   
--   <i>See:</i> <a>disksAggregatedList</a> smart constructor.
data DisksAggregatedList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
dalOrderBy :: Lens' DisksAggregatedList (Maybe Text)

-- | Project ID for this request.
dalProject :: Lens' DisksAggregatedList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
dalFilter :: Lens' DisksAggregatedList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
dalPageToken :: Lens' DisksAggregatedList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
dalMaxResults :: Lens' DisksAggregatedList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.Disks.AggregatedList.DisksAggregatedList
instance Data.Data.Data Network.Google.Resource.Compute.Disks.AggregatedList.DisksAggregatedList
instance GHC.Show.Show Network.Google.Resource.Compute.Disks.AggregatedList.DisksAggregatedList
instance GHC.Classes.Eq Network.Google.Resource.Compute.Disks.AggregatedList.DisksAggregatedList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Disks.AggregatedList.DisksAggregatedList


-- | Creates a snapshot of a specified persistent disk.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.disks.createSnapshot</tt>.
module Network.Google.Resource.Compute.Disks.CreateSnapshot

-- | A resource alias for <tt>compute.disks.createSnapshot</tt> method
--   which the <a>DisksCreateSnapshot</a> request conforms to.
type DisksCreateSnapshotResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("disks" :> (Capture "disk" Text :> ("createSnapshot" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Snapshot :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>DisksCreateSnapshot</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dcsProject</a></li>
--   <li><a>dcsDisk</a></li>
--   <li><a>dcsZone</a></li>
--   <li><a>dcsPayload</a></li>
--   </ul>
disksCreateSnapshot :: Text -> Text -> Text -> Snapshot -> DisksCreateSnapshot

-- | Creates a snapshot of a specified persistent disk.
--   
--   <i>See:</i> <a>disksCreateSnapshot</a> smart constructor.
data DisksCreateSnapshot

-- | Project ID for this request.
dcsProject :: Lens' DisksCreateSnapshot Text

-- | Name of the persistent disk to snapshot.
dcsDisk :: Lens' DisksCreateSnapshot Text

-- | The name of the zone for this request.
dcsZone :: Lens' DisksCreateSnapshot Text

-- | Multipart request metadata.
dcsPayload :: Lens' DisksCreateSnapshot Snapshot
instance GHC.Generics.Generic Network.Google.Resource.Compute.Disks.CreateSnapshot.DisksCreateSnapshot
instance Data.Data.Data Network.Google.Resource.Compute.Disks.CreateSnapshot.DisksCreateSnapshot
instance GHC.Show.Show Network.Google.Resource.Compute.Disks.CreateSnapshot.DisksCreateSnapshot
instance GHC.Classes.Eq Network.Google.Resource.Compute.Disks.CreateSnapshot.DisksCreateSnapshot
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Disks.CreateSnapshot.DisksCreateSnapshot


-- | Deletes the specified persistent disk. Deleting a disk removes its
--   data permanently and is irreversible. However, deleting a disk does
--   not delete any snapshots previously made from the disk. You must
--   separately delete snapshots.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.disks.delete</tt>.
module Network.Google.Resource.Compute.Disks.Delete

-- | A resource alias for <tt>compute.disks.delete</tt> method which the
--   <a>DisksDelete</a> request conforms to.
type DisksDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("disks" :> (Capture "disk" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation))))))))

-- | Creates a value of <a>DisksDelete</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ddProject</a></li>
--   <li><a>ddDisk</a></li>
--   <li><a>ddZone</a></li>
--   </ul>
disksDelete :: Text -> Text -> Text -> DisksDelete

-- | Deletes the specified persistent disk. Deleting a disk removes its
--   data permanently and is irreversible. However, deleting a disk does
--   not delete any snapshots previously made from the disk. You must
--   separately delete snapshots.
--   
--   <i>See:</i> <a>disksDelete</a> smart constructor.
data DisksDelete

-- | Project ID for this request.
ddProject :: Lens' DisksDelete Text

-- | Name of the persistent disk to delete.
ddDisk :: Lens' DisksDelete Text

-- | The name of the zone for this request.
ddZone :: Lens' DisksDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Disks.Delete.DisksDelete
instance Data.Data.Data Network.Google.Resource.Compute.Disks.Delete.DisksDelete
instance GHC.Show.Show Network.Google.Resource.Compute.Disks.Delete.DisksDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.Disks.Delete.DisksDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Disks.Delete.DisksDelete


-- | Returns a specified persistent disk. Get a list of available
--   persistent disks by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.disks.get</tt>.
module Network.Google.Resource.Compute.Disks.Get

-- | A resource alias for <tt>compute.disks.get</tt> method which the
--   <a>DisksGet</a> request conforms to.
type DisksGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("disks" :> (Capture "disk" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Disk))))))))

-- | Creates a value of <a>DisksGet</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dgProject</a></li>
--   <li><a>dgDisk</a></li>
--   <li><a>dgZone</a></li>
--   </ul>
disksGet :: Text -> Text -> Text -> DisksGet

-- | Returns a specified persistent disk. Get a list of available
--   persistent disks by making a list() request.
--   
--   <i>See:</i> <a>disksGet</a> smart constructor.
data DisksGet

-- | Project ID for this request.
dgProject :: Lens' DisksGet Text

-- | Name of the persistent disk to return.
dgDisk :: Lens' DisksGet Text

-- | The name of the zone for this request.
dgZone :: Lens' DisksGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Disks.Get.DisksGet
instance Data.Data.Data Network.Google.Resource.Compute.Disks.Get.DisksGet
instance GHC.Show.Show Network.Google.Resource.Compute.Disks.Get.DisksGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.Disks.Get.DisksGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Disks.Get.DisksGet


-- | Creates a persistent disk in the specified project using the data in
--   the request. You can create a disk with a sourceImage, a
--   sourceSnapshot, or create an empty 500 GB data disk by omitting all
--   properties. You can also create a disk that is larger than the default
--   size by specifying the sizeGb property.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.disks.insert</tt>.
module Network.Google.Resource.Compute.Disks.Insert

-- | A resource alias for <tt>compute.disks.insert</tt> method which the
--   <a>DisksInsert</a> request conforms to.
type DisksInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("disks" :> (QueryParam "sourceImage" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Disk :> Post '[JSON] Operation)))))))))

-- | Creates a value of <a>DisksInsert</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>diSourceImage</a></li>
--   <li><a>diProject</a></li>
--   <li><a>diZone</a></li>
--   <li><a>diPayload</a></li>
--   </ul>
disksInsert :: Text -> Text -> Disk -> DisksInsert

-- | Creates a persistent disk in the specified project using the data in
--   the request. You can create a disk with a sourceImage, a
--   sourceSnapshot, or create an empty 500 GB data disk by omitting all
--   properties. You can also create a disk that is larger than the default
--   size by specifying the sizeGb property.
--   
--   <i>See:</i> <a>disksInsert</a> smart constructor.
data DisksInsert

-- | Optional. Source image to restore onto a disk.
diSourceImage :: Lens' DisksInsert (Maybe Text)

-- | Project ID for this request.
diProject :: Lens' DisksInsert Text

-- | The name of the zone for this request.
diZone :: Lens' DisksInsert Text

-- | Multipart request metadata.
diPayload :: Lens' DisksInsert Disk
instance GHC.Generics.Generic Network.Google.Resource.Compute.Disks.Insert.DisksInsert
instance Data.Data.Data Network.Google.Resource.Compute.Disks.Insert.DisksInsert
instance GHC.Show.Show Network.Google.Resource.Compute.Disks.Insert.DisksInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.Disks.Insert.DisksInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Disks.Insert.DisksInsert


-- | Retrieves a list of persistent disks contained within the specified
--   zone.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.disks.list</tt>.
module Network.Google.Resource.Compute.Disks.List

-- | A resource alias for <tt>compute.disks.list</tt> method which the
--   <a>DisksList</a> request conforms to.
type DisksListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("disks" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] DiskList)))))))))))

-- | Creates a value of <a>DisksList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dlOrderBy</a></li>
--   <li><a>dlProject</a></li>
--   <li><a>dlZone</a></li>
--   <li><a>dlFilter</a></li>
--   <li><a>dlPageToken</a></li>
--   <li><a>dlMaxResults</a></li>
--   </ul>
disksList :: Text -> Text -> DisksList

-- | Retrieves a list of persistent disks contained within the specified
--   zone.
--   
--   <i>See:</i> <a>disksList</a> smart constructor.
data DisksList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
dlOrderBy :: Lens' DisksList (Maybe Text)

-- | Project ID for this request.
dlProject :: Lens' DisksList Text

-- | The name of the zone for this request.
dlZone :: Lens' DisksList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
dlFilter :: Lens' DisksList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
dlPageToken :: Lens' DisksList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
dlMaxResults :: Lens' DisksList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.Disks.List.DisksList
instance Data.Data.Data Network.Google.Resource.Compute.Disks.List.DisksList
instance GHC.Show.Show Network.Google.Resource.Compute.Disks.List.DisksList
instance GHC.Classes.Eq Network.Google.Resource.Compute.Disks.List.DisksList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Disks.List.DisksList


-- | Resizes the specified persistent disk.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.disks.resize</tt>.
module Network.Google.Resource.Compute.Disks.Resize

-- | A resource alias for <tt>compute.disks.resize</tt> method which the
--   <a>DisksResize</a> request conforms to.
type DisksResizeResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("disks" :> (Capture "disk" Text :> ("resize" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] DisksResizeRequest :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>DisksResize</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drProject</a></li>
--   <li><a>drDisk</a></li>
--   <li><a>drZone</a></li>
--   <li><a>drPayload</a></li>
--   </ul>
disksResize :: Text -> Text -> Text -> DisksResizeRequest -> DisksResize

-- | Resizes the specified persistent disk.
--   
--   <i>See:</i> <a>disksResize</a> smart constructor.
data DisksResize

-- | Project ID for this request.
drProject :: Lens' DisksResize Text

-- | The name of the persistent disk.
drDisk :: Lens' DisksResize Text

-- | The name of the zone for this request.
drZone :: Lens' DisksResize Text

-- | Multipart request metadata.
drPayload :: Lens' DisksResize DisksResizeRequest
instance GHC.Generics.Generic Network.Google.Resource.Compute.Disks.Resize.DisksResize
instance Data.Data.Data Network.Google.Resource.Compute.Disks.Resize.DisksResize
instance GHC.Show.Show Network.Google.Resource.Compute.Disks.Resize.DisksResize
instance GHC.Classes.Eq Network.Google.Resource.Compute.Disks.Resize.DisksResize
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Disks.Resize.DisksResize


-- | Deletes the specified firewall.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.firewalls.delete</tt>.
module Network.Google.Resource.Compute.Firewalls.Delete

-- | A resource alias for <tt>compute.firewalls.delete</tt> method which
--   the <a>FirewallsDelete</a> request conforms to.
type FirewallsDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("firewalls" :> (Capture "firewall" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation)))))))

-- | Creates a value of <a>FirewallsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fdProject</a></li>
--   <li><a>fdFirewall</a></li>
--   </ul>
firewallsDelete :: Text -> Text -> FirewallsDelete

-- | Deletes the specified firewall.
--   
--   <i>See:</i> <a>firewallsDelete</a> smart constructor.
data FirewallsDelete

-- | Project ID for this request.
fdProject :: Lens' FirewallsDelete Text

-- | Name of the firewall rule to delete.
fdFirewall :: Lens' FirewallsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Firewalls.Delete.FirewallsDelete
instance Data.Data.Data Network.Google.Resource.Compute.Firewalls.Delete.FirewallsDelete
instance GHC.Show.Show Network.Google.Resource.Compute.Firewalls.Delete.FirewallsDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.Firewalls.Delete.FirewallsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Firewalls.Delete.FirewallsDelete


-- | Returns the specified firewall.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.firewalls.get</tt>.
module Network.Google.Resource.Compute.Firewalls.Get

-- | A resource alias for <tt>compute.firewalls.get</tt> method which the
--   <a>FirewallsGet</a> request conforms to.
type FirewallsGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("firewalls" :> (Capture "firewall" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Firewall)))))))

-- | Creates a value of <a>FirewallsGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fgProject</a></li>
--   <li><a>fgFirewall</a></li>
--   </ul>
firewallsGet :: Text -> Text -> FirewallsGet

-- | Returns the specified firewall.
--   
--   <i>See:</i> <a>firewallsGet</a> smart constructor.
data FirewallsGet

-- | Project ID for this request.
fgProject :: Lens' FirewallsGet Text

-- | Name of the firewall rule to return.
fgFirewall :: Lens' FirewallsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Firewalls.Get.FirewallsGet
instance Data.Data.Data Network.Google.Resource.Compute.Firewalls.Get.FirewallsGet
instance GHC.Show.Show Network.Google.Resource.Compute.Firewalls.Get.FirewallsGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.Firewalls.Get.FirewallsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Firewalls.Get.FirewallsGet


-- | Creates a firewall rule in the specified project using the data
--   included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.firewalls.insert</tt>.
module Network.Google.Resource.Compute.Firewalls.Insert

-- | A resource alias for <tt>compute.firewalls.insert</tt> method which
--   the <a>FirewallsInsert</a> request conforms to.
type FirewallsInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("firewalls" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Firewall :> Post '[JSON] Operation)))))))

-- | Creates a value of <a>FirewallsInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fiProject</a></li>
--   <li><a>fiPayload</a></li>
--   </ul>
firewallsInsert :: Text -> Firewall -> FirewallsInsert

-- | Creates a firewall rule in the specified project using the data
--   included in the request.
--   
--   <i>See:</i> <a>firewallsInsert</a> smart constructor.
data FirewallsInsert

-- | Project ID for this request.
fiProject :: Lens' FirewallsInsert Text

-- | Multipart request metadata.
fiPayload :: Lens' FirewallsInsert Firewall
instance GHC.Generics.Generic Network.Google.Resource.Compute.Firewalls.Insert.FirewallsInsert
instance Data.Data.Data Network.Google.Resource.Compute.Firewalls.Insert.FirewallsInsert
instance GHC.Show.Show Network.Google.Resource.Compute.Firewalls.Insert.FirewallsInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.Firewalls.Insert.FirewallsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Firewalls.Insert.FirewallsInsert


-- | Retrieves the list of firewall rules available to the specified
--   project.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.firewalls.list</tt>.
module Network.Google.Resource.Compute.Firewalls.List

-- | A resource alias for <tt>compute.firewalls.list</tt> method which the
--   <a>FirewallsList</a> request conforms to.
type FirewallsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("firewalls" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] FirewallList))))))))))

-- | Creates a value of <a>FirewallsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>flOrderBy</a></li>
--   <li><a>flProject</a></li>
--   <li><a>flFilter</a></li>
--   <li><a>flPageToken</a></li>
--   <li><a>flMaxResults</a></li>
--   </ul>
firewallsList :: Text -> FirewallsList

-- | Retrieves the list of firewall rules available to the specified
--   project.
--   
--   <i>See:</i> <a>firewallsList</a> smart constructor.
data FirewallsList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
flOrderBy :: Lens' FirewallsList (Maybe Text)

-- | Project ID for this request.
flProject :: Lens' FirewallsList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
flFilter :: Lens' FirewallsList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
flPageToken :: Lens' FirewallsList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
flMaxResults :: Lens' FirewallsList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.Firewalls.List.FirewallsList
instance Data.Data.Data Network.Google.Resource.Compute.Firewalls.List.FirewallsList
instance GHC.Show.Show Network.Google.Resource.Compute.Firewalls.List.FirewallsList
instance GHC.Classes.Eq Network.Google.Resource.Compute.Firewalls.List.FirewallsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Firewalls.List.FirewallsList


-- | Updates the specified firewall rule with the data included in the
--   request. This method supports patch semantics.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.firewalls.patch</tt>.
module Network.Google.Resource.Compute.Firewalls.Patch

-- | A resource alias for <tt>compute.firewalls.patch</tt> method which the
--   <a>FirewallsPatch</a> request conforms to.
type FirewallsPatchResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("firewalls" :> (Capture "firewall" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Firewall :> Patch '[JSON] Operation))))))))

-- | Creates a value of <a>FirewallsPatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fpProject</a></li>
--   <li><a>fpPayload</a></li>
--   <li><a>fpFirewall</a></li>
--   </ul>
firewallsPatch :: Text -> Firewall -> Text -> FirewallsPatch

-- | Updates the specified firewall rule with the data included in the
--   request. This method supports patch semantics.
--   
--   <i>See:</i> <a>firewallsPatch</a> smart constructor.
data FirewallsPatch

-- | Project ID for this request.
fpProject :: Lens' FirewallsPatch Text

-- | Multipart request metadata.
fpPayload :: Lens' FirewallsPatch Firewall

-- | Name of the firewall rule to update.
fpFirewall :: Lens' FirewallsPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Firewalls.Patch.FirewallsPatch
instance Data.Data.Data Network.Google.Resource.Compute.Firewalls.Patch.FirewallsPatch
instance GHC.Show.Show Network.Google.Resource.Compute.Firewalls.Patch.FirewallsPatch
instance GHC.Classes.Eq Network.Google.Resource.Compute.Firewalls.Patch.FirewallsPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Firewalls.Patch.FirewallsPatch


-- | Updates the specified firewall rule with the data included in the
--   request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.firewalls.update</tt>.
module Network.Google.Resource.Compute.Firewalls.Update

-- | A resource alias for <tt>compute.firewalls.update</tt> method which
--   the <a>FirewallsUpdate</a> request conforms to.
type FirewallsUpdateResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("firewalls" :> (Capture "firewall" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Firewall :> Put '[JSON] Operation))))))))

-- | Creates a value of <a>FirewallsUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fuProject</a></li>
--   <li><a>fuPayload</a></li>
--   <li><a>fuFirewall</a></li>
--   </ul>
firewallsUpdate :: Text -> Firewall -> Text -> FirewallsUpdate

-- | Updates the specified firewall rule with the data included in the
--   request.
--   
--   <i>See:</i> <a>firewallsUpdate</a> smart constructor.
data FirewallsUpdate

-- | Project ID for this request.
fuProject :: Lens' FirewallsUpdate Text

-- | Multipart request metadata.
fuPayload :: Lens' FirewallsUpdate Firewall

-- | Name of the firewall rule to update.
fuFirewall :: Lens' FirewallsUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Firewalls.Update.FirewallsUpdate
instance Data.Data.Data Network.Google.Resource.Compute.Firewalls.Update.FirewallsUpdate
instance GHC.Show.Show Network.Google.Resource.Compute.Firewalls.Update.FirewallsUpdate
instance GHC.Classes.Eq Network.Google.Resource.Compute.Firewalls.Update.FirewallsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Firewalls.Update.FirewallsUpdate


-- | Retrieves an aggregated list of forwarding rules.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.forwardingRules.aggregatedList</tt>.
module Network.Google.Resource.Compute.ForwardingRules.AggregatedList

-- | A resource alias for <tt>compute.forwardingRules.aggregatedList</tt>
--   method which the <a>ForwardingRulesAggregatedList</a> request conforms
--   to.
type ForwardingRulesAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("forwardingRules" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ForwardingRuleAggregatedList))))))))))

-- | Creates a value of <a>ForwardingRulesAggregatedList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fralOrderBy</a></li>
--   <li><a>fralProject</a></li>
--   <li><a>fralFilter</a></li>
--   <li><a>fralPageToken</a></li>
--   <li><a>fralMaxResults</a></li>
--   </ul>
forwardingRulesAggregatedList :: Text -> ForwardingRulesAggregatedList

-- | Retrieves an aggregated list of forwarding rules.
--   
--   <i>See:</i> <a>forwardingRulesAggregatedList</a> smart constructor.
data ForwardingRulesAggregatedList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
fralOrderBy :: Lens' ForwardingRulesAggregatedList (Maybe Text)

-- | Project ID for this request.
fralProject :: Lens' ForwardingRulesAggregatedList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
fralFilter :: Lens' ForwardingRulesAggregatedList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
fralPageToken :: Lens' ForwardingRulesAggregatedList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
fralMaxResults :: Lens' ForwardingRulesAggregatedList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.ForwardingRules.AggregatedList.ForwardingRulesAggregatedList
instance Data.Data.Data Network.Google.Resource.Compute.ForwardingRules.AggregatedList.ForwardingRulesAggregatedList
instance GHC.Show.Show Network.Google.Resource.Compute.ForwardingRules.AggregatedList.ForwardingRulesAggregatedList
instance GHC.Classes.Eq Network.Google.Resource.Compute.ForwardingRules.AggregatedList.ForwardingRulesAggregatedList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.ForwardingRules.AggregatedList.ForwardingRulesAggregatedList


-- | Deletes the specified ForwardingRule resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.forwardingRules.delete</tt>.
module Network.Google.Resource.Compute.ForwardingRules.Delete

-- | A resource alias for <tt>compute.forwardingRules.delete</tt> method
--   which the <a>ForwardingRulesDelete</a> request conforms to.
type ForwardingRulesDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("forwardingRules" :> (Capture "forwardingRule" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation))))))))

-- | Creates a value of <a>ForwardingRulesDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>frdProject</a></li>
--   <li><a>frdForwardingRule</a></li>
--   <li><a>frdRegion</a></li>
--   </ul>
forwardingRulesDelete :: Text -> Text -> Text -> ForwardingRulesDelete

-- | Deletes the specified ForwardingRule resource.
--   
--   <i>See:</i> <a>forwardingRulesDelete</a> smart constructor.
data ForwardingRulesDelete

-- | Project ID for this request.
frdProject :: Lens' ForwardingRulesDelete Text

-- | Name of the ForwardingRule resource to delete.
frdForwardingRule :: Lens' ForwardingRulesDelete Text

-- | Name of the region scoping this request.
frdRegion :: Lens' ForwardingRulesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.ForwardingRules.Delete.ForwardingRulesDelete
instance Data.Data.Data Network.Google.Resource.Compute.ForwardingRules.Delete.ForwardingRulesDelete
instance GHC.Show.Show Network.Google.Resource.Compute.ForwardingRules.Delete.ForwardingRulesDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.ForwardingRules.Delete.ForwardingRulesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.ForwardingRules.Delete.ForwardingRulesDelete


-- | Returns the specified ForwardingRule resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.forwardingRules.get</tt>.
module Network.Google.Resource.Compute.ForwardingRules.Get

-- | A resource alias for <tt>compute.forwardingRules.get</tt> method which
--   the <a>ForwardingRulesGet</a> request conforms to.
type ForwardingRulesGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("forwardingRules" :> (Capture "forwardingRule" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] ForwardingRule))))))))

-- | Creates a value of <a>ForwardingRulesGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>frgProject</a></li>
--   <li><a>frgForwardingRule</a></li>
--   <li><a>frgRegion</a></li>
--   </ul>
forwardingRulesGet :: Text -> Text -> Text -> ForwardingRulesGet

-- | Returns the specified ForwardingRule resource.
--   
--   <i>See:</i> <a>forwardingRulesGet</a> smart constructor.
data ForwardingRulesGet

-- | Project ID for this request.
frgProject :: Lens' ForwardingRulesGet Text

-- | Name of the ForwardingRule resource to return.
frgForwardingRule :: Lens' ForwardingRulesGet Text

-- | Name of the region scoping this request.
frgRegion :: Lens' ForwardingRulesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.ForwardingRules.Get.ForwardingRulesGet
instance Data.Data.Data Network.Google.Resource.Compute.ForwardingRules.Get.ForwardingRulesGet
instance GHC.Show.Show Network.Google.Resource.Compute.ForwardingRules.Get.ForwardingRulesGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.ForwardingRules.Get.ForwardingRulesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.ForwardingRules.Get.ForwardingRulesGet


-- | Creates a ForwardingRule resource in the specified project and region
--   using the data included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.forwardingRules.insert</tt>.
module Network.Google.Resource.Compute.ForwardingRules.Insert

-- | A resource alias for <tt>compute.forwardingRules.insert</tt> method
--   which the <a>ForwardingRulesInsert</a> request conforms to.
type ForwardingRulesInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("forwardingRules" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ForwardingRule :> Post '[JSON] Operation))))))))

-- | Creates a value of <a>ForwardingRulesInsert</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>friProject</a></li>
--   <li><a>friPayload</a></li>
--   <li><a>friRegion</a></li>
--   </ul>
forwardingRulesInsert :: Text -> ForwardingRule -> Text -> ForwardingRulesInsert

-- | Creates a ForwardingRule resource in the specified project and region
--   using the data included in the request.
--   
--   <i>See:</i> <a>forwardingRulesInsert</a> smart constructor.
data ForwardingRulesInsert

-- | Project ID for this request.
friProject :: Lens' ForwardingRulesInsert Text

-- | Multipart request metadata.
friPayload :: Lens' ForwardingRulesInsert ForwardingRule

-- | Name of the region scoping this request.
friRegion :: Lens' ForwardingRulesInsert Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.ForwardingRules.Insert.ForwardingRulesInsert
instance Data.Data.Data Network.Google.Resource.Compute.ForwardingRules.Insert.ForwardingRulesInsert
instance GHC.Show.Show Network.Google.Resource.Compute.ForwardingRules.Insert.ForwardingRulesInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.ForwardingRules.Insert.ForwardingRulesInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.ForwardingRules.Insert.ForwardingRulesInsert


-- | Retrieves a list of ForwardingRule resources available to the
--   specified project and region.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.forwardingRules.list</tt>.
module Network.Google.Resource.Compute.ForwardingRules.List

-- | A resource alias for <tt>compute.forwardingRules.list</tt> method
--   which the <a>ForwardingRulesList</a> request conforms to.
type ForwardingRulesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("forwardingRules" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ForwardingRuleList)))))))))))

-- | Creates a value of <a>ForwardingRulesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>frlOrderBy</a></li>
--   <li><a>frlProject</a></li>
--   <li><a>frlFilter</a></li>
--   <li><a>frlRegion</a></li>
--   <li><a>frlPageToken</a></li>
--   <li><a>frlMaxResults</a></li>
--   </ul>
forwardingRulesList :: Text -> Text -> ForwardingRulesList

-- | Retrieves a list of ForwardingRule resources available to the
--   specified project and region.
--   
--   <i>See:</i> <a>forwardingRulesList</a> smart constructor.
data ForwardingRulesList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
frlOrderBy :: Lens' ForwardingRulesList (Maybe Text)

-- | Project ID for this request.
frlProject :: Lens' ForwardingRulesList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
frlFilter :: Lens' ForwardingRulesList (Maybe Text)

-- | Name of the region scoping this request.
frlRegion :: Lens' ForwardingRulesList Text

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
frlPageToken :: Lens' ForwardingRulesList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
frlMaxResults :: Lens' ForwardingRulesList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.ForwardingRules.List.ForwardingRulesList
instance Data.Data.Data Network.Google.Resource.Compute.ForwardingRules.List.ForwardingRulesList
instance GHC.Show.Show Network.Google.Resource.Compute.ForwardingRules.List.ForwardingRulesList
instance GHC.Classes.Eq Network.Google.Resource.Compute.ForwardingRules.List.ForwardingRulesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.ForwardingRules.List.ForwardingRulesList


-- | Changes target URL for forwarding rule. The new target should be of
--   the same type as the old target.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.forwardingRules.setTarget</tt>.
module Network.Google.Resource.Compute.ForwardingRules.SetTarget

-- | A resource alias for <tt>compute.forwardingRules.setTarget</tt> method
--   which the <a>ForwardingRulesSetTarget</a> request conforms to.
type ForwardingRulesSetTargetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("forwardingRules" :> (Capture "forwardingRule" Text :> ("setTarget" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TargetReference :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>ForwardingRulesSetTarget</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>frstProject</a></li>
--   <li><a>frstForwardingRule</a></li>
--   <li><a>frstPayload</a></li>
--   <li><a>frstRegion</a></li>
--   </ul>
forwardingRulesSetTarget :: Text -> Text -> TargetReference -> Text -> ForwardingRulesSetTarget

-- | Changes target URL for forwarding rule. The new target should be of
--   the same type as the old target.
--   
--   <i>See:</i> <a>forwardingRulesSetTarget</a> smart constructor.
data ForwardingRulesSetTarget

-- | Project ID for this request.
frstProject :: Lens' ForwardingRulesSetTarget Text

-- | Name of the ForwardingRule resource in which target is to be set.
frstForwardingRule :: Lens' ForwardingRulesSetTarget Text

-- | Multipart request metadata.
frstPayload :: Lens' ForwardingRulesSetTarget TargetReference

-- | Name of the region scoping this request.
frstRegion :: Lens' ForwardingRulesSetTarget Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.ForwardingRules.SetTarget.ForwardingRulesSetTarget
instance Data.Data.Data Network.Google.Resource.Compute.ForwardingRules.SetTarget.ForwardingRulesSetTarget
instance GHC.Show.Show Network.Google.Resource.Compute.ForwardingRules.SetTarget.ForwardingRulesSetTarget
instance GHC.Classes.Eq Network.Google.Resource.Compute.ForwardingRules.SetTarget.ForwardingRulesSetTarget
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.ForwardingRules.SetTarget.ForwardingRulesSetTarget


-- | Deletes the specified address resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.globalAddresses.delete</tt>.
module Network.Google.Resource.Compute.GlobalAddresses.Delete

-- | A resource alias for <tt>compute.globalAddresses.delete</tt> method
--   which the <a>GlobalAddressesDelete</a> request conforms to.
type GlobalAddressesDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("addresses" :> (Capture "address" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation)))))))

-- | Creates a value of <a>GlobalAddressesDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gadProject</a></li>
--   <li><a>gadAddress</a></li>
--   </ul>
globalAddressesDelete :: Text -> Text -> GlobalAddressesDelete

-- | Deletes the specified address resource.
--   
--   <i>See:</i> <a>globalAddressesDelete</a> smart constructor.
data GlobalAddressesDelete

-- | Project ID for this request.
gadProject :: Lens' GlobalAddressesDelete Text

-- | Name of the address resource to delete.
gadAddress :: Lens' GlobalAddressesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.GlobalAddresses.Delete.GlobalAddressesDelete
instance Data.Data.Data Network.Google.Resource.Compute.GlobalAddresses.Delete.GlobalAddressesDelete
instance GHC.Show.Show Network.Google.Resource.Compute.GlobalAddresses.Delete.GlobalAddressesDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.GlobalAddresses.Delete.GlobalAddressesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.GlobalAddresses.Delete.GlobalAddressesDelete


-- | Returns the specified address resource. Get a list of available
--   addresses by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.globalAddresses.get</tt>.
module Network.Google.Resource.Compute.GlobalAddresses.Get

-- | A resource alias for <tt>compute.globalAddresses.get</tt> method which
--   the <a>GlobalAddressesGet</a> request conforms to.
type GlobalAddressesGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("addresses" :> (Capture "address" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Address)))))))

-- | Creates a value of <a>GlobalAddressesGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gagProject</a></li>
--   <li><a>gagAddress</a></li>
--   </ul>
globalAddressesGet :: Text -> Text -> GlobalAddressesGet

-- | Returns the specified address resource. Get a list of available
--   addresses by making a list() request.
--   
--   <i>See:</i> <a>globalAddressesGet</a> smart constructor.
data GlobalAddressesGet

-- | Project ID for this request.
gagProject :: Lens' GlobalAddressesGet Text

-- | Name of the address resource to return.
gagAddress :: Lens' GlobalAddressesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.GlobalAddresses.Get.GlobalAddressesGet
instance Data.Data.Data Network.Google.Resource.Compute.GlobalAddresses.Get.GlobalAddressesGet
instance GHC.Show.Show Network.Google.Resource.Compute.GlobalAddresses.Get.GlobalAddressesGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.GlobalAddresses.Get.GlobalAddressesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.GlobalAddresses.Get.GlobalAddressesGet


-- | Creates an address resource in the specified project using the data
--   included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.globalAddresses.insert</tt>.
module Network.Google.Resource.Compute.GlobalAddresses.Insert

-- | A resource alias for <tt>compute.globalAddresses.insert</tt> method
--   which the <a>GlobalAddressesInsert</a> request conforms to.
type GlobalAddressesInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("addresses" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Address :> Post '[JSON] Operation)))))))

-- | Creates a value of <a>GlobalAddressesInsert</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gaiProject</a></li>
--   <li><a>gaiPayload</a></li>
--   </ul>
globalAddressesInsert :: Text -> Address -> GlobalAddressesInsert

-- | Creates an address resource in the specified project using the data
--   included in the request.
--   
--   <i>See:</i> <a>globalAddressesInsert</a> smart constructor.
data GlobalAddressesInsert

-- | Project ID for this request.
gaiProject :: Lens' GlobalAddressesInsert Text

-- | Multipart request metadata.
gaiPayload :: Lens' GlobalAddressesInsert Address
instance GHC.Generics.Generic Network.Google.Resource.Compute.GlobalAddresses.Insert.GlobalAddressesInsert
instance Data.Data.Data Network.Google.Resource.Compute.GlobalAddresses.Insert.GlobalAddressesInsert
instance GHC.Show.Show Network.Google.Resource.Compute.GlobalAddresses.Insert.GlobalAddressesInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.GlobalAddresses.Insert.GlobalAddressesInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.GlobalAddresses.Insert.GlobalAddressesInsert


-- | Retrieves a list of global addresses.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.globalAddresses.list</tt>.
module Network.Google.Resource.Compute.GlobalAddresses.List

-- | A resource alias for <tt>compute.globalAddresses.list</tt> method
--   which the <a>GlobalAddressesList</a> request conforms to.
type GlobalAddressesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("addresses" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] AddressList))))))))))

-- | Creates a value of <a>GlobalAddressesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>galOrderBy</a></li>
--   <li><a>galProject</a></li>
--   <li><a>galFilter</a></li>
--   <li><a>galPageToken</a></li>
--   <li><a>galMaxResults</a></li>
--   </ul>
globalAddressesList :: Text -> GlobalAddressesList

-- | Retrieves a list of global addresses.
--   
--   <i>See:</i> <a>globalAddressesList</a> smart constructor.
data GlobalAddressesList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
galOrderBy :: Lens' GlobalAddressesList (Maybe Text)

-- | Project ID for this request.
galProject :: Lens' GlobalAddressesList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
galFilter :: Lens' GlobalAddressesList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
galPageToken :: Lens' GlobalAddressesList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
galMaxResults :: Lens' GlobalAddressesList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.GlobalAddresses.List.GlobalAddressesList
instance Data.Data.Data Network.Google.Resource.Compute.GlobalAddresses.List.GlobalAddressesList
instance GHC.Show.Show Network.Google.Resource.Compute.GlobalAddresses.List.GlobalAddressesList
instance GHC.Classes.Eq Network.Google.Resource.Compute.GlobalAddresses.List.GlobalAddressesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.GlobalAddresses.List.GlobalAddressesList


-- | Deletes the specified ForwardingRule resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.globalForwardingRules.delete</tt>.
module Network.Google.Resource.Compute.GlobalForwardingRules.Delete

-- | A resource alias for <tt>compute.globalForwardingRules.delete</tt>
--   method which the <a>GlobalForwardingRulesDelete</a> request conforms
--   to.
type GlobalForwardingRulesDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("forwardingRules" :> (Capture "forwardingRule" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation)))))))

-- | Creates a value of <a>GlobalForwardingRulesDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gfrdProject</a></li>
--   <li><a>gfrdForwardingRule</a></li>
--   </ul>
globalForwardingRulesDelete :: Text -> Text -> GlobalForwardingRulesDelete

-- | Deletes the specified ForwardingRule resource.
--   
--   <i>See:</i> <a>globalForwardingRulesDelete</a> smart constructor.
data GlobalForwardingRulesDelete

-- | Project ID for this request.
gfrdProject :: Lens' GlobalForwardingRulesDelete Text

-- | Name of the ForwardingRule resource to delete.
gfrdForwardingRule :: Lens' GlobalForwardingRulesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.GlobalForwardingRules.Delete.GlobalForwardingRulesDelete
instance Data.Data.Data Network.Google.Resource.Compute.GlobalForwardingRules.Delete.GlobalForwardingRulesDelete
instance GHC.Show.Show Network.Google.Resource.Compute.GlobalForwardingRules.Delete.GlobalForwardingRulesDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.GlobalForwardingRules.Delete.GlobalForwardingRulesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.GlobalForwardingRules.Delete.GlobalForwardingRulesDelete


-- | Returns the specified ForwardingRule resource. Get a list of available
--   forwarding rules by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.globalForwardingRules.get</tt>.
module Network.Google.Resource.Compute.GlobalForwardingRules.Get

-- | A resource alias for <tt>compute.globalForwardingRules.get</tt> method
--   which the <a>GlobalForwardingRulesGet</a> request conforms to.
type GlobalForwardingRulesGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("forwardingRules" :> (Capture "forwardingRule" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] ForwardingRule)))))))

-- | Creates a value of <a>GlobalForwardingRulesGet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gfrgProject</a></li>
--   <li><a>gfrgForwardingRule</a></li>
--   </ul>
globalForwardingRulesGet :: Text -> Text -> GlobalForwardingRulesGet

-- | Returns the specified ForwardingRule resource. Get a list of available
--   forwarding rules by making a list() request.
--   
--   <i>See:</i> <a>globalForwardingRulesGet</a> smart constructor.
data GlobalForwardingRulesGet

-- | Project ID for this request.
gfrgProject :: Lens' GlobalForwardingRulesGet Text

-- | Name of the ForwardingRule resource to return.
gfrgForwardingRule :: Lens' GlobalForwardingRulesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.GlobalForwardingRules.Get.GlobalForwardingRulesGet
instance Data.Data.Data Network.Google.Resource.Compute.GlobalForwardingRules.Get.GlobalForwardingRulesGet
instance GHC.Show.Show Network.Google.Resource.Compute.GlobalForwardingRules.Get.GlobalForwardingRulesGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.GlobalForwardingRules.Get.GlobalForwardingRulesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.GlobalForwardingRules.Get.GlobalForwardingRulesGet


-- | Creates a ForwardingRule resource in the specified project and region
--   using the data included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.globalForwardingRules.insert</tt>.
module Network.Google.Resource.Compute.GlobalForwardingRules.Insert

-- | A resource alias for <tt>compute.globalForwardingRules.insert</tt>
--   method which the <a>GlobalForwardingRulesInsert</a> request conforms
--   to.
type GlobalForwardingRulesInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("forwardingRules" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ForwardingRule :> Post '[JSON] Operation)))))))

-- | Creates a value of <a>GlobalForwardingRulesInsert</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gfriProject</a></li>
--   <li><a>gfriPayload</a></li>
--   </ul>
globalForwardingRulesInsert :: Text -> ForwardingRule -> GlobalForwardingRulesInsert

-- | Creates a ForwardingRule resource in the specified project and region
--   using the data included in the request.
--   
--   <i>See:</i> <a>globalForwardingRulesInsert</a> smart constructor.
data GlobalForwardingRulesInsert

-- | Project ID for this request.
gfriProject :: Lens' GlobalForwardingRulesInsert Text

-- | Multipart request metadata.
gfriPayload :: Lens' GlobalForwardingRulesInsert ForwardingRule
instance GHC.Generics.Generic Network.Google.Resource.Compute.GlobalForwardingRules.Insert.GlobalForwardingRulesInsert
instance Data.Data.Data Network.Google.Resource.Compute.GlobalForwardingRules.Insert.GlobalForwardingRulesInsert
instance GHC.Show.Show Network.Google.Resource.Compute.GlobalForwardingRules.Insert.GlobalForwardingRulesInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.GlobalForwardingRules.Insert.GlobalForwardingRulesInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.GlobalForwardingRules.Insert.GlobalForwardingRulesInsert


-- | Retrieves a list of ForwardingRule resources available to the
--   specified project.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.globalForwardingRules.list</tt>.
module Network.Google.Resource.Compute.GlobalForwardingRules.List

-- | A resource alias for <tt>compute.globalForwardingRules.list</tt>
--   method which the <a>GlobalForwardingRulesList</a> request conforms to.
type GlobalForwardingRulesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("forwardingRules" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ForwardingRuleList))))))))))

-- | Creates a value of <a>GlobalForwardingRulesList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gfrlOrderBy</a></li>
--   <li><a>gfrlProject</a></li>
--   <li><a>gfrlFilter</a></li>
--   <li><a>gfrlPageToken</a></li>
--   <li><a>gfrlMaxResults</a></li>
--   </ul>
globalForwardingRulesList :: Text -> GlobalForwardingRulesList

-- | Retrieves a list of ForwardingRule resources available to the
--   specified project.
--   
--   <i>See:</i> <a>globalForwardingRulesList</a> smart constructor.
data GlobalForwardingRulesList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
gfrlOrderBy :: Lens' GlobalForwardingRulesList (Maybe Text)

-- | Project ID for this request.
gfrlProject :: Lens' GlobalForwardingRulesList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
gfrlFilter :: Lens' GlobalForwardingRulesList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
gfrlPageToken :: Lens' GlobalForwardingRulesList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
gfrlMaxResults :: Lens' GlobalForwardingRulesList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.GlobalForwardingRules.List.GlobalForwardingRulesList
instance Data.Data.Data Network.Google.Resource.Compute.GlobalForwardingRules.List.GlobalForwardingRulesList
instance GHC.Show.Show Network.Google.Resource.Compute.GlobalForwardingRules.List.GlobalForwardingRulesList
instance GHC.Classes.Eq Network.Google.Resource.Compute.GlobalForwardingRules.List.GlobalForwardingRulesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.GlobalForwardingRules.List.GlobalForwardingRulesList


-- | Changes target URL for forwarding rule. The new target should be of
--   the same type as the old target.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.globalForwardingRules.setTarget</tt>.
module Network.Google.Resource.Compute.GlobalForwardingRules.SetTarget

-- | A resource alias for <tt>compute.globalForwardingRules.setTarget</tt>
--   method which the <a>GlobalForwardingRulesSetTarget</a> request
--   conforms to.
type GlobalForwardingRulesSetTargetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("forwardingRules" :> (Capture "forwardingRule" Text :> ("setTarget" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TargetReference :> Post '[JSON] Operation)))))))))

-- | Creates a value of <a>GlobalForwardingRulesSetTarget</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gfrstProject</a></li>
--   <li><a>gfrstForwardingRule</a></li>
--   <li><a>gfrstPayload</a></li>
--   </ul>
globalForwardingRulesSetTarget :: Text -> Text -> TargetReference -> GlobalForwardingRulesSetTarget

-- | Changes target URL for forwarding rule. The new target should be of
--   the same type as the old target.
--   
--   <i>See:</i> <a>globalForwardingRulesSetTarget</a> smart constructor.
data GlobalForwardingRulesSetTarget

-- | Project ID for this request.
gfrstProject :: Lens' GlobalForwardingRulesSetTarget Text

-- | Name of the ForwardingRule resource in which target is to be set.
gfrstForwardingRule :: Lens' GlobalForwardingRulesSetTarget Text

-- | Multipart request metadata.
gfrstPayload :: Lens' GlobalForwardingRulesSetTarget TargetReference
instance GHC.Generics.Generic Network.Google.Resource.Compute.GlobalForwardingRules.SetTarget.GlobalForwardingRulesSetTarget
instance Data.Data.Data Network.Google.Resource.Compute.GlobalForwardingRules.SetTarget.GlobalForwardingRulesSetTarget
instance GHC.Show.Show Network.Google.Resource.Compute.GlobalForwardingRules.SetTarget.GlobalForwardingRulesSetTarget
instance GHC.Classes.Eq Network.Google.Resource.Compute.GlobalForwardingRules.SetTarget.GlobalForwardingRulesSetTarget
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.GlobalForwardingRules.SetTarget.GlobalForwardingRulesSetTarget


-- | Retrieves an aggregated list of all operations.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.globalOperations.aggregatedList</tt>.
module Network.Google.Resource.Compute.GlobalOperations.AggregatedList

-- | A resource alias for <tt>compute.globalOperations.aggregatedList</tt>
--   method which the <a>GlobalOperationsAggregatedList</a> request
--   conforms to.
type GlobalOperationsAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("operations" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] OperationAggregatedList))))))))))

-- | Creates a value of <a>GlobalOperationsAggregatedList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>goalOrderBy</a></li>
--   <li><a>goalProject</a></li>
--   <li><a>goalFilter</a></li>
--   <li><a>goalPageToken</a></li>
--   <li><a>goalMaxResults</a></li>
--   </ul>
globalOperationsAggregatedList :: Text -> GlobalOperationsAggregatedList

-- | Retrieves an aggregated list of all operations.
--   
--   <i>See:</i> <a>globalOperationsAggregatedList</a> smart constructor.
data GlobalOperationsAggregatedList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
goalOrderBy :: Lens' GlobalOperationsAggregatedList (Maybe Text)

-- | Project ID for this request.
goalProject :: Lens' GlobalOperationsAggregatedList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
goalFilter :: Lens' GlobalOperationsAggregatedList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
goalPageToken :: Lens' GlobalOperationsAggregatedList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
goalMaxResults :: Lens' GlobalOperationsAggregatedList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.GlobalOperations.AggregatedList.GlobalOperationsAggregatedList
instance Data.Data.Data Network.Google.Resource.Compute.GlobalOperations.AggregatedList.GlobalOperationsAggregatedList
instance GHC.Show.Show Network.Google.Resource.Compute.GlobalOperations.AggregatedList.GlobalOperationsAggregatedList
instance GHC.Classes.Eq Network.Google.Resource.Compute.GlobalOperations.AggregatedList.GlobalOperationsAggregatedList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.GlobalOperations.AggregatedList.GlobalOperationsAggregatedList


-- | Deletes the specified Operations resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.globalOperations.delete</tt>.
module Network.Google.Resource.Compute.GlobalOperations.Delete

-- | A resource alias for <tt>compute.globalOperations.delete</tt> method
--   which the <a>GlobalOperationsDelete</a> request conforms to.
type GlobalOperationsDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("operations" :> (Capture "operation" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))))

-- | Creates a value of <a>GlobalOperationsDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>godProject</a></li>
--   <li><a>godOperation</a></li>
--   </ul>
globalOperationsDelete :: Text -> Text -> GlobalOperationsDelete

-- | Deletes the specified Operations resource.
--   
--   <i>See:</i> <a>globalOperationsDelete</a> smart constructor.
data GlobalOperationsDelete

-- | Project ID for this request.
godProject :: Lens' GlobalOperationsDelete Text

-- | Name of the Operations resource to delete.
godOperation :: Lens' GlobalOperationsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.GlobalOperations.Delete.GlobalOperationsDelete
instance Data.Data.Data Network.Google.Resource.Compute.GlobalOperations.Delete.GlobalOperationsDelete
instance GHC.Show.Show Network.Google.Resource.Compute.GlobalOperations.Delete.GlobalOperationsDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.GlobalOperations.Delete.GlobalOperationsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.GlobalOperations.Delete.GlobalOperationsDelete


-- | Retrieves the specified Operations resource. Get a list of operations
--   by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.globalOperations.get</tt>.
module Network.Google.Resource.Compute.GlobalOperations.Get

-- | A resource alias for <tt>compute.globalOperations.get</tt> method
--   which the <a>GlobalOperationsGet</a> request conforms to.
type GlobalOperationsGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("operations" :> (Capture "operation" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Operation)))))))

-- | Creates a value of <a>GlobalOperationsGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gogProject</a></li>
--   <li><a>gogOperation</a></li>
--   </ul>
globalOperationsGet :: Text -> Text -> GlobalOperationsGet

-- | Retrieves the specified Operations resource. Get a list of operations
--   by making a list() request.
--   
--   <i>See:</i> <a>globalOperationsGet</a> smart constructor.
data GlobalOperationsGet

-- | Project ID for this request.
gogProject :: Lens' GlobalOperationsGet Text

-- | Name of the Operations resource to return.
gogOperation :: Lens' GlobalOperationsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.GlobalOperations.Get.GlobalOperationsGet
instance Data.Data.Data Network.Google.Resource.Compute.GlobalOperations.Get.GlobalOperationsGet
instance GHC.Show.Show Network.Google.Resource.Compute.GlobalOperations.Get.GlobalOperationsGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.GlobalOperations.Get.GlobalOperationsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.GlobalOperations.Get.GlobalOperationsGet


-- | Retrieves a list of Operation resources contained within the specified
--   project.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.globalOperations.list</tt>.
module Network.Google.Resource.Compute.GlobalOperations.List

-- | A resource alias for <tt>compute.globalOperations.list</tt> method
--   which the <a>GlobalOperationsList</a> request conforms to.
type GlobalOperationsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("operations" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] OperationList))))))))))

-- | Creates a value of <a>GlobalOperationsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>golOrderBy</a></li>
--   <li><a>golProject</a></li>
--   <li><a>golFilter</a></li>
--   <li><a>golPageToken</a></li>
--   <li><a>golMaxResults</a></li>
--   </ul>
globalOperationsList :: Text -> GlobalOperationsList

-- | Retrieves a list of Operation resources contained within the specified
--   project.
--   
--   <i>See:</i> <a>globalOperationsList</a> smart constructor.
data GlobalOperationsList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
golOrderBy :: Lens' GlobalOperationsList (Maybe Text)

-- | Project ID for this request.
golProject :: Lens' GlobalOperationsList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
golFilter :: Lens' GlobalOperationsList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
golPageToken :: Lens' GlobalOperationsList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
golMaxResults :: Lens' GlobalOperationsList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.GlobalOperations.List.GlobalOperationsList
instance Data.Data.Data Network.Google.Resource.Compute.GlobalOperations.List.GlobalOperationsList
instance GHC.Show.Show Network.Google.Resource.Compute.GlobalOperations.List.GlobalOperationsList
instance GHC.Classes.Eq Network.Google.Resource.Compute.GlobalOperations.List.GlobalOperationsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.GlobalOperations.List.GlobalOperationsList


-- | Deletes the specified HttpHealthCheck resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.httpHealthChecks.delete</tt>.
module Network.Google.Resource.Compute.HTTPHealthChecks.Delete

-- | A resource alias for <tt>compute.httpHealthChecks.delete</tt> method
--   which the <a>HTTPHealthChecksDelete</a> request conforms to.
type HTTPHealthChecksDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("httpHealthChecks" :> (Capture "httpHealthCheck" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation)))))))

-- | Creates a value of <a>HTTPHealthChecksDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>httphcdProject</a></li>
--   <li><a>httphcdHTTPHealthCheck</a></li>
--   </ul>
hTTPHealthChecksDelete :: Text -> Text -> HTTPHealthChecksDelete

-- | Deletes the specified HttpHealthCheck resource.
--   
--   <i>See:</i> <a>hTTPHealthChecksDelete</a> smart constructor.
data HTTPHealthChecksDelete

-- | Project ID for this request.
httphcdProject :: Lens' HTTPHealthChecksDelete Text

-- | Name of the HttpHealthCheck resource to delete.
httphcdHTTPHealthCheck :: Lens' HTTPHealthChecksDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.HTTPHealthChecks.Delete.HTTPHealthChecksDelete
instance Data.Data.Data Network.Google.Resource.Compute.HTTPHealthChecks.Delete.HTTPHealthChecksDelete
instance GHC.Show.Show Network.Google.Resource.Compute.HTTPHealthChecks.Delete.HTTPHealthChecksDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.HTTPHealthChecks.Delete.HTTPHealthChecksDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HTTPHealthChecks.Delete.HTTPHealthChecksDelete


-- | Returns the specified HttpHealthCheck resource. Get a list of
--   available HTTP health checks by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.httpHealthChecks.get</tt>.
module Network.Google.Resource.Compute.HTTPHealthChecks.Get

-- | A resource alias for <tt>compute.httpHealthChecks.get</tt> method
--   which the <a>HTTPHealthChecksGet</a> request conforms to.
type HTTPHealthChecksGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("httpHealthChecks" :> (Capture "httpHealthCheck" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] HTTPHealthCheck)))))))

-- | Creates a value of <a>HTTPHealthChecksGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>httphcgProject</a></li>
--   <li><a>httphcgHTTPHealthCheck</a></li>
--   </ul>
hTTPHealthChecksGet :: Text -> Text -> HTTPHealthChecksGet

-- | Returns the specified HttpHealthCheck resource. Get a list of
--   available HTTP health checks by making a list() request.
--   
--   <i>See:</i> <a>hTTPHealthChecksGet</a> smart constructor.
data HTTPHealthChecksGet

-- | Project ID for this request.
httphcgProject :: Lens' HTTPHealthChecksGet Text

-- | Name of the HttpHealthCheck resource to return.
httphcgHTTPHealthCheck :: Lens' HTTPHealthChecksGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.HTTPHealthChecks.Get.HTTPHealthChecksGet
instance Data.Data.Data Network.Google.Resource.Compute.HTTPHealthChecks.Get.HTTPHealthChecksGet
instance GHC.Show.Show Network.Google.Resource.Compute.HTTPHealthChecks.Get.HTTPHealthChecksGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.HTTPHealthChecks.Get.HTTPHealthChecksGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HTTPHealthChecks.Get.HTTPHealthChecksGet


-- | Creates a HttpHealthCheck resource in the specified project using the
--   data included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.httpHealthChecks.insert</tt>.
module Network.Google.Resource.Compute.HTTPHealthChecks.Insert

-- | A resource alias for <tt>compute.httpHealthChecks.insert</tt> method
--   which the <a>HTTPHealthChecksInsert</a> request conforms to.
type HTTPHealthChecksInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("httpHealthChecks" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] HTTPHealthCheck :> Post '[JSON] Operation)))))))

-- | Creates a value of <a>HTTPHealthChecksInsert</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>httphciProject</a></li>
--   <li><a>httphciPayload</a></li>
--   </ul>
hTTPHealthChecksInsert :: Text -> HTTPHealthCheck -> HTTPHealthChecksInsert

-- | Creates a HttpHealthCheck resource in the specified project using the
--   data included in the request.
--   
--   <i>See:</i> <a>hTTPHealthChecksInsert</a> smart constructor.
data HTTPHealthChecksInsert

-- | Project ID for this request.
httphciProject :: Lens' HTTPHealthChecksInsert Text

-- | Multipart request metadata.
httphciPayload :: Lens' HTTPHealthChecksInsert HTTPHealthCheck
instance GHC.Generics.Generic Network.Google.Resource.Compute.HTTPHealthChecks.Insert.HTTPHealthChecksInsert
instance Data.Data.Data Network.Google.Resource.Compute.HTTPHealthChecks.Insert.HTTPHealthChecksInsert
instance GHC.Show.Show Network.Google.Resource.Compute.HTTPHealthChecks.Insert.HTTPHealthChecksInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.HTTPHealthChecks.Insert.HTTPHealthChecksInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HTTPHealthChecks.Insert.HTTPHealthChecksInsert


-- | Retrieves the list of HttpHealthCheck resources available to the
--   specified project.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.httpHealthChecks.list</tt>.
module Network.Google.Resource.Compute.HTTPHealthChecks.List

-- | A resource alias for <tt>compute.httpHealthChecks.list</tt> method
--   which the <a>HTTPHealthChecksList</a> request conforms to.
type HTTPHealthChecksListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("httpHealthChecks" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] HTTPHealthCheckList))))))))))

-- | Creates a value of <a>HTTPHealthChecksList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>httphclOrderBy</a></li>
--   <li><a>httphclProject</a></li>
--   <li><a>httphclFilter</a></li>
--   <li><a>httphclPageToken</a></li>
--   <li><a>httphclMaxResults</a></li>
--   </ul>
hTTPHealthChecksList :: Text -> HTTPHealthChecksList

-- | Retrieves the list of HttpHealthCheck resources available to the
--   specified project.
--   
--   <i>See:</i> <a>hTTPHealthChecksList</a> smart constructor.
data HTTPHealthChecksList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
httphclOrderBy :: Lens' HTTPHealthChecksList (Maybe Text)

-- | Project ID for this request.
httphclProject :: Lens' HTTPHealthChecksList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
httphclFilter :: Lens' HTTPHealthChecksList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
httphclPageToken :: Lens' HTTPHealthChecksList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
httphclMaxResults :: Lens' HTTPHealthChecksList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.HTTPHealthChecks.List.HTTPHealthChecksList
instance Data.Data.Data Network.Google.Resource.Compute.HTTPHealthChecks.List.HTTPHealthChecksList
instance GHC.Show.Show Network.Google.Resource.Compute.HTTPHealthChecks.List.HTTPHealthChecksList
instance GHC.Classes.Eq Network.Google.Resource.Compute.HTTPHealthChecks.List.HTTPHealthChecksList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HTTPHealthChecks.List.HTTPHealthChecksList


-- | Updates a HttpHealthCheck resource in the specified project using the
--   data included in the request. This method supports patch semantics.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.httpHealthChecks.patch</tt>.
module Network.Google.Resource.Compute.HTTPHealthChecks.Patch

-- | A resource alias for <tt>compute.httpHealthChecks.patch</tt> method
--   which the <a>HTTPHealthChecksPatch</a> request conforms to.
type HTTPHealthChecksPatchResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("httpHealthChecks" :> (Capture "httpHealthCheck" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] HTTPHealthCheck :> Patch '[JSON] Operation))))))))

-- | Creates a value of <a>HTTPHealthChecksPatch</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>httphcpProject</a></li>
--   <li><a>httphcpPayload</a></li>
--   <li><a>httphcpHTTPHealthCheck</a></li>
--   </ul>
hTTPHealthChecksPatch :: Text -> HTTPHealthCheck -> Text -> HTTPHealthChecksPatch

-- | Updates a HttpHealthCheck resource in the specified project using the
--   data included in the request. This method supports patch semantics.
--   
--   <i>See:</i> <a>hTTPHealthChecksPatch</a> smart constructor.
data HTTPHealthChecksPatch

-- | Project ID for this request.
httphcpProject :: Lens' HTTPHealthChecksPatch Text

-- | Multipart request metadata.
httphcpPayload :: Lens' HTTPHealthChecksPatch HTTPHealthCheck

-- | Name of the HttpHealthCheck resource to update.
httphcpHTTPHealthCheck :: Lens' HTTPHealthChecksPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.HTTPHealthChecks.Patch.HTTPHealthChecksPatch
instance Data.Data.Data Network.Google.Resource.Compute.HTTPHealthChecks.Patch.HTTPHealthChecksPatch
instance GHC.Show.Show Network.Google.Resource.Compute.HTTPHealthChecks.Patch.HTTPHealthChecksPatch
instance GHC.Classes.Eq Network.Google.Resource.Compute.HTTPHealthChecks.Patch.HTTPHealthChecksPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HTTPHealthChecks.Patch.HTTPHealthChecksPatch


-- | Updates a HttpHealthCheck resource in the specified project using the
--   data included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.httpHealthChecks.update</tt>.
module Network.Google.Resource.Compute.HTTPHealthChecks.Update

-- | A resource alias for <tt>compute.httpHealthChecks.update</tt> method
--   which the <a>HTTPHealthChecksUpdate</a> request conforms to.
type HTTPHealthChecksUpdateResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("httpHealthChecks" :> (Capture "httpHealthCheck" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] HTTPHealthCheck :> Put '[JSON] Operation))))))))

-- | Creates a value of <a>HTTPHealthChecksUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>httphcuProject</a></li>
--   <li><a>httphcuPayload</a></li>
--   <li><a>httphcuHTTPHealthCheck</a></li>
--   </ul>
hTTPHealthChecksUpdate :: Text -> HTTPHealthCheck -> Text -> HTTPHealthChecksUpdate

-- | Updates a HttpHealthCheck resource in the specified project using the
--   data included in the request.
--   
--   <i>See:</i> <a>hTTPHealthChecksUpdate</a> smart constructor.
data HTTPHealthChecksUpdate

-- | Project ID for this request.
httphcuProject :: Lens' HTTPHealthChecksUpdate Text

-- | Multipart request metadata.
httphcuPayload :: Lens' HTTPHealthChecksUpdate HTTPHealthCheck

-- | Name of the HttpHealthCheck resource to update.
httphcuHTTPHealthCheck :: Lens' HTTPHealthChecksUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.HTTPHealthChecks.Update.HTTPHealthChecksUpdate
instance Data.Data.Data Network.Google.Resource.Compute.HTTPHealthChecks.Update.HTTPHealthChecksUpdate
instance GHC.Show.Show Network.Google.Resource.Compute.HTTPHealthChecks.Update.HTTPHealthChecksUpdate
instance GHC.Classes.Eq Network.Google.Resource.Compute.HTTPHealthChecks.Update.HTTPHealthChecksUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HTTPHealthChecks.Update.HTTPHealthChecksUpdate


-- | Deletes the specified HttpsHealthCheck resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.httpsHealthChecks.delete</tt>.
module Network.Google.Resource.Compute.HTTPSHealthChecks.Delete

-- | A resource alias for <tt>compute.httpsHealthChecks.delete</tt> method
--   which the <a>HTTPSHealthChecksDelete</a> request conforms to.
type HTTPSHealthChecksDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("httpsHealthChecks" :> (Capture "httpsHealthCheck" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation)))))))

-- | Creates a value of <a>HTTPSHealthChecksDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hhcdProject</a></li>
--   <li><a>hhcdHTTPSHealthCheck</a></li>
--   </ul>
httpsHealthChecksDelete :: Text -> Text -> HTTPSHealthChecksDelete

-- | Deletes the specified HttpsHealthCheck resource.
--   
--   <i>See:</i> <a>httpsHealthChecksDelete</a> smart constructor.
data HTTPSHealthChecksDelete

-- | Project ID for this request.
hhcdProject :: Lens' HTTPSHealthChecksDelete Text

-- | Name of the HttpsHealthCheck resource to delete.
hhcdHTTPSHealthCheck :: Lens' HTTPSHealthChecksDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.HTTPSHealthChecks.Delete.HTTPSHealthChecksDelete
instance Data.Data.Data Network.Google.Resource.Compute.HTTPSHealthChecks.Delete.HTTPSHealthChecksDelete
instance GHC.Show.Show Network.Google.Resource.Compute.HTTPSHealthChecks.Delete.HTTPSHealthChecksDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.HTTPSHealthChecks.Delete.HTTPSHealthChecksDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HTTPSHealthChecks.Delete.HTTPSHealthChecksDelete


-- | Returns the specified HttpsHealthCheck resource. Get a list of
--   available HTTPS health checks by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.httpsHealthChecks.get</tt>.
module Network.Google.Resource.Compute.HTTPSHealthChecks.Get

-- | A resource alias for <tt>compute.httpsHealthChecks.get</tt> method
--   which the <a>HTTPSHealthChecksGet</a> request conforms to.
type HTTPSHealthChecksGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("httpsHealthChecks" :> (Capture "httpsHealthCheck" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] HTTPSHealthCheck)))))))

-- | Creates a value of <a>HTTPSHealthChecksGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hhcgProject</a></li>
--   <li><a>hhcgHTTPSHealthCheck</a></li>
--   </ul>
httpsHealthChecksGet :: Text -> Text -> HTTPSHealthChecksGet

-- | Returns the specified HttpsHealthCheck resource. Get a list of
--   available HTTPS health checks by making a list() request.
--   
--   <i>See:</i> <a>httpsHealthChecksGet</a> smart constructor.
data HTTPSHealthChecksGet

-- | Project ID for this request.
hhcgProject :: Lens' HTTPSHealthChecksGet Text

-- | Name of the HttpsHealthCheck resource to return.
hhcgHTTPSHealthCheck :: Lens' HTTPSHealthChecksGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.HTTPSHealthChecks.Get.HTTPSHealthChecksGet
instance Data.Data.Data Network.Google.Resource.Compute.HTTPSHealthChecks.Get.HTTPSHealthChecksGet
instance GHC.Show.Show Network.Google.Resource.Compute.HTTPSHealthChecks.Get.HTTPSHealthChecksGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.HTTPSHealthChecks.Get.HTTPSHealthChecksGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HTTPSHealthChecks.Get.HTTPSHealthChecksGet


-- | Creates a HttpsHealthCheck resource in the specified project using the
--   data included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.httpsHealthChecks.insert</tt>.
module Network.Google.Resource.Compute.HTTPSHealthChecks.Insert

-- | A resource alias for <tt>compute.httpsHealthChecks.insert</tt> method
--   which the <a>HTTPSHealthChecksInsert</a> request conforms to.
type HTTPSHealthChecksInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("httpsHealthChecks" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] HTTPSHealthCheck :> Post '[JSON] Operation)))))))

-- | Creates a value of <a>HTTPSHealthChecksInsert</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hhciProject</a></li>
--   <li><a>hhciPayload</a></li>
--   </ul>
httpsHealthChecksInsert :: Text -> HTTPSHealthCheck -> HTTPSHealthChecksInsert

-- | Creates a HttpsHealthCheck resource in the specified project using the
--   data included in the request.
--   
--   <i>See:</i> <a>httpsHealthChecksInsert</a> smart constructor.
data HTTPSHealthChecksInsert

-- | Project ID for this request.
hhciProject :: Lens' HTTPSHealthChecksInsert Text

-- | Multipart request metadata.
hhciPayload :: Lens' HTTPSHealthChecksInsert HTTPSHealthCheck
instance GHC.Generics.Generic Network.Google.Resource.Compute.HTTPSHealthChecks.Insert.HTTPSHealthChecksInsert
instance Data.Data.Data Network.Google.Resource.Compute.HTTPSHealthChecks.Insert.HTTPSHealthChecksInsert
instance GHC.Show.Show Network.Google.Resource.Compute.HTTPSHealthChecks.Insert.HTTPSHealthChecksInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.HTTPSHealthChecks.Insert.HTTPSHealthChecksInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HTTPSHealthChecks.Insert.HTTPSHealthChecksInsert


-- | Retrieves the list of HttpsHealthCheck resources available to the
--   specified project.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.httpsHealthChecks.list</tt>.
module Network.Google.Resource.Compute.HTTPSHealthChecks.List

-- | A resource alias for <tt>compute.httpsHealthChecks.list</tt> method
--   which the <a>HTTPSHealthChecksList</a> request conforms to.
type HTTPSHealthChecksListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("httpsHealthChecks" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] HTTPSHealthCheckList))))))))))

-- | Creates a value of <a>HTTPSHealthChecksList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hhclOrderBy</a></li>
--   <li><a>hhclProject</a></li>
--   <li><a>hhclFilter</a></li>
--   <li><a>hhclPageToken</a></li>
--   <li><a>hhclMaxResults</a></li>
--   </ul>
httpsHealthChecksList :: Text -> HTTPSHealthChecksList

-- | Retrieves the list of HttpsHealthCheck resources available to the
--   specified project.
--   
--   <i>See:</i> <a>httpsHealthChecksList</a> smart constructor.
data HTTPSHealthChecksList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
hhclOrderBy :: Lens' HTTPSHealthChecksList (Maybe Text)

-- | Project ID for this request.
hhclProject :: Lens' HTTPSHealthChecksList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
hhclFilter :: Lens' HTTPSHealthChecksList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
hhclPageToken :: Lens' HTTPSHealthChecksList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
hhclMaxResults :: Lens' HTTPSHealthChecksList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.HTTPSHealthChecks.List.HTTPSHealthChecksList
instance Data.Data.Data Network.Google.Resource.Compute.HTTPSHealthChecks.List.HTTPSHealthChecksList
instance GHC.Show.Show Network.Google.Resource.Compute.HTTPSHealthChecks.List.HTTPSHealthChecksList
instance GHC.Classes.Eq Network.Google.Resource.Compute.HTTPSHealthChecks.List.HTTPSHealthChecksList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HTTPSHealthChecks.List.HTTPSHealthChecksList


-- | Updates a HttpsHealthCheck resource in the specified project using the
--   data included in the request. This method supports patch semantics.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.httpsHealthChecks.patch</tt>.
module Network.Google.Resource.Compute.HTTPSHealthChecks.Patch

-- | A resource alias for <tt>compute.httpsHealthChecks.patch</tt> method
--   which the <a>HTTPSHealthChecksPatch</a> request conforms to.
type HTTPSHealthChecksPatchResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("httpsHealthChecks" :> (Capture "httpsHealthCheck" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] HTTPSHealthCheck :> Patch '[JSON] Operation))))))))

-- | Creates a value of <a>HTTPSHealthChecksPatch</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hhcpProject</a></li>
--   <li><a>hhcpPayload</a></li>
--   <li><a>hhcpHTTPSHealthCheck</a></li>
--   </ul>
httpsHealthChecksPatch :: Text -> HTTPSHealthCheck -> Text -> HTTPSHealthChecksPatch

-- | Updates a HttpsHealthCheck resource in the specified project using the
--   data included in the request. This method supports patch semantics.
--   
--   <i>See:</i> <a>httpsHealthChecksPatch</a> smart constructor.
data HTTPSHealthChecksPatch

-- | Project ID for this request.
hhcpProject :: Lens' HTTPSHealthChecksPatch Text

-- | Multipart request metadata.
hhcpPayload :: Lens' HTTPSHealthChecksPatch HTTPSHealthCheck

-- | Name of the HttpsHealthCheck resource to update.
hhcpHTTPSHealthCheck :: Lens' HTTPSHealthChecksPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.HTTPSHealthChecks.Patch.HTTPSHealthChecksPatch
instance Data.Data.Data Network.Google.Resource.Compute.HTTPSHealthChecks.Patch.HTTPSHealthChecksPatch
instance GHC.Show.Show Network.Google.Resource.Compute.HTTPSHealthChecks.Patch.HTTPSHealthChecksPatch
instance GHC.Classes.Eq Network.Google.Resource.Compute.HTTPSHealthChecks.Patch.HTTPSHealthChecksPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HTTPSHealthChecks.Patch.HTTPSHealthChecksPatch


-- | Updates a HttpsHealthCheck resource in the specified project using the
--   data included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.httpsHealthChecks.update</tt>.
module Network.Google.Resource.Compute.HTTPSHealthChecks.Update

-- | A resource alias for <tt>compute.httpsHealthChecks.update</tt> method
--   which the <a>HTTPSHealthChecksUpdate</a> request conforms to.
type HTTPSHealthChecksUpdateResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("httpsHealthChecks" :> (Capture "httpsHealthCheck" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] HTTPSHealthCheck :> Put '[JSON] Operation))))))))

-- | Creates a value of <a>HTTPSHealthChecksUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hhcuProject</a></li>
--   <li><a>hhcuPayload</a></li>
--   <li><a>hhcuHTTPSHealthCheck</a></li>
--   </ul>
httpsHealthChecksUpdate :: Text -> HTTPSHealthCheck -> Text -> HTTPSHealthChecksUpdate

-- | Updates a HttpsHealthCheck resource in the specified project using the
--   data included in the request.
--   
--   <i>See:</i> <a>httpsHealthChecksUpdate</a> smart constructor.
data HTTPSHealthChecksUpdate

-- | Project ID for this request.
hhcuProject :: Lens' HTTPSHealthChecksUpdate Text

-- | Multipart request metadata.
hhcuPayload :: Lens' HTTPSHealthChecksUpdate HTTPSHealthCheck

-- | Name of the HttpsHealthCheck resource to update.
hhcuHTTPSHealthCheck :: Lens' HTTPSHealthChecksUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.HTTPSHealthChecks.Update.HTTPSHealthChecksUpdate
instance Data.Data.Data Network.Google.Resource.Compute.HTTPSHealthChecks.Update.HTTPSHealthChecksUpdate
instance GHC.Show.Show Network.Google.Resource.Compute.HTTPSHealthChecks.Update.HTTPSHealthChecksUpdate
instance GHC.Classes.Eq Network.Google.Resource.Compute.HTTPSHealthChecks.Update.HTTPSHealthChecksUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HTTPSHealthChecks.Update.HTTPSHealthChecksUpdate


-- | Deletes the specified HealthCheck resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.healthChecks.delete</tt>.
module Network.Google.Resource.Compute.HealthChecks.Delete

-- | A resource alias for <tt>compute.healthChecks.delete</tt> method which
--   the <a>HealthChecksDelete</a> request conforms to.
type HealthChecksDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("healthChecks" :> (Capture "healthCheck" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation)))))))

-- | Creates a value of <a>HealthChecksDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hcdHealthCheck</a></li>
--   <li><a>hcdProject</a></li>
--   </ul>
healthChecksDelete :: Text -> Text -> HealthChecksDelete

-- | Deletes the specified HealthCheck resource.
--   
--   <i>See:</i> <a>healthChecksDelete</a> smart constructor.
data HealthChecksDelete

-- | Name of the HealthCheck resource to delete.
hcdHealthCheck :: Lens' HealthChecksDelete Text

-- | Project ID for this request.
hcdProject :: Lens' HealthChecksDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.HealthChecks.Delete.HealthChecksDelete
instance Data.Data.Data Network.Google.Resource.Compute.HealthChecks.Delete.HealthChecksDelete
instance GHC.Show.Show Network.Google.Resource.Compute.HealthChecks.Delete.HealthChecksDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.HealthChecks.Delete.HealthChecksDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HealthChecks.Delete.HealthChecksDelete


-- | Returns the specified HealthCheck resource. Get a list of available
--   health checks by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.healthChecks.get</tt>.
module Network.Google.Resource.Compute.HealthChecks.Get

-- | A resource alias for <tt>compute.healthChecks.get</tt> method which
--   the <a>HealthChecksGet</a> request conforms to.
type HealthChecksGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("healthChecks" :> (Capture "healthCheck" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] HealthCheck)))))))

-- | Creates a value of <a>HealthChecksGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hcgHealthCheck</a></li>
--   <li><a>hcgProject</a></li>
--   </ul>
healthChecksGet :: Text -> Text -> HealthChecksGet

-- | Returns the specified HealthCheck resource. Get a list of available
--   health checks by making a list() request.
--   
--   <i>See:</i> <a>healthChecksGet</a> smart constructor.
data HealthChecksGet

-- | Name of the HealthCheck resource to return.
hcgHealthCheck :: Lens' HealthChecksGet Text

-- | Project ID for this request.
hcgProject :: Lens' HealthChecksGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.HealthChecks.Get.HealthChecksGet
instance Data.Data.Data Network.Google.Resource.Compute.HealthChecks.Get.HealthChecksGet
instance GHC.Show.Show Network.Google.Resource.Compute.HealthChecks.Get.HealthChecksGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.HealthChecks.Get.HealthChecksGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HealthChecks.Get.HealthChecksGet


-- | Creates a HealthCheck resource in the specified project using the data
--   included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.healthChecks.insert</tt>.
module Network.Google.Resource.Compute.HealthChecks.Insert

-- | A resource alias for <tt>compute.healthChecks.insert</tt> method which
--   the <a>HealthChecksInsert</a> request conforms to.
type HealthChecksInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("healthChecks" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] HealthCheck :> Post '[JSON] Operation)))))))

-- | Creates a value of <a>HealthChecksInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hciProject</a></li>
--   <li><a>hciPayload</a></li>
--   </ul>
healthChecksInsert :: Text -> HealthCheck -> HealthChecksInsert

-- | Creates a HealthCheck resource in the specified project using the data
--   included in the request.
--   
--   <i>See:</i> <a>healthChecksInsert</a> smart constructor.
data HealthChecksInsert

-- | Project ID for this request.
hciProject :: Lens' HealthChecksInsert Text

-- | Multipart request metadata.
hciPayload :: Lens' HealthChecksInsert HealthCheck
instance GHC.Generics.Generic Network.Google.Resource.Compute.HealthChecks.Insert.HealthChecksInsert
instance Data.Data.Data Network.Google.Resource.Compute.HealthChecks.Insert.HealthChecksInsert
instance GHC.Show.Show Network.Google.Resource.Compute.HealthChecks.Insert.HealthChecksInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.HealthChecks.Insert.HealthChecksInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HealthChecks.Insert.HealthChecksInsert


-- | Retrieves the list of HealthCheck resources available to the specified
--   project.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.healthChecks.list</tt>.
module Network.Google.Resource.Compute.HealthChecks.List

-- | A resource alias for <tt>compute.healthChecks.list</tt> method which
--   the <a>HealthChecksList</a> request conforms to.
type HealthChecksListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("healthChecks" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] HealthCheckList))))))))))

-- | Creates a value of <a>HealthChecksList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hclOrderBy</a></li>
--   <li><a>hclProject</a></li>
--   <li><a>hclFilter</a></li>
--   <li><a>hclPageToken</a></li>
--   <li><a>hclMaxResults</a></li>
--   </ul>
healthChecksList :: Text -> HealthChecksList

-- | Retrieves the list of HealthCheck resources available to the specified
--   project.
--   
--   <i>See:</i> <a>healthChecksList</a> smart constructor.
data HealthChecksList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
hclOrderBy :: Lens' HealthChecksList (Maybe Text)

-- | Project ID for this request.
hclProject :: Lens' HealthChecksList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
hclFilter :: Lens' HealthChecksList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
hclPageToken :: Lens' HealthChecksList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
hclMaxResults :: Lens' HealthChecksList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.HealthChecks.List.HealthChecksList
instance Data.Data.Data Network.Google.Resource.Compute.HealthChecks.List.HealthChecksList
instance GHC.Show.Show Network.Google.Resource.Compute.HealthChecks.List.HealthChecksList
instance GHC.Classes.Eq Network.Google.Resource.Compute.HealthChecks.List.HealthChecksList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HealthChecks.List.HealthChecksList


-- | Updates a HealthCheck resource in the specified project using the data
--   included in the request. This method supports patch semantics.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.healthChecks.patch</tt>.
module Network.Google.Resource.Compute.HealthChecks.Patch

-- | A resource alias for <tt>compute.healthChecks.patch</tt> method which
--   the <a>HealthChecksPatch</a> request conforms to.
type HealthChecksPatchResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("healthChecks" :> (Capture "healthCheck" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] HealthCheck :> Patch '[JSON] Operation))))))))

-- | Creates a value of <a>HealthChecksPatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hcpHealthCheck</a></li>
--   <li><a>hcpProject</a></li>
--   <li><a>hcpPayload</a></li>
--   </ul>
healthChecksPatch :: Text -> Text -> HealthCheck -> HealthChecksPatch

-- | Updates a HealthCheck resource in the specified project using the data
--   included in the request. This method supports patch semantics.
--   
--   <i>See:</i> <a>healthChecksPatch</a> smart constructor.
data HealthChecksPatch

-- | Name of the HealthCheck resource to update.
hcpHealthCheck :: Lens' HealthChecksPatch Text

-- | Project ID for this request.
hcpProject :: Lens' HealthChecksPatch Text

-- | Multipart request metadata.
hcpPayload :: Lens' HealthChecksPatch HealthCheck
instance GHC.Generics.Generic Network.Google.Resource.Compute.HealthChecks.Patch.HealthChecksPatch
instance Data.Data.Data Network.Google.Resource.Compute.HealthChecks.Patch.HealthChecksPatch
instance GHC.Show.Show Network.Google.Resource.Compute.HealthChecks.Patch.HealthChecksPatch
instance GHC.Classes.Eq Network.Google.Resource.Compute.HealthChecks.Patch.HealthChecksPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HealthChecks.Patch.HealthChecksPatch


-- | Updates a HealthCheck resource in the specified project using the data
--   included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.healthChecks.update</tt>.
module Network.Google.Resource.Compute.HealthChecks.Update

-- | A resource alias for <tt>compute.healthChecks.update</tt> method which
--   the <a>HealthChecksUpdate</a> request conforms to.
type HealthChecksUpdateResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("healthChecks" :> (Capture "healthCheck" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] HealthCheck :> Put '[JSON] Operation))))))))

-- | Creates a value of <a>HealthChecksUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hcuHealthCheck</a></li>
--   <li><a>hcuProject</a></li>
--   <li><a>hcuPayload</a></li>
--   </ul>
healthChecksUpdate :: Text -> Text -> HealthCheck -> HealthChecksUpdate

-- | Updates a HealthCheck resource in the specified project using the data
--   included in the request.
--   
--   <i>See:</i> <a>healthChecksUpdate</a> smart constructor.
data HealthChecksUpdate

-- | Name of the HealthCheck resource to update.
hcuHealthCheck :: Lens' HealthChecksUpdate Text

-- | Project ID for this request.
hcuProject :: Lens' HealthChecksUpdate Text

-- | Multipart request metadata.
hcuPayload :: Lens' HealthChecksUpdate HealthCheck
instance GHC.Generics.Generic Network.Google.Resource.Compute.HealthChecks.Update.HealthChecksUpdate
instance Data.Data.Data Network.Google.Resource.Compute.HealthChecks.Update.HealthChecksUpdate
instance GHC.Show.Show Network.Google.Resource.Compute.HealthChecks.Update.HealthChecksUpdate
instance GHC.Classes.Eq Network.Google.Resource.Compute.HealthChecks.Update.HealthChecksUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.HealthChecks.Update.HealthChecksUpdate


-- | Deletes the specified image.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.images.delete</tt>.
module Network.Google.Resource.Compute.Images.Delete

-- | A resource alias for <tt>compute.images.delete</tt> method which the
--   <a>ImagesDelete</a> request conforms to.
type ImagesDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("images" :> (Capture "image" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation)))))))

-- | Creates a value of <a>ImagesDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>imaImage</a></li>
--   <li><a>imaProject</a></li>
--   </ul>
imagesDelete :: Text -> Text -> ImagesDelete

-- | Deletes the specified image.
--   
--   <i>See:</i> <a>imagesDelete</a> smart constructor.
data ImagesDelete

-- | Name of the image resource to delete.
imaImage :: Lens' ImagesDelete Text

-- | Project ID for this request.
imaProject :: Lens' ImagesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Images.Delete.ImagesDelete
instance Data.Data.Data Network.Google.Resource.Compute.Images.Delete.ImagesDelete
instance GHC.Show.Show Network.Google.Resource.Compute.Images.Delete.ImagesDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.Images.Delete.ImagesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Images.Delete.ImagesDelete


-- | Sets the deprecation status of an image. If an empty request body is
--   given, clears the deprecation status instead.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.images.deprecate</tt>.
module Network.Google.Resource.Compute.Images.Deprecate

-- | A resource alias for <tt>compute.images.deprecate</tt> method which
--   the <a>ImagesDeprecate</a> request conforms to.
type ImagesDeprecateResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("images" :> (Capture "image" Text :> ("deprecate" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] DeprecationStatus :> Post '[JSON] Operation)))))))))

-- | Creates a value of <a>ImagesDeprecate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>imamImage</a></li>
--   <li><a>imamProject</a></li>
--   <li><a>imamPayload</a></li>
--   </ul>
imagesDeprecate :: Text -> Text -> DeprecationStatus -> ImagesDeprecate

-- | Sets the deprecation status of an image. If an empty request body is
--   given, clears the deprecation status instead.
--   
--   <i>See:</i> <a>imagesDeprecate</a> smart constructor.
data ImagesDeprecate

-- | Image name.
imamImage :: Lens' ImagesDeprecate Text

-- | Project ID for this request.
imamProject :: Lens' ImagesDeprecate Text

-- | Multipart request metadata.
imamPayload :: Lens' ImagesDeprecate DeprecationStatus
instance GHC.Generics.Generic Network.Google.Resource.Compute.Images.Deprecate.ImagesDeprecate
instance Data.Data.Data Network.Google.Resource.Compute.Images.Deprecate.ImagesDeprecate
instance GHC.Show.Show Network.Google.Resource.Compute.Images.Deprecate.ImagesDeprecate
instance GHC.Classes.Eq Network.Google.Resource.Compute.Images.Deprecate.ImagesDeprecate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Images.Deprecate.ImagesDeprecate


-- | Returns the specified image. Get a list of available images by making
--   a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.images.get</tt>.
module Network.Google.Resource.Compute.Images.Get

-- | A resource alias for <tt>compute.images.get</tt> method which the
--   <a>ImagesGet</a> request conforms to.
type ImagesGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("images" :> (Capture "image" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Image)))))))

-- | Creates a value of <a>ImagesGet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iImage</a></li>
--   <li><a>iProject</a></li>
--   </ul>
imagesGet :: Text -> Text -> ImagesGet

-- | Returns the specified image. Get a list of available images by making
--   a list() request.
--   
--   <i>See:</i> <a>imagesGet</a> smart constructor.
data ImagesGet

-- | Name of the image resource to return.
iImage :: Lens' ImagesGet Text

-- | Project ID for this request.
iProject :: Lens' ImagesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Images.Get.ImagesGet
instance Data.Data.Data Network.Google.Resource.Compute.Images.Get.ImagesGet
instance GHC.Show.Show Network.Google.Resource.Compute.Images.Get.ImagesGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.Images.Get.ImagesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Images.Get.ImagesGet


-- | Returns the latest image that is part of an image family and is not
--   deprecated.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.images.getFromFamily</tt>.
module Network.Google.Resource.Compute.Images.GetFromFamily

-- | A resource alias for <tt>compute.images.getFromFamily</tt> method
--   which the <a>ImagesGetFromFamily</a> request conforms to.
type ImagesGetFromFamilyResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("images" :> ("family" :> (Capture "family" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Image))))))))

-- | Creates a value of <a>ImagesGetFromFamily</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igffProject</a></li>
--   <li><a>igffFamily</a></li>
--   </ul>
imagesGetFromFamily :: Text -> Text -> ImagesGetFromFamily

-- | Returns the latest image that is part of an image family and is not
--   deprecated.
--   
--   <i>See:</i> <a>imagesGetFromFamily</a> smart constructor.
data ImagesGetFromFamily

-- | Project ID for this request.
igffProject :: Lens' ImagesGetFromFamily Text

-- | Name of the image family to search for.
igffFamily :: Lens' ImagesGetFromFamily Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Images.GetFromFamily.ImagesGetFromFamily
instance Data.Data.Data Network.Google.Resource.Compute.Images.GetFromFamily.ImagesGetFromFamily
instance GHC.Show.Show Network.Google.Resource.Compute.Images.GetFromFamily.ImagesGetFromFamily
instance GHC.Classes.Eq Network.Google.Resource.Compute.Images.GetFromFamily.ImagesGetFromFamily
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Images.GetFromFamily.ImagesGetFromFamily


-- | Creates an image in the specified project using the data included in
--   the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.images.insert</tt>.
module Network.Google.Resource.Compute.Images.Insert

-- | A resource alias for <tt>compute.images.insert</tt> method which the
--   <a>ImagesInsert</a> request conforms to.
type ImagesInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("images" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Image :> Post '[JSON] Operation)))))))

-- | Creates a value of <a>ImagesInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iiProject</a></li>
--   <li><a>iiPayload</a></li>
--   </ul>
imagesInsert :: Text -> Image -> ImagesInsert

-- | Creates an image in the specified project using the data included in
--   the request.
--   
--   <i>See:</i> <a>imagesInsert</a> smart constructor.
data ImagesInsert

-- | Project ID for this request.
iiProject :: Lens' ImagesInsert Text

-- | Multipart request metadata.
iiPayload :: Lens' ImagesInsert Image
instance GHC.Generics.Generic Network.Google.Resource.Compute.Images.Insert.ImagesInsert
instance Data.Data.Data Network.Google.Resource.Compute.Images.Insert.ImagesInsert
instance GHC.Show.Show Network.Google.Resource.Compute.Images.Insert.ImagesInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.Images.Insert.ImagesInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Images.Insert.ImagesInsert


-- | Retrieves the list of private images available to the specified
--   project. Private images are images you create that belong to your
--   project. This method does not get any images that belong to other
--   projects, including publicly-available images, like Debian 8. If you
--   want to get a list of publicly-available images, use this method to
--   make a request to the respective image project, such as debian-cloud
--   or windows-cloud.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.images.list</tt>.
module Network.Google.Resource.Compute.Images.List

-- | A resource alias for <tt>compute.images.list</tt> method which the
--   <a>ImagesList</a> request conforms to.
type ImagesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("images" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ImageList))))))))))

-- | Creates a value of <a>ImagesList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>illOrderBy</a></li>
--   <li><a>illProject</a></li>
--   <li><a>illFilter</a></li>
--   <li><a>illPageToken</a></li>
--   <li><a>illMaxResults</a></li>
--   </ul>
imagesList :: Text -> ImagesList

-- | Retrieves the list of private images available to the specified
--   project. Private images are images you create that belong to your
--   project. This method does not get any images that belong to other
--   projects, including publicly-available images, like Debian 8. If you
--   want to get a list of publicly-available images, use this method to
--   make a request to the respective image project, such as debian-cloud
--   or windows-cloud.
--   
--   <i>See:</i> <a>imagesList</a> smart constructor.
data ImagesList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
illOrderBy :: Lens' ImagesList (Maybe Text)

-- | Project ID for this request.
illProject :: Lens' ImagesList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
illFilter :: Lens' ImagesList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
illPageToken :: Lens' ImagesList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
illMaxResults :: Lens' ImagesList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.Images.List.ImagesList
instance Data.Data.Data Network.Google.Resource.Compute.Images.List.ImagesList
instance GHC.Show.Show Network.Google.Resource.Compute.Images.List.ImagesList
instance GHC.Classes.Eq Network.Google.Resource.Compute.Images.List.ImagesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Images.List.ImagesList


-- | Schedules a group action to remove the specified instances from the
--   managed instance group. Abandoning an instance does not delete the
--   instance, but it does remove the instance from any target pools that
--   are applied by the managed instance group. This method reduces the
--   targetSize of the managed instance group by the number of instances
--   that you abandon. This operation is marked as DONE when the action is
--   scheduled even if the instances have not yet been removed from the
--   group. You must separately verify the status of the abandoning action
--   with the listmanagedinstances method.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceGroupManagers.abandonInstances</tt>.
module Network.Google.Resource.Compute.InstanceGroupManagers.AbandonInstances

-- | A resource alias for
--   <tt>compute.instanceGroupManagers.abandonInstances</tt> method which
--   the <a>InstanceGroupManagersAbandonInstances</a> request conforms to.
type InstanceGroupManagersAbandonInstancesResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroupManagers" :> (Capture "instanceGroupManager" Text :> ("abandonInstances" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] InstanceGroupManagersAbandonInstancesRequest :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>InstanceGroupManagersAbandonInstances</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmaiProject</a></li>
--   <li><a>igmaiInstanceGroupManager</a></li>
--   <li><a>igmaiZone</a></li>
--   <li><a>igmaiPayload</a></li>
--   </ul>
instanceGroupManagersAbandonInstances :: Text -> Text -> Text -> InstanceGroupManagersAbandonInstancesRequest -> InstanceGroupManagersAbandonInstances

-- | Schedules a group action to remove the specified instances from the
--   managed instance group. Abandoning an instance does not delete the
--   instance, but it does remove the instance from any target pools that
--   are applied by the managed instance group. This method reduces the
--   targetSize of the managed instance group by the number of instances
--   that you abandon. This operation is marked as DONE when the action is
--   scheduled even if the instances have not yet been removed from the
--   group. You must separately verify the status of the abandoning action
--   with the listmanagedinstances method.
--   
--   <i>See:</i> <a>instanceGroupManagersAbandonInstances</a> smart
--   constructor.
data InstanceGroupManagersAbandonInstances

-- | Project ID for this request.
igmaiProject :: Lens' InstanceGroupManagersAbandonInstances Text

-- | The name of the managed instance group.
igmaiInstanceGroupManager :: Lens' InstanceGroupManagersAbandonInstances Text

-- | The name of the zone where the managed instance group is located.
igmaiZone :: Lens' InstanceGroupManagersAbandonInstances Text

-- | Multipart request metadata.
igmaiPayload :: Lens' InstanceGroupManagersAbandonInstances InstanceGroupManagersAbandonInstancesRequest
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceGroupManagers.AbandonInstances.InstanceGroupManagersAbandonInstances
instance Data.Data.Data Network.Google.Resource.Compute.InstanceGroupManagers.AbandonInstances.InstanceGroupManagersAbandonInstances
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceGroupManagers.AbandonInstances.InstanceGroupManagersAbandonInstances
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceGroupManagers.AbandonInstances.InstanceGroupManagersAbandonInstances
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceGroupManagers.AbandonInstances.InstanceGroupManagersAbandonInstances


-- | Retrieves the list of managed instance groups and groups them by zone.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceGroupManagers.aggregatedList</tt>.
module Network.Google.Resource.Compute.InstanceGroupManagers.AggregatedList

-- | A resource alias for
--   <tt>compute.instanceGroupManagers.aggregatedList</tt> method which the
--   <a>InstanceGroupManagersAggregatedList</a> request conforms to.
type InstanceGroupManagersAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("instanceGroupManagers" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceGroupManagerAggregatedList))))))))))

-- | Creates a value of <a>InstanceGroupManagersAggregatedList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmalOrderBy</a></li>
--   <li><a>igmalProject</a></li>
--   <li><a>igmalFilter</a></li>
--   <li><a>igmalPageToken</a></li>
--   <li><a>igmalMaxResults</a></li>
--   </ul>
instanceGroupManagersAggregatedList :: Text -> InstanceGroupManagersAggregatedList

-- | Retrieves the list of managed instance groups and groups them by zone.
--   
--   <i>See:</i> <a>instanceGroupManagersAggregatedList</a> smart
--   constructor.
data InstanceGroupManagersAggregatedList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
igmalOrderBy :: Lens' InstanceGroupManagersAggregatedList (Maybe Text)

-- | Project ID for this request.
igmalProject :: Lens' InstanceGroupManagersAggregatedList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
igmalFilter :: Lens' InstanceGroupManagersAggregatedList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
igmalPageToken :: Lens' InstanceGroupManagersAggregatedList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
igmalMaxResults :: Lens' InstanceGroupManagersAggregatedList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceGroupManagers.AggregatedList.InstanceGroupManagersAggregatedList
instance Data.Data.Data Network.Google.Resource.Compute.InstanceGroupManagers.AggregatedList.InstanceGroupManagersAggregatedList
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceGroupManagers.AggregatedList.InstanceGroupManagersAggregatedList
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceGroupManagers.AggregatedList.InstanceGroupManagersAggregatedList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceGroupManagers.AggregatedList.InstanceGroupManagersAggregatedList


-- | Deletes the specified managed instance group and all of the instances
--   in that group. Note that the instance group must not belong to a
--   backend service. Read Deleting an instance group for more information.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceGroupManagers.delete</tt>.
module Network.Google.Resource.Compute.InstanceGroupManagers.Delete

-- | A resource alias for <tt>compute.instanceGroupManagers.delete</tt>
--   method which the <a>InstanceGroupManagersDelete</a> request conforms
--   to.
type InstanceGroupManagersDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroupManagers" :> (Capture "instanceGroupManager" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation))))))))

-- | Creates a value of <a>InstanceGroupManagersDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmdProject</a></li>
--   <li><a>igmdInstanceGroupManager</a></li>
--   <li><a>igmdZone</a></li>
--   </ul>
instanceGroupManagersDelete :: Text -> Text -> Text -> InstanceGroupManagersDelete

-- | Deletes the specified managed instance group and all of the instances
--   in that group. Note that the instance group must not belong to a
--   backend service. Read Deleting an instance group for more information.
--   
--   <i>See:</i> <a>instanceGroupManagersDelete</a> smart constructor.
data InstanceGroupManagersDelete

-- | Project ID for this request.
igmdProject :: Lens' InstanceGroupManagersDelete Text

-- | The name of the managed instance group to delete.
igmdInstanceGroupManager :: Lens' InstanceGroupManagersDelete Text

-- | The name of the zone where the managed instance group is located.
igmdZone :: Lens' InstanceGroupManagersDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceGroupManagers.Delete.InstanceGroupManagersDelete
instance Data.Data.Data Network.Google.Resource.Compute.InstanceGroupManagers.Delete.InstanceGroupManagersDelete
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceGroupManagers.Delete.InstanceGroupManagersDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceGroupManagers.Delete.InstanceGroupManagersDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceGroupManagers.Delete.InstanceGroupManagersDelete


-- | Schedules a group action to delete the specified instances in the
--   managed instance group. The instances are also removed from any target
--   pools of which they were a member. This method reduces the targetSize
--   of the managed instance group by the number of instances that you
--   delete. This operation is marked as DONE when the action is scheduled
--   even if the instances are still being deleted. You must separately
--   verify the status of the deleting action with the listmanagedinstances
--   method.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceGroupManagers.deleteInstances</tt>.
module Network.Google.Resource.Compute.InstanceGroupManagers.DeleteInstances

-- | A resource alias for
--   <tt>compute.instanceGroupManagers.deleteInstances</tt> method which
--   the <a>InstanceGroupManagersDeleteInstances</a> request conforms to.
type InstanceGroupManagersDeleteInstancesResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroupManagers" :> (Capture "instanceGroupManager" Text :> ("deleteInstances" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] InstanceGroupManagersDeleteInstancesRequest :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>InstanceGroupManagersDeleteInstances</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmdiProject</a></li>
--   <li><a>igmdiInstanceGroupManager</a></li>
--   <li><a>igmdiZone</a></li>
--   <li><a>igmdiPayload</a></li>
--   </ul>
instanceGroupManagersDeleteInstances :: Text -> Text -> Text -> InstanceGroupManagersDeleteInstancesRequest -> InstanceGroupManagersDeleteInstances

-- | Schedules a group action to delete the specified instances in the
--   managed instance group. The instances are also removed from any target
--   pools of which they were a member. This method reduces the targetSize
--   of the managed instance group by the number of instances that you
--   delete. This operation is marked as DONE when the action is scheduled
--   even if the instances are still being deleted. You must separately
--   verify the status of the deleting action with the listmanagedinstances
--   method.
--   
--   <i>See:</i> <a>instanceGroupManagersDeleteInstances</a> smart
--   constructor.
data InstanceGroupManagersDeleteInstances

-- | Project ID for this request.
igmdiProject :: Lens' InstanceGroupManagersDeleteInstances Text

-- | The name of the managed instance group.
igmdiInstanceGroupManager :: Lens' InstanceGroupManagersDeleteInstances Text

-- | The name of the zone where the managed instance group is located.
igmdiZone :: Lens' InstanceGroupManagersDeleteInstances Text

-- | Multipart request metadata.
igmdiPayload :: Lens' InstanceGroupManagersDeleteInstances InstanceGroupManagersDeleteInstancesRequest
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceGroupManagers.DeleteInstances.InstanceGroupManagersDeleteInstances
instance Data.Data.Data Network.Google.Resource.Compute.InstanceGroupManagers.DeleteInstances.InstanceGroupManagersDeleteInstances
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceGroupManagers.DeleteInstances.InstanceGroupManagersDeleteInstances
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceGroupManagers.DeleteInstances.InstanceGroupManagersDeleteInstances
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceGroupManagers.DeleteInstances.InstanceGroupManagersDeleteInstances


-- | Returns all of the details about the specified managed instance group.
--   Get a list of available managed instance groups by making a list()
--   request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceGroupManagers.get</tt>.
module Network.Google.Resource.Compute.InstanceGroupManagers.Get

-- | A resource alias for <tt>compute.instanceGroupManagers.get</tt> method
--   which the <a>InstanceGroupManagersGet</a> request conforms to.
type InstanceGroupManagersGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroupManagers" :> (Capture "instanceGroupManager" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceGroupManager))))))))

-- | Creates a value of <a>InstanceGroupManagersGet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmgProject</a></li>
--   <li><a>igmgInstanceGroupManager</a></li>
--   <li><a>igmgZone</a></li>
--   </ul>
instanceGroupManagersGet :: Text -> Text -> Text -> InstanceGroupManagersGet

-- | Returns all of the details about the specified managed instance group.
--   Get a list of available managed instance groups by making a list()
--   request.
--   
--   <i>See:</i> <a>instanceGroupManagersGet</a> smart constructor.
data InstanceGroupManagersGet

-- | Project ID for this request.
igmgProject :: Lens' InstanceGroupManagersGet Text

-- | The name of the managed instance group.
igmgInstanceGroupManager :: Lens' InstanceGroupManagersGet Text

-- | The name of the zone where the managed instance group is located.
igmgZone :: Lens' InstanceGroupManagersGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceGroupManagers.Get.InstanceGroupManagersGet
instance Data.Data.Data Network.Google.Resource.Compute.InstanceGroupManagers.Get.InstanceGroupManagersGet
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceGroupManagers.Get.InstanceGroupManagersGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceGroupManagers.Get.InstanceGroupManagersGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceGroupManagers.Get.InstanceGroupManagersGet


-- | Creates a managed instance group using the information that you
--   specify in the request. After the group is created, it schedules an
--   action to create instances in the group using the specified instance
--   template. This operation is marked as DONE when the group is created
--   even if the instances in the group have not yet been created. You must
--   separately verify the status of the individual instances with the
--   listmanagedinstances method.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceGroupManagers.insert</tt>.
module Network.Google.Resource.Compute.InstanceGroupManagers.Insert

-- | A resource alias for <tt>compute.instanceGroupManagers.insert</tt>
--   method which the <a>InstanceGroupManagersInsert</a> request conforms
--   to.
type InstanceGroupManagersInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroupManagers" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] InstanceGroupManager :> Post '[JSON] Operation))))))))

-- | Creates a value of <a>InstanceGroupManagersInsert</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmiProject</a></li>
--   <li><a>igmiZone</a></li>
--   <li><a>igmiPayload</a></li>
--   </ul>
instanceGroupManagersInsert :: Text -> Text -> InstanceGroupManager -> InstanceGroupManagersInsert

-- | Creates a managed instance group using the information that you
--   specify in the request. After the group is created, it schedules an
--   action to create instances in the group using the specified instance
--   template. This operation is marked as DONE when the group is created
--   even if the instances in the group have not yet been created. You must
--   separately verify the status of the individual instances with the
--   listmanagedinstances method.
--   
--   <i>See:</i> <a>instanceGroupManagersInsert</a> smart constructor.
data InstanceGroupManagersInsert

-- | Project ID for this request.
igmiProject :: Lens' InstanceGroupManagersInsert Text

-- | The name of the zone where you want to create the managed instance
--   group.
igmiZone :: Lens' InstanceGroupManagersInsert Text

-- | Multipart request metadata.
igmiPayload :: Lens' InstanceGroupManagersInsert InstanceGroupManager
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceGroupManagers.Insert.InstanceGroupManagersInsert
instance Data.Data.Data Network.Google.Resource.Compute.InstanceGroupManagers.Insert.InstanceGroupManagersInsert
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceGroupManagers.Insert.InstanceGroupManagersInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceGroupManagers.Insert.InstanceGroupManagersInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceGroupManagers.Insert.InstanceGroupManagersInsert


-- | Retrieves a list of managed instance groups that are contained within
--   the specified project and zone.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceGroupManagers.list</tt>.
module Network.Google.Resource.Compute.InstanceGroupManagers.List

-- | A resource alias for <tt>compute.instanceGroupManagers.list</tt>
--   method which the <a>InstanceGroupManagersList</a> request conforms to.
type InstanceGroupManagersListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroupManagers" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceGroupManagerList)))))))))))

-- | Creates a value of <a>InstanceGroupManagersList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmlOrderBy</a></li>
--   <li><a>igmlProject</a></li>
--   <li><a>igmlZone</a></li>
--   <li><a>igmlFilter</a></li>
--   <li><a>igmlPageToken</a></li>
--   <li><a>igmlMaxResults</a></li>
--   </ul>
instanceGroupManagersList :: Text -> Text -> InstanceGroupManagersList

-- | Retrieves a list of managed instance groups that are contained within
--   the specified project and zone.
--   
--   <i>See:</i> <a>instanceGroupManagersList</a> smart constructor.
data InstanceGroupManagersList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
igmlOrderBy :: Lens' InstanceGroupManagersList (Maybe Text)

-- | Project ID for this request.
igmlProject :: Lens' InstanceGroupManagersList Text

-- | The name of the zone where the managed instance group is located.
igmlZone :: Lens' InstanceGroupManagersList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
igmlFilter :: Lens' InstanceGroupManagersList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
igmlPageToken :: Lens' InstanceGroupManagersList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
igmlMaxResults :: Lens' InstanceGroupManagersList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceGroupManagers.List.InstanceGroupManagersList
instance Data.Data.Data Network.Google.Resource.Compute.InstanceGroupManagers.List.InstanceGroupManagersList
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceGroupManagers.List.InstanceGroupManagersList
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceGroupManagers.List.InstanceGroupManagersList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceGroupManagers.List.InstanceGroupManagersList


-- | Lists all of the instances in the managed instance group. Each
--   instance in the list has a currentAction, which indicates the action
--   that the managed instance group is performing on the instance. For
--   example, if the group is still creating an instance, the currentAction
--   is CREATING. If a previous action failed, the list displays the errors
--   for that failed action.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceGroupManagers.listManagedInstances</tt>.
module Network.Google.Resource.Compute.InstanceGroupManagers.ListManagedInstances

-- | A resource alias for
--   <tt>compute.instanceGroupManagers.listManagedInstances</tt> method
--   which the <a>InstanceGroupManagersListManagedInstances</a> request
--   conforms to.
type InstanceGroupManagersListManagedInstancesResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroupManagers" :> (Capture "instanceGroupManager" Text :> ("listManagedInstances" :> (QueryParam "order_by" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Post '[JSON] InstanceGroupManagersListManagedInstancesResponse)))))))))))))

-- | Creates a value of <a>InstanceGroupManagersListManagedInstances</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmlmiProject</a></li>
--   <li><a>igmlmiInstanceGroupManager</a></li>
--   <li><a>igmlmiZone</a></li>
--   <li><a>igmlmiOrderBy</a></li>
--   <li><a>igmlmiFilter</a></li>
--   <li><a>igmlmiPageToken</a></li>
--   <li><a>igmlmiMaxResults</a></li>
--   </ul>
instanceGroupManagersListManagedInstances :: Text -> Text -> Text -> InstanceGroupManagersListManagedInstances

-- | Lists all of the instances in the managed instance group. Each
--   instance in the list has a currentAction, which indicates the action
--   that the managed instance group is performing on the instance. For
--   example, if the group is still creating an instance, the currentAction
--   is CREATING. If a previous action failed, the list displays the errors
--   for that failed action.
--   
--   <i>See:</i> <a>instanceGroupManagersListManagedInstances</a> smart
--   constructor.
data InstanceGroupManagersListManagedInstances

-- | Project ID for this request.
igmlmiProject :: Lens' InstanceGroupManagersListManagedInstances Text

-- | The name of the managed instance group.
igmlmiInstanceGroupManager :: Lens' InstanceGroupManagersListManagedInstances Text

-- | The name of the zone where the managed instance group is located.
igmlmiZone :: Lens' InstanceGroupManagersListManagedInstances Text
igmlmiOrderBy :: Lens' InstanceGroupManagersListManagedInstances (Maybe Text)
igmlmiFilter :: Lens' InstanceGroupManagersListManagedInstances (Maybe Text)
igmlmiPageToken :: Lens' InstanceGroupManagersListManagedInstances (Maybe Text)
igmlmiMaxResults :: Lens' InstanceGroupManagersListManagedInstances Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceGroupManagers.ListManagedInstances.InstanceGroupManagersListManagedInstances
instance Data.Data.Data Network.Google.Resource.Compute.InstanceGroupManagers.ListManagedInstances.InstanceGroupManagersListManagedInstances
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceGroupManagers.ListManagedInstances.InstanceGroupManagersListManagedInstances
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceGroupManagers.ListManagedInstances.InstanceGroupManagersListManagedInstances
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceGroupManagers.ListManagedInstances.InstanceGroupManagersListManagedInstances


-- | Schedules a group action to recreate the specified instances in the
--   managed instance group. The instances are deleted and recreated using
--   the current instance template for the managed instance group. This
--   operation is marked as DONE when the action is scheduled even if the
--   instances have not yet been recreated. You must separately verify the
--   status of the recreating action with the listmanagedinstances method.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceGroupManagers.recreateInstances</tt>.
module Network.Google.Resource.Compute.InstanceGroupManagers.RecreateInstances

-- | A resource alias for
--   <tt>compute.instanceGroupManagers.recreateInstances</tt> method which
--   the <a>InstanceGroupManagersRecreateInstances</a> request conforms to.
type InstanceGroupManagersRecreateInstancesResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroupManagers" :> (Capture "instanceGroupManager" Text :> ("recreateInstances" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] InstanceGroupManagersRecreateInstancesRequest :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>InstanceGroupManagersRecreateInstances</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmriProject</a></li>
--   <li><a>igmriInstanceGroupManager</a></li>
--   <li><a>igmriZone</a></li>
--   <li><a>igmriPayload</a></li>
--   </ul>
instanceGroupManagersRecreateInstances :: Text -> Text -> Text -> InstanceGroupManagersRecreateInstancesRequest -> InstanceGroupManagersRecreateInstances

-- | Schedules a group action to recreate the specified instances in the
--   managed instance group. The instances are deleted and recreated using
--   the current instance template for the managed instance group. This
--   operation is marked as DONE when the action is scheduled even if the
--   instances have not yet been recreated. You must separately verify the
--   status of the recreating action with the listmanagedinstances method.
--   
--   <i>See:</i> <a>instanceGroupManagersRecreateInstances</a> smart
--   constructor.
data InstanceGroupManagersRecreateInstances

-- | Project ID for this request.
igmriProject :: Lens' InstanceGroupManagersRecreateInstances Text

-- | The name of the managed instance group.
igmriInstanceGroupManager :: Lens' InstanceGroupManagersRecreateInstances Text

-- | The name of the zone where the managed instance group is located.
igmriZone :: Lens' InstanceGroupManagersRecreateInstances Text

-- | Multipart request metadata.
igmriPayload :: Lens' InstanceGroupManagersRecreateInstances InstanceGroupManagersRecreateInstancesRequest
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceGroupManagers.RecreateInstances.InstanceGroupManagersRecreateInstances
instance Data.Data.Data Network.Google.Resource.Compute.InstanceGroupManagers.RecreateInstances.InstanceGroupManagersRecreateInstances
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceGroupManagers.RecreateInstances.InstanceGroupManagersRecreateInstances
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceGroupManagers.RecreateInstances.InstanceGroupManagersRecreateInstances
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceGroupManagers.RecreateInstances.InstanceGroupManagersRecreateInstances


-- | Resizes the managed instance group. If you increase the size, the
--   group creates new instances using the current instance template. If
--   you decrease the size, the group deletes instances. The resize
--   operation is marked DONE when the resize actions are scheduled even if
--   the group has not yet added or deleted any instances. You must
--   separately verify the status of the creating or deleting actions with
--   the listmanagedinstances method.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceGroupManagers.resize</tt>.
module Network.Google.Resource.Compute.InstanceGroupManagers.Resize

-- | A resource alias for <tt>compute.instanceGroupManagers.resize</tt>
--   method which the <a>InstanceGroupManagersResize</a> request conforms
--   to.
type InstanceGroupManagersResizeResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroupManagers" :> (Capture "instanceGroupManager" Text :> ("resize" :> (QueryParam "size" (Textual Int32) :> (QueryParam "alt" AltJSON :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>InstanceGroupManagersResize</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmrProject</a></li>
--   <li><a>igmrSize</a></li>
--   <li><a>igmrInstanceGroupManager</a></li>
--   <li><a>igmrZone</a></li>
--   </ul>
instanceGroupManagersResize :: Text -> Int32 -> Text -> Text -> InstanceGroupManagersResize

-- | Resizes the managed instance group. If you increase the size, the
--   group creates new instances using the current instance template. If
--   you decrease the size, the group deletes instances. The resize
--   operation is marked DONE when the resize actions are scheduled even if
--   the group has not yet added or deleted any instances. You must
--   separately verify the status of the creating or deleting actions with
--   the listmanagedinstances method.
--   
--   <i>See:</i> <a>instanceGroupManagersResize</a> smart constructor.
data InstanceGroupManagersResize

-- | Project ID for this request.
igmrProject :: Lens' InstanceGroupManagersResize Text

-- | The number of running instances that the managed instance group should
--   maintain at any given time. The group automatically adds or removes
--   instances to maintain the number of instances specified by this
--   parameter.
igmrSize :: Lens' InstanceGroupManagersResize Int32

-- | The name of the managed instance group.
igmrInstanceGroupManager :: Lens' InstanceGroupManagersResize Text

-- | The name of the zone where the managed instance group is located.
igmrZone :: Lens' InstanceGroupManagersResize Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceGroupManagers.Resize.InstanceGroupManagersResize
instance Data.Data.Data Network.Google.Resource.Compute.InstanceGroupManagers.Resize.InstanceGroupManagersResize
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceGroupManagers.Resize.InstanceGroupManagersResize
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceGroupManagers.Resize.InstanceGroupManagersResize
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceGroupManagers.Resize.InstanceGroupManagersResize


-- | Specifies the instance template to use when creating new instances in
--   this group. The templates for existing instances in the group do not
--   change unless you recreate them.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceGroupManagers.setInstanceTemplate</tt>.
module Network.Google.Resource.Compute.InstanceGroupManagers.SetInstanceTemplate

-- | A resource alias for
--   <tt>compute.instanceGroupManagers.setInstanceTemplate</tt> method
--   which the <a>InstanceGroupManagersSetInstanceTemplate</a> request
--   conforms to.
type InstanceGroupManagersSetInstanceTemplateResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroupManagers" :> (Capture "instanceGroupManager" Text :> ("setInstanceTemplate" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] InstanceGroupManagersSetInstanceTemplateRequest :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>InstanceGroupManagersSetInstanceTemplate</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmsitProject</a></li>
--   <li><a>igmsitInstanceGroupManager</a></li>
--   <li><a>igmsitZone</a></li>
--   <li><a>igmsitPayload</a></li>
--   </ul>
instanceGroupManagersSetInstanceTemplate :: Text -> Text -> Text -> InstanceGroupManagersSetInstanceTemplateRequest -> InstanceGroupManagersSetInstanceTemplate

-- | Specifies the instance template to use when creating new instances in
--   this group. The templates for existing instances in the group do not
--   change unless you recreate them.
--   
--   <i>See:</i> <a>instanceGroupManagersSetInstanceTemplate</a> smart
--   constructor.
data InstanceGroupManagersSetInstanceTemplate

-- | Project ID for this request.
igmsitProject :: Lens' InstanceGroupManagersSetInstanceTemplate Text

-- | The name of the managed instance group.
igmsitInstanceGroupManager :: Lens' InstanceGroupManagersSetInstanceTemplate Text

-- | The name of the zone where the managed instance group is located.
igmsitZone :: Lens' InstanceGroupManagersSetInstanceTemplate Text

-- | Multipart request metadata.
igmsitPayload :: Lens' InstanceGroupManagersSetInstanceTemplate InstanceGroupManagersSetInstanceTemplateRequest
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceGroupManagers.SetInstanceTemplate.InstanceGroupManagersSetInstanceTemplate
instance Data.Data.Data Network.Google.Resource.Compute.InstanceGroupManagers.SetInstanceTemplate.InstanceGroupManagersSetInstanceTemplate
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceGroupManagers.SetInstanceTemplate.InstanceGroupManagersSetInstanceTemplate
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceGroupManagers.SetInstanceTemplate.InstanceGroupManagersSetInstanceTemplate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceGroupManagers.SetInstanceTemplate.InstanceGroupManagersSetInstanceTemplate


-- | Modifies the target pools to which all instances in this managed
--   instance group are assigned. The target pools automatically apply to
--   all of the instances in the managed instance group. This operation is
--   marked DONE when you make the request even if the instances have not
--   yet been added to their target pools. The change might take some time
--   to apply to all of the instances in the group depending on the size of
--   the group.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceGroupManagers.setTargetPools</tt>.
module Network.Google.Resource.Compute.InstanceGroupManagers.SetTargetPools

-- | A resource alias for
--   <tt>compute.instanceGroupManagers.setTargetPools</tt> method which the
--   <a>InstanceGroupManagersSetTargetPools</a> request conforms to.
type InstanceGroupManagersSetTargetPoolsResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroupManagers" :> (Capture "instanceGroupManager" Text :> ("setTargetPools" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] InstanceGroupManagersSetTargetPoolsRequest :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>InstanceGroupManagersSetTargetPools</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmstpProject</a></li>
--   <li><a>igmstpInstanceGroupManager</a></li>
--   <li><a>igmstpZone</a></li>
--   <li><a>igmstpPayload</a></li>
--   </ul>
instanceGroupManagersSetTargetPools :: Text -> Text -> Text -> InstanceGroupManagersSetTargetPoolsRequest -> InstanceGroupManagersSetTargetPools

-- | Modifies the target pools to which all instances in this managed
--   instance group are assigned. The target pools automatically apply to
--   all of the instances in the managed instance group. This operation is
--   marked DONE when you make the request even if the instances have not
--   yet been added to their target pools. The change might take some time
--   to apply to all of the instances in the group depending on the size of
--   the group.
--   
--   <i>See:</i> <a>instanceGroupManagersSetTargetPools</a> smart
--   constructor.
data InstanceGroupManagersSetTargetPools

-- | Project ID for this request.
igmstpProject :: Lens' InstanceGroupManagersSetTargetPools Text

-- | The name of the managed instance group.
igmstpInstanceGroupManager :: Lens' InstanceGroupManagersSetTargetPools Text

-- | The name of the zone where the managed instance group is located.
igmstpZone :: Lens' InstanceGroupManagersSetTargetPools Text

-- | Multipart request metadata.
igmstpPayload :: Lens' InstanceGroupManagersSetTargetPools InstanceGroupManagersSetTargetPoolsRequest
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceGroupManagers.SetTargetPools.InstanceGroupManagersSetTargetPools
instance Data.Data.Data Network.Google.Resource.Compute.InstanceGroupManagers.SetTargetPools.InstanceGroupManagersSetTargetPools
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceGroupManagers.SetTargetPools.InstanceGroupManagersSetTargetPools
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceGroupManagers.SetTargetPools.InstanceGroupManagersSetTargetPools
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceGroupManagers.SetTargetPools.InstanceGroupManagersSetTargetPools


-- | Adds a list of instances to the specified instance group. All of the
--   instances in the instance group must be in the same
--   network/subnetwork. Read Adding instances for more information.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceGroups.addInstances</tt>.
module Network.Google.Resource.Compute.InstanceGroups.AddInstances

-- | A resource alias for <tt>compute.instanceGroups.addInstances</tt>
--   method which the <a>InstanceGroupsAddInstances</a> request conforms
--   to.
type InstanceGroupsAddInstancesResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroups" :> (Capture "instanceGroup" Text :> ("addInstances" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] InstanceGroupsAddInstancesRequest :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>InstanceGroupsAddInstances</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igaiProject</a></li>
--   <li><a>igaiZone</a></li>
--   <li><a>igaiPayload</a></li>
--   <li><a>igaiInstanceGroup</a></li>
--   </ul>
instanceGroupsAddInstances :: Text -> Text -> InstanceGroupsAddInstancesRequest -> Text -> InstanceGroupsAddInstances

-- | Adds a list of instances to the specified instance group. All of the
--   instances in the instance group must be in the same
--   network/subnetwork. Read Adding instances for more information.
--   
--   <i>See:</i> <a>instanceGroupsAddInstances</a> smart constructor.
data InstanceGroupsAddInstances

-- | Project ID for this request.
igaiProject :: Lens' InstanceGroupsAddInstances Text

-- | The name of the zone where the instance group is located.
igaiZone :: Lens' InstanceGroupsAddInstances Text

-- | Multipart request metadata.
igaiPayload :: Lens' InstanceGroupsAddInstances InstanceGroupsAddInstancesRequest

-- | The name of the instance group where you are adding instances.
igaiInstanceGroup :: Lens' InstanceGroupsAddInstances Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceGroups.AddInstances.InstanceGroupsAddInstances
instance Data.Data.Data Network.Google.Resource.Compute.InstanceGroups.AddInstances.InstanceGroupsAddInstances
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceGroups.AddInstances.InstanceGroupsAddInstances
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceGroups.AddInstances.InstanceGroupsAddInstances
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceGroups.AddInstances.InstanceGroupsAddInstances


-- | Retrieves the list of instance groups and sorts them by zone.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceGroups.aggregatedList</tt>.
module Network.Google.Resource.Compute.InstanceGroups.AggregatedList

-- | A resource alias for <tt>compute.instanceGroups.aggregatedList</tt>
--   method which the <a>InstanceGroupsAggregatedList</a> request conforms
--   to.
type InstanceGroupsAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("instanceGroups" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceGroupAggregatedList))))))))))

-- | Creates a value of <a>InstanceGroupsAggregatedList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igalOrderBy</a></li>
--   <li><a>igalProject</a></li>
--   <li><a>igalFilter</a></li>
--   <li><a>igalPageToken</a></li>
--   <li><a>igalMaxResults</a></li>
--   </ul>
instanceGroupsAggregatedList :: Text -> InstanceGroupsAggregatedList

-- | Retrieves the list of instance groups and sorts them by zone.
--   
--   <i>See:</i> <a>instanceGroupsAggregatedList</a> smart constructor.
data InstanceGroupsAggregatedList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
igalOrderBy :: Lens' InstanceGroupsAggregatedList (Maybe Text)

-- | Project ID for this request.
igalProject :: Lens' InstanceGroupsAggregatedList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
igalFilter :: Lens' InstanceGroupsAggregatedList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
igalPageToken :: Lens' InstanceGroupsAggregatedList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
igalMaxResults :: Lens' InstanceGroupsAggregatedList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceGroups.AggregatedList.InstanceGroupsAggregatedList
instance Data.Data.Data Network.Google.Resource.Compute.InstanceGroups.AggregatedList.InstanceGroupsAggregatedList
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceGroups.AggregatedList.InstanceGroupsAggregatedList
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceGroups.AggregatedList.InstanceGroupsAggregatedList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceGroups.AggregatedList.InstanceGroupsAggregatedList


-- | Deletes the specified instance group. The instances in the group are
--   not deleted. Note that instance group must not belong to a backend
--   service. Read Deleting an instance group for more information.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceGroups.delete</tt>.
module Network.Google.Resource.Compute.InstanceGroups.Delete

-- | A resource alias for <tt>compute.instanceGroups.delete</tt> method
--   which the <a>InstanceGroupsDelete</a> request conforms to.
type InstanceGroupsDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroups" :> (Capture "instanceGroup" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation))))))))

-- | Creates a value of <a>InstanceGroupsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igdProject</a></li>
--   <li><a>igdZone</a></li>
--   <li><a>igdInstanceGroup</a></li>
--   </ul>
instanceGroupsDelete :: Text -> Text -> Text -> InstanceGroupsDelete

-- | Deletes the specified instance group. The instances in the group are
--   not deleted. Note that instance group must not belong to a backend
--   service. Read Deleting an instance group for more information.
--   
--   <i>See:</i> <a>instanceGroupsDelete</a> smart constructor.
data InstanceGroupsDelete

-- | Project ID for this request.
igdProject :: Lens' InstanceGroupsDelete Text

-- | The name of the zone where the instance group is located.
igdZone :: Lens' InstanceGroupsDelete Text

-- | The name of the instance group to delete.
igdInstanceGroup :: Lens' InstanceGroupsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceGroups.Delete.InstanceGroupsDelete
instance Data.Data.Data Network.Google.Resource.Compute.InstanceGroups.Delete.InstanceGroupsDelete
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceGroups.Delete.InstanceGroupsDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceGroups.Delete.InstanceGroupsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceGroups.Delete.InstanceGroupsDelete


-- | Returns the specified instance group. Get a list of available instance
--   groups by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceGroups.get</tt>.
module Network.Google.Resource.Compute.InstanceGroups.Get

-- | A resource alias for <tt>compute.instanceGroups.get</tt> method which
--   the <a>InstanceGroupsGet</a> request conforms to.
type InstanceGroupsGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroups" :> (Capture "instanceGroup" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceGroup))))))))

-- | Creates a value of <a>InstanceGroupsGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iggProject</a></li>
--   <li><a>iggZone</a></li>
--   <li><a>iggInstanceGroup</a></li>
--   </ul>
instanceGroupsGet :: Text -> Text -> Text -> InstanceGroupsGet

-- | Returns the specified instance group. Get a list of available instance
--   groups by making a list() request.
--   
--   <i>See:</i> <a>instanceGroupsGet</a> smart constructor.
data InstanceGroupsGet

-- | Project ID for this request.
iggProject :: Lens' InstanceGroupsGet Text

-- | The name of the zone where the instance group is located.
iggZone :: Lens' InstanceGroupsGet Text

-- | The name of the instance group.
iggInstanceGroup :: Lens' InstanceGroupsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceGroups.Get.InstanceGroupsGet
instance Data.Data.Data Network.Google.Resource.Compute.InstanceGroups.Get.InstanceGroupsGet
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceGroups.Get.InstanceGroupsGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceGroups.Get.InstanceGroupsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceGroups.Get.InstanceGroupsGet


-- | Creates an instance group in the specified project using the
--   parameters that are included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceGroups.insert</tt>.
module Network.Google.Resource.Compute.InstanceGroups.Insert

-- | A resource alias for <tt>compute.instanceGroups.insert</tt> method
--   which the <a>InstanceGroupsInsert</a> request conforms to.
type InstanceGroupsInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroups" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] InstanceGroup :> Post '[JSON] Operation))))))))

-- | Creates a value of <a>InstanceGroupsInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igiProject</a></li>
--   <li><a>igiZone</a></li>
--   <li><a>igiPayload</a></li>
--   </ul>
instanceGroupsInsert :: Text -> Text -> InstanceGroup -> InstanceGroupsInsert

-- | Creates an instance group in the specified project using the
--   parameters that are included in the request.
--   
--   <i>See:</i> <a>instanceGroupsInsert</a> smart constructor.
data InstanceGroupsInsert

-- | Project ID for this request.
igiProject :: Lens' InstanceGroupsInsert Text

-- | The name of the zone where you want to create the instance group.
igiZone :: Lens' InstanceGroupsInsert Text

-- | Multipart request metadata.
igiPayload :: Lens' InstanceGroupsInsert InstanceGroup
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceGroups.Insert.InstanceGroupsInsert
instance Data.Data.Data Network.Google.Resource.Compute.InstanceGroups.Insert.InstanceGroupsInsert
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceGroups.Insert.InstanceGroupsInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceGroups.Insert.InstanceGroupsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceGroups.Insert.InstanceGroupsInsert


-- | Retrieves the list of instance groups that are located in the
--   specified project and zone.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceGroups.list</tt>.
module Network.Google.Resource.Compute.InstanceGroups.List

-- | A resource alias for <tt>compute.instanceGroups.list</tt> method which
--   the <a>InstanceGroupsList</a> request conforms to.
type InstanceGroupsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroups" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceGroupList)))))))))))

-- | Creates a value of <a>InstanceGroupsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iglOrderBy</a></li>
--   <li><a>iglProject</a></li>
--   <li><a>iglZone</a></li>
--   <li><a>iglFilter</a></li>
--   <li><a>iglPageToken</a></li>
--   <li><a>iglMaxResults</a></li>
--   </ul>
instanceGroupsList :: Text -> Text -> InstanceGroupsList

-- | Retrieves the list of instance groups that are located in the
--   specified project and zone.
--   
--   <i>See:</i> <a>instanceGroupsList</a> smart constructor.
data InstanceGroupsList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
iglOrderBy :: Lens' InstanceGroupsList (Maybe Text)

-- | Project ID for this request.
iglProject :: Lens' InstanceGroupsList Text

-- | The name of the zone where the instance group is located.
iglZone :: Lens' InstanceGroupsList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
iglFilter :: Lens' InstanceGroupsList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
iglPageToken :: Lens' InstanceGroupsList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
iglMaxResults :: Lens' InstanceGroupsList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceGroups.List.InstanceGroupsList
instance Data.Data.Data Network.Google.Resource.Compute.InstanceGroups.List.InstanceGroupsList
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceGroups.List.InstanceGroupsList
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceGroups.List.InstanceGroupsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceGroups.List.InstanceGroupsList


-- | Lists the instances in the specified instance group.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceGroups.listInstances</tt>.
module Network.Google.Resource.Compute.InstanceGroups.ListInstances

-- | A resource alias for <tt>compute.instanceGroups.listInstances</tt>
--   method which the <a>InstanceGroupsListInstances'</a> request conforms
--   to.
type InstanceGroupsListInstancesResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroups" :> (Capture "instanceGroup" Text :> ("listInstances" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] InstanceGroupsListInstancesRequest :> Post '[JSON] InstanceGroupsListInstances))))))))))))))

-- | Creates a value of <a>InstanceGroupsListInstances'</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igliOrderBy</a></li>
--   <li><a>igliProject</a></li>
--   <li><a>igliZone</a></li>
--   <li><a>igliPayload</a></li>
--   <li><a>igliFilter</a></li>
--   <li><a>igliPageToken</a></li>
--   <li><a>igliInstanceGroup</a></li>
--   <li><a>igliMaxResults</a></li>
--   </ul>
instanceGroupsListInstances' :: Text -> Text -> InstanceGroupsListInstancesRequest -> Text -> InstanceGroupsListInstances'

-- | Lists the instances in the specified instance group.
--   
--   <i>See:</i> <a>instanceGroupsListInstances'</a> smart constructor.
data InstanceGroupsListInstances'

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
igliOrderBy :: Lens' InstanceGroupsListInstances' (Maybe Text)

-- | Project ID for this request.
igliProject :: Lens' InstanceGroupsListInstances' Text

-- | The name of the zone where the instance group is located.
igliZone :: Lens' InstanceGroupsListInstances' Text

-- | Multipart request metadata.
igliPayload :: Lens' InstanceGroupsListInstances' InstanceGroupsListInstancesRequest

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
igliFilter :: Lens' InstanceGroupsListInstances' (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
igliPageToken :: Lens' InstanceGroupsListInstances' (Maybe Text)

-- | The name of the instance group from which you want to generate a list
--   of included instances.
igliInstanceGroup :: Lens' InstanceGroupsListInstances' Text

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
igliMaxResults :: Lens' InstanceGroupsListInstances' Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceGroups.ListInstances.InstanceGroupsListInstances'
instance Data.Data.Data Network.Google.Resource.Compute.InstanceGroups.ListInstances.InstanceGroupsListInstances'
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceGroups.ListInstances.InstanceGroupsListInstances'
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceGroups.ListInstances.InstanceGroupsListInstances'
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceGroups.ListInstances.InstanceGroupsListInstances'


-- | Removes one or more instances from the specified instance group, but
--   does not delete those instances.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceGroups.removeInstances</tt>.
module Network.Google.Resource.Compute.InstanceGroups.RemoveInstances

-- | A resource alias for <tt>compute.instanceGroups.removeInstances</tt>
--   method which the <a>InstanceGroupsRemoveInstances</a> request conforms
--   to.
type InstanceGroupsRemoveInstancesResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroups" :> (Capture "instanceGroup" Text :> ("removeInstances" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] InstanceGroupsRemoveInstancesRequest :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>InstanceGroupsRemoveInstances</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igriProject</a></li>
--   <li><a>igriZone</a></li>
--   <li><a>igriPayload</a></li>
--   <li><a>igriInstanceGroup</a></li>
--   </ul>
instanceGroupsRemoveInstances :: Text -> Text -> InstanceGroupsRemoveInstancesRequest -> Text -> InstanceGroupsRemoveInstances

-- | Removes one or more instances from the specified instance group, but
--   does not delete those instances.
--   
--   <i>See:</i> <a>instanceGroupsRemoveInstances</a> smart constructor.
data InstanceGroupsRemoveInstances

-- | Project ID for this request.
igriProject :: Lens' InstanceGroupsRemoveInstances Text

-- | The name of the zone where the instance group is located.
igriZone :: Lens' InstanceGroupsRemoveInstances Text

-- | Multipart request metadata.
igriPayload :: Lens' InstanceGroupsRemoveInstances InstanceGroupsRemoveInstancesRequest

-- | The name of the instance group where the specified instances will be
--   removed.
igriInstanceGroup :: Lens' InstanceGroupsRemoveInstances Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceGroups.RemoveInstances.InstanceGroupsRemoveInstances
instance Data.Data.Data Network.Google.Resource.Compute.InstanceGroups.RemoveInstances.InstanceGroupsRemoveInstances
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceGroups.RemoveInstances.InstanceGroupsRemoveInstances
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceGroups.RemoveInstances.InstanceGroupsRemoveInstances
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceGroups.RemoveInstances.InstanceGroupsRemoveInstances


-- | Sets the named ports for the specified instance group.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceGroups.setNamedPorts</tt>.
module Network.Google.Resource.Compute.InstanceGroups.SetNamedPorts

-- | A resource alias for <tt>compute.instanceGroups.setNamedPorts</tt>
--   method which the <a>InstanceGroupsSetNamedPorts</a> request conforms
--   to.
type InstanceGroupsSetNamedPortsResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instanceGroups" :> (Capture "instanceGroup" Text :> ("setNamedPorts" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] InstanceGroupsSetNamedPortsRequest :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>InstanceGroupsSetNamedPorts</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igsnpProject</a></li>
--   <li><a>igsnpZone</a></li>
--   <li><a>igsnpPayload</a></li>
--   <li><a>igsnpInstanceGroup</a></li>
--   </ul>
instanceGroupsSetNamedPorts :: Text -> Text -> InstanceGroupsSetNamedPortsRequest -> Text -> InstanceGroupsSetNamedPorts

-- | Sets the named ports for the specified instance group.
--   
--   <i>See:</i> <a>instanceGroupsSetNamedPorts</a> smart constructor.
data InstanceGroupsSetNamedPorts

-- | Project ID for this request.
igsnpProject :: Lens' InstanceGroupsSetNamedPorts Text

-- | The name of the zone where the instance group is located.
igsnpZone :: Lens' InstanceGroupsSetNamedPorts Text

-- | Multipart request metadata.
igsnpPayload :: Lens' InstanceGroupsSetNamedPorts InstanceGroupsSetNamedPortsRequest

-- | The name of the instance group where the named ports are updated.
igsnpInstanceGroup :: Lens' InstanceGroupsSetNamedPorts Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceGroups.SetNamedPorts.InstanceGroupsSetNamedPorts
instance Data.Data.Data Network.Google.Resource.Compute.InstanceGroups.SetNamedPorts.InstanceGroupsSetNamedPorts
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceGroups.SetNamedPorts.InstanceGroupsSetNamedPorts
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceGroups.SetNamedPorts.InstanceGroupsSetNamedPorts
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceGroups.SetNamedPorts.InstanceGroupsSetNamedPorts


-- | Deletes the specified instance template. If you delete an instance
--   template that is being referenced from another instance group, the
--   instance group will not be able to create or recreate virtual machine
--   instances. Deleting an instance template is permanent and cannot be
--   undone.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceTemplates.delete</tt>.
module Network.Google.Resource.Compute.InstanceTemplates.Delete

-- | A resource alias for <tt>compute.instanceTemplates.delete</tt> method
--   which the <a>InstanceTemplatesDelete</a> request conforms to.
type InstanceTemplatesDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("instanceTemplates" :> (Capture "instanceTemplate" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation)))))))

-- | Creates a value of <a>InstanceTemplatesDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>itdProject</a></li>
--   <li><a>itdInstanceTemplate</a></li>
--   </ul>
instanceTemplatesDelete :: Text -> Text -> InstanceTemplatesDelete

-- | Deletes the specified instance template. If you delete an instance
--   template that is being referenced from another instance group, the
--   instance group will not be able to create or recreate virtual machine
--   instances. Deleting an instance template is permanent and cannot be
--   undone.
--   
--   <i>See:</i> <a>instanceTemplatesDelete</a> smart constructor.
data InstanceTemplatesDelete

-- | Project ID for this request.
itdProject :: Lens' InstanceTemplatesDelete Text

-- | The name of the instance template to delete.
itdInstanceTemplate :: Lens' InstanceTemplatesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceTemplates.Delete.InstanceTemplatesDelete
instance Data.Data.Data Network.Google.Resource.Compute.InstanceTemplates.Delete.InstanceTemplatesDelete
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceTemplates.Delete.InstanceTemplatesDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceTemplates.Delete.InstanceTemplatesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceTemplates.Delete.InstanceTemplatesDelete


-- | Returns the specified instance template. Get a list of available
--   instance templates by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceTemplates.get</tt>.
module Network.Google.Resource.Compute.InstanceTemplates.Get

-- | A resource alias for <tt>compute.instanceTemplates.get</tt> method
--   which the <a>InstanceTemplatesGet</a> request conforms to.
type InstanceTemplatesGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("instanceTemplates" :> (Capture "instanceTemplate" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceTemplate)))))))

-- | Creates a value of <a>InstanceTemplatesGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>itgProject</a></li>
--   <li><a>itgInstanceTemplate</a></li>
--   </ul>
instanceTemplatesGet :: Text -> Text -> InstanceTemplatesGet

-- | Returns the specified instance template. Get a list of available
--   instance templates by making a list() request.
--   
--   <i>See:</i> <a>instanceTemplatesGet</a> smart constructor.
data InstanceTemplatesGet

-- | Project ID for this request.
itgProject :: Lens' InstanceTemplatesGet Text

-- | The name of the instance template.
itgInstanceTemplate :: Lens' InstanceTemplatesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceTemplates.Get.InstanceTemplatesGet
instance Data.Data.Data Network.Google.Resource.Compute.InstanceTemplates.Get.InstanceTemplatesGet
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceTemplates.Get.InstanceTemplatesGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceTemplates.Get.InstanceTemplatesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceTemplates.Get.InstanceTemplatesGet


-- | Creates an instance template in the specified project using the data
--   that is included in the request. If you are creating a new template to
--   update an existing instance group, your new instance template must use
--   the same network or, if applicable, the same subnetwork as the
--   original template.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceTemplates.insert</tt>.
module Network.Google.Resource.Compute.InstanceTemplates.Insert

-- | A resource alias for <tt>compute.instanceTemplates.insert</tt> method
--   which the <a>InstanceTemplatesInsert</a> request conforms to.
type InstanceTemplatesInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("instanceTemplates" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] InstanceTemplate :> Post '[JSON] Operation)))))))

-- | Creates a value of <a>InstanceTemplatesInsert</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>itiProject</a></li>
--   <li><a>itiPayload</a></li>
--   </ul>
instanceTemplatesInsert :: Text -> InstanceTemplate -> InstanceTemplatesInsert

-- | Creates an instance template in the specified project using the data
--   that is included in the request. If you are creating a new template to
--   update an existing instance group, your new instance template must use
--   the same network or, if applicable, the same subnetwork as the
--   original template.
--   
--   <i>See:</i> <a>instanceTemplatesInsert</a> smart constructor.
data InstanceTemplatesInsert

-- | Project ID for this request.
itiProject :: Lens' InstanceTemplatesInsert Text

-- | Multipart request metadata.
itiPayload :: Lens' InstanceTemplatesInsert InstanceTemplate
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceTemplates.Insert.InstanceTemplatesInsert
instance Data.Data.Data Network.Google.Resource.Compute.InstanceTemplates.Insert.InstanceTemplatesInsert
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceTemplates.Insert.InstanceTemplatesInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceTemplates.Insert.InstanceTemplatesInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceTemplates.Insert.InstanceTemplatesInsert


-- | Retrieves a list of instance templates that are contained within the
--   specified project and zone.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instanceTemplates.list</tt>.
module Network.Google.Resource.Compute.InstanceTemplates.List

-- | A resource alias for <tt>compute.instanceTemplates.list</tt> method
--   which the <a>InstanceTemplatesList</a> request conforms to.
type InstanceTemplatesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("instanceTemplates" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceTemplateList))))))))))

-- | Creates a value of <a>InstanceTemplatesList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>itlOrderBy</a></li>
--   <li><a>itlProject</a></li>
--   <li><a>itlFilter</a></li>
--   <li><a>itlPageToken</a></li>
--   <li><a>itlMaxResults</a></li>
--   </ul>
instanceTemplatesList :: Text -> InstanceTemplatesList

-- | Retrieves a list of instance templates that are contained within the
--   specified project and zone.
--   
--   <i>See:</i> <a>instanceTemplatesList</a> smart constructor.
data InstanceTemplatesList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
itlOrderBy :: Lens' InstanceTemplatesList (Maybe Text)

-- | Project ID for this request.
itlProject :: Lens' InstanceTemplatesList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
itlFilter :: Lens' InstanceTemplatesList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
itlPageToken :: Lens' InstanceTemplatesList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
itlMaxResults :: Lens' InstanceTemplatesList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.InstanceTemplates.List.InstanceTemplatesList
instance Data.Data.Data Network.Google.Resource.Compute.InstanceTemplates.List.InstanceTemplatesList
instance GHC.Show.Show Network.Google.Resource.Compute.InstanceTemplates.List.InstanceTemplatesList
instance GHC.Classes.Eq Network.Google.Resource.Compute.InstanceTemplates.List.InstanceTemplatesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.InstanceTemplates.List.InstanceTemplatesList


-- | Adds an access config to an instance's network interface.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instances.addAccessConfig</tt>.
module Network.Google.Resource.Compute.Instances.AddAccessConfig

-- | A resource alias for <tt>compute.instances.addAccessConfig</tt> method
--   which the <a>InstancesAddAccessConfig</a> request conforms to.
type InstancesAddAccessConfigResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instances" :> (Capture "instance" Text :> ("addAccessConfig" :> (QueryParam "networkInterface" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] AccessConfig :> Post '[JSON] Operation)))))))))))

-- | Creates a value of <a>InstancesAddAccessConfig</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iaacProject</a></li>
--   <li><a>iaacNetworkInterface</a></li>
--   <li><a>iaacZone</a></li>
--   <li><a>iaacPayload</a></li>
--   <li><a>iaacInstance</a></li>
--   </ul>
instancesAddAccessConfig :: Text -> Text -> Text -> AccessConfig -> Text -> InstancesAddAccessConfig

-- | Adds an access config to an instance's network interface.
--   
--   <i>See:</i> <a>instancesAddAccessConfig</a> smart constructor.
data InstancesAddAccessConfig

-- | Project ID for this request.
iaacProject :: Lens' InstancesAddAccessConfig Text

-- | The name of the network interface to add to this instance.
iaacNetworkInterface :: Lens' InstancesAddAccessConfig Text

-- | The name of the zone for this request.
iaacZone :: Lens' InstancesAddAccessConfig Text

-- | Multipart request metadata.
iaacPayload :: Lens' InstancesAddAccessConfig AccessConfig

-- | The instance name for this request.
iaacInstance :: Lens' InstancesAddAccessConfig Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Instances.AddAccessConfig.InstancesAddAccessConfig
instance Data.Data.Data Network.Google.Resource.Compute.Instances.AddAccessConfig.InstancesAddAccessConfig
instance GHC.Show.Show Network.Google.Resource.Compute.Instances.AddAccessConfig.InstancesAddAccessConfig
instance GHC.Classes.Eq Network.Google.Resource.Compute.Instances.AddAccessConfig.InstancesAddAccessConfig
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Instances.AddAccessConfig.InstancesAddAccessConfig


-- | Retrieves aggregated list of instances.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instances.aggregatedList</tt>.
module Network.Google.Resource.Compute.Instances.AggregatedList

-- | A resource alias for <tt>compute.instances.aggregatedList</tt> method
--   which the <a>InstancesAggregatedList</a> request conforms to.
type InstancesAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("instances" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceAggregatedList))))))))))

-- | Creates a value of <a>InstancesAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ialOrderBy</a></li>
--   <li><a>ialProject</a></li>
--   <li><a>ialFilter</a></li>
--   <li><a>ialPageToken</a></li>
--   <li><a>ialMaxResults</a></li>
--   </ul>
instancesAggregatedList :: Text -> InstancesAggregatedList

-- | Retrieves aggregated list of instances.
--   
--   <i>See:</i> <a>instancesAggregatedList</a> smart constructor.
data InstancesAggregatedList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
ialOrderBy :: Lens' InstancesAggregatedList (Maybe Text)

-- | Project ID for this request.
ialProject :: Lens' InstancesAggregatedList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
ialFilter :: Lens' InstancesAggregatedList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
ialPageToken :: Lens' InstancesAggregatedList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
ialMaxResults :: Lens' InstancesAggregatedList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.Instances.AggregatedList.InstancesAggregatedList
instance Data.Data.Data Network.Google.Resource.Compute.Instances.AggregatedList.InstancesAggregatedList
instance GHC.Show.Show Network.Google.Resource.Compute.Instances.AggregatedList.InstancesAggregatedList
instance GHC.Classes.Eq Network.Google.Resource.Compute.Instances.AggregatedList.InstancesAggregatedList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Instances.AggregatedList.InstancesAggregatedList


-- | Attaches a Disk resource to an instance.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instances.attachDisk</tt>.
module Network.Google.Resource.Compute.Instances.AttachDisk

-- | A resource alias for <tt>compute.instances.attachDisk</tt> method
--   which the <a>InstancesAttachDisk</a> request conforms to.
type InstancesAttachDiskResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instances" :> (Capture "instance" Text :> ("attachDisk" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] AttachedDisk :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>InstancesAttachDisk</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iadProject</a></li>
--   <li><a>iadZone</a></li>
--   <li><a>iadPayload</a></li>
--   <li><a>iadInstance</a></li>
--   </ul>
instancesAttachDisk :: Text -> Text -> AttachedDisk -> Text -> InstancesAttachDisk

-- | Attaches a Disk resource to an instance.
--   
--   <i>See:</i> <a>instancesAttachDisk</a> smart constructor.
data InstancesAttachDisk

-- | Project ID for this request.
iadProject :: Lens' InstancesAttachDisk Text

-- | The name of the zone for this request.
iadZone :: Lens' InstancesAttachDisk Text

-- | Multipart request metadata.
iadPayload :: Lens' InstancesAttachDisk AttachedDisk

-- | The instance name for this request.
iadInstance :: Lens' InstancesAttachDisk Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Instances.AttachDisk.InstancesAttachDisk
instance Data.Data.Data Network.Google.Resource.Compute.Instances.AttachDisk.InstancesAttachDisk
instance GHC.Show.Show Network.Google.Resource.Compute.Instances.AttachDisk.InstancesAttachDisk
instance GHC.Classes.Eq Network.Google.Resource.Compute.Instances.AttachDisk.InstancesAttachDisk
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Instances.AttachDisk.InstancesAttachDisk


-- | Deletes the specified Instance resource. For more information, see
--   Stopping or Deleting an Instance.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instances.delete</tt>.
module Network.Google.Resource.Compute.Instances.Delete

-- | A resource alias for <tt>compute.instances.delete</tt> method which
--   the <a>InstancesDelete</a> request conforms to.
type InstancesDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instances" :> (Capture "instance" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation))))))))

-- | Creates a value of <a>InstancesDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>idProject</a></li>
--   <li><a>idZone</a></li>
--   <li><a>idInstance</a></li>
--   </ul>
instancesDelete :: Text -> Text -> Text -> InstancesDelete

-- | Deletes the specified Instance resource. For more information, see
--   Stopping or Deleting an Instance.
--   
--   <i>See:</i> <a>instancesDelete</a> smart constructor.
data InstancesDelete

-- | Project ID for this request.
idProject :: Lens' InstancesDelete Text

-- | The name of the zone for this request.
idZone :: Lens' InstancesDelete Text

-- | Name of the instance resource to delete.
idInstance :: Lens' InstancesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Instances.Delete.InstancesDelete
instance Data.Data.Data Network.Google.Resource.Compute.Instances.Delete.InstancesDelete
instance GHC.Show.Show Network.Google.Resource.Compute.Instances.Delete.InstancesDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.Instances.Delete.InstancesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Instances.Delete.InstancesDelete


-- | Deletes an access config from an instance's network interface.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instances.deleteAccessConfig</tt>.
module Network.Google.Resource.Compute.Instances.DeleteAccessConfig

-- | A resource alias for <tt>compute.instances.deleteAccessConfig</tt>
--   method which the <a>InstancesDeleteAccessConfig</a> request conforms
--   to.
type InstancesDeleteAccessConfigResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instances" :> (Capture "instance" Text :> ("deleteAccessConfig" :> (QueryParam "accessConfig" Text :> (QueryParam "networkInterface" Text :> (QueryParam "alt" AltJSON :> Post '[JSON] Operation)))))))))))

-- | Creates a value of <a>InstancesDeleteAccessConfig</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>idacProject</a></li>
--   <li><a>idacNetworkInterface</a></li>
--   <li><a>idacZone</a></li>
--   <li><a>idacAccessConfig</a></li>
--   <li><a>idacInstance</a></li>
--   </ul>
instancesDeleteAccessConfig :: Text -> Text -> Text -> Text -> Text -> InstancesDeleteAccessConfig

-- | Deletes an access config from an instance's network interface.
--   
--   <i>See:</i> <a>instancesDeleteAccessConfig</a> smart constructor.
data InstancesDeleteAccessConfig

-- | Project ID for this request.
idacProject :: Lens' InstancesDeleteAccessConfig Text

-- | The name of the network interface.
idacNetworkInterface :: Lens' InstancesDeleteAccessConfig Text

-- | The name of the zone for this request.
idacZone :: Lens' InstancesDeleteAccessConfig Text

-- | The name of the access config to delete.
idacAccessConfig :: Lens' InstancesDeleteAccessConfig Text

-- | The instance name for this request.
idacInstance :: Lens' InstancesDeleteAccessConfig Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Instances.DeleteAccessConfig.InstancesDeleteAccessConfig
instance Data.Data.Data Network.Google.Resource.Compute.Instances.DeleteAccessConfig.InstancesDeleteAccessConfig
instance GHC.Show.Show Network.Google.Resource.Compute.Instances.DeleteAccessConfig.InstancesDeleteAccessConfig
instance GHC.Classes.Eq Network.Google.Resource.Compute.Instances.DeleteAccessConfig.InstancesDeleteAccessConfig
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Instances.DeleteAccessConfig.InstancesDeleteAccessConfig


-- | Detaches a disk from an instance.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instances.detachDisk</tt>.
module Network.Google.Resource.Compute.Instances.DetachDisk

-- | A resource alias for <tt>compute.instances.detachDisk</tt> method
--   which the <a>InstancesDetachDisk</a> request conforms to.
type InstancesDetachDiskResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instances" :> (Capture "instance" Text :> ("detachDisk" :> (QueryParam "deviceName" Text :> (QueryParam "alt" AltJSON :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>InstancesDetachDisk</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iddProject</a></li>
--   <li><a>iddZone</a></li>
--   <li><a>iddDeviceName</a></li>
--   <li><a>iddInstance</a></li>
--   </ul>
instancesDetachDisk :: Text -> Text -> Text -> Text -> InstancesDetachDisk

-- | Detaches a disk from an instance.
--   
--   <i>See:</i> <a>instancesDetachDisk</a> smart constructor.
data InstancesDetachDisk

-- | Project ID for this request.
iddProject :: Lens' InstancesDetachDisk Text

-- | The name of the zone for this request.
iddZone :: Lens' InstancesDetachDisk Text

-- | Disk device name to detach.
iddDeviceName :: Lens' InstancesDetachDisk Text

-- | Instance name.
iddInstance :: Lens' InstancesDetachDisk Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Instances.DetachDisk.InstancesDetachDisk
instance Data.Data.Data Network.Google.Resource.Compute.Instances.DetachDisk.InstancesDetachDisk
instance GHC.Show.Show Network.Google.Resource.Compute.Instances.DetachDisk.InstancesDetachDisk
instance GHC.Classes.Eq Network.Google.Resource.Compute.Instances.DetachDisk.InstancesDetachDisk
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Instances.DetachDisk.InstancesDetachDisk


-- | Returns the specified Instance resource. Get a list of available
--   instances by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instances.get</tt>.
module Network.Google.Resource.Compute.Instances.Get

-- | A resource alias for <tt>compute.instances.get</tt> method which the
--   <a>InstancesGet</a> request conforms to.
type InstancesGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instances" :> (Capture "instance" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Instance))))))))

-- | Creates a value of <a>InstancesGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igProject</a></li>
--   <li><a>igZone</a></li>
--   <li><a>igInstance</a></li>
--   </ul>
instancesGet :: Text -> Text -> Text -> InstancesGet

-- | Returns the specified Instance resource. Get a list of available
--   instances by making a list() request.
--   
--   <i>See:</i> <a>instancesGet</a> smart constructor.
data InstancesGet

-- | Project ID for this request.
igProject :: Lens' InstancesGet Text

-- | The name of the zone for this request.
igZone :: Lens' InstancesGet Text

-- | Name of the instance resource to return.
igInstance :: Lens' InstancesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Instances.Get.InstancesGet
instance Data.Data.Data Network.Google.Resource.Compute.Instances.Get.InstancesGet
instance GHC.Show.Show Network.Google.Resource.Compute.Instances.Get.InstancesGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.Instances.Get.InstancesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Instances.Get.InstancesGet


-- | Returns the specified instance's serial port output.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instances.getSerialPortOutput</tt>.
module Network.Google.Resource.Compute.Instances.GetSerialPortOutput

-- | A resource alias for <tt>compute.instances.getSerialPortOutput</tt>
--   method which the <a>InstancesGetSerialPortOutput</a> request conforms
--   to.
type InstancesGetSerialPortOutputResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instances" :> (Capture "instance" Text :> ("serialPort" :> (QueryParam "start" (Textual Int64) :> (QueryParam "port" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] SerialPortOutput)))))))))))

-- | Creates a value of <a>InstancesGetSerialPortOutput</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igspoProject</a></li>
--   <li><a>igspoStart</a></li>
--   <li><a>igspoZone</a></li>
--   <li><a>igspoPort</a></li>
--   <li><a>igspoInstance</a></li>
--   </ul>
instancesGetSerialPortOutput :: Text -> Text -> Text -> InstancesGetSerialPortOutput

-- | Returns the specified instance's serial port output.
--   
--   <i>See:</i> <a>instancesGetSerialPortOutput</a> smart constructor.
data InstancesGetSerialPortOutput

-- | Project ID for this request.
igspoProject :: Lens' InstancesGetSerialPortOutput Text

-- | For the initial request, leave this field unspecified. For subsequent
--   calls, this field should be set to the next value that was returned in
--   the previous call.
igspoStart :: Lens' InstancesGetSerialPortOutput (Maybe Int64)

-- | The name of the zone for this request.
igspoZone :: Lens' InstancesGetSerialPortOutput Text

-- | Specifies which COM or serial port to retrieve data from.
igspoPort :: Lens' InstancesGetSerialPortOutput Int32

-- | Name of the instance scoping this request.
igspoInstance :: Lens' InstancesGetSerialPortOutput Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Instances.GetSerialPortOutput.InstancesGetSerialPortOutput
instance Data.Data.Data Network.Google.Resource.Compute.Instances.GetSerialPortOutput.InstancesGetSerialPortOutput
instance GHC.Show.Show Network.Google.Resource.Compute.Instances.GetSerialPortOutput.InstancesGetSerialPortOutput
instance GHC.Classes.Eq Network.Google.Resource.Compute.Instances.GetSerialPortOutput.InstancesGetSerialPortOutput
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Instances.GetSerialPortOutput.InstancesGetSerialPortOutput


-- | Creates an instance resource in the specified project using the data
--   included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instances.insert</tt>.
module Network.Google.Resource.Compute.Instances.Insert

-- | A resource alias for <tt>compute.instances.insert</tt> method which
--   the <a>InstancesInsert</a> request conforms to.
type InstancesInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instances" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Instance :> Post '[JSON] Operation))))))))

-- | Creates a value of <a>InstancesInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iiiProject</a></li>
--   <li><a>iiiZone</a></li>
--   <li><a>iiiPayload</a></li>
--   </ul>
instancesInsert :: Text -> Text -> Instance -> InstancesInsert

-- | Creates an instance resource in the specified project using the data
--   included in the request.
--   
--   <i>See:</i> <a>instancesInsert</a> smart constructor.
data InstancesInsert

-- | Project ID for this request.
iiiProject :: Lens' InstancesInsert Text

-- | The name of the zone for this request.
iiiZone :: Lens' InstancesInsert Text

-- | Multipart request metadata.
iiiPayload :: Lens' InstancesInsert Instance
instance GHC.Generics.Generic Network.Google.Resource.Compute.Instances.Insert.InstancesInsert
instance Data.Data.Data Network.Google.Resource.Compute.Instances.Insert.InstancesInsert
instance GHC.Show.Show Network.Google.Resource.Compute.Instances.Insert.InstancesInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.Instances.Insert.InstancesInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Instances.Insert.InstancesInsert


-- | Retrieves the list of instances contained within the specified zone.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instances.list</tt>.
module Network.Google.Resource.Compute.Instances.List

-- | A resource alias for <tt>compute.instances.list</tt> method which the
--   <a>InstancesList</a> request conforms to.
type InstancesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instances" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceList)))))))))))

-- | Creates a value of <a>InstancesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ilOrderBy</a></li>
--   <li><a>ilProject</a></li>
--   <li><a>ilZone</a></li>
--   <li><a>ilFilter</a></li>
--   <li><a>ilPageToken</a></li>
--   <li><a>ilMaxResults</a></li>
--   </ul>
instancesList :: Text -> Text -> InstancesList

-- | Retrieves the list of instances contained within the specified zone.
--   
--   <i>See:</i> <a>instancesList</a> smart constructor.
data InstancesList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
ilOrderBy :: Lens' InstancesList (Maybe Text)

-- | Project ID for this request.
ilProject :: Lens' InstancesList Text

-- | The name of the zone for this request.
ilZone :: Lens' InstancesList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
ilFilter :: Lens' InstancesList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
ilPageToken :: Lens' InstancesList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
ilMaxResults :: Lens' InstancesList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.Instances.List.InstancesList
instance Data.Data.Data Network.Google.Resource.Compute.Instances.List.InstancesList
instance GHC.Show.Show Network.Google.Resource.Compute.Instances.List.InstancesList
instance GHC.Classes.Eq Network.Google.Resource.Compute.Instances.List.InstancesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Instances.List.InstancesList


-- | Performs a hard reset on the instance.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instances.reset</tt>.
module Network.Google.Resource.Compute.Instances.Reset

-- | A resource alias for <tt>compute.instances.reset</tt> method which the
--   <a>InstancesReset</a> request conforms to.
type InstancesResetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instances" :> (Capture "instance" Text :> ("reset" :> (QueryParam "alt" AltJSON :> Post '[JSON] Operation)))))))))

-- | Creates a value of <a>InstancesReset</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>irProject</a></li>
--   <li><a>irZone</a></li>
--   <li><a>irInstance</a></li>
--   </ul>
instancesReset :: Text -> Text -> Text -> InstancesReset

-- | Performs a hard reset on the instance.
--   
--   <i>See:</i> <a>instancesReset</a> smart constructor.
data InstancesReset

-- | Project ID for this request.
irProject :: Lens' InstancesReset Text

-- | The name of the zone for this request.
irZone :: Lens' InstancesReset Text

-- | Name of the instance scoping this request.
irInstance :: Lens' InstancesReset Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Instances.Reset.InstancesReset
instance Data.Data.Data Network.Google.Resource.Compute.Instances.Reset.InstancesReset
instance GHC.Show.Show Network.Google.Resource.Compute.Instances.Reset.InstancesReset
instance GHC.Classes.Eq Network.Google.Resource.Compute.Instances.Reset.InstancesReset
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Instances.Reset.InstancesReset


-- | Sets the auto-delete flag for a disk attached to an instance.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instances.setDiskAutoDelete</tt>.
module Network.Google.Resource.Compute.Instances.SetDiskAutoDelete

-- | A resource alias for <tt>compute.instances.setDiskAutoDelete</tt>
--   method which the <a>InstancesSetDiskAutoDelete</a> request conforms
--   to.
type InstancesSetDiskAutoDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instances" :> (Capture "instance" Text :> ("setDiskAutoDelete" :> (QueryParam "autoDelete" Bool :> (QueryParam "deviceName" Text :> (QueryParam "alt" AltJSON :> Post '[JSON] Operation)))))))))))

-- | Creates a value of <a>InstancesSetDiskAutoDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>isdadProject</a></li>
--   <li><a>isdadAutoDelete</a></li>
--   <li><a>isdadZone</a></li>
--   <li><a>isdadDeviceName</a></li>
--   <li><a>isdadInstance</a></li>
--   </ul>
instancesSetDiskAutoDelete :: Text -> Bool -> Text -> Text -> Text -> InstancesSetDiskAutoDelete

-- | Sets the auto-delete flag for a disk attached to an instance.
--   
--   <i>See:</i> <a>instancesSetDiskAutoDelete</a> smart constructor.
data InstancesSetDiskAutoDelete

-- | Project ID for this request.
isdadProject :: Lens' InstancesSetDiskAutoDelete Text

-- | Whether to auto-delete the disk when the instance is deleted.
isdadAutoDelete :: Lens' InstancesSetDiskAutoDelete Bool

-- | The name of the zone for this request.
isdadZone :: Lens' InstancesSetDiskAutoDelete Text

-- | The device name of the disk to modify.
isdadDeviceName :: Lens' InstancesSetDiskAutoDelete Text

-- | The instance name.
isdadInstance :: Lens' InstancesSetDiskAutoDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Instances.SetDiskAutoDelete.InstancesSetDiskAutoDelete
instance Data.Data.Data Network.Google.Resource.Compute.Instances.SetDiskAutoDelete.InstancesSetDiskAutoDelete
instance GHC.Show.Show Network.Google.Resource.Compute.Instances.SetDiskAutoDelete.InstancesSetDiskAutoDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.Instances.SetDiskAutoDelete.InstancesSetDiskAutoDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Instances.SetDiskAutoDelete.InstancesSetDiskAutoDelete


-- | Changes the machine type for a stopped instance to the machine type
--   specified in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instances.setMachineType</tt>.
module Network.Google.Resource.Compute.Instances.SetMachineType

-- | A resource alias for <tt>compute.instances.setMachineType</tt> method
--   which the <a>InstancesSetMachineType</a> request conforms to.
type InstancesSetMachineTypeResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instances" :> (Capture "instance" Text :> ("setMachineType" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] InstancesSetMachineTypeRequest :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>InstancesSetMachineType</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ismtProject</a></li>
--   <li><a>ismtZone</a></li>
--   <li><a>ismtPayload</a></li>
--   <li><a>ismtInstance</a></li>
--   </ul>
instancesSetMachineType :: Text -> Text -> InstancesSetMachineTypeRequest -> Text -> InstancesSetMachineType

-- | Changes the machine type for a stopped instance to the machine type
--   specified in the request.
--   
--   <i>See:</i> <a>instancesSetMachineType</a> smart constructor.
data InstancesSetMachineType

-- | Project ID for this request.
ismtProject :: Lens' InstancesSetMachineType Text

-- | The name of the zone for this request.
ismtZone :: Lens' InstancesSetMachineType Text

-- | Multipart request metadata.
ismtPayload :: Lens' InstancesSetMachineType InstancesSetMachineTypeRequest

-- | Name of the instance scoping this request.
ismtInstance :: Lens' InstancesSetMachineType Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Instances.SetMachineType.InstancesSetMachineType
instance Data.Data.Data Network.Google.Resource.Compute.Instances.SetMachineType.InstancesSetMachineType
instance GHC.Show.Show Network.Google.Resource.Compute.Instances.SetMachineType.InstancesSetMachineType
instance GHC.Classes.Eq Network.Google.Resource.Compute.Instances.SetMachineType.InstancesSetMachineType
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Instances.SetMachineType.InstancesSetMachineType


-- | Sets metadata for the specified instance to the data included in the
--   request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instances.setMetadata</tt>.
module Network.Google.Resource.Compute.Instances.SetMetadata

-- | A resource alias for <tt>compute.instances.setMetadata</tt> method
--   which the <a>InstancesSetMetadata</a> request conforms to.
type InstancesSetMetadataResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instances" :> (Capture "instance" Text :> ("setMetadata" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Metadata :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>InstancesSetMetadata</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ismProject</a></li>
--   <li><a>ismZone</a></li>
--   <li><a>ismPayload</a></li>
--   <li><a>ismInstance</a></li>
--   </ul>
instancesSetMetadata :: Text -> Text -> Metadata -> Text -> InstancesSetMetadata

-- | Sets metadata for the specified instance to the data included in the
--   request.
--   
--   <i>See:</i> <a>instancesSetMetadata</a> smart constructor.
data InstancesSetMetadata

-- | Project ID for this request.
ismProject :: Lens' InstancesSetMetadata Text

-- | The name of the zone for this request.
ismZone :: Lens' InstancesSetMetadata Text

-- | Multipart request metadata.
ismPayload :: Lens' InstancesSetMetadata Metadata

-- | Name of the instance scoping this request.
ismInstance :: Lens' InstancesSetMetadata Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Instances.SetMetadata.InstancesSetMetadata
instance Data.Data.Data Network.Google.Resource.Compute.Instances.SetMetadata.InstancesSetMetadata
instance GHC.Show.Show Network.Google.Resource.Compute.Instances.SetMetadata.InstancesSetMetadata
instance GHC.Classes.Eq Network.Google.Resource.Compute.Instances.SetMetadata.InstancesSetMetadata
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Instances.SetMetadata.InstancesSetMetadata


-- | Sets an instance's scheduling options.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instances.setScheduling</tt>.
module Network.Google.Resource.Compute.Instances.SetScheduling

-- | A resource alias for <tt>compute.instances.setScheduling</tt> method
--   which the <a>InstancesSetScheduling</a> request conforms to.
type InstancesSetSchedulingResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instances" :> (Capture "instance" Text :> ("setScheduling" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Scheduling :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>InstancesSetScheduling</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>issProject</a></li>
--   <li><a>issZone</a></li>
--   <li><a>issPayload</a></li>
--   <li><a>issInstance</a></li>
--   </ul>
instancesSetScheduling :: Text -> Text -> Scheduling -> Text -> InstancesSetScheduling

-- | Sets an instance's scheduling options.
--   
--   <i>See:</i> <a>instancesSetScheduling</a> smart constructor.
data InstancesSetScheduling

-- | Project ID for this request.
issProject :: Lens' InstancesSetScheduling Text

-- | The name of the zone for this request.
issZone :: Lens' InstancesSetScheduling Text

-- | Multipart request metadata.
issPayload :: Lens' InstancesSetScheduling Scheduling

-- | Instance name.
issInstance :: Lens' InstancesSetScheduling Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Instances.SetScheduling.InstancesSetScheduling
instance Data.Data.Data Network.Google.Resource.Compute.Instances.SetScheduling.InstancesSetScheduling
instance GHC.Show.Show Network.Google.Resource.Compute.Instances.SetScheduling.InstancesSetScheduling
instance GHC.Classes.Eq Network.Google.Resource.Compute.Instances.SetScheduling.InstancesSetScheduling
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Instances.SetScheduling.InstancesSetScheduling


-- | Sets the service account on the instance.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instances.setServiceAccount</tt>.
module Network.Google.Resource.Compute.Instances.SetServiceAccount

-- | A resource alias for <tt>compute.instances.setServiceAccount</tt>
--   method which the <a>InstancesSetServiceAccount</a> request conforms
--   to.
type InstancesSetServiceAccountResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instances" :> (Capture "instance" Text :> ("setServiceAccount" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] InstancesSetServiceAccountRequest :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>InstancesSetServiceAccount</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>issaProject</a></li>
--   <li><a>issaZone</a></li>
--   <li><a>issaPayload</a></li>
--   <li><a>issaInstance</a></li>
--   </ul>
instancesSetServiceAccount :: Text -> Text -> InstancesSetServiceAccountRequest -> Text -> InstancesSetServiceAccount

-- | Sets the service account on the instance.
--   
--   <i>See:</i> <a>instancesSetServiceAccount</a> smart constructor.
data InstancesSetServiceAccount

-- | Project ID for this request.
issaProject :: Lens' InstancesSetServiceAccount Text

-- | The name of the zone for this request.
issaZone :: Lens' InstancesSetServiceAccount Text

-- | Multipart request metadata.
issaPayload :: Lens' InstancesSetServiceAccount InstancesSetServiceAccountRequest

-- | Name of the instance resource to start.
issaInstance :: Lens' InstancesSetServiceAccount Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Instances.SetServiceAccount.InstancesSetServiceAccount
instance Data.Data.Data Network.Google.Resource.Compute.Instances.SetServiceAccount.InstancesSetServiceAccount
instance GHC.Show.Show Network.Google.Resource.Compute.Instances.SetServiceAccount.InstancesSetServiceAccount
instance GHC.Classes.Eq Network.Google.Resource.Compute.Instances.SetServiceAccount.InstancesSetServiceAccount
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Instances.SetServiceAccount.InstancesSetServiceAccount


-- | Sets tags for the specified instance to the data included in the
--   request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instances.setTags</tt>.
module Network.Google.Resource.Compute.Instances.SetTags

-- | A resource alias for <tt>compute.instances.setTags</tt> method which
--   the <a>InstancesSetTags</a> request conforms to.
type InstancesSetTagsResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instances" :> (Capture "instance" Text :> ("setTags" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Tags :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>InstancesSetTags</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>istProject</a></li>
--   <li><a>istZone</a></li>
--   <li><a>istPayload</a></li>
--   <li><a>istInstance</a></li>
--   </ul>
instancesSetTags :: Text -> Text -> Tags -> Text -> InstancesSetTags

-- | Sets tags for the specified instance to the data included in the
--   request.
--   
--   <i>See:</i> <a>instancesSetTags</a> smart constructor.
data InstancesSetTags

-- | Project ID for this request.
istProject :: Lens' InstancesSetTags Text

-- | The name of the zone for this request.
istZone :: Lens' InstancesSetTags Text

-- | Multipart request metadata.
istPayload :: Lens' InstancesSetTags Tags

-- | Name of the instance scoping this request.
istInstance :: Lens' InstancesSetTags Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Instances.SetTags.InstancesSetTags
instance Data.Data.Data Network.Google.Resource.Compute.Instances.SetTags.InstancesSetTags
instance GHC.Show.Show Network.Google.Resource.Compute.Instances.SetTags.InstancesSetTags
instance GHC.Classes.Eq Network.Google.Resource.Compute.Instances.SetTags.InstancesSetTags
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Instances.SetTags.InstancesSetTags


-- | Starts an instance that was stopped using the using the
--   instances().stop method. For more information, see Restart an
--   instance.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instances.start</tt>.
module Network.Google.Resource.Compute.Instances.Start

-- | A resource alias for <tt>compute.instances.start</tt> method which the
--   <a>InstancesStart</a> request conforms to.
type InstancesStartResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instances" :> (Capture "instance" Text :> ("start" :> (QueryParam "alt" AltJSON :> Post '[JSON] Operation)))))))))

-- | Creates a value of <a>InstancesStart</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>insProject</a></li>
--   <li><a>insZone</a></li>
--   <li><a>insInstance</a></li>
--   </ul>
instancesStart :: Text -> Text -> Text -> InstancesStart

-- | Starts an instance that was stopped using the using the
--   instances().stop method. For more information, see Restart an
--   instance.
--   
--   <i>See:</i> <a>instancesStart</a> smart constructor.
data InstancesStart

-- | Project ID for this request.
insProject :: Lens' InstancesStart Text

-- | The name of the zone for this request.
insZone :: Lens' InstancesStart Text

-- | Name of the instance resource to start.
insInstance :: Lens' InstancesStart Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Instances.Start.InstancesStart
instance Data.Data.Data Network.Google.Resource.Compute.Instances.Start.InstancesStart
instance GHC.Show.Show Network.Google.Resource.Compute.Instances.Start.InstancesStart
instance GHC.Classes.Eq Network.Google.Resource.Compute.Instances.Start.InstancesStart
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Instances.Start.InstancesStart


-- | Starts an instance that was stopped using the using the
--   instances().stop method. For more information, see Restart an
--   instance.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instances.startWithEncryptionKey</tt>.
module Network.Google.Resource.Compute.Instances.StartWithEncryptionKey

-- | A resource alias for <tt>compute.instances.startWithEncryptionKey</tt>
--   method which the <a>InstancesStartWithEncryptionKey</a> request
--   conforms to.
type InstancesStartWithEncryptionKeyResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instances" :> (Capture "instance" Text :> ("startWithEncryptionKey" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] InstancesStartWithEncryptionKeyRequest :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>InstancesStartWithEncryptionKey</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iswekProject</a></li>
--   <li><a>iswekZone</a></li>
--   <li><a>iswekPayload</a></li>
--   <li><a>iswekInstance</a></li>
--   </ul>
instancesStartWithEncryptionKey :: Text -> Text -> InstancesStartWithEncryptionKeyRequest -> Text -> InstancesStartWithEncryptionKey

-- | Starts an instance that was stopped using the using the
--   instances().stop method. For more information, see Restart an
--   instance.
--   
--   <i>See:</i> <a>instancesStartWithEncryptionKey</a> smart constructor.
data InstancesStartWithEncryptionKey

-- | Project ID for this request.
iswekProject :: Lens' InstancesStartWithEncryptionKey Text

-- | The name of the zone for this request.
iswekZone :: Lens' InstancesStartWithEncryptionKey Text

-- | Multipart request metadata.
iswekPayload :: Lens' InstancesStartWithEncryptionKey InstancesStartWithEncryptionKeyRequest

-- | Name of the instance resource to start.
iswekInstance :: Lens' InstancesStartWithEncryptionKey Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Instances.StartWithEncryptionKey.InstancesStartWithEncryptionKey
instance Data.Data.Data Network.Google.Resource.Compute.Instances.StartWithEncryptionKey.InstancesStartWithEncryptionKey
instance GHC.Show.Show Network.Google.Resource.Compute.Instances.StartWithEncryptionKey.InstancesStartWithEncryptionKey
instance GHC.Classes.Eq Network.Google.Resource.Compute.Instances.StartWithEncryptionKey.InstancesStartWithEncryptionKey
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Instances.StartWithEncryptionKey.InstancesStartWithEncryptionKey


-- | Stops a running instance, shutting it down cleanly, and allows you to
--   restart the instance at a later time. Stopped instances do not incur
--   per-minute, virtual machine usage charges while they are stopped, but
--   any resources that the virtual machine is using, such as persistent
--   disks and static IP addresses, will continue to be charged until they
--   are deleted. For more information, see Stopping an instance.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.instances.stop</tt>.
module Network.Google.Resource.Compute.Instances.Stop

-- | A resource alias for <tt>compute.instances.stop</tt> method which the
--   <a>InstancesStop</a> request conforms to.
type InstancesStopResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("instances" :> (Capture "instance" Text :> ("stop" :> (QueryParam "alt" AltJSON :> Post '[JSON] Operation)))))))))

-- | Creates a value of <a>InstancesStop</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>isProject</a></li>
--   <li><a>isZone</a></li>
--   <li><a>isInstance</a></li>
--   </ul>
instancesStop :: Text -> Text -> Text -> InstancesStop

-- | Stops a running instance, shutting it down cleanly, and allows you to
--   restart the instance at a later time. Stopped instances do not incur
--   per-minute, virtual machine usage charges while they are stopped, but
--   any resources that the virtual machine is using, such as persistent
--   disks and static IP addresses, will continue to be charged until they
--   are deleted. For more information, see Stopping an instance.
--   
--   <i>See:</i> <a>instancesStop</a> smart constructor.
data InstancesStop

-- | Project ID for this request.
isProject :: Lens' InstancesStop Text

-- | The name of the zone for this request.
isZone :: Lens' InstancesStop Text

-- | Name of the instance resource to stop.
isInstance :: Lens' InstancesStop Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Instances.Stop.InstancesStop
instance Data.Data.Data Network.Google.Resource.Compute.Instances.Stop.InstancesStop
instance GHC.Show.Show Network.Google.Resource.Compute.Instances.Stop.InstancesStop
instance GHC.Classes.Eq Network.Google.Resource.Compute.Instances.Stop.InstancesStop
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Instances.Stop.InstancesStop


-- | Returns the specified License resource. Get a list of available
--   licenses by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.licenses.get</tt>.
module Network.Google.Resource.Compute.Licenses.Get

-- | A resource alias for <tt>compute.licenses.get</tt> method which the
--   <a>LicensesGet</a> request conforms to.
type LicensesGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("licenses" :> (Capture "license" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] License)))))))

-- | Creates a value of <a>LicensesGet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lgProject</a></li>
--   <li><a>lgLicense</a></li>
--   </ul>
licensesGet :: Text -> Text -> LicensesGet

-- | Returns the specified License resource. Get a list of available
--   licenses by making a list() request.
--   
--   <i>See:</i> <a>licensesGet</a> smart constructor.
data LicensesGet

-- | Project ID for this request.
lgProject :: Lens' LicensesGet Text

-- | Name of the License resource to return.
lgLicense :: Lens' LicensesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Licenses.Get.LicensesGet
instance Data.Data.Data Network.Google.Resource.Compute.Licenses.Get.LicensesGet
instance GHC.Show.Show Network.Google.Resource.Compute.Licenses.Get.LicensesGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.Licenses.Get.LicensesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Licenses.Get.LicensesGet


-- | Retrieves an aggregated list of machine types.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.machineTypes.aggregatedList</tt>.
module Network.Google.Resource.Compute.MachineTypes.AggregatedList

-- | A resource alias for <tt>compute.machineTypes.aggregatedList</tt>
--   method which the <a>MachineTypesAggregatedList</a> request conforms
--   to.
type MachineTypesAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("machineTypes" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] MachineTypeAggregatedList))))))))))

-- | Creates a value of <a>MachineTypesAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mtalOrderBy</a></li>
--   <li><a>mtalProject</a></li>
--   <li><a>mtalFilter</a></li>
--   <li><a>mtalPageToken</a></li>
--   <li><a>mtalMaxResults</a></li>
--   </ul>
machineTypesAggregatedList :: Text -> MachineTypesAggregatedList

-- | Retrieves an aggregated list of machine types.
--   
--   <i>See:</i> <a>machineTypesAggregatedList</a> smart constructor.
data MachineTypesAggregatedList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
mtalOrderBy :: Lens' MachineTypesAggregatedList (Maybe Text)

-- | Project ID for this request.
mtalProject :: Lens' MachineTypesAggregatedList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
mtalFilter :: Lens' MachineTypesAggregatedList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
mtalPageToken :: Lens' MachineTypesAggregatedList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
mtalMaxResults :: Lens' MachineTypesAggregatedList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.MachineTypes.AggregatedList.MachineTypesAggregatedList
instance Data.Data.Data Network.Google.Resource.Compute.MachineTypes.AggregatedList.MachineTypesAggregatedList
instance GHC.Show.Show Network.Google.Resource.Compute.MachineTypes.AggregatedList.MachineTypesAggregatedList
instance GHC.Classes.Eq Network.Google.Resource.Compute.MachineTypes.AggregatedList.MachineTypesAggregatedList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.MachineTypes.AggregatedList.MachineTypesAggregatedList


-- | Returns the specified machine type. Get a list of available machine
--   types by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.machineTypes.get</tt>.
module Network.Google.Resource.Compute.MachineTypes.Get

-- | A resource alias for <tt>compute.machineTypes.get</tt> method which
--   the <a>MachineTypesGet</a> request conforms to.
type MachineTypesGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("machineTypes" :> (Capture "machineType" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] MachineType))))))))

-- | Creates a value of <a>MachineTypesGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mtgProject</a></li>
--   <li><a>mtgZone</a></li>
--   <li><a>mtgMachineType</a></li>
--   </ul>
machineTypesGet :: Text -> Text -> Text -> MachineTypesGet

-- | Returns the specified machine type. Get a list of available machine
--   types by making a list() request.
--   
--   <i>See:</i> <a>machineTypesGet</a> smart constructor.
data MachineTypesGet

-- | Project ID for this request.
mtgProject :: Lens' MachineTypesGet Text

-- | The name of the zone for this request.
mtgZone :: Lens' MachineTypesGet Text

-- | Name of the machine type to return.
mtgMachineType :: Lens' MachineTypesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.MachineTypes.Get.MachineTypesGet
instance Data.Data.Data Network.Google.Resource.Compute.MachineTypes.Get.MachineTypesGet
instance GHC.Show.Show Network.Google.Resource.Compute.MachineTypes.Get.MachineTypesGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.MachineTypes.Get.MachineTypesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.MachineTypes.Get.MachineTypesGet


-- | Retrieves a list of machine types available to the specified project.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.machineTypes.list</tt>.
module Network.Google.Resource.Compute.MachineTypes.List

-- | A resource alias for <tt>compute.machineTypes.list</tt> method which
--   the <a>MachineTypesList</a> request conforms to.
type MachineTypesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("machineTypes" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] MachineTypeList)))))))))))

-- | Creates a value of <a>MachineTypesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mtlOrderBy</a></li>
--   <li><a>mtlProject</a></li>
--   <li><a>mtlZone</a></li>
--   <li><a>mtlFilter</a></li>
--   <li><a>mtlPageToken</a></li>
--   <li><a>mtlMaxResults</a></li>
--   </ul>
machineTypesList :: Text -> Text -> MachineTypesList

-- | Retrieves a list of machine types available to the specified project.
--   
--   <i>See:</i> <a>machineTypesList</a> smart constructor.
data MachineTypesList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
mtlOrderBy :: Lens' MachineTypesList (Maybe Text)

-- | Project ID for this request.
mtlProject :: Lens' MachineTypesList Text

-- | The name of the zone for this request.
mtlZone :: Lens' MachineTypesList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
mtlFilter :: Lens' MachineTypesList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
mtlPageToken :: Lens' MachineTypesList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
mtlMaxResults :: Lens' MachineTypesList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.MachineTypes.List.MachineTypesList
instance Data.Data.Data Network.Google.Resource.Compute.MachineTypes.List.MachineTypesList
instance GHC.Show.Show Network.Google.Resource.Compute.MachineTypes.List.MachineTypesList
instance GHC.Classes.Eq Network.Google.Resource.Compute.MachineTypes.List.MachineTypesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.MachineTypes.List.MachineTypesList


-- | Deletes the specified network.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.networks.delete</tt>.
module Network.Google.Resource.Compute.Networks.Delete

-- | A resource alias for <tt>compute.networks.delete</tt> method which the
--   <a>NetworksDelete</a> request conforms to.
type NetworksDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("networks" :> (Capture "network" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation)))))))

-- | Creates a value of <a>NetworksDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ndProject</a></li>
--   <li><a>ndNetwork</a></li>
--   </ul>
networksDelete :: Text -> Text -> NetworksDelete

-- | Deletes the specified network.
--   
--   <i>See:</i> <a>networksDelete</a> smart constructor.
data NetworksDelete

-- | Project ID for this request.
ndProject :: Lens' NetworksDelete Text

-- | Name of the network to delete.
ndNetwork :: Lens' NetworksDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Networks.Delete.NetworksDelete
instance Data.Data.Data Network.Google.Resource.Compute.Networks.Delete.NetworksDelete
instance GHC.Show.Show Network.Google.Resource.Compute.Networks.Delete.NetworksDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.Networks.Delete.NetworksDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Networks.Delete.NetworksDelete


-- | Returns the specified network. Get a list of available networks by
--   making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.networks.get</tt>.
module Network.Google.Resource.Compute.Networks.Get

-- | A resource alias for <tt>compute.networks.get</tt> method which the
--   <a>NetworksGet</a> request conforms to.
type NetworksGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("networks" :> (Capture "network" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Network)))))))

-- | Creates a value of <a>NetworksGet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ngProject</a></li>
--   <li><a>ngNetwork</a></li>
--   </ul>
networksGet :: Text -> Text -> NetworksGet

-- | Returns the specified network. Get a list of available networks by
--   making a list() request.
--   
--   <i>See:</i> <a>networksGet</a> smart constructor.
data NetworksGet

-- | Project ID for this request.
ngProject :: Lens' NetworksGet Text

-- | Name of the network to return.
ngNetwork :: Lens' NetworksGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Networks.Get.NetworksGet
instance Data.Data.Data Network.Google.Resource.Compute.Networks.Get.NetworksGet
instance GHC.Show.Show Network.Google.Resource.Compute.Networks.Get.NetworksGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.Networks.Get.NetworksGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Networks.Get.NetworksGet


-- | Creates a network in the specified project using the data included in
--   the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.networks.insert</tt>.
module Network.Google.Resource.Compute.Networks.Insert

-- | A resource alias for <tt>compute.networks.insert</tt> method which the
--   <a>NetworksInsert</a> request conforms to.
type NetworksInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("networks" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Network :> Post '[JSON] Operation)))))))

-- | Creates a value of <a>NetworksInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>niProject</a></li>
--   <li><a>niPayload</a></li>
--   </ul>
networksInsert :: Text -> Network -> NetworksInsert

-- | Creates a network in the specified project using the data included in
--   the request.
--   
--   <i>See:</i> <a>networksInsert</a> smart constructor.
data NetworksInsert

-- | Project ID for this request.
niProject :: Lens' NetworksInsert Text

-- | Multipart request metadata.
niPayload :: Lens' NetworksInsert Network
instance GHC.Generics.Generic Network.Google.Resource.Compute.Networks.Insert.NetworksInsert
instance Data.Data.Data Network.Google.Resource.Compute.Networks.Insert.NetworksInsert
instance GHC.Show.Show Network.Google.Resource.Compute.Networks.Insert.NetworksInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.Networks.Insert.NetworksInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Networks.Insert.NetworksInsert


-- | Retrieves the list of networks available to the specified project.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.networks.list</tt>.
module Network.Google.Resource.Compute.Networks.List

-- | A resource alias for <tt>compute.networks.list</tt> method which the
--   <a>NetworksList</a> request conforms to.
type NetworksListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("networks" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] NetworkList))))))))))

-- | Creates a value of <a>NetworksList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nlOrderBy</a></li>
--   <li><a>nlProject</a></li>
--   <li><a>nlFilter</a></li>
--   <li><a>nlPageToken</a></li>
--   <li><a>nlMaxResults</a></li>
--   </ul>
networksList :: Text -> NetworksList

-- | Retrieves the list of networks available to the specified project.
--   
--   <i>See:</i> <a>networksList</a> smart constructor.
data NetworksList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
nlOrderBy :: Lens' NetworksList (Maybe Text)

-- | Project ID for this request.
nlProject :: Lens' NetworksList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
nlFilter :: Lens' NetworksList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
nlPageToken :: Lens' NetworksList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
nlMaxResults :: Lens' NetworksList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.Networks.List.NetworksList
instance Data.Data.Data Network.Google.Resource.Compute.Networks.List.NetworksList
instance GHC.Show.Show Network.Google.Resource.Compute.Networks.List.NetworksList
instance GHC.Classes.Eq Network.Google.Resource.Compute.Networks.List.NetworksList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Networks.List.NetworksList


-- | Switches the network mode from auto subnet mode to custom subnet mode.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.networks.switchToCustomMode</tt>.
module Network.Google.Resource.Compute.Networks.SwitchToCustomMode

-- | A resource alias for <tt>compute.networks.switchToCustomMode</tt>
--   method which the <a>NetworksSwitchToCustomMode</a> request conforms
--   to.
type NetworksSwitchToCustomModeResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("networks" :> (Capture "network" Text :> ("switchToCustomMode" :> (QueryParam "alt" AltJSON :> Post '[JSON] Operation))))))))

-- | Creates a value of <a>NetworksSwitchToCustomMode</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nstcmProject</a></li>
--   <li><a>nstcmNetwork</a></li>
--   </ul>
networksSwitchToCustomMode :: Text -> Text -> NetworksSwitchToCustomMode

-- | Switches the network mode from auto subnet mode to custom subnet mode.
--   
--   <i>See:</i> <a>networksSwitchToCustomMode</a> smart constructor.
data NetworksSwitchToCustomMode

-- | Project ID for this request.
nstcmProject :: Lens' NetworksSwitchToCustomMode Text

-- | Name of the network to be updated.
nstcmNetwork :: Lens' NetworksSwitchToCustomMode Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Networks.SwitchToCustomMode.NetworksSwitchToCustomMode
instance Data.Data.Data Network.Google.Resource.Compute.Networks.SwitchToCustomMode.NetworksSwitchToCustomMode
instance GHC.Show.Show Network.Google.Resource.Compute.Networks.SwitchToCustomMode.NetworksSwitchToCustomMode
instance GHC.Classes.Eq Network.Google.Resource.Compute.Networks.SwitchToCustomMode.NetworksSwitchToCustomMode
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Networks.SwitchToCustomMode.NetworksSwitchToCustomMode


-- | Returns the specified Project resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.projects.get</tt>.
module Network.Google.Resource.Compute.Projects.Get

-- | A resource alias for <tt>compute.projects.get</tt> method which the
--   <a>ProjectsGet</a> request conforms to.
type ProjectsGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Project))))

-- | Creates a value of <a>ProjectsGet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pgProject</a></li>
--   </ul>
projectsGet :: Text -> ProjectsGet

-- | Returns the specified Project resource.
--   
--   <i>See:</i> <a>projectsGet</a> smart constructor.
data ProjectsGet

-- | Project ID for this request.
pgProject :: Lens' ProjectsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Projects.Get.ProjectsGet
instance Data.Data.Data Network.Google.Resource.Compute.Projects.Get.ProjectsGet
instance GHC.Show.Show Network.Google.Resource.Compute.Projects.Get.ProjectsGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.Projects.Get.ProjectsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Projects.Get.ProjectsGet


-- | Moves a persistent disk from one zone to another.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.projects.moveDisk</tt>.
module Network.Google.Resource.Compute.Projects.MoveDisk

-- | A resource alias for <tt>compute.projects.moveDisk</tt> method which
--   the <a>ProjectsMoveDisk</a> request conforms to.
type ProjectsMoveDiskResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("moveDisk" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] DiskMoveRequest :> Post '[JSON] Operation))))))

-- | Creates a value of <a>ProjectsMoveDisk</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pmdProject</a></li>
--   <li><a>pmdPayload</a></li>
--   </ul>
projectsMoveDisk :: Text -> DiskMoveRequest -> ProjectsMoveDisk

-- | Moves a persistent disk from one zone to another.
--   
--   <i>See:</i> <a>projectsMoveDisk</a> smart constructor.
data ProjectsMoveDisk

-- | Project ID for this request.
pmdProject :: Lens' ProjectsMoveDisk Text

-- | Multipart request metadata.
pmdPayload :: Lens' ProjectsMoveDisk DiskMoveRequest
instance GHC.Generics.Generic Network.Google.Resource.Compute.Projects.MoveDisk.ProjectsMoveDisk
instance Data.Data.Data Network.Google.Resource.Compute.Projects.MoveDisk.ProjectsMoveDisk
instance GHC.Show.Show Network.Google.Resource.Compute.Projects.MoveDisk.ProjectsMoveDisk
instance GHC.Classes.Eq Network.Google.Resource.Compute.Projects.MoveDisk.ProjectsMoveDisk
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Projects.MoveDisk.ProjectsMoveDisk


-- | Moves an instance and its attached persistent disks from one zone to
--   another.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.projects.moveInstance</tt>.
module Network.Google.Resource.Compute.Projects.MoveInstance

-- | A resource alias for <tt>compute.projects.moveInstance</tt> method
--   which the <a>ProjectsMoveInstance</a> request conforms to.
type ProjectsMoveInstanceResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("moveInstance" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] InstanceMoveRequest :> Post '[JSON] Operation))))))

-- | Creates a value of <a>ProjectsMoveInstance</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pmiProject</a></li>
--   <li><a>pmiPayload</a></li>
--   </ul>
projectsMoveInstance :: Text -> InstanceMoveRequest -> ProjectsMoveInstance

-- | Moves an instance and its attached persistent disks from one zone to
--   another.
--   
--   <i>See:</i> <a>projectsMoveInstance</a> smart constructor.
data ProjectsMoveInstance

-- | Project ID for this request.
pmiProject :: Lens' ProjectsMoveInstance Text

-- | Multipart request metadata.
pmiPayload :: Lens' ProjectsMoveInstance InstanceMoveRequest
instance GHC.Generics.Generic Network.Google.Resource.Compute.Projects.MoveInstance.ProjectsMoveInstance
instance Data.Data.Data Network.Google.Resource.Compute.Projects.MoveInstance.ProjectsMoveInstance
instance GHC.Show.Show Network.Google.Resource.Compute.Projects.MoveInstance.ProjectsMoveInstance
instance GHC.Classes.Eq Network.Google.Resource.Compute.Projects.MoveInstance.ProjectsMoveInstance
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Projects.MoveInstance.ProjectsMoveInstance


-- | Sets metadata common to all instances within the specified project
--   using the data included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.projects.setCommonInstanceMetadata</tt>.
module Network.Google.Resource.Compute.Projects.SetCommonInstanceMetadata

-- | A resource alias for
--   <tt>compute.projects.setCommonInstanceMetadata</tt> method which the
--   <a>ProjectsSetCommonInstanceMetadata</a> request conforms to.
type ProjectsSetCommonInstanceMetadataResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("setCommonInstanceMetadata" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Metadata :> Post '[JSON] Operation))))))

-- | Creates a value of <a>ProjectsSetCommonInstanceMetadata</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pscimProject</a></li>
--   <li><a>pscimPayload</a></li>
--   </ul>
projectsSetCommonInstanceMetadata :: Text -> Metadata -> ProjectsSetCommonInstanceMetadata

-- | Sets metadata common to all instances within the specified project
--   using the data included in the request.
--   
--   <i>See:</i> <a>projectsSetCommonInstanceMetadata</a> smart
--   constructor.
data ProjectsSetCommonInstanceMetadata

-- | Project ID for this request.
pscimProject :: Lens' ProjectsSetCommonInstanceMetadata Text

-- | Multipart request metadata.
pscimPayload :: Lens' ProjectsSetCommonInstanceMetadata Metadata
instance GHC.Generics.Generic Network.Google.Resource.Compute.Projects.SetCommonInstanceMetadata.ProjectsSetCommonInstanceMetadata
instance Data.Data.Data Network.Google.Resource.Compute.Projects.SetCommonInstanceMetadata.ProjectsSetCommonInstanceMetadata
instance GHC.Show.Show Network.Google.Resource.Compute.Projects.SetCommonInstanceMetadata.ProjectsSetCommonInstanceMetadata
instance GHC.Classes.Eq Network.Google.Resource.Compute.Projects.SetCommonInstanceMetadata.ProjectsSetCommonInstanceMetadata
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Projects.SetCommonInstanceMetadata.ProjectsSetCommonInstanceMetadata


-- | Enables the usage export feature and sets the usage export bucket
--   where reports are stored. If you provide an empty request body using
--   this method, the usage export feature will be disabled.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.projects.setUsageExportBucket</tt>.
module Network.Google.Resource.Compute.Projects.SetUsageExportBucket

-- | A resource alias for <tt>compute.projects.setUsageExportBucket</tt>
--   method which the <a>ProjectsSetUsageExportBucket</a> request conforms
--   to.
type ProjectsSetUsageExportBucketResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("setUsageExportBucket" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] UsageExportLocation :> Post '[JSON] Operation))))))

-- | Creates a value of <a>ProjectsSetUsageExportBucket</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>psuebProject</a></li>
--   <li><a>psuebPayload</a></li>
--   </ul>
projectsSetUsageExportBucket :: Text -> UsageExportLocation -> ProjectsSetUsageExportBucket

-- | Enables the usage export feature and sets the usage export bucket
--   where reports are stored. If you provide an empty request body using
--   this method, the usage export feature will be disabled.
--   
--   <i>See:</i> <a>projectsSetUsageExportBucket</a> smart constructor.
data ProjectsSetUsageExportBucket

-- | Project ID for this request.
psuebProject :: Lens' ProjectsSetUsageExportBucket Text

-- | Multipart request metadata.
psuebPayload :: Lens' ProjectsSetUsageExportBucket UsageExportLocation
instance GHC.Generics.Generic Network.Google.Resource.Compute.Projects.SetUsageExportBucket.ProjectsSetUsageExportBucket
instance Data.Data.Data Network.Google.Resource.Compute.Projects.SetUsageExportBucket.ProjectsSetUsageExportBucket
instance GHC.Show.Show Network.Google.Resource.Compute.Projects.SetUsageExportBucket.ProjectsSetUsageExportBucket
instance GHC.Classes.Eq Network.Google.Resource.Compute.Projects.SetUsageExportBucket.ProjectsSetUsageExportBucket
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Projects.SetUsageExportBucket.ProjectsSetUsageExportBucket


-- | Deletes the specified autoscaler.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionAutoscalers.delete</tt>.
module Network.Google.Resource.Compute.RegionAutoscalers.Delete

-- | A resource alias for <tt>compute.regionAutoscalers.delete</tt> method
--   which the <a>RegionAutoscalersDelete</a> request conforms to.
type RegionAutoscalersDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("autoscalers" :> (Capture "autoscaler" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation))))))))

-- | Creates a value of <a>RegionAutoscalersDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>radProject</a></li>
--   <li><a>radAutoscaler</a></li>
--   <li><a>radRegion</a></li>
--   </ul>
regionAutoscalersDelete :: Text -> Text -> Text -> RegionAutoscalersDelete

-- | Deletes the specified autoscaler.
--   
--   <i>See:</i> <a>regionAutoscalersDelete</a> smart constructor.
data RegionAutoscalersDelete

-- | Project ID for this request.
radProject :: Lens' RegionAutoscalersDelete Text

-- | Name of the autoscaler to delete.
radAutoscaler :: Lens' RegionAutoscalersDelete Text

-- | Name of the region scoping this request.
radRegion :: Lens' RegionAutoscalersDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionAutoscalers.Delete.RegionAutoscalersDelete
instance Data.Data.Data Network.Google.Resource.Compute.RegionAutoscalers.Delete.RegionAutoscalersDelete
instance GHC.Show.Show Network.Google.Resource.Compute.RegionAutoscalers.Delete.RegionAutoscalersDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionAutoscalers.Delete.RegionAutoscalersDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionAutoscalers.Delete.RegionAutoscalersDelete


-- | Returns the specified autoscaler.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionAutoscalers.get</tt>.
module Network.Google.Resource.Compute.RegionAutoscalers.Get

-- | A resource alias for <tt>compute.regionAutoscalers.get</tt> method
--   which the <a>RegionAutoscalersGet</a> request conforms to.
type RegionAutoscalersGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("autoscalers" :> (Capture "autoscaler" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Autoscaler))))))))

-- | Creates a value of <a>RegionAutoscalersGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ragProject</a></li>
--   <li><a>ragAutoscaler</a></li>
--   <li><a>ragRegion</a></li>
--   </ul>
regionAutoscalersGet :: Text -> Text -> Text -> RegionAutoscalersGet

-- | Returns the specified autoscaler.
--   
--   <i>See:</i> <a>regionAutoscalersGet</a> smart constructor.
data RegionAutoscalersGet

-- | Project ID for this request.
ragProject :: Lens' RegionAutoscalersGet Text

-- | Name of the autoscaler to return.
ragAutoscaler :: Lens' RegionAutoscalersGet Text

-- | Name of the region scoping this request.
ragRegion :: Lens' RegionAutoscalersGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionAutoscalers.Get.RegionAutoscalersGet
instance Data.Data.Data Network.Google.Resource.Compute.RegionAutoscalers.Get.RegionAutoscalersGet
instance GHC.Show.Show Network.Google.Resource.Compute.RegionAutoscalers.Get.RegionAutoscalersGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionAutoscalers.Get.RegionAutoscalersGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionAutoscalers.Get.RegionAutoscalersGet


-- | Creates an autoscaler in the specified project using the data included
--   in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionAutoscalers.insert</tt>.
module Network.Google.Resource.Compute.RegionAutoscalers.Insert

-- | A resource alias for <tt>compute.regionAutoscalers.insert</tt> method
--   which the <a>RegionAutoscalersInsert</a> request conforms to.
type RegionAutoscalersInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("autoscalers" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Autoscaler :> Post '[JSON] Operation))))))))

-- | Creates a value of <a>RegionAutoscalersInsert</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>raiProject</a></li>
--   <li><a>raiPayload</a></li>
--   <li><a>raiRegion</a></li>
--   </ul>
regionAutoscalersInsert :: Text -> Autoscaler -> Text -> RegionAutoscalersInsert

-- | Creates an autoscaler in the specified project using the data included
--   in the request.
--   
--   <i>See:</i> <a>regionAutoscalersInsert</a> smart constructor.
data RegionAutoscalersInsert

-- | Project ID for this request.
raiProject :: Lens' RegionAutoscalersInsert Text

-- | Multipart request metadata.
raiPayload :: Lens' RegionAutoscalersInsert Autoscaler

-- | Name of the region scoping this request.
raiRegion :: Lens' RegionAutoscalersInsert Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionAutoscalers.Insert.RegionAutoscalersInsert
instance Data.Data.Data Network.Google.Resource.Compute.RegionAutoscalers.Insert.RegionAutoscalersInsert
instance GHC.Show.Show Network.Google.Resource.Compute.RegionAutoscalers.Insert.RegionAutoscalersInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionAutoscalers.Insert.RegionAutoscalersInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionAutoscalers.Insert.RegionAutoscalersInsert


-- | Retrieves a list of autoscalers contained within the specified region.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionAutoscalers.list</tt>.
module Network.Google.Resource.Compute.RegionAutoscalers.List

-- | A resource alias for <tt>compute.regionAutoscalers.list</tt> method
--   which the <a>RegionAutoscalersList</a> request conforms to.
type RegionAutoscalersListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("autoscalers" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] RegionAutoscalerList)))))))))))

-- | Creates a value of <a>RegionAutoscalersList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ralOrderBy</a></li>
--   <li><a>ralProject</a></li>
--   <li><a>ralFilter</a></li>
--   <li><a>ralRegion</a></li>
--   <li><a>ralPageToken</a></li>
--   <li><a>ralMaxResults</a></li>
--   </ul>
regionAutoscalersList :: Text -> Text -> RegionAutoscalersList

-- | Retrieves a list of autoscalers contained within the specified region.
--   
--   <i>See:</i> <a>regionAutoscalersList</a> smart constructor.
data RegionAutoscalersList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
ralOrderBy :: Lens' RegionAutoscalersList (Maybe Text)

-- | Project ID for this request.
ralProject :: Lens' RegionAutoscalersList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
ralFilter :: Lens' RegionAutoscalersList (Maybe Text)

-- | Name of the region scoping this request.
ralRegion :: Lens' RegionAutoscalersList Text

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
ralPageToken :: Lens' RegionAutoscalersList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
ralMaxResults :: Lens' RegionAutoscalersList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionAutoscalers.List.RegionAutoscalersList
instance Data.Data.Data Network.Google.Resource.Compute.RegionAutoscalers.List.RegionAutoscalersList
instance GHC.Show.Show Network.Google.Resource.Compute.RegionAutoscalers.List.RegionAutoscalersList
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionAutoscalers.List.RegionAutoscalersList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionAutoscalers.List.RegionAutoscalersList


-- | Updates an autoscaler in the specified project using the data included
--   in the request. This method supports patch semantics.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionAutoscalers.patch</tt>.
module Network.Google.Resource.Compute.RegionAutoscalers.Patch

-- | A resource alias for <tt>compute.regionAutoscalers.patch</tt> method
--   which the <a>RegionAutoscalersPatch</a> request conforms to.
type RegionAutoscalersPatchResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("autoscalers" :> (QueryParam "autoscaler" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Autoscaler :> Patch '[JSON] Operation)))))))))

-- | Creates a value of <a>RegionAutoscalersPatch</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rapProject</a></li>
--   <li><a>rapPayload</a></li>
--   <li><a>rapAutoscaler</a></li>
--   <li><a>rapRegion</a></li>
--   </ul>
regionAutoscalersPatch :: Text -> Autoscaler -> Text -> Text -> RegionAutoscalersPatch

-- | Updates an autoscaler in the specified project using the data included
--   in the request. This method supports patch semantics.
--   
--   <i>See:</i> <a>regionAutoscalersPatch</a> smart constructor.
data RegionAutoscalersPatch

-- | Project ID for this request.
rapProject :: Lens' RegionAutoscalersPatch Text

-- | Multipart request metadata.
rapPayload :: Lens' RegionAutoscalersPatch Autoscaler

-- | Name of the autoscaler to update.
rapAutoscaler :: Lens' RegionAutoscalersPatch Text

-- | Name of the region scoping this request.
rapRegion :: Lens' RegionAutoscalersPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionAutoscalers.Patch.RegionAutoscalersPatch
instance Data.Data.Data Network.Google.Resource.Compute.RegionAutoscalers.Patch.RegionAutoscalersPatch
instance GHC.Show.Show Network.Google.Resource.Compute.RegionAutoscalers.Patch.RegionAutoscalersPatch
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionAutoscalers.Patch.RegionAutoscalersPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionAutoscalers.Patch.RegionAutoscalersPatch


-- | Updates an autoscaler in the specified project using the data included
--   in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionAutoscalers.update</tt>.
module Network.Google.Resource.Compute.RegionAutoscalers.Update

-- | A resource alias for <tt>compute.regionAutoscalers.update</tt> method
--   which the <a>RegionAutoscalersUpdate</a> request conforms to.
type RegionAutoscalersUpdateResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("autoscalers" :> (QueryParam "autoscaler" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Autoscaler :> Put '[JSON] Operation)))))))))

-- | Creates a value of <a>RegionAutoscalersUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rauProject</a></li>
--   <li><a>rauPayload</a></li>
--   <li><a>rauAutoscaler</a></li>
--   <li><a>rauRegion</a></li>
--   </ul>
regionAutoscalersUpdate :: Text -> Autoscaler -> Text -> RegionAutoscalersUpdate

-- | Updates an autoscaler in the specified project using the data included
--   in the request.
--   
--   <i>See:</i> <a>regionAutoscalersUpdate</a> smart constructor.
data RegionAutoscalersUpdate

-- | Project ID for this request.
rauProject :: Lens' RegionAutoscalersUpdate Text

-- | Multipart request metadata.
rauPayload :: Lens' RegionAutoscalersUpdate Autoscaler

-- | Name of the autoscaler to update.
rauAutoscaler :: Lens' RegionAutoscalersUpdate (Maybe Text)

-- | Name of the region scoping this request.
rauRegion :: Lens' RegionAutoscalersUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionAutoscalers.Update.RegionAutoscalersUpdate
instance Data.Data.Data Network.Google.Resource.Compute.RegionAutoscalers.Update.RegionAutoscalersUpdate
instance GHC.Show.Show Network.Google.Resource.Compute.RegionAutoscalers.Update.RegionAutoscalersUpdate
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionAutoscalers.Update.RegionAutoscalersUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionAutoscalers.Update.RegionAutoscalersUpdate


-- | Deletes the specified regional BackendService resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionBackendServices.delete</tt>.
module Network.Google.Resource.Compute.RegionBackendServices.Delete

-- | A resource alias for <tt>compute.regionBackendServices.delete</tt>
--   method which the <a>RegionBackendServicesDelete</a> request conforms
--   to.
type RegionBackendServicesDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("backendServices" :> (Capture "backendService" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation))))))))

-- | Creates a value of <a>RegionBackendServicesDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rbsdProject</a></li>
--   <li><a>rbsdRegion</a></li>
--   <li><a>rbsdBackendService</a></li>
--   </ul>
regionBackendServicesDelete :: Text -> Text -> Text -> RegionBackendServicesDelete

-- | Deletes the specified regional BackendService resource.
--   
--   <i>See:</i> <a>regionBackendServicesDelete</a> smart constructor.
data RegionBackendServicesDelete

-- | Project ID for this request.
rbsdProject :: Lens' RegionBackendServicesDelete Text

-- | Name of the region scoping this request.
rbsdRegion :: Lens' RegionBackendServicesDelete Text

-- | Name of the BackendService resource to delete.
rbsdBackendService :: Lens' RegionBackendServicesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionBackendServices.Delete.RegionBackendServicesDelete
instance Data.Data.Data Network.Google.Resource.Compute.RegionBackendServices.Delete.RegionBackendServicesDelete
instance GHC.Show.Show Network.Google.Resource.Compute.RegionBackendServices.Delete.RegionBackendServicesDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionBackendServices.Delete.RegionBackendServicesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionBackendServices.Delete.RegionBackendServicesDelete


-- | Returns the specified regional BackendService resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionBackendServices.get</tt>.
module Network.Google.Resource.Compute.RegionBackendServices.Get

-- | A resource alias for <tt>compute.regionBackendServices.get</tt> method
--   which the <a>RegionBackendServicesGet</a> request conforms to.
type RegionBackendServicesGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("backendServices" :> (Capture "backendService" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] BackendService))))))))

-- | Creates a value of <a>RegionBackendServicesGet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rbsgProject</a></li>
--   <li><a>rbsgRegion</a></li>
--   <li><a>rbsgBackendService</a></li>
--   </ul>
regionBackendServicesGet :: Text -> Text -> Text -> RegionBackendServicesGet

-- | Returns the specified regional BackendService resource.
--   
--   <i>See:</i> <a>regionBackendServicesGet</a> smart constructor.
data RegionBackendServicesGet

-- | Project ID for this request.
rbsgProject :: Lens' RegionBackendServicesGet Text

-- | Name of the region scoping this request.
rbsgRegion :: Lens' RegionBackendServicesGet Text

-- | Name of the BackendService resource to return.
rbsgBackendService :: Lens' RegionBackendServicesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionBackendServices.Get.RegionBackendServicesGet
instance Data.Data.Data Network.Google.Resource.Compute.RegionBackendServices.Get.RegionBackendServicesGet
instance GHC.Show.Show Network.Google.Resource.Compute.RegionBackendServices.Get.RegionBackendServicesGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionBackendServices.Get.RegionBackendServicesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionBackendServices.Get.RegionBackendServicesGet


-- | Gets the most recent health check results for this regional
--   BackendService.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionBackendServices.getHealth</tt>.
module Network.Google.Resource.Compute.RegionBackendServices.GetHealth

-- | A resource alias for <tt>compute.regionBackendServices.getHealth</tt>
--   method which the <a>RegionBackendServicesGetHealth</a> request
--   conforms to.
type RegionBackendServicesGetHealthResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("backendServices" :> (Capture "backendService" Text :> ("getHealth" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ResourceGroupReference :> Post '[JSON] BackendServiceGroupHealth))))))))))

-- | Creates a value of <a>RegionBackendServicesGetHealth</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rbsghProject</a></li>
--   <li><a>rbsghPayload</a></li>
--   <li><a>rbsghRegion</a></li>
--   <li><a>rbsghBackendService</a></li>
--   </ul>
regionBackendServicesGetHealth :: Text -> ResourceGroupReference -> Text -> Text -> RegionBackendServicesGetHealth

-- | Gets the most recent health check results for this regional
--   BackendService.
--   
--   <i>See:</i> <a>regionBackendServicesGetHealth</a> smart constructor.
data RegionBackendServicesGetHealth
rbsghProject :: Lens' RegionBackendServicesGetHealth Text

-- | Multipart request metadata.
rbsghPayload :: Lens' RegionBackendServicesGetHealth ResourceGroupReference

-- | Name of the region scoping this request.
rbsghRegion :: Lens' RegionBackendServicesGetHealth Text

-- | Name of the BackendService resource to which the queried instance
--   belongs.
rbsghBackendService :: Lens' RegionBackendServicesGetHealth Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionBackendServices.GetHealth.RegionBackendServicesGetHealth
instance Data.Data.Data Network.Google.Resource.Compute.RegionBackendServices.GetHealth.RegionBackendServicesGetHealth
instance GHC.Show.Show Network.Google.Resource.Compute.RegionBackendServices.GetHealth.RegionBackendServicesGetHealth
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionBackendServices.GetHealth.RegionBackendServicesGetHealth
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionBackendServices.GetHealth.RegionBackendServicesGetHealth


-- | Creates a regional BackendService resource in the specified project
--   using the data included in the request. There are several restrictions
--   and guidelines to keep in mind when creating a regional backend
--   service. Read Restrictions and Guidelines for more information.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionBackendServices.insert</tt>.
module Network.Google.Resource.Compute.RegionBackendServices.Insert

-- | A resource alias for <tt>compute.regionBackendServices.insert</tt>
--   method which the <a>RegionBackendServicesInsert</a> request conforms
--   to.
type RegionBackendServicesInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("backendServices" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] BackendService :> Post '[JSON] Operation))))))))

-- | Creates a value of <a>RegionBackendServicesInsert</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rbsiProject</a></li>
--   <li><a>rbsiPayload</a></li>
--   <li><a>rbsiRegion</a></li>
--   </ul>
regionBackendServicesInsert :: Text -> BackendService -> Text -> RegionBackendServicesInsert

-- | Creates a regional BackendService resource in the specified project
--   using the data included in the request. There are several restrictions
--   and guidelines to keep in mind when creating a regional backend
--   service. Read Restrictions and Guidelines for more information.
--   
--   <i>See:</i> <a>regionBackendServicesInsert</a> smart constructor.
data RegionBackendServicesInsert

-- | Project ID for this request.
rbsiProject :: Lens' RegionBackendServicesInsert Text

-- | Multipart request metadata.
rbsiPayload :: Lens' RegionBackendServicesInsert BackendService

-- | Name of the region scoping this request.
rbsiRegion :: Lens' RegionBackendServicesInsert Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionBackendServices.Insert.RegionBackendServicesInsert
instance Data.Data.Data Network.Google.Resource.Compute.RegionBackendServices.Insert.RegionBackendServicesInsert
instance GHC.Show.Show Network.Google.Resource.Compute.RegionBackendServices.Insert.RegionBackendServicesInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionBackendServices.Insert.RegionBackendServicesInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionBackendServices.Insert.RegionBackendServicesInsert


-- | Retrieves the list of regional BackendService resources available to
--   the specified project in the given region.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionBackendServices.list</tt>.
module Network.Google.Resource.Compute.RegionBackendServices.List

-- | A resource alias for <tt>compute.regionBackendServices.list</tt>
--   method which the <a>RegionBackendServicesList</a> request conforms to.
type RegionBackendServicesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("backendServices" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] BackendServiceList)))))))))))

-- | Creates a value of <a>RegionBackendServicesList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rbslOrderBy</a></li>
--   <li><a>rbslProject</a></li>
--   <li><a>rbslFilter</a></li>
--   <li><a>rbslRegion</a></li>
--   <li><a>rbslPageToken</a></li>
--   <li><a>rbslMaxResults</a></li>
--   </ul>
regionBackendServicesList :: Text -> Text -> RegionBackendServicesList

-- | Retrieves the list of regional BackendService resources available to
--   the specified project in the given region.
--   
--   <i>See:</i> <a>regionBackendServicesList</a> smart constructor.
data RegionBackendServicesList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
rbslOrderBy :: Lens' RegionBackendServicesList (Maybe Text)

-- | Project ID for this request.
rbslProject :: Lens' RegionBackendServicesList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
rbslFilter :: Lens' RegionBackendServicesList (Maybe Text)

-- | Name of the region scoping this request.
rbslRegion :: Lens' RegionBackendServicesList Text

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
rbslPageToken :: Lens' RegionBackendServicesList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
rbslMaxResults :: Lens' RegionBackendServicesList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionBackendServices.List.RegionBackendServicesList
instance Data.Data.Data Network.Google.Resource.Compute.RegionBackendServices.List.RegionBackendServicesList
instance GHC.Show.Show Network.Google.Resource.Compute.RegionBackendServices.List.RegionBackendServicesList
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionBackendServices.List.RegionBackendServicesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionBackendServices.List.RegionBackendServicesList


-- | Updates the specified regional BackendService resource with the data
--   included in the request. There are several restrictions and guidelines
--   to keep in mind when updating a backend service. Read Restrictions and
--   Guidelines for more information. This method supports patch semantics.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionBackendServices.patch</tt>.
module Network.Google.Resource.Compute.RegionBackendServices.Patch

-- | A resource alias for <tt>compute.regionBackendServices.patch</tt>
--   method which the <a>RegionBackendServicesPatch</a> request conforms
--   to.
type RegionBackendServicesPatchResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("backendServices" :> (Capture "backendService" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] BackendService :> Patch '[JSON] Operation)))))))))

-- | Creates a value of <a>RegionBackendServicesPatch</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rbspProject</a></li>
--   <li><a>rbspPayload</a></li>
--   <li><a>rbspRegion</a></li>
--   <li><a>rbspBackendService</a></li>
--   </ul>
regionBackendServicesPatch :: Text -> BackendService -> Text -> Text -> RegionBackendServicesPatch

-- | Updates the specified regional BackendService resource with the data
--   included in the request. There are several restrictions and guidelines
--   to keep in mind when updating a backend service. Read Restrictions and
--   Guidelines for more information. This method supports patch semantics.
--   
--   <i>See:</i> <a>regionBackendServicesPatch</a> smart constructor.
data RegionBackendServicesPatch

-- | Project ID for this request.
rbspProject :: Lens' RegionBackendServicesPatch Text

-- | Multipart request metadata.
rbspPayload :: Lens' RegionBackendServicesPatch BackendService

-- | Name of the region scoping this request.
rbspRegion :: Lens' RegionBackendServicesPatch Text

-- | Name of the BackendService resource to update.
rbspBackendService :: Lens' RegionBackendServicesPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionBackendServices.Patch.RegionBackendServicesPatch
instance Data.Data.Data Network.Google.Resource.Compute.RegionBackendServices.Patch.RegionBackendServicesPatch
instance GHC.Show.Show Network.Google.Resource.Compute.RegionBackendServices.Patch.RegionBackendServicesPatch
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionBackendServices.Patch.RegionBackendServicesPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionBackendServices.Patch.RegionBackendServicesPatch


-- | Updates the specified regional BackendService resource with the data
--   included in the request. There are several restrictions and guidelines
--   to keep in mind when updating a backend service. Read Restrictions and
--   Guidelines for more information.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionBackendServices.update</tt>.
module Network.Google.Resource.Compute.RegionBackendServices.Update

-- | A resource alias for <tt>compute.regionBackendServices.update</tt>
--   method which the <a>RegionBackendServicesUpdate</a> request conforms
--   to.
type RegionBackendServicesUpdateResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("backendServices" :> (Capture "backendService" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] BackendService :> Put '[JSON] Operation)))))))))

-- | Creates a value of <a>RegionBackendServicesUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rbsuProject</a></li>
--   <li><a>rbsuPayload</a></li>
--   <li><a>rbsuRegion</a></li>
--   <li><a>rbsuBackendService</a></li>
--   </ul>
regionBackendServicesUpdate :: Text -> BackendService -> Text -> Text -> RegionBackendServicesUpdate

-- | Updates the specified regional BackendService resource with the data
--   included in the request. There are several restrictions and guidelines
--   to keep in mind when updating a backend service. Read Restrictions and
--   Guidelines for more information.
--   
--   <i>See:</i> <a>regionBackendServicesUpdate</a> smart constructor.
data RegionBackendServicesUpdate

-- | Project ID for this request.
rbsuProject :: Lens' RegionBackendServicesUpdate Text

-- | Multipart request metadata.
rbsuPayload :: Lens' RegionBackendServicesUpdate BackendService

-- | Name of the region scoping this request.
rbsuRegion :: Lens' RegionBackendServicesUpdate Text

-- | Name of the BackendService resource to update.
rbsuBackendService :: Lens' RegionBackendServicesUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionBackendServices.Update.RegionBackendServicesUpdate
instance Data.Data.Data Network.Google.Resource.Compute.RegionBackendServices.Update.RegionBackendServicesUpdate
instance GHC.Show.Show Network.Google.Resource.Compute.RegionBackendServices.Update.RegionBackendServicesUpdate
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionBackendServices.Update.RegionBackendServicesUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionBackendServices.Update.RegionBackendServicesUpdate


-- | Schedules a group action to remove the specified instances from the
--   managed instance group. Abandoning an instance does not delete the
--   instance, but it does remove the instance from any target pools that
--   are applied by the managed instance group. This method reduces the
--   targetSize of the managed instance group by the number of instances
--   that you abandon. This operation is marked as DONE when the action is
--   scheduled even if the instances have not yet been removed from the
--   group. You must separately verify the status of the abandoning action
--   with the listmanagedinstances method.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionInstanceGroupManagers.abandonInstances</tt>.
module Network.Google.Resource.Compute.RegionInstanceGroupManagers.AbandonInstances

-- | A resource alias for
--   <tt>compute.regionInstanceGroupManagers.abandonInstances</tt> method
--   which the <a>RegionInstanceGroupManagersAbandonInstances</a> request
--   conforms to.
type RegionInstanceGroupManagersAbandonInstancesResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("instanceGroupManagers" :> (Capture "instanceGroupManager" Text :> ("abandonInstances" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] RegionInstanceGroupManagersAbandonInstancesRequest :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>RegionInstanceGroupManagersAbandonInstances</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmaiProject</a></li>
--   <li><a>rigmaiInstanceGroupManager</a></li>
--   <li><a>rigmaiPayload</a></li>
--   <li><a>rigmaiRegion</a></li>
--   </ul>
regionInstanceGroupManagersAbandonInstances :: Text -> Text -> RegionInstanceGroupManagersAbandonInstancesRequest -> Text -> RegionInstanceGroupManagersAbandonInstances

-- | Schedules a group action to remove the specified instances from the
--   managed instance group. Abandoning an instance does not delete the
--   instance, but it does remove the instance from any target pools that
--   are applied by the managed instance group. This method reduces the
--   targetSize of the managed instance group by the number of instances
--   that you abandon. This operation is marked as DONE when the action is
--   scheduled even if the instances have not yet been removed from the
--   group. You must separately verify the status of the abandoning action
--   with the listmanagedinstances method.
--   
--   <i>See:</i> <a>regionInstanceGroupManagersAbandonInstances</a> smart
--   constructor.
data RegionInstanceGroupManagersAbandonInstances

-- | Project ID for this request.
rigmaiProject :: Lens' RegionInstanceGroupManagersAbandonInstances Text

-- | Name of the managed instance group.
rigmaiInstanceGroupManager :: Lens' RegionInstanceGroupManagersAbandonInstances Text

-- | Multipart request metadata.
rigmaiPayload :: Lens' RegionInstanceGroupManagersAbandonInstances RegionInstanceGroupManagersAbandonInstancesRequest

-- | Name of the region scoping this request.
rigmaiRegion :: Lens' RegionInstanceGroupManagersAbandonInstances Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionInstanceGroupManagers.AbandonInstances.RegionInstanceGroupManagersAbandonInstances
instance Data.Data.Data Network.Google.Resource.Compute.RegionInstanceGroupManagers.AbandonInstances.RegionInstanceGroupManagersAbandonInstances
instance GHC.Show.Show Network.Google.Resource.Compute.RegionInstanceGroupManagers.AbandonInstances.RegionInstanceGroupManagersAbandonInstances
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionInstanceGroupManagers.AbandonInstances.RegionInstanceGroupManagersAbandonInstances
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionInstanceGroupManagers.AbandonInstances.RegionInstanceGroupManagersAbandonInstances


-- | Deletes the specified managed instance group and all of the instances
--   in that group.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionInstanceGroupManagers.delete</tt>.
module Network.Google.Resource.Compute.RegionInstanceGroupManagers.Delete

-- | A resource alias for
--   <tt>compute.regionInstanceGroupManagers.delete</tt> method which the
--   <a>RegionInstanceGroupManagersDelete</a> request conforms to.
type RegionInstanceGroupManagersDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("instanceGroupManagers" :> (Capture "instanceGroupManager" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation))))))))

-- | Creates a value of <a>RegionInstanceGroupManagersDelete</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmdProject</a></li>
--   <li><a>rigmdInstanceGroupManager</a></li>
--   <li><a>rigmdRegion</a></li>
--   </ul>
regionInstanceGroupManagersDelete :: Text -> Text -> Text -> RegionInstanceGroupManagersDelete

-- | Deletes the specified managed instance group and all of the instances
--   in that group.
--   
--   <i>See:</i> <a>regionInstanceGroupManagersDelete</a> smart
--   constructor.
data RegionInstanceGroupManagersDelete

-- | Project ID for this request.
rigmdProject :: Lens' RegionInstanceGroupManagersDelete Text

-- | Name of the managed instance group to delete.
rigmdInstanceGroupManager :: Lens' RegionInstanceGroupManagersDelete Text

-- | Name of the region scoping this request.
rigmdRegion :: Lens' RegionInstanceGroupManagersDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionInstanceGroupManagers.Delete.RegionInstanceGroupManagersDelete
instance Data.Data.Data Network.Google.Resource.Compute.RegionInstanceGroupManagers.Delete.RegionInstanceGroupManagersDelete
instance GHC.Show.Show Network.Google.Resource.Compute.RegionInstanceGroupManagers.Delete.RegionInstanceGroupManagersDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionInstanceGroupManagers.Delete.RegionInstanceGroupManagersDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionInstanceGroupManagers.Delete.RegionInstanceGroupManagersDelete


-- | Schedules a group action to delete the specified instances in the
--   managed instance group. The instances are also removed from any target
--   pools of which they were a member. This method reduces the targetSize
--   of the managed instance group by the number of instances that you
--   delete. This operation is marked as DONE when the action is scheduled
--   even if the instances are still being deleted. You must separately
--   verify the status of the deleting action with the listmanagedinstances
--   method.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionInstanceGroupManagers.deleteInstances</tt>.
module Network.Google.Resource.Compute.RegionInstanceGroupManagers.DeleteInstances

-- | A resource alias for
--   <tt>compute.regionInstanceGroupManagers.deleteInstances</tt> method
--   which the <a>RegionInstanceGroupManagersDeleteInstances</a> request
--   conforms to.
type RegionInstanceGroupManagersDeleteInstancesResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("instanceGroupManagers" :> (Capture "instanceGroupManager" Text :> ("deleteInstances" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] RegionInstanceGroupManagersDeleteInstancesRequest :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>RegionInstanceGroupManagersDeleteInstances</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmdiProject</a></li>
--   <li><a>rigmdiInstanceGroupManager</a></li>
--   <li><a>rigmdiPayload</a></li>
--   <li><a>rigmdiRegion</a></li>
--   </ul>
regionInstanceGroupManagersDeleteInstances :: Text -> Text -> RegionInstanceGroupManagersDeleteInstancesRequest -> Text -> RegionInstanceGroupManagersDeleteInstances

-- | Schedules a group action to delete the specified instances in the
--   managed instance group. The instances are also removed from any target
--   pools of which they were a member. This method reduces the targetSize
--   of the managed instance group by the number of instances that you
--   delete. This operation is marked as DONE when the action is scheduled
--   even if the instances are still being deleted. You must separately
--   verify the status of the deleting action with the listmanagedinstances
--   method.
--   
--   <i>See:</i> <a>regionInstanceGroupManagersDeleteInstances</a> smart
--   constructor.
data RegionInstanceGroupManagersDeleteInstances

-- | Project ID for this request.
rigmdiProject :: Lens' RegionInstanceGroupManagersDeleteInstances Text

-- | Name of the managed instance group.
rigmdiInstanceGroupManager :: Lens' RegionInstanceGroupManagersDeleteInstances Text

-- | Multipart request metadata.
rigmdiPayload :: Lens' RegionInstanceGroupManagersDeleteInstances RegionInstanceGroupManagersDeleteInstancesRequest

-- | Name of the region scoping this request.
rigmdiRegion :: Lens' RegionInstanceGroupManagersDeleteInstances Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionInstanceGroupManagers.DeleteInstances.RegionInstanceGroupManagersDeleteInstances
instance Data.Data.Data Network.Google.Resource.Compute.RegionInstanceGroupManagers.DeleteInstances.RegionInstanceGroupManagersDeleteInstances
instance GHC.Show.Show Network.Google.Resource.Compute.RegionInstanceGroupManagers.DeleteInstances.RegionInstanceGroupManagersDeleteInstances
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionInstanceGroupManagers.DeleteInstances.RegionInstanceGroupManagersDeleteInstances
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionInstanceGroupManagers.DeleteInstances.RegionInstanceGroupManagersDeleteInstances


-- | Returns all of the details about the specified managed instance group.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionInstanceGroupManagers.get</tt>.
module Network.Google.Resource.Compute.RegionInstanceGroupManagers.Get

-- | A resource alias for <tt>compute.regionInstanceGroupManagers.get</tt>
--   method which the <a>RegionInstanceGroupManagersGet</a> request
--   conforms to.
type RegionInstanceGroupManagersGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("instanceGroupManagers" :> (Capture "instanceGroupManager" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceGroupManager))))))))

-- | Creates a value of <a>RegionInstanceGroupManagersGet</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmgProject</a></li>
--   <li><a>rigmgInstanceGroupManager</a></li>
--   <li><a>rigmgRegion</a></li>
--   </ul>
regionInstanceGroupManagersGet :: Text -> Text -> Text -> RegionInstanceGroupManagersGet

-- | Returns all of the details about the specified managed instance group.
--   
--   <i>See:</i> <a>regionInstanceGroupManagersGet</a> smart constructor.
data RegionInstanceGroupManagersGet

-- | Project ID for this request.
rigmgProject :: Lens' RegionInstanceGroupManagersGet Text

-- | Name of the managed instance group to return.
rigmgInstanceGroupManager :: Lens' RegionInstanceGroupManagersGet Text

-- | Name of the region scoping this request.
rigmgRegion :: Lens' RegionInstanceGroupManagersGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionInstanceGroupManagers.Get.RegionInstanceGroupManagersGet
instance Data.Data.Data Network.Google.Resource.Compute.RegionInstanceGroupManagers.Get.RegionInstanceGroupManagersGet
instance GHC.Show.Show Network.Google.Resource.Compute.RegionInstanceGroupManagers.Get.RegionInstanceGroupManagersGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionInstanceGroupManagers.Get.RegionInstanceGroupManagersGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionInstanceGroupManagers.Get.RegionInstanceGroupManagersGet


-- | Creates a managed instance group using the information that you
--   specify in the request. After the group is created, it schedules an
--   action to create instances in the group using the specified instance
--   template. This operation is marked as DONE when the group is created
--   even if the instances in the group have not yet been created. You must
--   separately verify the status of the individual instances with the
--   listmanagedinstances method.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionInstanceGroupManagers.insert</tt>.
module Network.Google.Resource.Compute.RegionInstanceGroupManagers.Insert

-- | A resource alias for
--   <tt>compute.regionInstanceGroupManagers.insert</tt> method which the
--   <a>RegionInstanceGroupManagersInsert</a> request conforms to.
type RegionInstanceGroupManagersInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("instanceGroupManagers" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] InstanceGroupManager :> Post '[JSON] Operation))))))))

-- | Creates a value of <a>RegionInstanceGroupManagersInsert</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmiProject</a></li>
--   <li><a>rigmiPayload</a></li>
--   <li><a>rigmiRegion</a></li>
--   </ul>
regionInstanceGroupManagersInsert :: Text -> InstanceGroupManager -> Text -> RegionInstanceGroupManagersInsert

-- | Creates a managed instance group using the information that you
--   specify in the request. After the group is created, it schedules an
--   action to create instances in the group using the specified instance
--   template. This operation is marked as DONE when the group is created
--   even if the instances in the group have not yet been created. You must
--   separately verify the status of the individual instances with the
--   listmanagedinstances method.
--   
--   <i>See:</i> <a>regionInstanceGroupManagersInsert</a> smart
--   constructor.
data RegionInstanceGroupManagersInsert

-- | Project ID for this request.
rigmiProject :: Lens' RegionInstanceGroupManagersInsert Text

-- | Multipart request metadata.
rigmiPayload :: Lens' RegionInstanceGroupManagersInsert InstanceGroupManager

-- | Name of the region scoping this request.
rigmiRegion :: Lens' RegionInstanceGroupManagersInsert Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionInstanceGroupManagers.Insert.RegionInstanceGroupManagersInsert
instance Data.Data.Data Network.Google.Resource.Compute.RegionInstanceGroupManagers.Insert.RegionInstanceGroupManagersInsert
instance GHC.Show.Show Network.Google.Resource.Compute.RegionInstanceGroupManagers.Insert.RegionInstanceGroupManagersInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionInstanceGroupManagers.Insert.RegionInstanceGroupManagersInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionInstanceGroupManagers.Insert.RegionInstanceGroupManagersInsert


-- | Retrieves the list of managed instance groups that are contained
--   within the specified region.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionInstanceGroupManagers.list</tt>.
module Network.Google.Resource.Compute.RegionInstanceGroupManagers.List

-- | A resource alias for <tt>compute.regionInstanceGroupManagers.list</tt>
--   method which the <a>RegionInstanceGroupManagersList</a> request
--   conforms to.
type RegionInstanceGroupManagersListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("instanceGroupManagers" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] RegionInstanceGroupManagerList)))))))))))

-- | Creates a value of <a>RegionInstanceGroupManagersList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmlOrderBy</a></li>
--   <li><a>rigmlProject</a></li>
--   <li><a>rigmlFilter</a></li>
--   <li><a>rigmlRegion</a></li>
--   <li><a>rigmlPageToken</a></li>
--   <li><a>rigmlMaxResults</a></li>
--   </ul>
regionInstanceGroupManagersList :: Text -> Text -> RegionInstanceGroupManagersList

-- | Retrieves the list of managed instance groups that are contained
--   within the specified region.
--   
--   <i>See:</i> <a>regionInstanceGroupManagersList</a> smart constructor.
data RegionInstanceGroupManagersList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
rigmlOrderBy :: Lens' RegionInstanceGroupManagersList (Maybe Text)

-- | Project ID for this request.
rigmlProject :: Lens' RegionInstanceGroupManagersList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
rigmlFilter :: Lens' RegionInstanceGroupManagersList (Maybe Text)

-- | Name of the region scoping this request.
rigmlRegion :: Lens' RegionInstanceGroupManagersList Text

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
rigmlPageToken :: Lens' RegionInstanceGroupManagersList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
rigmlMaxResults :: Lens' RegionInstanceGroupManagersList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionInstanceGroupManagers.List.RegionInstanceGroupManagersList
instance Data.Data.Data Network.Google.Resource.Compute.RegionInstanceGroupManagers.List.RegionInstanceGroupManagersList
instance GHC.Show.Show Network.Google.Resource.Compute.RegionInstanceGroupManagers.List.RegionInstanceGroupManagersList
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionInstanceGroupManagers.List.RegionInstanceGroupManagersList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionInstanceGroupManagers.List.RegionInstanceGroupManagersList


-- | Lists the instances in the managed instance group and instances that
--   are scheduled to be created. The list includes any current actions
--   that the group has scheduled for its instances.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionInstanceGroupManagers.listManagedInstances</tt>.
module Network.Google.Resource.Compute.RegionInstanceGroupManagers.ListManagedInstances

-- | A resource alias for
--   <tt>compute.regionInstanceGroupManagers.listManagedInstances</tt>
--   method which the
--   <a>RegionInstanceGroupManagersListManagedInstances</a> request
--   conforms to.
type RegionInstanceGroupManagersListManagedInstancesResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("instanceGroupManagers" :> (Capture "instanceGroupManager" Text :> ("listManagedInstances" :> (QueryParam "order_by" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Post '[JSON] RegionInstanceGroupManagersListInstancesResponse)))))))))))))

-- | Creates a value of
--   <a>RegionInstanceGroupManagersListManagedInstances</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmlmiProject</a></li>
--   <li><a>rigmlmiInstanceGroupManager</a></li>
--   <li><a>rigmlmiOrderBy</a></li>
--   <li><a>rigmlmiFilter</a></li>
--   <li><a>rigmlmiRegion</a></li>
--   <li><a>rigmlmiPageToken</a></li>
--   <li><a>rigmlmiMaxResults</a></li>
--   </ul>
regionInstanceGroupManagersListManagedInstances :: Text -> Text -> Text -> RegionInstanceGroupManagersListManagedInstances

-- | Lists the instances in the managed instance group and instances that
--   are scheduled to be created. The list includes any current actions
--   that the group has scheduled for its instances.
--   
--   <i>See:</i> <a>regionInstanceGroupManagersListManagedInstances</a>
--   smart constructor.
data RegionInstanceGroupManagersListManagedInstances

-- | Project ID for this request.
rigmlmiProject :: Lens' RegionInstanceGroupManagersListManagedInstances Text

-- | The name of the managed instance group.
rigmlmiInstanceGroupManager :: Lens' RegionInstanceGroupManagersListManagedInstances Text
rigmlmiOrderBy :: Lens' RegionInstanceGroupManagersListManagedInstances (Maybe Text)
rigmlmiFilter :: Lens' RegionInstanceGroupManagersListManagedInstances (Maybe Text)

-- | Name of the region scoping this request.
rigmlmiRegion :: Lens' RegionInstanceGroupManagersListManagedInstances Text
rigmlmiPageToken :: Lens' RegionInstanceGroupManagersListManagedInstances (Maybe Text)
rigmlmiMaxResults :: Lens' RegionInstanceGroupManagersListManagedInstances Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionInstanceGroupManagers.ListManagedInstances.RegionInstanceGroupManagersListManagedInstances
instance Data.Data.Data Network.Google.Resource.Compute.RegionInstanceGroupManagers.ListManagedInstances.RegionInstanceGroupManagersListManagedInstances
instance GHC.Show.Show Network.Google.Resource.Compute.RegionInstanceGroupManagers.ListManagedInstances.RegionInstanceGroupManagersListManagedInstances
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionInstanceGroupManagers.ListManagedInstances.RegionInstanceGroupManagersListManagedInstances
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionInstanceGroupManagers.ListManagedInstances.RegionInstanceGroupManagersListManagedInstances


-- | Schedules a group action to recreate the specified instances in the
--   managed instance group. The instances are deleted and recreated using
--   the current instance template for the managed instance group. This
--   operation is marked as DONE when the action is scheduled even if the
--   instances have not yet been recreated. You must separately verify the
--   status of the recreating action with the listmanagedinstances method.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionInstanceGroupManagers.recreateInstances</tt>.
module Network.Google.Resource.Compute.RegionInstanceGroupManagers.RecreateInstances

-- | A resource alias for
--   <tt>compute.regionInstanceGroupManagers.recreateInstances</tt> method
--   which the <a>RegionInstanceGroupManagersRecreateInstances</a> request
--   conforms to.
type RegionInstanceGroupManagersRecreateInstancesResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("instanceGroupManagers" :> (Capture "instanceGroupManager" Text :> ("recreateInstances" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] RegionInstanceGroupManagersRecreateRequest :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>RegionInstanceGroupManagersRecreateInstances</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmriProject</a></li>
--   <li><a>rigmriInstanceGroupManager</a></li>
--   <li><a>rigmriPayload</a></li>
--   <li><a>rigmriRegion</a></li>
--   </ul>
regionInstanceGroupManagersRecreateInstances :: Text -> Text -> RegionInstanceGroupManagersRecreateRequest -> Text -> RegionInstanceGroupManagersRecreateInstances

-- | Schedules a group action to recreate the specified instances in the
--   managed instance group. The instances are deleted and recreated using
--   the current instance template for the managed instance group. This
--   operation is marked as DONE when the action is scheduled even if the
--   instances have not yet been recreated. You must separately verify the
--   status of the recreating action with the listmanagedinstances method.
--   
--   <i>See:</i> <a>regionInstanceGroupManagersRecreateInstances</a> smart
--   constructor.
data RegionInstanceGroupManagersRecreateInstances

-- | Project ID for this request.
rigmriProject :: Lens' RegionInstanceGroupManagersRecreateInstances Text

-- | Name of the managed instance group.
rigmriInstanceGroupManager :: Lens' RegionInstanceGroupManagersRecreateInstances Text

-- | Multipart request metadata.
rigmriPayload :: Lens' RegionInstanceGroupManagersRecreateInstances RegionInstanceGroupManagersRecreateRequest

-- | Name of the region scoping this request.
rigmriRegion :: Lens' RegionInstanceGroupManagersRecreateInstances Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionInstanceGroupManagers.RecreateInstances.RegionInstanceGroupManagersRecreateInstances
instance Data.Data.Data Network.Google.Resource.Compute.RegionInstanceGroupManagers.RecreateInstances.RegionInstanceGroupManagersRecreateInstances
instance GHC.Show.Show Network.Google.Resource.Compute.RegionInstanceGroupManagers.RecreateInstances.RegionInstanceGroupManagersRecreateInstances
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionInstanceGroupManagers.RecreateInstances.RegionInstanceGroupManagersRecreateInstances
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionInstanceGroupManagers.RecreateInstances.RegionInstanceGroupManagersRecreateInstances


-- | Changes the intended size for the managed instance group. If you
--   increase the size, the group schedules actions to create new instances
--   using the current instance template. If you decrease the size, the
--   group schedules delete actions on one or more instances. The resize
--   operation is marked DONE when the resize actions are scheduled even if
--   the group has not yet added or deleted any instances. You must
--   separately verify the status of the creating or deleting actions with
--   the listmanagedinstances method.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionInstanceGroupManagers.resize</tt>.
module Network.Google.Resource.Compute.RegionInstanceGroupManagers.Resize

-- | A resource alias for
--   <tt>compute.regionInstanceGroupManagers.resize</tt> method which the
--   <a>RegionInstanceGroupManagersResize</a> request conforms to.
type RegionInstanceGroupManagersResizeResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("instanceGroupManagers" :> (Capture "instanceGroupManager" Text :> ("resize" :> (QueryParam "size" (Textual Int32) :> (QueryParam "alt" AltJSON :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>RegionInstanceGroupManagersResize</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmrProject</a></li>
--   <li><a>rigmrSize</a></li>
--   <li><a>rigmrInstanceGroupManager</a></li>
--   <li><a>rigmrRegion</a></li>
--   </ul>
regionInstanceGroupManagersResize :: Text -> Int32 -> Text -> Text -> RegionInstanceGroupManagersResize

-- | Changes the intended size for the managed instance group. If you
--   increase the size, the group schedules actions to create new instances
--   using the current instance template. If you decrease the size, the
--   group schedules delete actions on one or more instances. The resize
--   operation is marked DONE when the resize actions are scheduled even if
--   the group has not yet added or deleted any instances. You must
--   separately verify the status of the creating or deleting actions with
--   the listmanagedinstances method.
--   
--   <i>See:</i> <a>regionInstanceGroupManagersResize</a> smart
--   constructor.
data RegionInstanceGroupManagersResize

-- | Project ID for this request.
rigmrProject :: Lens' RegionInstanceGroupManagersResize Text

-- | Number of instances that should exist in this instance group manager.
rigmrSize :: Lens' RegionInstanceGroupManagersResize Int32

-- | Name of the managed instance group.
rigmrInstanceGroupManager :: Lens' RegionInstanceGroupManagersResize Text

-- | Name of the region scoping this request.
rigmrRegion :: Lens' RegionInstanceGroupManagersResize Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionInstanceGroupManagers.Resize.RegionInstanceGroupManagersResize
instance Data.Data.Data Network.Google.Resource.Compute.RegionInstanceGroupManagers.Resize.RegionInstanceGroupManagersResize
instance GHC.Show.Show Network.Google.Resource.Compute.RegionInstanceGroupManagers.Resize.RegionInstanceGroupManagersResize
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionInstanceGroupManagers.Resize.RegionInstanceGroupManagersResize
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionInstanceGroupManagers.Resize.RegionInstanceGroupManagersResize


-- | Sets the instance template to use when creating new instances or
--   recreating instances in this group. Existing instances are not
--   affected.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionInstanceGroupManagers.setInstanceTemplate</tt>.
module Network.Google.Resource.Compute.RegionInstanceGroupManagers.SetInstanceTemplate

-- | A resource alias for
--   <tt>compute.regionInstanceGroupManagers.setInstanceTemplate</tt>
--   method which the <a>RegionInstanceGroupManagersSetInstanceTemplate</a>
--   request conforms to.
type RegionInstanceGroupManagersSetInstanceTemplateResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("instanceGroupManagers" :> (Capture "instanceGroupManager" Text :> ("setInstanceTemplate" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] RegionInstanceGroupManagersSetTemplateRequest :> Post '[JSON] Operation))))))))))

-- | Creates a value of
--   <a>RegionInstanceGroupManagersSetInstanceTemplate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmsitProject</a></li>
--   <li><a>rigmsitInstanceGroupManager</a></li>
--   <li><a>rigmsitPayload</a></li>
--   <li><a>rigmsitRegion</a></li>
--   </ul>
regionInstanceGroupManagersSetInstanceTemplate :: Text -> Text -> RegionInstanceGroupManagersSetTemplateRequest -> Text -> RegionInstanceGroupManagersSetInstanceTemplate

-- | Sets the instance template to use when creating new instances or
--   recreating instances in this group. Existing instances are not
--   affected.
--   
--   <i>See:</i> <a>regionInstanceGroupManagersSetInstanceTemplate</a>
--   smart constructor.
data RegionInstanceGroupManagersSetInstanceTemplate

-- | Project ID for this request.
rigmsitProject :: Lens' RegionInstanceGroupManagersSetInstanceTemplate Text

-- | The name of the managed instance group.
rigmsitInstanceGroupManager :: Lens' RegionInstanceGroupManagersSetInstanceTemplate Text

-- | Multipart request metadata.
rigmsitPayload :: Lens' RegionInstanceGroupManagersSetInstanceTemplate RegionInstanceGroupManagersSetTemplateRequest

-- | Name of the region scoping this request.
rigmsitRegion :: Lens' RegionInstanceGroupManagersSetInstanceTemplate Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionInstanceGroupManagers.SetInstanceTemplate.RegionInstanceGroupManagersSetInstanceTemplate
instance Data.Data.Data Network.Google.Resource.Compute.RegionInstanceGroupManagers.SetInstanceTemplate.RegionInstanceGroupManagersSetInstanceTemplate
instance GHC.Show.Show Network.Google.Resource.Compute.RegionInstanceGroupManagers.SetInstanceTemplate.RegionInstanceGroupManagersSetInstanceTemplate
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionInstanceGroupManagers.SetInstanceTemplate.RegionInstanceGroupManagersSetInstanceTemplate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionInstanceGroupManagers.SetInstanceTemplate.RegionInstanceGroupManagersSetInstanceTemplate


-- | Modifies the target pools to which all new instances in this group are
--   assigned. Existing instances in the group are not affected.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionInstanceGroupManagers.setTargetPools</tt>.
module Network.Google.Resource.Compute.RegionInstanceGroupManagers.SetTargetPools

-- | A resource alias for
--   <tt>compute.regionInstanceGroupManagers.setTargetPools</tt> method
--   which the <a>RegionInstanceGroupManagersSetTargetPools</a> request
--   conforms to.
type RegionInstanceGroupManagersSetTargetPoolsResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("instanceGroupManagers" :> (Capture "instanceGroupManager" Text :> ("setTargetPools" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] RegionInstanceGroupManagersSetTargetPoolsRequest :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>RegionInstanceGroupManagersSetTargetPools</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmstpProject</a></li>
--   <li><a>rigmstpInstanceGroupManager</a></li>
--   <li><a>rigmstpPayload</a></li>
--   <li><a>rigmstpRegion</a></li>
--   </ul>
regionInstanceGroupManagersSetTargetPools :: Text -> Text -> RegionInstanceGroupManagersSetTargetPoolsRequest -> Text -> RegionInstanceGroupManagersSetTargetPools

-- | Modifies the target pools to which all new instances in this group are
--   assigned. Existing instances in the group are not affected.
--   
--   <i>See:</i> <a>regionInstanceGroupManagersSetTargetPools</a> smart
--   constructor.
data RegionInstanceGroupManagersSetTargetPools

-- | Project ID for this request.
rigmstpProject :: Lens' RegionInstanceGroupManagersSetTargetPools Text

-- | Name of the managed instance group.
rigmstpInstanceGroupManager :: Lens' RegionInstanceGroupManagersSetTargetPools Text

-- | Multipart request metadata.
rigmstpPayload :: Lens' RegionInstanceGroupManagersSetTargetPools RegionInstanceGroupManagersSetTargetPoolsRequest

-- | Name of the region scoping this request.
rigmstpRegion :: Lens' RegionInstanceGroupManagersSetTargetPools Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionInstanceGroupManagers.SetTargetPools.RegionInstanceGroupManagersSetTargetPools
instance Data.Data.Data Network.Google.Resource.Compute.RegionInstanceGroupManagers.SetTargetPools.RegionInstanceGroupManagersSetTargetPools
instance GHC.Show.Show Network.Google.Resource.Compute.RegionInstanceGroupManagers.SetTargetPools.RegionInstanceGroupManagersSetTargetPools
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionInstanceGroupManagers.SetTargetPools.RegionInstanceGroupManagersSetTargetPools
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionInstanceGroupManagers.SetTargetPools.RegionInstanceGroupManagersSetTargetPools


-- | Returns the specified instance group resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionInstanceGroups.get</tt>.
module Network.Google.Resource.Compute.RegionInstanceGroups.Get

-- | A resource alias for <tt>compute.regionInstanceGroups.get</tt> method
--   which the <a>RegionInstanceGroupsGet</a> request conforms to.
type RegionInstanceGroupsGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("instanceGroups" :> (Capture "instanceGroup" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] InstanceGroup))))))))

-- | Creates a value of <a>RegionInstanceGroupsGet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>riggProject</a></li>
--   <li><a>riggRegion</a></li>
--   <li><a>riggInstanceGroup</a></li>
--   </ul>
regionInstanceGroupsGet :: Text -> Text -> Text -> RegionInstanceGroupsGet

-- | Returns the specified instance group resource.
--   
--   <i>See:</i> <a>regionInstanceGroupsGet</a> smart constructor.
data RegionInstanceGroupsGet

-- | Project ID for this request.
riggProject :: Lens' RegionInstanceGroupsGet Text

-- | Name of the region scoping this request.
riggRegion :: Lens' RegionInstanceGroupsGet Text

-- | Name of the instance group resource to return.
riggInstanceGroup :: Lens' RegionInstanceGroupsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionInstanceGroups.Get.RegionInstanceGroupsGet
instance Data.Data.Data Network.Google.Resource.Compute.RegionInstanceGroups.Get.RegionInstanceGroupsGet
instance GHC.Show.Show Network.Google.Resource.Compute.RegionInstanceGroups.Get.RegionInstanceGroupsGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionInstanceGroups.Get.RegionInstanceGroupsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionInstanceGroups.Get.RegionInstanceGroupsGet


-- | Retrieves the list of instance group resources contained within the
--   specified region.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionInstanceGroups.list</tt>.
module Network.Google.Resource.Compute.RegionInstanceGroups.List

-- | A resource alias for <tt>compute.regionInstanceGroups.list</tt> method
--   which the <a>RegionInstanceGroupsList</a> request conforms to.
type RegionInstanceGroupsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("instanceGroups" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] RegionInstanceGroupList)))))))))))

-- | Creates a value of <a>RegionInstanceGroupsList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>riglOrderBy</a></li>
--   <li><a>riglProject</a></li>
--   <li><a>riglFilter</a></li>
--   <li><a>riglRegion</a></li>
--   <li><a>riglPageToken</a></li>
--   <li><a>riglMaxResults</a></li>
--   </ul>
regionInstanceGroupsList :: Text -> Text -> RegionInstanceGroupsList

-- | Retrieves the list of instance group resources contained within the
--   specified region.
--   
--   <i>See:</i> <a>regionInstanceGroupsList</a> smart constructor.
data RegionInstanceGroupsList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
riglOrderBy :: Lens' RegionInstanceGroupsList (Maybe Text)

-- | Project ID for this request.
riglProject :: Lens' RegionInstanceGroupsList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
riglFilter :: Lens' RegionInstanceGroupsList (Maybe Text)

-- | Name of the region scoping this request.
riglRegion :: Lens' RegionInstanceGroupsList Text

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
riglPageToken :: Lens' RegionInstanceGroupsList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
riglMaxResults :: Lens' RegionInstanceGroupsList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionInstanceGroups.List.RegionInstanceGroupsList
instance Data.Data.Data Network.Google.Resource.Compute.RegionInstanceGroups.List.RegionInstanceGroupsList
instance GHC.Show.Show Network.Google.Resource.Compute.RegionInstanceGroups.List.RegionInstanceGroupsList
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionInstanceGroups.List.RegionInstanceGroupsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionInstanceGroups.List.RegionInstanceGroupsList


-- | Lists the instances in the specified instance group and displays
--   information about the named ports. Depending on the specified options,
--   this method can list all instances or only the instances that are
--   running.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionInstanceGroups.listInstances</tt>.
module Network.Google.Resource.Compute.RegionInstanceGroups.ListInstances

-- | A resource alias for
--   <tt>compute.regionInstanceGroups.listInstances</tt> method which the
--   <a>RegionInstanceGroupsListInstances'</a> request conforms to.
type RegionInstanceGroupsListInstancesResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("instanceGroups" :> (Capture "instanceGroup" Text :> ("listInstances" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] RegionInstanceGroupsListInstancesRequest :> Post '[JSON] RegionInstanceGroupsListInstances))))))))))))))

-- | Creates a value of <a>RegionInstanceGroupsListInstances'</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigliOrderBy</a></li>
--   <li><a>rigliProject</a></li>
--   <li><a>rigliPayload</a></li>
--   <li><a>rigliFilter</a></li>
--   <li><a>rigliRegion</a></li>
--   <li><a>rigliPageToken</a></li>
--   <li><a>rigliInstanceGroup</a></li>
--   <li><a>rigliMaxResults</a></li>
--   </ul>
regionInstanceGroupsListInstances' :: Text -> RegionInstanceGroupsListInstancesRequest -> Text -> Text -> RegionInstanceGroupsListInstances'

-- | Lists the instances in the specified instance group and displays
--   information about the named ports. Depending on the specified options,
--   this method can list all instances or only the instances that are
--   running.
--   
--   <i>See:</i> <a>regionInstanceGroupsListInstances'</a> smart
--   constructor.
data RegionInstanceGroupsListInstances'

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
rigliOrderBy :: Lens' RegionInstanceGroupsListInstances' (Maybe Text)

-- | Project ID for this request.
rigliProject :: Lens' RegionInstanceGroupsListInstances' Text

-- | Multipart request metadata.
rigliPayload :: Lens' RegionInstanceGroupsListInstances' RegionInstanceGroupsListInstancesRequest

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
rigliFilter :: Lens' RegionInstanceGroupsListInstances' (Maybe Text)

-- | Name of the region scoping this request.
rigliRegion :: Lens' RegionInstanceGroupsListInstances' Text

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
rigliPageToken :: Lens' RegionInstanceGroupsListInstances' (Maybe Text)

-- | Name of the regional instance group for which we want to list the
--   instances.
rigliInstanceGroup :: Lens' RegionInstanceGroupsListInstances' Text

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
rigliMaxResults :: Lens' RegionInstanceGroupsListInstances' Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionInstanceGroups.ListInstances.RegionInstanceGroupsListInstances'
instance Data.Data.Data Network.Google.Resource.Compute.RegionInstanceGroups.ListInstances.RegionInstanceGroupsListInstances'
instance GHC.Show.Show Network.Google.Resource.Compute.RegionInstanceGroups.ListInstances.RegionInstanceGroupsListInstances'
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionInstanceGroups.ListInstances.RegionInstanceGroupsListInstances'
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionInstanceGroups.ListInstances.RegionInstanceGroupsListInstances'


-- | Sets the named ports for the specified regional instance group.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionInstanceGroups.setNamedPorts</tt>.
module Network.Google.Resource.Compute.RegionInstanceGroups.SetNamedPorts

-- | A resource alias for
--   <tt>compute.regionInstanceGroups.setNamedPorts</tt> method which the
--   <a>RegionInstanceGroupsSetNamedPorts</a> request conforms to.
type RegionInstanceGroupsSetNamedPortsResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("instanceGroups" :> (Capture "instanceGroup" Text :> ("setNamedPorts" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] RegionInstanceGroupsSetNamedPortsRequest :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>RegionInstanceGroupsSetNamedPorts</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigsnpProject</a></li>
--   <li><a>rigsnpPayload</a></li>
--   <li><a>rigsnpRegion</a></li>
--   <li><a>rigsnpInstanceGroup</a></li>
--   </ul>
regionInstanceGroupsSetNamedPorts :: Text -> RegionInstanceGroupsSetNamedPortsRequest -> Text -> Text -> RegionInstanceGroupsSetNamedPorts

-- | Sets the named ports for the specified regional instance group.
--   
--   <i>See:</i> <a>regionInstanceGroupsSetNamedPorts</a> smart
--   constructor.
data RegionInstanceGroupsSetNamedPorts

-- | Project ID for this request.
rigsnpProject :: Lens' RegionInstanceGroupsSetNamedPorts Text

-- | Multipart request metadata.
rigsnpPayload :: Lens' RegionInstanceGroupsSetNamedPorts RegionInstanceGroupsSetNamedPortsRequest

-- | Name of the region scoping this request.
rigsnpRegion :: Lens' RegionInstanceGroupsSetNamedPorts Text

-- | The name of the regional instance group where the named ports are
--   updated.
rigsnpInstanceGroup :: Lens' RegionInstanceGroupsSetNamedPorts Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionInstanceGroups.SetNamedPorts.RegionInstanceGroupsSetNamedPorts
instance Data.Data.Data Network.Google.Resource.Compute.RegionInstanceGroups.SetNamedPorts.RegionInstanceGroupsSetNamedPorts
instance GHC.Show.Show Network.Google.Resource.Compute.RegionInstanceGroups.SetNamedPorts.RegionInstanceGroupsSetNamedPorts
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionInstanceGroups.SetNamedPorts.RegionInstanceGroupsSetNamedPorts
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionInstanceGroups.SetNamedPorts.RegionInstanceGroupsSetNamedPorts


-- | Deletes the specified region-specific Operations resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionOperations.delete</tt>.
module Network.Google.Resource.Compute.RegionOperations.Delete

-- | A resource alias for <tt>compute.regionOperations.delete</tt> method
--   which the <a>RegionOperationsDelete</a> request conforms to.
type RegionOperationsDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("operations" :> (Capture "operation" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))))))

-- | Creates a value of <a>RegionOperationsDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rodProject</a></li>
--   <li><a>rodOperation</a></li>
--   <li><a>rodRegion</a></li>
--   </ul>
regionOperationsDelete :: Text -> Text -> Text -> RegionOperationsDelete

-- | Deletes the specified region-specific Operations resource.
--   
--   <i>See:</i> <a>regionOperationsDelete</a> smart constructor.
data RegionOperationsDelete

-- | Project ID for this request.
rodProject :: Lens' RegionOperationsDelete Text

-- | Name of the Operations resource to delete.
rodOperation :: Lens' RegionOperationsDelete Text

-- | Name of the region for this request.
rodRegion :: Lens' RegionOperationsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionOperations.Delete.RegionOperationsDelete
instance Data.Data.Data Network.Google.Resource.Compute.RegionOperations.Delete.RegionOperationsDelete
instance GHC.Show.Show Network.Google.Resource.Compute.RegionOperations.Delete.RegionOperationsDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionOperations.Delete.RegionOperationsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionOperations.Delete.RegionOperationsDelete


-- | Retrieves the specified region-specific Operations resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionOperations.get</tt>.
module Network.Google.Resource.Compute.RegionOperations.Get

-- | A resource alias for <tt>compute.regionOperations.get</tt> method
--   which the <a>RegionOperationsGet</a> request conforms to.
type RegionOperationsGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("operations" :> (Capture "operation" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Operation))))))))

-- | Creates a value of <a>RegionOperationsGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rogProject</a></li>
--   <li><a>rogOperation</a></li>
--   <li><a>rogRegion</a></li>
--   </ul>
regionOperationsGet :: Text -> Text -> Text -> RegionOperationsGet

-- | Retrieves the specified region-specific Operations resource.
--   
--   <i>See:</i> <a>regionOperationsGet</a> smart constructor.
data RegionOperationsGet

-- | Project ID for this request.
rogProject :: Lens' RegionOperationsGet Text

-- | Name of the Operations resource to return.
rogOperation :: Lens' RegionOperationsGet Text

-- | Name of the region for this request.
rogRegion :: Lens' RegionOperationsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionOperations.Get.RegionOperationsGet
instance Data.Data.Data Network.Google.Resource.Compute.RegionOperations.Get.RegionOperationsGet
instance GHC.Show.Show Network.Google.Resource.Compute.RegionOperations.Get.RegionOperationsGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionOperations.Get.RegionOperationsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionOperations.Get.RegionOperationsGet


-- | Retrieves a list of Operation resources contained within the specified
--   region.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regionOperations.list</tt>.
module Network.Google.Resource.Compute.RegionOperations.List

-- | A resource alias for <tt>compute.regionOperations.list</tt> method
--   which the <a>RegionOperationsList</a> request conforms to.
type RegionOperationsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("operations" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] OperationList)))))))))))

-- | Creates a value of <a>RegionOperationsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rolOrderBy</a></li>
--   <li><a>rolProject</a></li>
--   <li><a>rolFilter</a></li>
--   <li><a>rolRegion</a></li>
--   <li><a>rolPageToken</a></li>
--   <li><a>rolMaxResults</a></li>
--   </ul>
regionOperationsList :: Text -> Text -> RegionOperationsList

-- | Retrieves a list of Operation resources contained within the specified
--   region.
--   
--   <i>See:</i> <a>regionOperationsList</a> smart constructor.
data RegionOperationsList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
rolOrderBy :: Lens' RegionOperationsList (Maybe Text)

-- | Project ID for this request.
rolProject :: Lens' RegionOperationsList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
rolFilter :: Lens' RegionOperationsList (Maybe Text)

-- | Name of the region for this request.
rolRegion :: Lens' RegionOperationsList Text

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
rolPageToken :: Lens' RegionOperationsList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
rolMaxResults :: Lens' RegionOperationsList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.RegionOperations.List.RegionOperationsList
instance Data.Data.Data Network.Google.Resource.Compute.RegionOperations.List.RegionOperationsList
instance GHC.Show.Show Network.Google.Resource.Compute.RegionOperations.List.RegionOperationsList
instance GHC.Classes.Eq Network.Google.Resource.Compute.RegionOperations.List.RegionOperationsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.RegionOperations.List.RegionOperationsList


-- | Returns the specified Region resource. Get a list of available regions
--   by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regions.get</tt>.
module Network.Google.Resource.Compute.Regions.Get

-- | A resource alias for <tt>compute.regions.get</tt> method which the
--   <a>RegionsGet</a> request conforms to.
type RegionsGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Region))))))

-- | Creates a value of <a>RegionsGet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rgProject</a></li>
--   <li><a>rgRegion</a></li>
--   </ul>
regionsGet :: Text -> Text -> RegionsGet

-- | Returns the specified Region resource. Get a list of available regions
--   by making a list() request.
--   
--   <i>See:</i> <a>regionsGet</a> smart constructor.
data RegionsGet

-- | Project ID for this request.
rgProject :: Lens' RegionsGet Text

-- | Name of the region resource to return.
rgRegion :: Lens' RegionsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Regions.Get.RegionsGet
instance Data.Data.Data Network.Google.Resource.Compute.Regions.Get.RegionsGet
instance GHC.Show.Show Network.Google.Resource.Compute.Regions.Get.RegionsGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.Regions.Get.RegionsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Regions.Get.RegionsGet


-- | Retrieves the list of region resources available to the specified
--   project.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.regions.list</tt>.
module Network.Google.Resource.Compute.Regions.List

-- | A resource alias for <tt>compute.regions.list</tt> method which the
--   <a>RegionsList</a> request conforms to.
type RegionsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] RegionList)))))))))

-- | Creates a value of <a>RegionsList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>regOrderBy</a></li>
--   <li><a>regProject</a></li>
--   <li><a>regFilter</a></li>
--   <li><a>regPageToken</a></li>
--   <li><a>regMaxResults</a></li>
--   </ul>
regionsList :: Text -> RegionsList

-- | Retrieves the list of region resources available to the specified
--   project.
--   
--   <i>See:</i> <a>regionsList</a> smart constructor.
data RegionsList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
regOrderBy :: Lens' RegionsList (Maybe Text)

-- | Project ID for this request.
regProject :: Lens' RegionsList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
regFilter :: Lens' RegionsList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
regPageToken :: Lens' RegionsList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
regMaxResults :: Lens' RegionsList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.Regions.List.RegionsList
instance Data.Data.Data Network.Google.Resource.Compute.Regions.List.RegionsList
instance GHC.Show.Show Network.Google.Resource.Compute.Regions.List.RegionsList
instance GHC.Classes.Eq Network.Google.Resource.Compute.Regions.List.RegionsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Regions.List.RegionsList


-- | Retrieves an aggregated list of routers.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.routers.aggregatedList</tt>.
module Network.Google.Resource.Compute.Routers.AggregatedList

-- | A resource alias for <tt>compute.routers.aggregatedList</tt> method
--   which the <a>RoutersAggregatedList</a> request conforms to.
type RoutersAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("routers" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] RouterAggregatedList))))))))))

-- | Creates a value of <a>RoutersAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rOrderBy</a></li>
--   <li><a>rProject</a></li>
--   <li><a>rFilter</a></li>
--   <li><a>rPageToken</a></li>
--   <li><a>rMaxResults</a></li>
--   </ul>
routersAggregatedList :: Text -> RoutersAggregatedList

-- | Retrieves an aggregated list of routers.
--   
--   <i>See:</i> <a>routersAggregatedList</a> smart constructor.
data RoutersAggregatedList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
rOrderBy :: Lens' RoutersAggregatedList (Maybe Text)

-- | Project ID for this request.
rProject :: Lens' RoutersAggregatedList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
rFilter :: Lens' RoutersAggregatedList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
rPageToken :: Lens' RoutersAggregatedList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
rMaxResults :: Lens' RoutersAggregatedList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.Routers.AggregatedList.RoutersAggregatedList
instance Data.Data.Data Network.Google.Resource.Compute.Routers.AggregatedList.RoutersAggregatedList
instance GHC.Show.Show Network.Google.Resource.Compute.Routers.AggregatedList.RoutersAggregatedList
instance GHC.Classes.Eq Network.Google.Resource.Compute.Routers.AggregatedList.RoutersAggregatedList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Routers.AggregatedList.RoutersAggregatedList


-- | Deletes the specified Router resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.routers.delete</tt>.
module Network.Google.Resource.Compute.Routers.Delete

-- | A resource alias for <tt>compute.routers.delete</tt> method which the
--   <a>RoutersDelete</a> request conforms to.
type RoutersDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("routers" :> (Capture "router" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation))))))))

-- | Creates a value of <a>RoutersDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rddProject</a></li>
--   <li><a>rddRouter</a></li>
--   <li><a>rddRegion</a></li>
--   </ul>
routersDelete :: Text -> Text -> Text -> RoutersDelete

-- | Deletes the specified Router resource.
--   
--   <i>See:</i> <a>routersDelete</a> smart constructor.
data RoutersDelete

-- | Project ID for this request.
rddProject :: Lens' RoutersDelete Text

-- | Name of the Router resource to delete.
rddRouter :: Lens' RoutersDelete Text

-- | Name of the region for this request.
rddRegion :: Lens' RoutersDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Routers.Delete.RoutersDelete
instance Data.Data.Data Network.Google.Resource.Compute.Routers.Delete.RoutersDelete
instance GHC.Show.Show Network.Google.Resource.Compute.Routers.Delete.RoutersDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.Routers.Delete.RoutersDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Routers.Delete.RoutersDelete


-- | Returns the specified Router resource. Get a list of available routers
--   by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.routers.get</tt>.
module Network.Google.Resource.Compute.Routers.Get

-- | A resource alias for <tt>compute.routers.get</tt> method which the
--   <a>RoutersGet</a> request conforms to.
type RoutersGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("routers" :> (Capture "router" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Router))))))))

-- | Creates a value of <a>RoutersGet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rggProject</a></li>
--   <li><a>rggRouter</a></li>
--   <li><a>rggRegion</a></li>
--   </ul>
routersGet :: Text -> Text -> Text -> RoutersGet

-- | Returns the specified Router resource. Get a list of available routers
--   by making a list() request.
--   
--   <i>See:</i> <a>routersGet</a> smart constructor.
data RoutersGet

-- | Project ID for this request.
rggProject :: Lens' RoutersGet Text

-- | Name of the Router resource to return.
rggRouter :: Lens' RoutersGet Text

-- | Name of the region for this request.
rggRegion :: Lens' RoutersGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Routers.Get.RoutersGet
instance Data.Data.Data Network.Google.Resource.Compute.Routers.Get.RoutersGet
instance GHC.Show.Show Network.Google.Resource.Compute.Routers.Get.RoutersGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.Routers.Get.RoutersGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Routers.Get.RoutersGet


-- | Retrieves runtime information of the specified router.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.routers.getRouterStatus</tt>.
module Network.Google.Resource.Compute.Routers.GetRouterStatus

-- | A resource alias for <tt>compute.routers.getRouterStatus</tt> method
--   which the <a>RoutersGetRouterStatus</a> request conforms to.
type RoutersGetRouterStatusResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("routers" :> (Capture "router" Text :> ("getRouterStatus" :> (QueryParam "alt" AltJSON :> Get '[JSON] RouterStatusResponse)))))))))

-- | Creates a value of <a>RoutersGetRouterStatus</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rgrsProject</a></li>
--   <li><a>rgrsRouter</a></li>
--   <li><a>rgrsRegion</a></li>
--   </ul>
routersGetRouterStatus :: Text -> Text -> Text -> RoutersGetRouterStatus

-- | Retrieves runtime information of the specified router.
--   
--   <i>See:</i> <a>routersGetRouterStatus</a> smart constructor.
data RoutersGetRouterStatus

-- | Project ID for this request.
rgrsProject :: Lens' RoutersGetRouterStatus Text

-- | Name of the Router resource to query.
rgrsRouter :: Lens' RoutersGetRouterStatus Text

-- | Name of the region for this request.
rgrsRegion :: Lens' RoutersGetRouterStatus Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Routers.GetRouterStatus.RoutersGetRouterStatus
instance Data.Data.Data Network.Google.Resource.Compute.Routers.GetRouterStatus.RoutersGetRouterStatus
instance GHC.Show.Show Network.Google.Resource.Compute.Routers.GetRouterStatus.RoutersGetRouterStatus
instance GHC.Classes.Eq Network.Google.Resource.Compute.Routers.GetRouterStatus.RoutersGetRouterStatus
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Routers.GetRouterStatus.RoutersGetRouterStatus


-- | Creates a Router resource in the specified project and region using
--   the data included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.routers.insert</tt>.
module Network.Google.Resource.Compute.Routers.Insert

-- | A resource alias for <tt>compute.routers.insert</tt> method which the
--   <a>RoutersInsert</a> request conforms to.
type RoutersInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("routers" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Router :> Post '[JSON] Operation))))))))

-- | Creates a value of <a>RoutersInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>riProject</a></li>
--   <li><a>riPayload</a></li>
--   <li><a>riRegion</a></li>
--   </ul>
routersInsert :: Text -> Router -> Text -> RoutersInsert

-- | Creates a Router resource in the specified project and region using
--   the data included in the request.
--   
--   <i>See:</i> <a>routersInsert</a> smart constructor.
data RoutersInsert

-- | Project ID for this request.
riProject :: Lens' RoutersInsert Text

-- | Multipart request metadata.
riPayload :: Lens' RoutersInsert Router

-- | Name of the region for this request.
riRegion :: Lens' RoutersInsert Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Routers.Insert.RoutersInsert
instance Data.Data.Data Network.Google.Resource.Compute.Routers.Insert.RoutersInsert
instance GHC.Show.Show Network.Google.Resource.Compute.Routers.Insert.RoutersInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.Routers.Insert.RoutersInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Routers.Insert.RoutersInsert


-- | Retrieves a list of Router resources available to the specified
--   project.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.routers.list</tt>.
module Network.Google.Resource.Compute.Routers.List

-- | A resource alias for <tt>compute.routers.list</tt> method which the
--   <a>RoutersList</a> request conforms to.
type RoutersListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("routers" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] RouterList)))))))))))

-- | Creates a value of <a>RoutersList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rlOrderBy</a></li>
--   <li><a>rlProject</a></li>
--   <li><a>rlFilter</a></li>
--   <li><a>rlRegion</a></li>
--   <li><a>rlPageToken</a></li>
--   <li><a>rlMaxResults</a></li>
--   </ul>
routersList :: Text -> Text -> RoutersList

-- | Retrieves a list of Router resources available to the specified
--   project.
--   
--   <i>See:</i> <a>routersList</a> smart constructor.
data RoutersList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
rlOrderBy :: Lens' RoutersList (Maybe Text)

-- | Project ID for this request.
rlProject :: Lens' RoutersList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
rlFilter :: Lens' RoutersList (Maybe Text)

-- | Name of the region for this request.
rlRegion :: Lens' RoutersList Text

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
rlPageToken :: Lens' RoutersList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
rlMaxResults :: Lens' RoutersList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.Routers.List.RoutersList
instance Data.Data.Data Network.Google.Resource.Compute.Routers.List.RoutersList
instance GHC.Show.Show Network.Google.Resource.Compute.Routers.List.RoutersList
instance GHC.Classes.Eq Network.Google.Resource.Compute.Routers.List.RoutersList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Routers.List.RoutersList


-- | Updates the specified Router resource with the data included in the
--   request. This method supports patch semantics.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.routers.patch</tt>.
module Network.Google.Resource.Compute.Routers.Patch

-- | A resource alias for <tt>compute.routers.patch</tt> method which the
--   <a>RoutersPatch</a> request conforms to.
type RoutersPatchResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("routers" :> (Capture "router" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Router :> Patch '[JSON] Operation)))))))))

-- | Creates a value of <a>RoutersPatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rpProject</a></li>
--   <li><a>rpRouter</a></li>
--   <li><a>rpPayload</a></li>
--   <li><a>rpRegion</a></li>
--   </ul>
routersPatch :: Text -> Text -> Router -> Text -> RoutersPatch

-- | Updates the specified Router resource with the data included in the
--   request. This method supports patch semantics.
--   
--   <i>See:</i> <a>routersPatch</a> smart constructor.
data RoutersPatch

-- | Project ID for this request.
rpProject :: Lens' RoutersPatch Text

-- | Name of the Router resource to update.
rpRouter :: Lens' RoutersPatch Text

-- | Multipart request metadata.
rpPayload :: Lens' RoutersPatch Router

-- | Name of the region for this request.
rpRegion :: Lens' RoutersPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Routers.Patch.RoutersPatch
instance Data.Data.Data Network.Google.Resource.Compute.Routers.Patch.RoutersPatch
instance GHC.Show.Show Network.Google.Resource.Compute.Routers.Patch.RoutersPatch
instance GHC.Classes.Eq Network.Google.Resource.Compute.Routers.Patch.RoutersPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Routers.Patch.RoutersPatch


-- | Preview fields auto-generated during router create and update
--   operations. Calling this method does NOT create or update the router.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.routers.preview</tt>.
module Network.Google.Resource.Compute.Routers.Preview

-- | A resource alias for <tt>compute.routers.preview</tt> method which the
--   <a>RoutersPreview</a> request conforms to.
type RoutersPreviewResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("routers" :> (Capture "router" Text :> ("preview" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Router :> Post '[JSON] RoutersPreviewResponse))))))))))

-- | Creates a value of <a>RoutersPreview</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rppProject</a></li>
--   <li><a>rppRouter</a></li>
--   <li><a>rppPayload</a></li>
--   <li><a>rppRegion</a></li>
--   </ul>
routersPreview :: Text -> Text -> Router -> Text -> RoutersPreview

-- | Preview fields auto-generated during router create and update
--   operations. Calling this method does NOT create or update the router.
--   
--   <i>See:</i> <a>routersPreview</a> smart constructor.
data RoutersPreview

-- | Project ID for this request.
rppProject :: Lens' RoutersPreview Text

-- | Name of the Router resource to query.
rppRouter :: Lens' RoutersPreview Text

-- | Multipart request metadata.
rppPayload :: Lens' RoutersPreview Router

-- | Name of the region for this request.
rppRegion :: Lens' RoutersPreview Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Routers.Preview.RoutersPreview
instance Data.Data.Data Network.Google.Resource.Compute.Routers.Preview.RoutersPreview
instance GHC.Show.Show Network.Google.Resource.Compute.Routers.Preview.RoutersPreview
instance GHC.Classes.Eq Network.Google.Resource.Compute.Routers.Preview.RoutersPreview
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Routers.Preview.RoutersPreview


-- | Updates the specified Router resource with the data included in the
--   request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.routers.update</tt>.
module Network.Google.Resource.Compute.Routers.Update

-- | A resource alias for <tt>compute.routers.update</tt> method which the
--   <a>RoutersUpdate</a> request conforms to.
type RoutersUpdateResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("routers" :> (Capture "router" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Router :> Put '[JSON] Operation)))))))))

-- | Creates a value of <a>RoutersUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ruProject</a></li>
--   <li><a>ruRouter</a></li>
--   <li><a>ruPayload</a></li>
--   <li><a>ruRegion</a></li>
--   </ul>
routersUpdate :: Text -> Text -> Router -> Text -> RoutersUpdate

-- | Updates the specified Router resource with the data included in the
--   request.
--   
--   <i>See:</i> <a>routersUpdate</a> smart constructor.
data RoutersUpdate

-- | Project ID for this request.
ruProject :: Lens' RoutersUpdate Text

-- | Name of the Router resource to update.
ruRouter :: Lens' RoutersUpdate Text

-- | Multipart request metadata.
ruPayload :: Lens' RoutersUpdate Router

-- | Name of the region for this request.
ruRegion :: Lens' RoutersUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Routers.Update.RoutersUpdate
instance Data.Data.Data Network.Google.Resource.Compute.Routers.Update.RoutersUpdate
instance GHC.Show.Show Network.Google.Resource.Compute.Routers.Update.RoutersUpdate
instance GHC.Classes.Eq Network.Google.Resource.Compute.Routers.Update.RoutersUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Routers.Update.RoutersUpdate


-- | Deletes the specified Route resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.routes.delete</tt>.
module Network.Google.Resource.Compute.Routes.Delete

-- | A resource alias for <tt>compute.routes.delete</tt> method which the
--   <a>RoutesDelete</a> request conforms to.
type RoutesDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("routes" :> (Capture "route" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation)))))))

-- | Creates a value of <a>RoutesDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdProject</a></li>
--   <li><a>rdRoute</a></li>
--   </ul>
routesDelete :: Text -> Text -> RoutesDelete

-- | Deletes the specified Route resource.
--   
--   <i>See:</i> <a>routesDelete</a> smart constructor.
data RoutesDelete

-- | Project ID for this request.
rdProject :: Lens' RoutesDelete Text

-- | Name of the Route resource to delete.
rdRoute :: Lens' RoutesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Routes.Delete.RoutesDelete
instance Data.Data.Data Network.Google.Resource.Compute.Routes.Delete.RoutesDelete
instance GHC.Show.Show Network.Google.Resource.Compute.Routes.Delete.RoutesDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.Routes.Delete.RoutesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Routes.Delete.RoutesDelete


-- | Returns the specified Route resource. Get a list of available routes
--   by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.routes.get</tt>.
module Network.Google.Resource.Compute.Routes.Get

-- | A resource alias for <tt>compute.routes.get</tt> method which the
--   <a>RoutesGet</a> request conforms to.
type RoutesGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("routes" :> (Capture "route" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Route)))))))

-- | Creates a value of <a>RoutesGet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rrProject</a></li>
--   <li><a>rrRoute</a></li>
--   </ul>
routesGet :: Text -> Text -> RoutesGet

-- | Returns the specified Route resource. Get a list of available routes
--   by making a list() request.
--   
--   <i>See:</i> <a>routesGet</a> smart constructor.
data RoutesGet

-- | Project ID for this request.
rrProject :: Lens' RoutesGet Text

-- | Name of the Route resource to return.
rrRoute :: Lens' RoutesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Routes.Get.RoutesGet
instance Data.Data.Data Network.Google.Resource.Compute.Routes.Get.RoutesGet
instance GHC.Show.Show Network.Google.Resource.Compute.Routes.Get.RoutesGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.Routes.Get.RoutesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Routes.Get.RoutesGet


-- | Creates a Route resource in the specified project using the data
--   included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.routes.insert</tt>.
module Network.Google.Resource.Compute.Routes.Insert

-- | A resource alias for <tt>compute.routes.insert</tt> method which the
--   <a>RoutesInsert</a> request conforms to.
type RoutesInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("routes" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Route :> Post '[JSON] Operation)))))))

-- | Creates a value of <a>RoutesInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rouProject</a></li>
--   <li><a>rouPayload</a></li>
--   </ul>
routesInsert :: Text -> Route -> RoutesInsert

-- | Creates a Route resource in the specified project using the data
--   included in the request.
--   
--   <i>See:</i> <a>routesInsert</a> smart constructor.
data RoutesInsert

-- | Project ID for this request.
rouProject :: Lens' RoutesInsert Text

-- | Multipart request metadata.
rouPayload :: Lens' RoutesInsert Route
instance GHC.Generics.Generic Network.Google.Resource.Compute.Routes.Insert.RoutesInsert
instance Data.Data.Data Network.Google.Resource.Compute.Routes.Insert.RoutesInsert
instance GHC.Show.Show Network.Google.Resource.Compute.Routes.Insert.RoutesInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.Routes.Insert.RoutesInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Routes.Insert.RoutesInsert


-- | Retrieves the list of Route resources available to the specified
--   project.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.routes.list</tt>.
module Network.Google.Resource.Compute.Routes.List

-- | A resource alias for <tt>compute.routes.list</tt> method which the
--   <a>RoutesList</a> request conforms to.
type RoutesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("routes" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] RouteList))))))))))

-- | Creates a value of <a>RoutesList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rllOrderBy</a></li>
--   <li><a>rllProject</a></li>
--   <li><a>rllFilter</a></li>
--   <li><a>rllPageToken</a></li>
--   <li><a>rllMaxResults</a></li>
--   </ul>
routesList :: Text -> RoutesList

-- | Retrieves the list of Route resources available to the specified
--   project.
--   
--   <i>See:</i> <a>routesList</a> smart constructor.
data RoutesList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
rllOrderBy :: Lens' RoutesList (Maybe Text)

-- | Project ID for this request.
rllProject :: Lens' RoutesList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
rllFilter :: Lens' RoutesList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
rllPageToken :: Lens' RoutesList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
rllMaxResults :: Lens' RoutesList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.Routes.List.RoutesList
instance Data.Data.Data Network.Google.Resource.Compute.Routes.List.RoutesList
instance GHC.Show.Show Network.Google.Resource.Compute.Routes.List.RoutesList
instance GHC.Classes.Eq Network.Google.Resource.Compute.Routes.List.RoutesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Routes.List.RoutesList


-- | Deletes the specified SslCertificate resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.sslCertificates.delete</tt>.
module Network.Google.Resource.Compute.SSLCertificates.Delete

-- | A resource alias for <tt>compute.sslCertificates.delete</tt> method
--   which the <a>SSLCertificatesDelete</a> request conforms to.
type SSLCertificatesDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("sslCertificates" :> (Capture "sslCertificate" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation)))))))

-- | Creates a value of <a>SSLCertificatesDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>scdProject</a></li>
--   <li><a>scdSSLCertificate</a></li>
--   </ul>
sslCertificatesDelete :: Text -> Text -> SSLCertificatesDelete

-- | Deletes the specified SslCertificate resource.
--   
--   <i>See:</i> <a>sslCertificatesDelete</a> smart constructor.
data SSLCertificatesDelete

-- | Project ID for this request.
scdProject :: Lens' SSLCertificatesDelete Text

-- | Name of the SslCertificate resource to delete.
scdSSLCertificate :: Lens' SSLCertificatesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.SSLCertificates.Delete.SSLCertificatesDelete
instance Data.Data.Data Network.Google.Resource.Compute.SSLCertificates.Delete.SSLCertificatesDelete
instance GHC.Show.Show Network.Google.Resource.Compute.SSLCertificates.Delete.SSLCertificatesDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.SSLCertificates.Delete.SSLCertificatesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.SSLCertificates.Delete.SSLCertificatesDelete


-- | Returns the specified SslCertificate resource. Get a list of available
--   SSL certificates by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.sslCertificates.get</tt>.
module Network.Google.Resource.Compute.SSLCertificates.Get

-- | A resource alias for <tt>compute.sslCertificates.get</tt> method which
--   the <a>SSLCertificatesGet</a> request conforms to.
type SSLCertificatesGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("sslCertificates" :> (Capture "sslCertificate" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] SSLCertificate)))))))

-- | Creates a value of <a>SSLCertificatesGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>scgProject</a></li>
--   <li><a>scgSSLCertificate</a></li>
--   </ul>
sslCertificatesGet :: Text -> Text -> SSLCertificatesGet

-- | Returns the specified SslCertificate resource. Get a list of available
--   SSL certificates by making a list() request.
--   
--   <i>See:</i> <a>sslCertificatesGet</a> smart constructor.
data SSLCertificatesGet

-- | Project ID for this request.
scgProject :: Lens' SSLCertificatesGet Text

-- | Name of the SslCertificate resource to return.
scgSSLCertificate :: Lens' SSLCertificatesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.SSLCertificates.Get.SSLCertificatesGet
instance Data.Data.Data Network.Google.Resource.Compute.SSLCertificates.Get.SSLCertificatesGet
instance GHC.Show.Show Network.Google.Resource.Compute.SSLCertificates.Get.SSLCertificatesGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.SSLCertificates.Get.SSLCertificatesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.SSLCertificates.Get.SSLCertificatesGet


-- | Creates a SslCertificate resource in the specified project using the
--   data included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.sslCertificates.insert</tt>.
module Network.Google.Resource.Compute.SSLCertificates.Insert

-- | A resource alias for <tt>compute.sslCertificates.insert</tt> method
--   which the <a>SSLCertificatesInsert</a> request conforms to.
type SSLCertificatesInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("sslCertificates" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] SSLCertificate :> Post '[JSON] Operation)))))))

-- | Creates a value of <a>SSLCertificatesInsert</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sciProject</a></li>
--   <li><a>sciPayload</a></li>
--   </ul>
sslCertificatesInsert :: Text -> SSLCertificate -> SSLCertificatesInsert

-- | Creates a SslCertificate resource in the specified project using the
--   data included in the request.
--   
--   <i>See:</i> <a>sslCertificatesInsert</a> smart constructor.
data SSLCertificatesInsert

-- | Project ID for this request.
sciProject :: Lens' SSLCertificatesInsert Text

-- | Multipart request metadata.
sciPayload :: Lens' SSLCertificatesInsert SSLCertificate
instance GHC.Generics.Generic Network.Google.Resource.Compute.SSLCertificates.Insert.SSLCertificatesInsert
instance Data.Data.Data Network.Google.Resource.Compute.SSLCertificates.Insert.SSLCertificatesInsert
instance GHC.Show.Show Network.Google.Resource.Compute.SSLCertificates.Insert.SSLCertificatesInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.SSLCertificates.Insert.SSLCertificatesInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.SSLCertificates.Insert.SSLCertificatesInsert


-- | Retrieves the list of SslCertificate resources available to the
--   specified project.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.sslCertificates.list</tt>.
module Network.Google.Resource.Compute.SSLCertificates.List

-- | A resource alias for <tt>compute.sslCertificates.list</tt> method
--   which the <a>SSLCertificatesList</a> request conforms to.
type SSLCertificatesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("sslCertificates" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] SSLCertificateList))))))))))

-- | Creates a value of <a>SSLCertificatesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sclOrderBy</a></li>
--   <li><a>sclProject</a></li>
--   <li><a>sclFilter</a></li>
--   <li><a>sclPageToken</a></li>
--   <li><a>sclMaxResults</a></li>
--   </ul>
sslCertificatesList :: Text -> SSLCertificatesList

-- | Retrieves the list of SslCertificate resources available to the
--   specified project.
--   
--   <i>See:</i> <a>sslCertificatesList</a> smart constructor.
data SSLCertificatesList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
sclOrderBy :: Lens' SSLCertificatesList (Maybe Text)

-- | Project ID for this request.
sclProject :: Lens' SSLCertificatesList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
sclFilter :: Lens' SSLCertificatesList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
sclPageToken :: Lens' SSLCertificatesList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
sclMaxResults :: Lens' SSLCertificatesList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.SSLCertificates.List.SSLCertificatesList
instance Data.Data.Data Network.Google.Resource.Compute.SSLCertificates.List.SSLCertificatesList
instance GHC.Show.Show Network.Google.Resource.Compute.SSLCertificates.List.SSLCertificatesList
instance GHC.Classes.Eq Network.Google.Resource.Compute.SSLCertificates.List.SSLCertificatesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.SSLCertificates.List.SSLCertificatesList


-- | Deletes the specified Snapshot resource. Keep in mind that deleting a
--   single snapshot might not necessarily delete all the data on that
--   snapshot. If any data on the snapshot that is marked for deletion is
--   needed for subsequent snapshots, the data will be moved to the next
--   corresponding snapshot. For more information, see Deleting snaphots.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.snapshots.delete</tt>.
module Network.Google.Resource.Compute.Snapshots.Delete

-- | A resource alias for <tt>compute.snapshots.delete</tt> method which
--   the <a>SnapshotsDelete</a> request conforms to.
type SnapshotsDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("snapshots" :> (Capture "snapshot" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation)))))))

-- | Creates a value of <a>SnapshotsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>snaSnapshot</a></li>
--   <li><a>snaProject</a></li>
--   </ul>
snapshotsDelete :: Text -> Text -> SnapshotsDelete

-- | Deletes the specified Snapshot resource. Keep in mind that deleting a
--   single snapshot might not necessarily delete all the data on that
--   snapshot. If any data on the snapshot that is marked for deletion is
--   needed for subsequent snapshots, the data will be moved to the next
--   corresponding snapshot. For more information, see Deleting snaphots.
--   
--   <i>See:</i> <a>snapshotsDelete</a> smart constructor.
data SnapshotsDelete

-- | Name of the Snapshot resource to delete.
snaSnapshot :: Lens' SnapshotsDelete Text

-- | Project ID for this request.
snaProject :: Lens' SnapshotsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Snapshots.Delete.SnapshotsDelete
instance Data.Data.Data Network.Google.Resource.Compute.Snapshots.Delete.SnapshotsDelete
instance GHC.Show.Show Network.Google.Resource.Compute.Snapshots.Delete.SnapshotsDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.Snapshots.Delete.SnapshotsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Snapshots.Delete.SnapshotsDelete


-- | Returns the specified Snapshot resource. Get a list of available
--   snapshots by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.snapshots.get</tt>.
module Network.Google.Resource.Compute.Snapshots.Get

-- | A resource alias for <tt>compute.snapshots.get</tt> method which the
--   <a>SnapshotsGet</a> request conforms to.
type SnapshotsGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("snapshots" :> (Capture "snapshot" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Snapshot)))))))

-- | Creates a value of <a>SnapshotsGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sggSnapshot</a></li>
--   <li><a>sggProject</a></li>
--   </ul>
snapshotsGet :: Text -> Text -> SnapshotsGet

-- | Returns the specified Snapshot resource. Get a list of available
--   snapshots by making a list() request.
--   
--   <i>See:</i> <a>snapshotsGet</a> smart constructor.
data SnapshotsGet

-- | Name of the Snapshot resource to return.
sggSnapshot :: Lens' SnapshotsGet Text

-- | Project ID for this request.
sggProject :: Lens' SnapshotsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Snapshots.Get.SnapshotsGet
instance Data.Data.Data Network.Google.Resource.Compute.Snapshots.Get.SnapshotsGet
instance GHC.Show.Show Network.Google.Resource.Compute.Snapshots.Get.SnapshotsGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.Snapshots.Get.SnapshotsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Snapshots.Get.SnapshotsGet


-- | Retrieves the list of Snapshot resources contained within the
--   specified project.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.snapshots.list</tt>.
module Network.Google.Resource.Compute.Snapshots.List

-- | A resource alias for <tt>compute.snapshots.list</tt> method which the
--   <a>SnapshotsList</a> request conforms to.
type SnapshotsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("snapshots" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] SnapshotList))))))))))

-- | Creates a value of <a>SnapshotsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sOrderBy</a></li>
--   <li><a>sProject</a></li>
--   <li><a>sFilter</a></li>
--   <li><a>sPageToken</a></li>
--   <li><a>sMaxResults</a></li>
--   </ul>
snapshotsList :: Text -> SnapshotsList

-- | Retrieves the list of Snapshot resources contained within the
--   specified project.
--   
--   <i>See:</i> <a>snapshotsList</a> smart constructor.
data SnapshotsList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
sOrderBy :: Lens' SnapshotsList (Maybe Text)

-- | Project ID for this request.
sProject :: Lens' SnapshotsList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
sFilter :: Lens' SnapshotsList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
sPageToken :: Lens' SnapshotsList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
sMaxResults :: Lens' SnapshotsList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.Snapshots.List.SnapshotsList
instance Data.Data.Data Network.Google.Resource.Compute.Snapshots.List.SnapshotsList
instance GHC.Show.Show Network.Google.Resource.Compute.Snapshots.List.SnapshotsList
instance GHC.Classes.Eq Network.Google.Resource.Compute.Snapshots.List.SnapshotsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Snapshots.List.SnapshotsList


-- | Retrieves an aggregated list of subnetworks.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.subnetworks.aggregatedList</tt>.
module Network.Google.Resource.Compute.Subnetworks.AggregatedList

-- | A resource alias for <tt>compute.subnetworks.aggregatedList</tt>
--   method which the <a>SubnetworksAggregatedList</a> request conforms to.
type SubnetworksAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("subnetworks" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] SubnetworkAggregatedList))))))))))

-- | Creates a value of <a>SubnetworksAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>salOrderBy</a></li>
--   <li><a>salProject</a></li>
--   <li><a>salFilter</a></li>
--   <li><a>salPageToken</a></li>
--   <li><a>salMaxResults</a></li>
--   </ul>
subnetworksAggregatedList :: Text -> SubnetworksAggregatedList

-- | Retrieves an aggregated list of subnetworks.
--   
--   <i>See:</i> <a>subnetworksAggregatedList</a> smart constructor.
data SubnetworksAggregatedList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
salOrderBy :: Lens' SubnetworksAggregatedList (Maybe Text)

-- | Project ID for this request.
salProject :: Lens' SubnetworksAggregatedList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
salFilter :: Lens' SubnetworksAggregatedList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
salPageToken :: Lens' SubnetworksAggregatedList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
salMaxResults :: Lens' SubnetworksAggregatedList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.Subnetworks.AggregatedList.SubnetworksAggregatedList
instance Data.Data.Data Network.Google.Resource.Compute.Subnetworks.AggregatedList.SubnetworksAggregatedList
instance GHC.Show.Show Network.Google.Resource.Compute.Subnetworks.AggregatedList.SubnetworksAggregatedList
instance GHC.Classes.Eq Network.Google.Resource.Compute.Subnetworks.AggregatedList.SubnetworksAggregatedList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Subnetworks.AggregatedList.SubnetworksAggregatedList


-- | Deletes the specified subnetwork.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.subnetworks.delete</tt>.
module Network.Google.Resource.Compute.Subnetworks.Delete

-- | A resource alias for <tt>compute.subnetworks.delete</tt> method which
--   the <a>SubnetworksDelete</a> request conforms to.
type SubnetworksDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("subnetworks" :> (Capture "subnetwork" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation))))))))

-- | Creates a value of <a>SubnetworksDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sdProject</a></li>
--   <li><a>sdSubnetwork</a></li>
--   <li><a>sdRegion</a></li>
--   </ul>
subnetworksDelete :: Text -> Text -> Text -> SubnetworksDelete

-- | Deletes the specified subnetwork.
--   
--   <i>See:</i> <a>subnetworksDelete</a> smart constructor.
data SubnetworksDelete

-- | Project ID for this request.
sdProject :: Lens' SubnetworksDelete Text

-- | Name of the Subnetwork resource to delete.
sdSubnetwork :: Lens' SubnetworksDelete Text

-- | Name of the region scoping this request.
sdRegion :: Lens' SubnetworksDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Subnetworks.Delete.SubnetworksDelete
instance Data.Data.Data Network.Google.Resource.Compute.Subnetworks.Delete.SubnetworksDelete
instance GHC.Show.Show Network.Google.Resource.Compute.Subnetworks.Delete.SubnetworksDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.Subnetworks.Delete.SubnetworksDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Subnetworks.Delete.SubnetworksDelete


-- | Expands the IP CIDR range of the subnetwork to a specified value.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.subnetworks.expandIpCidrRange</tt>.
module Network.Google.Resource.Compute.Subnetworks.ExpandIPCIdRRange

-- | A resource alias for <tt>compute.subnetworks.expandIpCidrRange</tt>
--   method which the <a>SubnetworksExpandIPCIdRRange</a> request conforms
--   to.
type SubnetworksExpandIPCIdRRangeResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("subnetworks" :> (Capture "subnetwork" Text :> ("expandIpCidrRange" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] SubnetworksExpandIPCIdRRangeRequest :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>SubnetworksExpandIPCIdRRange</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>seicirrProject</a></li>
--   <li><a>seicirrPayload</a></li>
--   <li><a>seicirrSubnetwork</a></li>
--   <li><a>seicirrRegion</a></li>
--   </ul>
subnetworksExpandIPCIdRRange :: Text -> SubnetworksExpandIPCIdRRangeRequest -> Text -> Text -> SubnetworksExpandIPCIdRRange

-- | Expands the IP CIDR range of the subnetwork to a specified value.
--   
--   <i>See:</i> <a>subnetworksExpandIPCIdRRange</a> smart constructor.
data SubnetworksExpandIPCIdRRange

-- | Project ID for this request.
seicirrProject :: Lens' SubnetworksExpandIPCIdRRange Text

-- | Multipart request metadata.
seicirrPayload :: Lens' SubnetworksExpandIPCIdRRange SubnetworksExpandIPCIdRRangeRequest

-- | Name of the Subnetwork resource to update.
seicirrSubnetwork :: Lens' SubnetworksExpandIPCIdRRange Text

-- | Name of the region scoping this request.
seicirrRegion :: Lens' SubnetworksExpandIPCIdRRange Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Subnetworks.ExpandIPCIdRRange.SubnetworksExpandIPCIdRRange
instance Data.Data.Data Network.Google.Resource.Compute.Subnetworks.ExpandIPCIdRRange.SubnetworksExpandIPCIdRRange
instance GHC.Show.Show Network.Google.Resource.Compute.Subnetworks.ExpandIPCIdRRange.SubnetworksExpandIPCIdRRange
instance GHC.Classes.Eq Network.Google.Resource.Compute.Subnetworks.ExpandIPCIdRRange.SubnetworksExpandIPCIdRRange
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Subnetworks.ExpandIPCIdRRange.SubnetworksExpandIPCIdRRange


-- | Returns the specified subnetwork. Get a list of available subnetworks
--   list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.subnetworks.get</tt>.
module Network.Google.Resource.Compute.Subnetworks.Get

-- | A resource alias for <tt>compute.subnetworks.get</tt> method which the
--   <a>SubnetworksGet</a> request conforms to.
type SubnetworksGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("subnetworks" :> (Capture "subnetwork" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Subnetwork))))))))

-- | Creates a value of <a>SubnetworksGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sgProject</a></li>
--   <li><a>sgSubnetwork</a></li>
--   <li><a>sgRegion</a></li>
--   </ul>
subnetworksGet :: Text -> Text -> Text -> SubnetworksGet

-- | Returns the specified subnetwork. Get a list of available subnetworks
--   list() request.
--   
--   <i>See:</i> <a>subnetworksGet</a> smart constructor.
data SubnetworksGet

-- | Project ID for this request.
sgProject :: Lens' SubnetworksGet Text

-- | Name of the Subnetwork resource to return.
sgSubnetwork :: Lens' SubnetworksGet Text

-- | Name of the region scoping this request.
sgRegion :: Lens' SubnetworksGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Subnetworks.Get.SubnetworksGet
instance Data.Data.Data Network.Google.Resource.Compute.Subnetworks.Get.SubnetworksGet
instance GHC.Show.Show Network.Google.Resource.Compute.Subnetworks.Get.SubnetworksGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.Subnetworks.Get.SubnetworksGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Subnetworks.Get.SubnetworksGet


-- | Creates a subnetwork in the specified project using the data included
--   in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.subnetworks.insert</tt>.
module Network.Google.Resource.Compute.Subnetworks.Insert

-- | A resource alias for <tt>compute.subnetworks.insert</tt> method which
--   the <a>SubnetworksInsert</a> request conforms to.
type SubnetworksInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("subnetworks" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Subnetwork :> Post '[JSON] Operation))))))))

-- | Creates a value of <a>SubnetworksInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>siProject</a></li>
--   <li><a>siPayload</a></li>
--   <li><a>siRegion</a></li>
--   </ul>
subnetworksInsert :: Text -> Subnetwork -> Text -> SubnetworksInsert

-- | Creates a subnetwork in the specified project using the data included
--   in the request.
--   
--   <i>See:</i> <a>subnetworksInsert</a> smart constructor.
data SubnetworksInsert

-- | Project ID for this request.
siProject :: Lens' SubnetworksInsert Text

-- | Multipart request metadata.
siPayload :: Lens' SubnetworksInsert Subnetwork

-- | Name of the region scoping this request.
siRegion :: Lens' SubnetworksInsert Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Subnetworks.Insert.SubnetworksInsert
instance Data.Data.Data Network.Google.Resource.Compute.Subnetworks.Insert.SubnetworksInsert
instance GHC.Show.Show Network.Google.Resource.Compute.Subnetworks.Insert.SubnetworksInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.Subnetworks.Insert.SubnetworksInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Subnetworks.Insert.SubnetworksInsert


-- | Retrieves a list of subnetworks available to the specified project.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.subnetworks.list</tt>.
module Network.Google.Resource.Compute.Subnetworks.List

-- | A resource alias for <tt>compute.subnetworks.list</tt> method which
--   the <a>SubnetworksList</a> request conforms to.
type SubnetworksListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("subnetworks" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] SubnetworkList)))))))))))

-- | Creates a value of <a>SubnetworksList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>slOrderBy</a></li>
--   <li><a>slProject</a></li>
--   <li><a>slFilter</a></li>
--   <li><a>slRegion</a></li>
--   <li><a>slPageToken</a></li>
--   <li><a>slMaxResults</a></li>
--   </ul>
subnetworksList :: Text -> Text -> SubnetworksList

-- | Retrieves a list of subnetworks available to the specified project.
--   
--   <i>See:</i> <a>subnetworksList</a> smart constructor.
data SubnetworksList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
slOrderBy :: Lens' SubnetworksList (Maybe Text)

-- | Project ID for this request.
slProject :: Lens' SubnetworksList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
slFilter :: Lens' SubnetworksList (Maybe Text)

-- | Name of the region scoping this request.
slRegion :: Lens' SubnetworksList Text

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
slPageToken :: Lens' SubnetworksList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
slMaxResults :: Lens' SubnetworksList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.Subnetworks.List.SubnetworksList
instance Data.Data.Data Network.Google.Resource.Compute.Subnetworks.List.SubnetworksList
instance GHC.Show.Show Network.Google.Resource.Compute.Subnetworks.List.SubnetworksList
instance GHC.Classes.Eq Network.Google.Resource.Compute.Subnetworks.List.SubnetworksList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Subnetworks.List.SubnetworksList


-- | Deletes the specified TargetHttpProxy resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetHttpProxies.delete</tt>.
module Network.Google.Resource.Compute.TargetHTTPProxies.Delete

-- | A resource alias for <tt>compute.targetHttpProxies.delete</tt> method
--   which the <a>TargetHTTPProxiesDelete</a> request conforms to.
type TargetHTTPProxiesDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetHttpProxies" :> (Capture "targetHttpProxy" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation)))))))

-- | Creates a value of <a>TargetHTTPProxiesDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>thttppdProject</a></li>
--   <li><a>thttppdTargetHTTPProxy</a></li>
--   </ul>
targetHTTPProxiesDelete :: Text -> Text -> TargetHTTPProxiesDelete

-- | Deletes the specified TargetHttpProxy resource.
--   
--   <i>See:</i> <a>targetHTTPProxiesDelete</a> smart constructor.
data TargetHTTPProxiesDelete

-- | Project ID for this request.
thttppdProject :: Lens' TargetHTTPProxiesDelete Text

-- | Name of the TargetHttpProxy resource to delete.
thttppdTargetHTTPProxy :: Lens' TargetHTTPProxiesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetHTTPProxies.Delete.TargetHTTPProxiesDelete
instance Data.Data.Data Network.Google.Resource.Compute.TargetHTTPProxies.Delete.TargetHTTPProxiesDelete
instance GHC.Show.Show Network.Google.Resource.Compute.TargetHTTPProxies.Delete.TargetHTTPProxiesDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetHTTPProxies.Delete.TargetHTTPProxiesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetHTTPProxies.Delete.TargetHTTPProxiesDelete


-- | Returns the specified TargetHttpProxy resource. Get a list of
--   available target HTTP proxies by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetHttpProxies.get</tt>.
module Network.Google.Resource.Compute.TargetHTTPProxies.Get

-- | A resource alias for <tt>compute.targetHttpProxies.get</tt> method
--   which the <a>TargetHTTPProxiesGet</a> request conforms to.
type TargetHTTPProxiesGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetHttpProxies" :> (Capture "targetHttpProxy" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetHTTPProxy)))))))

-- | Creates a value of <a>TargetHTTPProxiesGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>thttppgProject</a></li>
--   <li><a>thttppgTargetHTTPProxy</a></li>
--   </ul>
targetHTTPProxiesGet :: Text -> Text -> TargetHTTPProxiesGet

-- | Returns the specified TargetHttpProxy resource. Get a list of
--   available target HTTP proxies by making a list() request.
--   
--   <i>See:</i> <a>targetHTTPProxiesGet</a> smart constructor.
data TargetHTTPProxiesGet

-- | Project ID for this request.
thttppgProject :: Lens' TargetHTTPProxiesGet Text

-- | Name of the TargetHttpProxy resource to return.
thttppgTargetHTTPProxy :: Lens' TargetHTTPProxiesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetHTTPProxies.Get.TargetHTTPProxiesGet
instance Data.Data.Data Network.Google.Resource.Compute.TargetHTTPProxies.Get.TargetHTTPProxiesGet
instance GHC.Show.Show Network.Google.Resource.Compute.TargetHTTPProxies.Get.TargetHTTPProxiesGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetHTTPProxies.Get.TargetHTTPProxiesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetHTTPProxies.Get.TargetHTTPProxiesGet


-- | Creates a TargetHttpProxy resource in the specified project using the
--   data included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetHttpProxies.insert</tt>.
module Network.Google.Resource.Compute.TargetHTTPProxies.Insert

-- | A resource alias for <tt>compute.targetHttpProxies.insert</tt> method
--   which the <a>TargetHTTPProxiesInsert</a> request conforms to.
type TargetHTTPProxiesInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetHttpProxies" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TargetHTTPProxy :> Post '[JSON] Operation)))))))

-- | Creates a value of <a>TargetHTTPProxiesInsert</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>thttppiProject</a></li>
--   <li><a>thttppiPayload</a></li>
--   </ul>
targetHTTPProxiesInsert :: Text -> TargetHTTPProxy -> TargetHTTPProxiesInsert

-- | Creates a TargetHttpProxy resource in the specified project using the
--   data included in the request.
--   
--   <i>See:</i> <a>targetHTTPProxiesInsert</a> smart constructor.
data TargetHTTPProxiesInsert

-- | Project ID for this request.
thttppiProject :: Lens' TargetHTTPProxiesInsert Text

-- | Multipart request metadata.
thttppiPayload :: Lens' TargetHTTPProxiesInsert TargetHTTPProxy
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetHTTPProxies.Insert.TargetHTTPProxiesInsert
instance Data.Data.Data Network.Google.Resource.Compute.TargetHTTPProxies.Insert.TargetHTTPProxiesInsert
instance GHC.Show.Show Network.Google.Resource.Compute.TargetHTTPProxies.Insert.TargetHTTPProxiesInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetHTTPProxies.Insert.TargetHTTPProxiesInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetHTTPProxies.Insert.TargetHTTPProxiesInsert


-- | Retrieves the list of TargetHttpProxy resources available to the
--   specified project.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetHttpProxies.list</tt>.
module Network.Google.Resource.Compute.TargetHTTPProxies.List

-- | A resource alias for <tt>compute.targetHttpProxies.list</tt> method
--   which the <a>TargetHTTPProxiesList</a> request conforms to.
type TargetHTTPProxiesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetHttpProxies" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetHTTPProxyList))))))))))

-- | Creates a value of <a>TargetHTTPProxiesList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>thttpplOrderBy</a></li>
--   <li><a>thttpplProject</a></li>
--   <li><a>thttpplFilter</a></li>
--   <li><a>thttpplPageToken</a></li>
--   <li><a>thttpplMaxResults</a></li>
--   </ul>
targetHTTPProxiesList :: Text -> TargetHTTPProxiesList

-- | Retrieves the list of TargetHttpProxy resources available to the
--   specified project.
--   
--   <i>See:</i> <a>targetHTTPProxiesList</a> smart constructor.
data TargetHTTPProxiesList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
thttpplOrderBy :: Lens' TargetHTTPProxiesList (Maybe Text)

-- | Project ID for this request.
thttpplProject :: Lens' TargetHTTPProxiesList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
thttpplFilter :: Lens' TargetHTTPProxiesList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
thttpplPageToken :: Lens' TargetHTTPProxiesList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
thttpplMaxResults :: Lens' TargetHTTPProxiesList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetHTTPProxies.List.TargetHTTPProxiesList
instance Data.Data.Data Network.Google.Resource.Compute.TargetHTTPProxies.List.TargetHTTPProxiesList
instance GHC.Show.Show Network.Google.Resource.Compute.TargetHTTPProxies.List.TargetHTTPProxiesList
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetHTTPProxies.List.TargetHTTPProxiesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetHTTPProxies.List.TargetHTTPProxiesList


-- | Changes the URL map for TargetHttpProxy.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetHttpProxies.setUrlMap</tt>.
module Network.Google.Resource.Compute.TargetHTTPProxies.SetURLMap

-- | A resource alias for <tt>compute.targetHttpProxies.setUrlMap</tt>
--   method which the <a>TargetHTTPProxiesSetURLMap</a> request conforms
--   to.
type TargetHTTPProxiesSetURLMapResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("targetHttpProxies" :> (Capture "targetHttpProxy" Text :> ("setUrlMap" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] URLMapReference :> Post '[JSON] Operation))))))))

-- | Creates a value of <a>TargetHTTPProxiesSetURLMap</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>thttppsumProject</a></li>
--   <li><a>thttppsumPayload</a></li>
--   <li><a>thttppsumTargetHTTPProxy</a></li>
--   </ul>
targetHTTPProxiesSetURLMap :: Text -> URLMapReference -> Text -> TargetHTTPProxiesSetURLMap

-- | Changes the URL map for TargetHttpProxy.
--   
--   <i>See:</i> <a>targetHTTPProxiesSetURLMap</a> smart constructor.
data TargetHTTPProxiesSetURLMap

-- | Project ID for this request.
thttppsumProject :: Lens' TargetHTTPProxiesSetURLMap Text

-- | Multipart request metadata.
thttppsumPayload :: Lens' TargetHTTPProxiesSetURLMap URLMapReference

-- | Name of the TargetHttpProxy to set a URL map for.
thttppsumTargetHTTPProxy :: Lens' TargetHTTPProxiesSetURLMap Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetHTTPProxies.SetURLMap.TargetHTTPProxiesSetURLMap
instance Data.Data.Data Network.Google.Resource.Compute.TargetHTTPProxies.SetURLMap.TargetHTTPProxiesSetURLMap
instance GHC.Show.Show Network.Google.Resource.Compute.TargetHTTPProxies.SetURLMap.TargetHTTPProxiesSetURLMap
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetHTTPProxies.SetURLMap.TargetHTTPProxiesSetURLMap
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetHTTPProxies.SetURLMap.TargetHTTPProxiesSetURLMap


-- | Deletes the specified TargetHttpsProxy resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetHttpsProxies.delete</tt>.
module Network.Google.Resource.Compute.TargetHTTPSProxies.Delete

-- | A resource alias for <tt>compute.targetHttpsProxies.delete</tt> method
--   which the <a>TargetHTTPSProxiesDelete</a> request conforms to.
type TargetHTTPSProxiesDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetHttpsProxies" :> (Capture "targetHttpsProxy" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation)))))))

-- | Creates a value of <a>TargetHTTPSProxiesDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>thpdProject</a></li>
--   <li><a>thpdTargetHTTPSProxy</a></li>
--   </ul>
targetHTTPSProxiesDelete :: Text -> Text -> TargetHTTPSProxiesDelete

-- | Deletes the specified TargetHttpsProxy resource.
--   
--   <i>See:</i> <a>targetHTTPSProxiesDelete</a> smart constructor.
data TargetHTTPSProxiesDelete

-- | Project ID for this request.
thpdProject :: Lens' TargetHTTPSProxiesDelete Text

-- | Name of the TargetHttpsProxy resource to delete.
thpdTargetHTTPSProxy :: Lens' TargetHTTPSProxiesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetHTTPSProxies.Delete.TargetHTTPSProxiesDelete
instance Data.Data.Data Network.Google.Resource.Compute.TargetHTTPSProxies.Delete.TargetHTTPSProxiesDelete
instance GHC.Show.Show Network.Google.Resource.Compute.TargetHTTPSProxies.Delete.TargetHTTPSProxiesDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetHTTPSProxies.Delete.TargetHTTPSProxiesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetHTTPSProxies.Delete.TargetHTTPSProxiesDelete


-- | Returns the specified TargetHttpsProxy resource. Get a list of
--   available target HTTPS proxies by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetHttpsProxies.get</tt>.
module Network.Google.Resource.Compute.TargetHTTPSProxies.Get

-- | A resource alias for <tt>compute.targetHttpsProxies.get</tt> method
--   which the <a>TargetHTTPSProxiesGet</a> request conforms to.
type TargetHTTPSProxiesGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetHttpsProxies" :> (Capture "targetHttpsProxy" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetHTTPSProxy)))))))

-- | Creates a value of <a>TargetHTTPSProxiesGet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>thpgProject</a></li>
--   <li><a>thpgTargetHTTPSProxy</a></li>
--   </ul>
targetHTTPSProxiesGet :: Text -> Text -> TargetHTTPSProxiesGet

-- | Returns the specified TargetHttpsProxy resource. Get a list of
--   available target HTTPS proxies by making a list() request.
--   
--   <i>See:</i> <a>targetHTTPSProxiesGet</a> smart constructor.
data TargetHTTPSProxiesGet

-- | Project ID for this request.
thpgProject :: Lens' TargetHTTPSProxiesGet Text

-- | Name of the TargetHttpsProxy resource to return.
thpgTargetHTTPSProxy :: Lens' TargetHTTPSProxiesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetHTTPSProxies.Get.TargetHTTPSProxiesGet
instance Data.Data.Data Network.Google.Resource.Compute.TargetHTTPSProxies.Get.TargetHTTPSProxiesGet
instance GHC.Show.Show Network.Google.Resource.Compute.TargetHTTPSProxies.Get.TargetHTTPSProxiesGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetHTTPSProxies.Get.TargetHTTPSProxiesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetHTTPSProxies.Get.TargetHTTPSProxiesGet


-- | Creates a TargetHttpsProxy resource in the specified project using the
--   data included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetHttpsProxies.insert</tt>.
module Network.Google.Resource.Compute.TargetHTTPSProxies.Insert

-- | A resource alias for <tt>compute.targetHttpsProxies.insert</tt> method
--   which the <a>TargetHTTPSProxiesInsert</a> request conforms to.
type TargetHTTPSProxiesInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetHttpsProxies" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TargetHTTPSProxy :> Post '[JSON] Operation)))))))

-- | Creates a value of <a>TargetHTTPSProxiesInsert</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>thpiProject</a></li>
--   <li><a>thpiPayload</a></li>
--   </ul>
targetHTTPSProxiesInsert :: Text -> TargetHTTPSProxy -> TargetHTTPSProxiesInsert

-- | Creates a TargetHttpsProxy resource in the specified project using the
--   data included in the request.
--   
--   <i>See:</i> <a>targetHTTPSProxiesInsert</a> smart constructor.
data TargetHTTPSProxiesInsert

-- | Project ID for this request.
thpiProject :: Lens' TargetHTTPSProxiesInsert Text

-- | Multipart request metadata.
thpiPayload :: Lens' TargetHTTPSProxiesInsert TargetHTTPSProxy
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetHTTPSProxies.Insert.TargetHTTPSProxiesInsert
instance Data.Data.Data Network.Google.Resource.Compute.TargetHTTPSProxies.Insert.TargetHTTPSProxiesInsert
instance GHC.Show.Show Network.Google.Resource.Compute.TargetHTTPSProxies.Insert.TargetHTTPSProxiesInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetHTTPSProxies.Insert.TargetHTTPSProxiesInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetHTTPSProxies.Insert.TargetHTTPSProxiesInsert


-- | Retrieves the list of TargetHttpsProxy resources available to the
--   specified project.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetHttpsProxies.list</tt>.
module Network.Google.Resource.Compute.TargetHTTPSProxies.List

-- | A resource alias for <tt>compute.targetHttpsProxies.list</tt> method
--   which the <a>TargetHTTPSProxiesList</a> request conforms to.
type TargetHTTPSProxiesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetHttpsProxies" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetHTTPSProxyList))))))))))

-- | Creates a value of <a>TargetHTTPSProxiesList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>thplOrderBy</a></li>
--   <li><a>thplProject</a></li>
--   <li><a>thplFilter</a></li>
--   <li><a>thplPageToken</a></li>
--   <li><a>thplMaxResults</a></li>
--   </ul>
targetHTTPSProxiesList :: Text -> TargetHTTPSProxiesList

-- | Retrieves the list of TargetHttpsProxy resources available to the
--   specified project.
--   
--   <i>See:</i> <a>targetHTTPSProxiesList</a> smart constructor.
data TargetHTTPSProxiesList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
thplOrderBy :: Lens' TargetHTTPSProxiesList (Maybe Text)

-- | Project ID for this request.
thplProject :: Lens' TargetHTTPSProxiesList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
thplFilter :: Lens' TargetHTTPSProxiesList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
thplPageToken :: Lens' TargetHTTPSProxiesList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
thplMaxResults :: Lens' TargetHTTPSProxiesList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetHTTPSProxies.List.TargetHTTPSProxiesList
instance Data.Data.Data Network.Google.Resource.Compute.TargetHTTPSProxies.List.TargetHTTPSProxiesList
instance GHC.Show.Show Network.Google.Resource.Compute.TargetHTTPSProxies.List.TargetHTTPSProxiesList
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetHTTPSProxies.List.TargetHTTPSProxiesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetHTTPSProxies.List.TargetHTTPSProxiesList


-- | Replaces SslCertificates for TargetHttpsProxy.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetHttpsProxies.setSslCertificates</tt>.
module Network.Google.Resource.Compute.TargetHTTPSProxies.SetSSLCertificates

-- | A resource alias for
--   <tt>compute.targetHttpsProxies.setSslCertificates</tt> method which
--   the <a>TargetHTTPSProxiesSetSSLCertificates</a> request conforms to.
type TargetHTTPSProxiesSetSSLCertificatesResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("targetHttpsProxies" :> (Capture "targetHttpsProxy" Text :> ("setSslCertificates" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TargetHTTPSProxiesSetSSLCertificatesRequest :> Post '[JSON] Operation))))))))

-- | Creates a value of <a>TargetHTTPSProxiesSetSSLCertificates</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>thpsscProject</a></li>
--   <li><a>thpsscPayload</a></li>
--   <li><a>thpsscTargetHTTPSProxy</a></li>
--   </ul>
targetHTTPSProxiesSetSSLCertificates :: Text -> TargetHTTPSProxiesSetSSLCertificatesRequest -> Text -> TargetHTTPSProxiesSetSSLCertificates

-- | Replaces SslCertificates for TargetHttpsProxy.
--   
--   <i>See:</i> <a>targetHTTPSProxiesSetSSLCertificates</a> smart
--   constructor.
data TargetHTTPSProxiesSetSSLCertificates

-- | Project ID for this request.
thpsscProject :: Lens' TargetHTTPSProxiesSetSSLCertificates Text

-- | Multipart request metadata.
thpsscPayload :: Lens' TargetHTTPSProxiesSetSSLCertificates TargetHTTPSProxiesSetSSLCertificatesRequest

-- | Name of the TargetHttpsProxy resource to set an SslCertificates
--   resource for.
thpsscTargetHTTPSProxy :: Lens' TargetHTTPSProxiesSetSSLCertificates Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetHTTPSProxies.SetSSLCertificates.TargetHTTPSProxiesSetSSLCertificates
instance Data.Data.Data Network.Google.Resource.Compute.TargetHTTPSProxies.SetSSLCertificates.TargetHTTPSProxiesSetSSLCertificates
instance GHC.Show.Show Network.Google.Resource.Compute.TargetHTTPSProxies.SetSSLCertificates.TargetHTTPSProxiesSetSSLCertificates
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetHTTPSProxies.SetSSLCertificates.TargetHTTPSProxiesSetSSLCertificates
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetHTTPSProxies.SetSSLCertificates.TargetHTTPSProxiesSetSSLCertificates


-- | Changes the URL map for TargetHttpsProxy.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetHttpsProxies.setUrlMap</tt>.
module Network.Google.Resource.Compute.TargetHTTPSProxies.SetURLMap

-- | A resource alias for <tt>compute.targetHttpsProxies.setUrlMap</tt>
--   method which the <a>TargetHTTPSProxiesSetURLMap</a> request conforms
--   to.
type TargetHTTPSProxiesSetURLMapResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("targetHttpsProxies" :> (Capture "targetHttpsProxy" Text :> ("setUrlMap" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] URLMapReference :> Post '[JSON] Operation))))))))

-- | Creates a value of <a>TargetHTTPSProxiesSetURLMap</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>thpsumProject</a></li>
--   <li><a>thpsumPayload</a></li>
--   <li><a>thpsumTargetHTTPSProxy</a></li>
--   </ul>
targetHTTPSProxiesSetURLMap :: Text -> URLMapReference -> Text -> TargetHTTPSProxiesSetURLMap

-- | Changes the URL map for TargetHttpsProxy.
--   
--   <i>See:</i> <a>targetHTTPSProxiesSetURLMap</a> smart constructor.
data TargetHTTPSProxiesSetURLMap

-- | Project ID for this request.
thpsumProject :: Lens' TargetHTTPSProxiesSetURLMap Text

-- | Multipart request metadata.
thpsumPayload :: Lens' TargetHTTPSProxiesSetURLMap URLMapReference

-- | Name of the TargetHttpsProxy resource whose URL map is to be set.
thpsumTargetHTTPSProxy :: Lens' TargetHTTPSProxiesSetURLMap Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetHTTPSProxies.SetURLMap.TargetHTTPSProxiesSetURLMap
instance Data.Data.Data Network.Google.Resource.Compute.TargetHTTPSProxies.SetURLMap.TargetHTTPSProxiesSetURLMap
instance GHC.Show.Show Network.Google.Resource.Compute.TargetHTTPSProxies.SetURLMap.TargetHTTPSProxiesSetURLMap
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetHTTPSProxies.SetURLMap.TargetHTTPSProxiesSetURLMap
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetHTTPSProxies.SetURLMap.TargetHTTPSProxiesSetURLMap


-- | Retrieves an aggregated list of target instances.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetInstances.aggregatedList</tt>.
module Network.Google.Resource.Compute.TargetInstances.AggregatedList

-- | A resource alias for <tt>compute.targetInstances.aggregatedList</tt>
--   method which the <a>TargetInstancesAggregatedList</a> request conforms
--   to.
type TargetInstancesAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("targetInstances" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetInstanceAggregatedList))))))))))

-- | Creates a value of <a>TargetInstancesAggregatedList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tialOrderBy</a></li>
--   <li><a>tialProject</a></li>
--   <li><a>tialFilter</a></li>
--   <li><a>tialPageToken</a></li>
--   <li><a>tialMaxResults</a></li>
--   </ul>
targetInstancesAggregatedList :: Text -> TargetInstancesAggregatedList

-- | Retrieves an aggregated list of target instances.
--   
--   <i>See:</i> <a>targetInstancesAggregatedList</a> smart constructor.
data TargetInstancesAggregatedList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
tialOrderBy :: Lens' TargetInstancesAggregatedList (Maybe Text)

-- | Project ID for this request.
tialProject :: Lens' TargetInstancesAggregatedList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
tialFilter :: Lens' TargetInstancesAggregatedList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
tialPageToken :: Lens' TargetInstancesAggregatedList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
tialMaxResults :: Lens' TargetInstancesAggregatedList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetInstances.AggregatedList.TargetInstancesAggregatedList
instance Data.Data.Data Network.Google.Resource.Compute.TargetInstances.AggregatedList.TargetInstancesAggregatedList
instance GHC.Show.Show Network.Google.Resource.Compute.TargetInstances.AggregatedList.TargetInstancesAggregatedList
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetInstances.AggregatedList.TargetInstancesAggregatedList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetInstances.AggregatedList.TargetInstancesAggregatedList


-- | Deletes the specified TargetInstance resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetInstances.delete</tt>.
module Network.Google.Resource.Compute.TargetInstances.Delete

-- | A resource alias for <tt>compute.targetInstances.delete</tt> method
--   which the <a>TargetInstancesDelete</a> request conforms to.
type TargetInstancesDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("targetInstances" :> (Capture "targetInstance" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation))))))))

-- | Creates a value of <a>TargetInstancesDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tidProject</a></li>
--   <li><a>tidTargetInstance</a></li>
--   <li><a>tidZone</a></li>
--   </ul>
targetInstancesDelete :: Text -> Text -> Text -> TargetInstancesDelete

-- | Deletes the specified TargetInstance resource.
--   
--   <i>See:</i> <a>targetInstancesDelete</a> smart constructor.
data TargetInstancesDelete

-- | Project ID for this request.
tidProject :: Lens' TargetInstancesDelete Text

-- | Name of the TargetInstance resource to delete.
tidTargetInstance :: Lens' TargetInstancesDelete Text

-- | Name of the zone scoping this request.
tidZone :: Lens' TargetInstancesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetInstances.Delete.TargetInstancesDelete
instance Data.Data.Data Network.Google.Resource.Compute.TargetInstances.Delete.TargetInstancesDelete
instance GHC.Show.Show Network.Google.Resource.Compute.TargetInstances.Delete.TargetInstancesDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetInstances.Delete.TargetInstancesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetInstances.Delete.TargetInstancesDelete


-- | Returns the specified TargetInstance resource. Get a list of available
--   target instances by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetInstances.get</tt>.
module Network.Google.Resource.Compute.TargetInstances.Get

-- | A resource alias for <tt>compute.targetInstances.get</tt> method which
--   the <a>TargetInstancesGet</a> request conforms to.
type TargetInstancesGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("targetInstances" :> (Capture "targetInstance" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetInstance))))))))

-- | Creates a value of <a>TargetInstancesGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tigProject</a></li>
--   <li><a>tigTargetInstance</a></li>
--   <li><a>tigZone</a></li>
--   </ul>
targetInstancesGet :: Text -> Text -> Text -> TargetInstancesGet

-- | Returns the specified TargetInstance resource. Get a list of available
--   target instances by making a list() request.
--   
--   <i>See:</i> <a>targetInstancesGet</a> smart constructor.
data TargetInstancesGet

-- | Project ID for this request.
tigProject :: Lens' TargetInstancesGet Text

-- | Name of the TargetInstance resource to return.
tigTargetInstance :: Lens' TargetInstancesGet Text

-- | Name of the zone scoping this request.
tigZone :: Lens' TargetInstancesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetInstances.Get.TargetInstancesGet
instance Data.Data.Data Network.Google.Resource.Compute.TargetInstances.Get.TargetInstancesGet
instance GHC.Show.Show Network.Google.Resource.Compute.TargetInstances.Get.TargetInstancesGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetInstances.Get.TargetInstancesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetInstances.Get.TargetInstancesGet


-- | Creates a TargetInstance resource in the specified project and zone
--   using the data included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetInstances.insert</tt>.
module Network.Google.Resource.Compute.TargetInstances.Insert

-- | A resource alias for <tt>compute.targetInstances.insert</tt> method
--   which the <a>TargetInstancesInsert</a> request conforms to.
type TargetInstancesInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("targetInstances" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TargetInstance :> Post '[JSON] Operation))))))))

-- | Creates a value of <a>TargetInstancesInsert</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tiiProject</a></li>
--   <li><a>tiiZone</a></li>
--   <li><a>tiiPayload</a></li>
--   </ul>
targetInstancesInsert :: Text -> Text -> TargetInstance -> TargetInstancesInsert

-- | Creates a TargetInstance resource in the specified project and zone
--   using the data included in the request.
--   
--   <i>See:</i> <a>targetInstancesInsert</a> smart constructor.
data TargetInstancesInsert

-- | Project ID for this request.
tiiProject :: Lens' TargetInstancesInsert Text

-- | Name of the zone scoping this request.
tiiZone :: Lens' TargetInstancesInsert Text

-- | Multipart request metadata.
tiiPayload :: Lens' TargetInstancesInsert TargetInstance
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetInstances.Insert.TargetInstancesInsert
instance Data.Data.Data Network.Google.Resource.Compute.TargetInstances.Insert.TargetInstancesInsert
instance GHC.Show.Show Network.Google.Resource.Compute.TargetInstances.Insert.TargetInstancesInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetInstances.Insert.TargetInstancesInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetInstances.Insert.TargetInstancesInsert


-- | Retrieves a list of TargetInstance resources available to the
--   specified project and zone.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetInstances.list</tt>.
module Network.Google.Resource.Compute.TargetInstances.List

-- | A resource alias for <tt>compute.targetInstances.list</tt> method
--   which the <a>TargetInstancesList</a> request conforms to.
type TargetInstancesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("targetInstances" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetInstanceList)))))))))))

-- | Creates a value of <a>TargetInstancesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tilOrderBy</a></li>
--   <li><a>tilProject</a></li>
--   <li><a>tilZone</a></li>
--   <li><a>tilFilter</a></li>
--   <li><a>tilPageToken</a></li>
--   <li><a>tilMaxResults</a></li>
--   </ul>
targetInstancesList :: Text -> Text -> TargetInstancesList

-- | Retrieves a list of TargetInstance resources available to the
--   specified project and zone.
--   
--   <i>See:</i> <a>targetInstancesList</a> smart constructor.
data TargetInstancesList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
tilOrderBy :: Lens' TargetInstancesList (Maybe Text)

-- | Project ID for this request.
tilProject :: Lens' TargetInstancesList Text

-- | Name of the zone scoping this request.
tilZone :: Lens' TargetInstancesList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
tilFilter :: Lens' TargetInstancesList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
tilPageToken :: Lens' TargetInstancesList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
tilMaxResults :: Lens' TargetInstancesList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetInstances.List.TargetInstancesList
instance Data.Data.Data Network.Google.Resource.Compute.TargetInstances.List.TargetInstancesList
instance GHC.Show.Show Network.Google.Resource.Compute.TargetInstances.List.TargetInstancesList
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetInstances.List.TargetInstancesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetInstances.List.TargetInstancesList


-- | Adds health check URLs to a target pool.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetPools.addHealthCheck</tt>.
module Network.Google.Resource.Compute.TargetPools.AddHealthCheck

-- | A resource alias for <tt>compute.targetPools.addHealthCheck</tt>
--   method which the <a>TargetPoolsAddHealthCheck</a> request conforms to.
type TargetPoolsAddHealthCheckResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("targetPools" :> (Capture "targetPool" Text :> ("addHealthCheck" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TargetPoolsAddHealthCheckRequest :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>TargetPoolsAddHealthCheck</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpahcProject</a></li>
--   <li><a>tpahcTargetPool</a></li>
--   <li><a>tpahcPayload</a></li>
--   <li><a>tpahcRegion</a></li>
--   </ul>
targetPoolsAddHealthCheck :: Text -> Text -> TargetPoolsAddHealthCheckRequest -> Text -> TargetPoolsAddHealthCheck

-- | Adds health check URLs to a target pool.
--   
--   <i>See:</i> <a>targetPoolsAddHealthCheck</a> smart constructor.
data TargetPoolsAddHealthCheck

-- | Project ID for this request.
tpahcProject :: Lens' TargetPoolsAddHealthCheck Text

-- | Name of the target pool to add a health check to.
tpahcTargetPool :: Lens' TargetPoolsAddHealthCheck Text

-- | Multipart request metadata.
tpahcPayload :: Lens' TargetPoolsAddHealthCheck TargetPoolsAddHealthCheckRequest

-- | Name of the region scoping this request.
tpahcRegion :: Lens' TargetPoolsAddHealthCheck Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetPools.AddHealthCheck.TargetPoolsAddHealthCheck
instance Data.Data.Data Network.Google.Resource.Compute.TargetPools.AddHealthCheck.TargetPoolsAddHealthCheck
instance GHC.Show.Show Network.Google.Resource.Compute.TargetPools.AddHealthCheck.TargetPoolsAddHealthCheck
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetPools.AddHealthCheck.TargetPoolsAddHealthCheck
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetPools.AddHealthCheck.TargetPoolsAddHealthCheck


-- | Adds an instance to a target pool.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetPools.addInstance</tt>.
module Network.Google.Resource.Compute.TargetPools.AddInstance

-- | A resource alias for <tt>compute.targetPools.addInstance</tt> method
--   which the <a>TargetPoolsAddInstance</a> request conforms to.
type TargetPoolsAddInstanceResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("targetPools" :> (Capture "targetPool" Text :> ("addInstance" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TargetPoolsAddInstanceRequest :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>TargetPoolsAddInstance</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpaiProject</a></li>
--   <li><a>tpaiTargetPool</a></li>
--   <li><a>tpaiPayload</a></li>
--   <li><a>tpaiRegion</a></li>
--   </ul>
targetPoolsAddInstance :: Text -> Text -> TargetPoolsAddInstanceRequest -> Text -> TargetPoolsAddInstance

-- | Adds an instance to a target pool.
--   
--   <i>See:</i> <a>targetPoolsAddInstance</a> smart constructor.
data TargetPoolsAddInstance

-- | Project ID for this request.
tpaiProject :: Lens' TargetPoolsAddInstance Text

-- | Name of the TargetPool resource to add instances to.
tpaiTargetPool :: Lens' TargetPoolsAddInstance Text

-- | Multipart request metadata.
tpaiPayload :: Lens' TargetPoolsAddInstance TargetPoolsAddInstanceRequest

-- | Name of the region scoping this request.
tpaiRegion :: Lens' TargetPoolsAddInstance Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetPools.AddInstance.TargetPoolsAddInstance
instance Data.Data.Data Network.Google.Resource.Compute.TargetPools.AddInstance.TargetPoolsAddInstance
instance GHC.Show.Show Network.Google.Resource.Compute.TargetPools.AddInstance.TargetPoolsAddInstance
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetPools.AddInstance.TargetPoolsAddInstance
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetPools.AddInstance.TargetPoolsAddInstance


-- | Retrieves an aggregated list of target pools.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetPools.aggregatedList</tt>.
module Network.Google.Resource.Compute.TargetPools.AggregatedList

-- | A resource alias for <tt>compute.targetPools.aggregatedList</tt>
--   method which the <a>TargetPoolsAggregatedList</a> request conforms to.
type TargetPoolsAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("targetPools" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetPoolAggregatedList))))))))))

-- | Creates a value of <a>TargetPoolsAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpalOrderBy</a></li>
--   <li><a>tpalProject</a></li>
--   <li><a>tpalFilter</a></li>
--   <li><a>tpalPageToken</a></li>
--   <li><a>tpalMaxResults</a></li>
--   </ul>
targetPoolsAggregatedList :: Text -> TargetPoolsAggregatedList

-- | Retrieves an aggregated list of target pools.
--   
--   <i>See:</i> <a>targetPoolsAggregatedList</a> smart constructor.
data TargetPoolsAggregatedList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
tpalOrderBy :: Lens' TargetPoolsAggregatedList (Maybe Text)

-- | Project ID for this request.
tpalProject :: Lens' TargetPoolsAggregatedList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
tpalFilter :: Lens' TargetPoolsAggregatedList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
tpalPageToken :: Lens' TargetPoolsAggregatedList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
tpalMaxResults :: Lens' TargetPoolsAggregatedList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetPools.AggregatedList.TargetPoolsAggregatedList
instance Data.Data.Data Network.Google.Resource.Compute.TargetPools.AggregatedList.TargetPoolsAggregatedList
instance GHC.Show.Show Network.Google.Resource.Compute.TargetPools.AggregatedList.TargetPoolsAggregatedList
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetPools.AggregatedList.TargetPoolsAggregatedList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetPools.AggregatedList.TargetPoolsAggregatedList


-- | Deletes the specified target pool.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetPools.delete</tt>.
module Network.Google.Resource.Compute.TargetPools.Delete

-- | A resource alias for <tt>compute.targetPools.delete</tt> method which
--   the <a>TargetPoolsDelete</a> request conforms to.
type TargetPoolsDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("targetPools" :> (Capture "targetPool" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation))))))))

-- | Creates a value of <a>TargetPoolsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpdProject</a></li>
--   <li><a>tpdTargetPool</a></li>
--   <li><a>tpdRegion</a></li>
--   </ul>
targetPoolsDelete :: Text -> Text -> Text -> TargetPoolsDelete

-- | Deletes the specified target pool.
--   
--   <i>See:</i> <a>targetPoolsDelete</a> smart constructor.
data TargetPoolsDelete

-- | Project ID for this request.
tpdProject :: Lens' TargetPoolsDelete Text

-- | Name of the TargetPool resource to delete.
tpdTargetPool :: Lens' TargetPoolsDelete Text

-- | Name of the region scoping this request.
tpdRegion :: Lens' TargetPoolsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetPools.Delete.TargetPoolsDelete
instance Data.Data.Data Network.Google.Resource.Compute.TargetPools.Delete.TargetPoolsDelete
instance GHC.Show.Show Network.Google.Resource.Compute.TargetPools.Delete.TargetPoolsDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetPools.Delete.TargetPoolsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetPools.Delete.TargetPoolsDelete


-- | Returns the specified target pool. Get a list of available target
--   pools by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetPools.get</tt>.
module Network.Google.Resource.Compute.TargetPools.Get

-- | A resource alias for <tt>compute.targetPools.get</tt> method which the
--   <a>TargetPoolsGet</a> request conforms to.
type TargetPoolsGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("targetPools" :> (Capture "targetPool" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetPool))))))))

-- | Creates a value of <a>TargetPoolsGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpgProject</a></li>
--   <li><a>tpgTargetPool</a></li>
--   <li><a>tpgRegion</a></li>
--   </ul>
targetPoolsGet :: Text -> Text -> Text -> TargetPoolsGet

-- | Returns the specified target pool. Get a list of available target
--   pools by making a list() request.
--   
--   <i>See:</i> <a>targetPoolsGet</a> smart constructor.
data TargetPoolsGet

-- | Project ID for this request.
tpgProject :: Lens' TargetPoolsGet Text

-- | Name of the TargetPool resource to return.
tpgTargetPool :: Lens' TargetPoolsGet Text

-- | Name of the region scoping this request.
tpgRegion :: Lens' TargetPoolsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetPools.Get.TargetPoolsGet
instance Data.Data.Data Network.Google.Resource.Compute.TargetPools.Get.TargetPoolsGet
instance GHC.Show.Show Network.Google.Resource.Compute.TargetPools.Get.TargetPoolsGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetPools.Get.TargetPoolsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetPools.Get.TargetPoolsGet


-- | Gets the most recent health check results for each IP for the instance
--   that is referenced by the given target pool.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetPools.getHealth</tt>.
module Network.Google.Resource.Compute.TargetPools.GetHealth

-- | A resource alias for <tt>compute.targetPools.getHealth</tt> method
--   which the <a>TargetPoolsGetHealth</a> request conforms to.
type TargetPoolsGetHealthResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("targetPools" :> (Capture "targetPool" Text :> ("getHealth" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] InstanceReference :> Post '[JSON] TargetPoolInstanceHealth))))))))))

-- | Creates a value of <a>TargetPoolsGetHealth</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpghProject</a></li>
--   <li><a>tpghTargetPool</a></li>
--   <li><a>tpghPayload</a></li>
--   <li><a>tpghRegion</a></li>
--   </ul>
targetPoolsGetHealth :: Text -> Text -> InstanceReference -> Text -> TargetPoolsGetHealth

-- | Gets the most recent health check results for each IP for the instance
--   that is referenced by the given target pool.
--   
--   <i>See:</i> <a>targetPoolsGetHealth</a> smart constructor.
data TargetPoolsGetHealth

-- | Project ID for this request.
tpghProject :: Lens' TargetPoolsGetHealth Text

-- | Name of the TargetPool resource to which the queried instance belongs.
tpghTargetPool :: Lens' TargetPoolsGetHealth Text

-- | Multipart request metadata.
tpghPayload :: Lens' TargetPoolsGetHealth InstanceReference

-- | Name of the region scoping this request.
tpghRegion :: Lens' TargetPoolsGetHealth Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetPools.GetHealth.TargetPoolsGetHealth
instance Data.Data.Data Network.Google.Resource.Compute.TargetPools.GetHealth.TargetPoolsGetHealth
instance GHC.Show.Show Network.Google.Resource.Compute.TargetPools.GetHealth.TargetPoolsGetHealth
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetPools.GetHealth.TargetPoolsGetHealth
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetPools.GetHealth.TargetPoolsGetHealth


-- | Creates a target pool in the specified project and region using the
--   data included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetPools.insert</tt>.
module Network.Google.Resource.Compute.TargetPools.Insert

-- | A resource alias for <tt>compute.targetPools.insert</tt> method which
--   the <a>TargetPoolsInsert</a> request conforms to.
type TargetPoolsInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("targetPools" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TargetPool :> Post '[JSON] Operation))))))))

-- | Creates a value of <a>TargetPoolsInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpiProject</a></li>
--   <li><a>tpiPayload</a></li>
--   <li><a>tpiRegion</a></li>
--   </ul>
targetPoolsInsert :: Text -> TargetPool -> Text -> TargetPoolsInsert

-- | Creates a target pool in the specified project and region using the
--   data included in the request.
--   
--   <i>See:</i> <a>targetPoolsInsert</a> smart constructor.
data TargetPoolsInsert

-- | Project ID for this request.
tpiProject :: Lens' TargetPoolsInsert Text

-- | Multipart request metadata.
tpiPayload :: Lens' TargetPoolsInsert TargetPool

-- | Name of the region scoping this request.
tpiRegion :: Lens' TargetPoolsInsert Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetPools.Insert.TargetPoolsInsert
instance Data.Data.Data Network.Google.Resource.Compute.TargetPools.Insert.TargetPoolsInsert
instance GHC.Show.Show Network.Google.Resource.Compute.TargetPools.Insert.TargetPoolsInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetPools.Insert.TargetPoolsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetPools.Insert.TargetPoolsInsert


-- | Retrieves a list of target pools available to the specified project
--   and region.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetPools.list</tt>.
module Network.Google.Resource.Compute.TargetPools.List

-- | A resource alias for <tt>compute.targetPools.list</tt> method which
--   the <a>TargetPoolsList</a> request conforms to.
type TargetPoolsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("targetPools" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetPoolList)))))))))))

-- | Creates a value of <a>TargetPoolsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tplOrderBy</a></li>
--   <li><a>tplProject</a></li>
--   <li><a>tplFilter</a></li>
--   <li><a>tplRegion</a></li>
--   <li><a>tplPageToken</a></li>
--   <li><a>tplMaxResults</a></li>
--   </ul>
targetPoolsList :: Text -> Text -> TargetPoolsList

-- | Retrieves a list of target pools available to the specified project
--   and region.
--   
--   <i>See:</i> <a>targetPoolsList</a> smart constructor.
data TargetPoolsList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
tplOrderBy :: Lens' TargetPoolsList (Maybe Text)

-- | Project ID for this request.
tplProject :: Lens' TargetPoolsList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
tplFilter :: Lens' TargetPoolsList (Maybe Text)

-- | Name of the region scoping this request.
tplRegion :: Lens' TargetPoolsList Text

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
tplPageToken :: Lens' TargetPoolsList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
tplMaxResults :: Lens' TargetPoolsList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetPools.List.TargetPoolsList
instance Data.Data.Data Network.Google.Resource.Compute.TargetPools.List.TargetPoolsList
instance GHC.Show.Show Network.Google.Resource.Compute.TargetPools.List.TargetPoolsList
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetPools.List.TargetPoolsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetPools.List.TargetPoolsList


-- | Removes health check URL from a target pool.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetPools.removeHealthCheck</tt>.
module Network.Google.Resource.Compute.TargetPools.RemoveHealthCheck

-- | A resource alias for <tt>compute.targetPools.removeHealthCheck</tt>
--   method which the <a>TargetPoolsRemoveHealthCheck</a> request conforms
--   to.
type TargetPoolsRemoveHealthCheckResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("targetPools" :> (Capture "targetPool" Text :> ("removeHealthCheck" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TargetPoolsRemoveHealthCheckRequest :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>TargetPoolsRemoveHealthCheck</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tprhcProject</a></li>
--   <li><a>tprhcTargetPool</a></li>
--   <li><a>tprhcPayload</a></li>
--   <li><a>tprhcRegion</a></li>
--   </ul>
targetPoolsRemoveHealthCheck :: Text -> Text -> TargetPoolsRemoveHealthCheckRequest -> Text -> TargetPoolsRemoveHealthCheck

-- | Removes health check URL from a target pool.
--   
--   <i>See:</i> <a>targetPoolsRemoveHealthCheck</a> smart constructor.
data TargetPoolsRemoveHealthCheck

-- | Project ID for this request.
tprhcProject :: Lens' TargetPoolsRemoveHealthCheck Text

-- | Name of the target pool to remove health checks from.
tprhcTargetPool :: Lens' TargetPoolsRemoveHealthCheck Text

-- | Multipart request metadata.
tprhcPayload :: Lens' TargetPoolsRemoveHealthCheck TargetPoolsRemoveHealthCheckRequest

-- | Name of the region for this request.
tprhcRegion :: Lens' TargetPoolsRemoveHealthCheck Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetPools.RemoveHealthCheck.TargetPoolsRemoveHealthCheck
instance Data.Data.Data Network.Google.Resource.Compute.TargetPools.RemoveHealthCheck.TargetPoolsRemoveHealthCheck
instance GHC.Show.Show Network.Google.Resource.Compute.TargetPools.RemoveHealthCheck.TargetPoolsRemoveHealthCheck
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetPools.RemoveHealthCheck.TargetPoolsRemoveHealthCheck
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetPools.RemoveHealthCheck.TargetPoolsRemoveHealthCheck


-- | Removes instance URL from a target pool.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetPools.removeInstance</tt>.
module Network.Google.Resource.Compute.TargetPools.RemoveInstance

-- | A resource alias for <tt>compute.targetPools.removeInstance</tt>
--   method which the <a>TargetPoolsRemoveInstance</a> request conforms to.
type TargetPoolsRemoveInstanceResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("targetPools" :> (Capture "targetPool" Text :> ("removeInstance" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TargetPoolsRemoveInstanceRequest :> Post '[JSON] Operation))))))))))

-- | Creates a value of <a>TargetPoolsRemoveInstance</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpriProject</a></li>
--   <li><a>tpriTargetPool</a></li>
--   <li><a>tpriPayload</a></li>
--   <li><a>tpriRegion</a></li>
--   </ul>
targetPoolsRemoveInstance :: Text -> Text -> TargetPoolsRemoveInstanceRequest -> Text -> TargetPoolsRemoveInstance

-- | Removes instance URL from a target pool.
--   
--   <i>See:</i> <a>targetPoolsRemoveInstance</a> smart constructor.
data TargetPoolsRemoveInstance

-- | Project ID for this request.
tpriProject :: Lens' TargetPoolsRemoveInstance Text

-- | Name of the TargetPool resource to remove instances from.
tpriTargetPool :: Lens' TargetPoolsRemoveInstance Text

-- | Multipart request metadata.
tpriPayload :: Lens' TargetPoolsRemoveInstance TargetPoolsRemoveInstanceRequest

-- | Name of the region scoping this request.
tpriRegion :: Lens' TargetPoolsRemoveInstance Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetPools.RemoveInstance.TargetPoolsRemoveInstance
instance Data.Data.Data Network.Google.Resource.Compute.TargetPools.RemoveInstance.TargetPoolsRemoveInstance
instance GHC.Show.Show Network.Google.Resource.Compute.TargetPools.RemoveInstance.TargetPoolsRemoveInstance
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetPools.RemoveInstance.TargetPoolsRemoveInstance
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetPools.RemoveInstance.TargetPoolsRemoveInstance


-- | Changes a backup target pool's configurations.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetPools.setBackup</tt>.
module Network.Google.Resource.Compute.TargetPools.SetBackup

-- | A resource alias for <tt>compute.targetPools.setBackup</tt> method
--   which the <a>TargetPoolsSetBackup</a> request conforms to.
type TargetPoolsSetBackupResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("targetPools" :> (Capture "targetPool" Text :> ("setBackup" :> (QueryParam "failoverRatio" (Textual Double) :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TargetReference :> Post '[JSON] Operation)))))))))))

-- | Creates a value of <a>TargetPoolsSetBackup</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpsbProject</a></li>
--   <li><a>tpsbTargetPool</a></li>
--   <li><a>tpsbPayload</a></li>
--   <li><a>tpsbFailoverRatio</a></li>
--   <li><a>tpsbRegion</a></li>
--   </ul>
targetPoolsSetBackup :: Text -> Text -> TargetReference -> Text -> TargetPoolsSetBackup

-- | Changes a backup target pool's configurations.
--   
--   <i>See:</i> <a>targetPoolsSetBackup</a> smart constructor.
data TargetPoolsSetBackup

-- | Project ID for this request.
tpsbProject :: Lens' TargetPoolsSetBackup Text

-- | Name of the TargetPool resource to set a backup pool for.
tpsbTargetPool :: Lens' TargetPoolsSetBackup Text

-- | Multipart request metadata.
tpsbPayload :: Lens' TargetPoolsSetBackup TargetReference

-- | New failoverRatio value for the target pool.
tpsbFailoverRatio :: Lens' TargetPoolsSetBackup (Maybe Double)

-- | Name of the region scoping this request.
tpsbRegion :: Lens' TargetPoolsSetBackup Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetPools.SetBackup.TargetPoolsSetBackup
instance Data.Data.Data Network.Google.Resource.Compute.TargetPools.SetBackup.TargetPoolsSetBackup
instance GHC.Show.Show Network.Google.Resource.Compute.TargetPools.SetBackup.TargetPoolsSetBackup
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetPools.SetBackup.TargetPoolsSetBackup
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetPools.SetBackup.TargetPoolsSetBackup


-- | Deletes the specified TargetSslProxy resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetSslProxies.delete</tt>.
module Network.Google.Resource.Compute.TargetSSLProxies.Delete

-- | A resource alias for <tt>compute.targetSslProxies.delete</tt> method
--   which the <a>TargetSSLProxiesDelete</a> request conforms to.
type TargetSSLProxiesDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetSslProxies" :> (Capture "targetSslProxy" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation)))))))

-- | Creates a value of <a>TargetSSLProxiesDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tspdProject</a></li>
--   <li><a>tspdTargetSSLProxy</a></li>
--   </ul>
targetSSLProxiesDelete :: Text -> Text -> TargetSSLProxiesDelete

-- | Deletes the specified TargetSslProxy resource.
--   
--   <i>See:</i> <a>targetSSLProxiesDelete</a> smart constructor.
data TargetSSLProxiesDelete

-- | Project ID for this request.
tspdProject :: Lens' TargetSSLProxiesDelete Text

-- | Name of the TargetSslProxy resource to delete.
tspdTargetSSLProxy :: Lens' TargetSSLProxiesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetSSLProxies.Delete.TargetSSLProxiesDelete
instance Data.Data.Data Network.Google.Resource.Compute.TargetSSLProxies.Delete.TargetSSLProxiesDelete
instance GHC.Show.Show Network.Google.Resource.Compute.TargetSSLProxies.Delete.TargetSSLProxiesDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetSSLProxies.Delete.TargetSSLProxiesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetSSLProxies.Delete.TargetSSLProxiesDelete


-- | Returns the specified TargetSslProxy resource. Get a list of available
--   target SSL proxies by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetSslProxies.get</tt>.
module Network.Google.Resource.Compute.TargetSSLProxies.Get

-- | A resource alias for <tt>compute.targetSslProxies.get</tt> method
--   which the <a>TargetSSLProxiesGet</a> request conforms to.
type TargetSSLProxiesGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetSslProxies" :> (Capture "targetSslProxy" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetSSLProxy)))))))

-- | Creates a value of <a>TargetSSLProxiesGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tspgProject</a></li>
--   <li><a>tspgTargetSSLProxy</a></li>
--   </ul>
targetSSLProxiesGet :: Text -> Text -> TargetSSLProxiesGet

-- | Returns the specified TargetSslProxy resource. Get a list of available
--   target SSL proxies by making a list() request.
--   
--   <i>See:</i> <a>targetSSLProxiesGet</a> smart constructor.
data TargetSSLProxiesGet

-- | Project ID for this request.
tspgProject :: Lens' TargetSSLProxiesGet Text

-- | Name of the TargetSslProxy resource to return.
tspgTargetSSLProxy :: Lens' TargetSSLProxiesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetSSLProxies.Get.TargetSSLProxiesGet
instance Data.Data.Data Network.Google.Resource.Compute.TargetSSLProxies.Get.TargetSSLProxiesGet
instance GHC.Show.Show Network.Google.Resource.Compute.TargetSSLProxies.Get.TargetSSLProxiesGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetSSLProxies.Get.TargetSSLProxiesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetSSLProxies.Get.TargetSSLProxiesGet


-- | Creates a TargetSslProxy resource in the specified project using the
--   data included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetSslProxies.insert</tt>.
module Network.Google.Resource.Compute.TargetSSLProxies.Insert

-- | A resource alias for <tt>compute.targetSslProxies.insert</tt> method
--   which the <a>TargetSSLProxiesInsert</a> request conforms to.
type TargetSSLProxiesInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetSslProxies" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TargetSSLProxy :> Post '[JSON] Operation)))))))

-- | Creates a value of <a>TargetSSLProxiesInsert</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tspiProject</a></li>
--   <li><a>tspiPayload</a></li>
--   </ul>
targetSSLProxiesInsert :: Text -> TargetSSLProxy -> TargetSSLProxiesInsert

-- | Creates a TargetSslProxy resource in the specified project using the
--   data included in the request.
--   
--   <i>See:</i> <a>targetSSLProxiesInsert</a> smart constructor.
data TargetSSLProxiesInsert

-- | Project ID for this request.
tspiProject :: Lens' TargetSSLProxiesInsert Text

-- | Multipart request metadata.
tspiPayload :: Lens' TargetSSLProxiesInsert TargetSSLProxy
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetSSLProxies.Insert.TargetSSLProxiesInsert
instance Data.Data.Data Network.Google.Resource.Compute.TargetSSLProxies.Insert.TargetSSLProxiesInsert
instance GHC.Show.Show Network.Google.Resource.Compute.TargetSSLProxies.Insert.TargetSSLProxiesInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetSSLProxies.Insert.TargetSSLProxiesInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetSSLProxies.Insert.TargetSSLProxiesInsert


-- | Retrieves the list of TargetSslProxy resources available to the
--   specified project.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetSslProxies.list</tt>.
module Network.Google.Resource.Compute.TargetSSLProxies.List

-- | A resource alias for <tt>compute.targetSslProxies.list</tt> method
--   which the <a>TargetSSLProxiesList</a> request conforms to.
type TargetSSLProxiesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetSslProxies" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetSSLProxyList))))))))))

-- | Creates a value of <a>TargetSSLProxiesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tsplOrderBy</a></li>
--   <li><a>tsplProject</a></li>
--   <li><a>tsplFilter</a></li>
--   <li><a>tsplPageToken</a></li>
--   <li><a>tsplMaxResults</a></li>
--   </ul>
targetSSLProxiesList :: Text -> TargetSSLProxiesList

-- | Retrieves the list of TargetSslProxy resources available to the
--   specified project.
--   
--   <i>See:</i> <a>targetSSLProxiesList</a> smart constructor.
data TargetSSLProxiesList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
tsplOrderBy :: Lens' TargetSSLProxiesList (Maybe Text)

-- | Project ID for this request.
tsplProject :: Lens' TargetSSLProxiesList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
tsplFilter :: Lens' TargetSSLProxiesList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
tsplPageToken :: Lens' TargetSSLProxiesList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
tsplMaxResults :: Lens' TargetSSLProxiesList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetSSLProxies.List.TargetSSLProxiesList
instance Data.Data.Data Network.Google.Resource.Compute.TargetSSLProxies.List.TargetSSLProxiesList
instance GHC.Show.Show Network.Google.Resource.Compute.TargetSSLProxies.List.TargetSSLProxiesList
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetSSLProxies.List.TargetSSLProxiesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetSSLProxies.List.TargetSSLProxiesList


-- | Changes the BackendService for TargetSslProxy.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetSslProxies.setBackendService</tt>.
module Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService

-- | A resource alias for
--   <tt>compute.targetSslProxies.setBackendService</tt> method which the
--   <a>TargetSSLProxiesSetBackendService</a> request conforms to.
type TargetSSLProxiesSetBackendServiceResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetSslProxies" :> (Capture "targetSslProxy" Text :> ("setBackendService" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TargetSSLProxiesSetBackendServiceRequest :> Post '[JSON] Operation)))))))))

-- | Creates a value of <a>TargetSSLProxiesSetBackendService</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tspsbsProject</a></li>
--   <li><a>tspsbsPayload</a></li>
--   <li><a>tspsbsTargetSSLProxy</a></li>
--   </ul>
targetSSLProxiesSetBackendService :: Text -> TargetSSLProxiesSetBackendServiceRequest -> Text -> TargetSSLProxiesSetBackendService

-- | Changes the BackendService for TargetSslProxy.
--   
--   <i>See:</i> <a>targetSSLProxiesSetBackendService</a> smart
--   constructor.
data TargetSSLProxiesSetBackendService

-- | Project ID for this request.
tspsbsProject :: Lens' TargetSSLProxiesSetBackendService Text

-- | Multipart request metadata.
tspsbsPayload :: Lens' TargetSSLProxiesSetBackendService TargetSSLProxiesSetBackendServiceRequest

-- | Name of the TargetSslProxy resource whose BackendService resource is
--   to be set.
tspsbsTargetSSLProxy :: Lens' TargetSSLProxiesSetBackendService Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService.TargetSSLProxiesSetBackendService
instance Data.Data.Data Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService.TargetSSLProxiesSetBackendService
instance GHC.Show.Show Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService.TargetSSLProxiesSetBackendService
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService.TargetSSLProxiesSetBackendService
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetSSLProxies.SetBackendService.TargetSSLProxiesSetBackendService


-- | Changes the ProxyHeaderType for TargetSslProxy.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetSslProxies.setProxyHeader</tt>.
module Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader

-- | A resource alias for <tt>compute.targetSslProxies.setProxyHeader</tt>
--   method which the <a>TargetSSLProxiesSetProxyHeader</a> request
--   conforms to.
type TargetSSLProxiesSetProxyHeaderResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetSslProxies" :> (Capture "targetSslProxy" Text :> ("setProxyHeader" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TargetSSLProxiesSetProxyHeaderRequest :> Post '[JSON] Operation)))))))))

-- | Creates a value of <a>TargetSSLProxiesSetProxyHeader</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tspsphProject</a></li>
--   <li><a>tspsphPayload</a></li>
--   <li><a>tspsphTargetSSLProxy</a></li>
--   </ul>
targetSSLProxiesSetProxyHeader :: Text -> TargetSSLProxiesSetProxyHeaderRequest -> Text -> TargetSSLProxiesSetProxyHeader

-- | Changes the ProxyHeaderType for TargetSslProxy.
--   
--   <i>See:</i> <a>targetSSLProxiesSetProxyHeader</a> smart constructor.
data TargetSSLProxiesSetProxyHeader

-- | Project ID for this request.
tspsphProject :: Lens' TargetSSLProxiesSetProxyHeader Text

-- | Multipart request metadata.
tspsphPayload :: Lens' TargetSSLProxiesSetProxyHeader TargetSSLProxiesSetProxyHeaderRequest

-- | Name of the TargetSslProxy resource whose ProxyHeader is to be set.
tspsphTargetSSLProxy :: Lens' TargetSSLProxiesSetProxyHeader Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader.TargetSSLProxiesSetProxyHeader
instance Data.Data.Data Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader.TargetSSLProxiesSetProxyHeader
instance GHC.Show.Show Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader.TargetSSLProxiesSetProxyHeader
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader.TargetSSLProxiesSetProxyHeader
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetSSLProxies.SetProxyHeader.TargetSSLProxiesSetProxyHeader


-- | Changes SslCertificates for TargetSslProxy.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetSslProxies.setSslCertificates</tt>.
module Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates

-- | A resource alias for
--   <tt>compute.targetSslProxies.setSslCertificates</tt> method which the
--   <a>TargetSSLProxiesSetSSLCertificates</a> request conforms to.
type TargetSSLProxiesSetSSLCertificatesResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("targetSslProxies" :> (Capture "targetSslProxy" Text :> ("setSslCertificates" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TargetSSLProxiesSetSSLCertificatesRequest :> Post '[JSON] Operation)))))))))

-- | Creates a value of <a>TargetSSLProxiesSetSSLCertificates</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tspsscProject</a></li>
--   <li><a>tspsscPayload</a></li>
--   <li><a>tspsscTargetSSLProxy</a></li>
--   </ul>
targetSSLProxiesSetSSLCertificates :: Text -> TargetSSLProxiesSetSSLCertificatesRequest -> Text -> TargetSSLProxiesSetSSLCertificates

-- | Changes SslCertificates for TargetSslProxy.
--   
--   <i>See:</i> <a>targetSSLProxiesSetSSLCertificates</a> smart
--   constructor.
data TargetSSLProxiesSetSSLCertificates

-- | Project ID for this request.
tspsscProject :: Lens' TargetSSLProxiesSetSSLCertificates Text

-- | Multipart request metadata.
tspsscPayload :: Lens' TargetSSLProxiesSetSSLCertificates TargetSSLProxiesSetSSLCertificatesRequest

-- | Name of the TargetSslProxy resource whose SslCertificate resource is
--   to be set.
tspsscTargetSSLProxy :: Lens' TargetSSLProxiesSetSSLCertificates Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates.TargetSSLProxiesSetSSLCertificates
instance Data.Data.Data Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates.TargetSSLProxiesSetSSLCertificates
instance GHC.Show.Show Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates.TargetSSLProxiesSetSSLCertificates
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates.TargetSSLProxiesSetSSLCertificates
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetSSLProxies.SetSSLCertificates.TargetSSLProxiesSetSSLCertificates


-- | Retrieves an aggregated list of target VPN gateways.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetVpnGateways.aggregatedList</tt>.
module Network.Google.Resource.Compute.TargetVPNGateways.AggregatedList

-- | A resource alias for <tt>compute.targetVpnGateways.aggregatedList</tt>
--   method which the <a>TargetVPNGatewaysAggregatedList</a> request
--   conforms to.
type TargetVPNGatewaysAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("targetVpnGateways" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetVPNGatewayAggregatedList))))))))))

-- | Creates a value of <a>TargetVPNGatewaysAggregatedList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tvgalOrderBy</a></li>
--   <li><a>tvgalProject</a></li>
--   <li><a>tvgalFilter</a></li>
--   <li><a>tvgalPageToken</a></li>
--   <li><a>tvgalMaxResults</a></li>
--   </ul>
targetVPNGatewaysAggregatedList :: Text -> TargetVPNGatewaysAggregatedList

-- | Retrieves an aggregated list of target VPN gateways.
--   
--   <i>See:</i> <a>targetVPNGatewaysAggregatedList</a> smart constructor.
data TargetVPNGatewaysAggregatedList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
tvgalOrderBy :: Lens' TargetVPNGatewaysAggregatedList (Maybe Text)

-- | Project ID for this request.
tvgalProject :: Lens' TargetVPNGatewaysAggregatedList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
tvgalFilter :: Lens' TargetVPNGatewaysAggregatedList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
tvgalPageToken :: Lens' TargetVPNGatewaysAggregatedList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
tvgalMaxResults :: Lens' TargetVPNGatewaysAggregatedList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetVPNGateways.AggregatedList.TargetVPNGatewaysAggregatedList
instance Data.Data.Data Network.Google.Resource.Compute.TargetVPNGateways.AggregatedList.TargetVPNGatewaysAggregatedList
instance GHC.Show.Show Network.Google.Resource.Compute.TargetVPNGateways.AggregatedList.TargetVPNGatewaysAggregatedList
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetVPNGateways.AggregatedList.TargetVPNGatewaysAggregatedList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetVPNGateways.AggregatedList.TargetVPNGatewaysAggregatedList


-- | Deletes the specified target VPN gateway.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetVpnGateways.delete</tt>.
module Network.Google.Resource.Compute.TargetVPNGateways.Delete

-- | A resource alias for <tt>compute.targetVpnGateways.delete</tt> method
--   which the <a>TargetVPNGatewaysDelete</a> request conforms to.
type TargetVPNGatewaysDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("targetVpnGateways" :> (Capture "targetVpnGateway" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation))))))))

-- | Creates a value of <a>TargetVPNGatewaysDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tvgdProject</a></li>
--   <li><a>tvgdTargetVPNGateway</a></li>
--   <li><a>tvgdRegion</a></li>
--   </ul>
targetVPNGatewaysDelete :: Text -> Text -> Text -> TargetVPNGatewaysDelete

-- | Deletes the specified target VPN gateway.
--   
--   <i>See:</i> <a>targetVPNGatewaysDelete</a> smart constructor.
data TargetVPNGatewaysDelete

-- | Project ID for this request.
tvgdProject :: Lens' TargetVPNGatewaysDelete Text

-- | Name of the target VPN gateway to delete.
tvgdTargetVPNGateway :: Lens' TargetVPNGatewaysDelete Text

-- | Name of the region for this request.
tvgdRegion :: Lens' TargetVPNGatewaysDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetVPNGateways.Delete.TargetVPNGatewaysDelete
instance Data.Data.Data Network.Google.Resource.Compute.TargetVPNGateways.Delete.TargetVPNGatewaysDelete
instance GHC.Show.Show Network.Google.Resource.Compute.TargetVPNGateways.Delete.TargetVPNGatewaysDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetVPNGateways.Delete.TargetVPNGatewaysDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetVPNGateways.Delete.TargetVPNGatewaysDelete


-- | Returns the specified target VPN gateway. Get a list of available
--   target VPN gateways by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetVpnGateways.get</tt>.
module Network.Google.Resource.Compute.TargetVPNGateways.Get

-- | A resource alias for <tt>compute.targetVpnGateways.get</tt> method
--   which the <a>TargetVPNGatewaysGet</a> request conforms to.
type TargetVPNGatewaysGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("targetVpnGateways" :> (Capture "targetVpnGateway" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetVPNGateway))))))))

-- | Creates a value of <a>TargetVPNGatewaysGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tvggProject</a></li>
--   <li><a>tvggTargetVPNGateway</a></li>
--   <li><a>tvggRegion</a></li>
--   </ul>
targetVPNGatewaysGet :: Text -> Text -> Text -> TargetVPNGatewaysGet

-- | Returns the specified target VPN gateway. Get a list of available
--   target VPN gateways by making a list() request.
--   
--   <i>See:</i> <a>targetVPNGatewaysGet</a> smart constructor.
data TargetVPNGatewaysGet

-- | Project ID for this request.
tvggProject :: Lens' TargetVPNGatewaysGet Text

-- | Name of the target VPN gateway to return.
tvggTargetVPNGateway :: Lens' TargetVPNGatewaysGet Text

-- | Name of the region for this request.
tvggRegion :: Lens' TargetVPNGatewaysGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetVPNGateways.Get.TargetVPNGatewaysGet
instance Data.Data.Data Network.Google.Resource.Compute.TargetVPNGateways.Get.TargetVPNGatewaysGet
instance GHC.Show.Show Network.Google.Resource.Compute.TargetVPNGateways.Get.TargetVPNGatewaysGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetVPNGateways.Get.TargetVPNGatewaysGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetVPNGateways.Get.TargetVPNGatewaysGet


-- | Creates a target VPN gateway in the specified project and region using
--   the data included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetVpnGateways.insert</tt>.
module Network.Google.Resource.Compute.TargetVPNGateways.Insert

-- | A resource alias for <tt>compute.targetVpnGateways.insert</tt> method
--   which the <a>TargetVPNGatewaysInsert</a> request conforms to.
type TargetVPNGatewaysInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("targetVpnGateways" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TargetVPNGateway :> Post '[JSON] Operation))))))))

-- | Creates a value of <a>TargetVPNGatewaysInsert</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tvgiProject</a></li>
--   <li><a>tvgiPayload</a></li>
--   <li><a>tvgiRegion</a></li>
--   </ul>
targetVPNGatewaysInsert :: Text -> TargetVPNGateway -> Text -> TargetVPNGatewaysInsert

-- | Creates a target VPN gateway in the specified project and region using
--   the data included in the request.
--   
--   <i>See:</i> <a>targetVPNGatewaysInsert</a> smart constructor.
data TargetVPNGatewaysInsert

-- | Project ID for this request.
tvgiProject :: Lens' TargetVPNGatewaysInsert Text

-- | Multipart request metadata.
tvgiPayload :: Lens' TargetVPNGatewaysInsert TargetVPNGateway

-- | Name of the region for this request.
tvgiRegion :: Lens' TargetVPNGatewaysInsert Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetVPNGateways.Insert.TargetVPNGatewaysInsert
instance Data.Data.Data Network.Google.Resource.Compute.TargetVPNGateways.Insert.TargetVPNGatewaysInsert
instance GHC.Show.Show Network.Google.Resource.Compute.TargetVPNGateways.Insert.TargetVPNGatewaysInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetVPNGateways.Insert.TargetVPNGatewaysInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetVPNGateways.Insert.TargetVPNGatewaysInsert


-- | Retrieves a list of target VPN gateways available to the specified
--   project and region.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.targetVpnGateways.list</tt>.
module Network.Google.Resource.Compute.TargetVPNGateways.List

-- | A resource alias for <tt>compute.targetVpnGateways.list</tt> method
--   which the <a>TargetVPNGatewaysList</a> request conforms to.
type TargetVPNGatewaysListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("targetVpnGateways" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TargetVPNGatewayList)))))))))))

-- | Creates a value of <a>TargetVPNGatewaysList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tvglOrderBy</a></li>
--   <li><a>tvglProject</a></li>
--   <li><a>tvglFilter</a></li>
--   <li><a>tvglRegion</a></li>
--   <li><a>tvglPageToken</a></li>
--   <li><a>tvglMaxResults</a></li>
--   </ul>
targetVPNGatewaysList :: Text -> Text -> TargetVPNGatewaysList

-- | Retrieves a list of target VPN gateways available to the specified
--   project and region.
--   
--   <i>See:</i> <a>targetVPNGatewaysList</a> smart constructor.
data TargetVPNGatewaysList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
tvglOrderBy :: Lens' TargetVPNGatewaysList (Maybe Text)

-- | Project ID for this request.
tvglProject :: Lens' TargetVPNGatewaysList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
tvglFilter :: Lens' TargetVPNGatewaysList (Maybe Text)

-- | Name of the region for this request.
tvglRegion :: Lens' TargetVPNGatewaysList Text

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
tvglPageToken :: Lens' TargetVPNGatewaysList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
tvglMaxResults :: Lens' TargetVPNGatewaysList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.TargetVPNGateways.List.TargetVPNGatewaysList
instance Data.Data.Data Network.Google.Resource.Compute.TargetVPNGateways.List.TargetVPNGatewaysList
instance GHC.Show.Show Network.Google.Resource.Compute.TargetVPNGateways.List.TargetVPNGatewaysList
instance GHC.Classes.Eq Network.Google.Resource.Compute.TargetVPNGateways.List.TargetVPNGatewaysList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.TargetVPNGateways.List.TargetVPNGatewaysList


-- | Deletes the specified UrlMap resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.urlMaps.delete</tt>.
module Network.Google.Resource.Compute.URLMaps.Delete

-- | A resource alias for <tt>compute.urlMaps.delete</tt> method which the
--   <a>URLMapsDelete</a> request conforms to.
type URLMapsDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("urlMaps" :> (Capture "urlMap" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation)))))))

-- | Creates a value of <a>URLMapsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umdURLMap</a></li>
--   <li><a>umdProject</a></li>
--   </ul>
urlMapsDelete :: Text -> Text -> URLMapsDelete

-- | Deletes the specified UrlMap resource.
--   
--   <i>See:</i> <a>urlMapsDelete</a> smart constructor.
data URLMapsDelete

-- | Name of the UrlMap resource to delete.
umdURLMap :: Lens' URLMapsDelete Text

-- | Project ID for this request.
umdProject :: Lens' URLMapsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.URLMaps.Delete.URLMapsDelete
instance Data.Data.Data Network.Google.Resource.Compute.URLMaps.Delete.URLMapsDelete
instance GHC.Show.Show Network.Google.Resource.Compute.URLMaps.Delete.URLMapsDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.URLMaps.Delete.URLMapsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.URLMaps.Delete.URLMapsDelete


-- | Returns the specified UrlMap resource. Get a list of available URL
--   maps by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.urlMaps.get</tt>.
module Network.Google.Resource.Compute.URLMaps.Get

-- | A resource alias for <tt>compute.urlMaps.get</tt> method which the
--   <a>URLMapsGet</a> request conforms to.
type URLMapsGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("urlMaps" :> (Capture "urlMap" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] URLMap)))))))

-- | Creates a value of <a>URLMapsGet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umgURLMap</a></li>
--   <li><a>umgProject</a></li>
--   </ul>
urlMapsGet :: Text -> Text -> URLMapsGet

-- | Returns the specified UrlMap resource. Get a list of available URL
--   maps by making a list() request.
--   
--   <i>See:</i> <a>urlMapsGet</a> smart constructor.
data URLMapsGet

-- | Name of the UrlMap resource to return.
umgURLMap :: Lens' URLMapsGet Text

-- | Project ID for this request.
umgProject :: Lens' URLMapsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.URLMaps.Get.URLMapsGet
instance Data.Data.Data Network.Google.Resource.Compute.URLMaps.Get.URLMapsGet
instance GHC.Show.Show Network.Google.Resource.Compute.URLMaps.Get.URLMapsGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.URLMaps.Get.URLMapsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.URLMaps.Get.URLMapsGet


-- | Creates a UrlMap resource in the specified project using the data
--   included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.urlMaps.insert</tt>.
module Network.Google.Resource.Compute.URLMaps.Insert

-- | A resource alias for <tt>compute.urlMaps.insert</tt> method which the
--   <a>URLMapsInsert</a> request conforms to.
type URLMapsInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("urlMaps" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] URLMap :> Post '[JSON] Operation)))))))

-- | Creates a value of <a>URLMapsInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umiProject</a></li>
--   <li><a>umiPayload</a></li>
--   </ul>
urlMapsInsert :: Text -> URLMap -> URLMapsInsert

-- | Creates a UrlMap resource in the specified project using the data
--   included in the request.
--   
--   <i>See:</i> <a>urlMapsInsert</a> smart constructor.
data URLMapsInsert

-- | Project ID for this request.
umiProject :: Lens' URLMapsInsert Text

-- | Multipart request metadata.
umiPayload :: Lens' URLMapsInsert URLMap
instance GHC.Generics.Generic Network.Google.Resource.Compute.URLMaps.Insert.URLMapsInsert
instance Data.Data.Data Network.Google.Resource.Compute.URLMaps.Insert.URLMapsInsert
instance GHC.Show.Show Network.Google.Resource.Compute.URLMaps.Insert.URLMapsInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.URLMaps.Insert.URLMapsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.URLMaps.Insert.URLMapsInsert


-- | Initiates a cache invalidation operation, invalidating the specified
--   path, scoped to the specified UrlMap.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.urlMaps.invalidateCache</tt>.
module Network.Google.Resource.Compute.URLMaps.InvalidateCache

-- | A resource alias for <tt>compute.urlMaps.invalidateCache</tt> method
--   which the <a>URLMapsInvalidateCache</a> request conforms to.
type URLMapsInvalidateCacheResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("urlMaps" :> (Capture "urlMap" Text :> ("invalidateCache" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] CacheInvalidationRule :> Post '[JSON] Operation)))))))))

-- | Creates a value of <a>URLMapsInvalidateCache</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umicURLMap</a></li>
--   <li><a>umicProject</a></li>
--   <li><a>umicPayload</a></li>
--   </ul>
urlMapsInvalidateCache :: Text -> Text -> CacheInvalidationRule -> URLMapsInvalidateCache

-- | Initiates a cache invalidation operation, invalidating the specified
--   path, scoped to the specified UrlMap.
--   
--   <i>See:</i> <a>urlMapsInvalidateCache</a> smart constructor.
data URLMapsInvalidateCache

-- | Name of the UrlMap scoping this request.
umicURLMap :: Lens' URLMapsInvalidateCache Text

-- | Project ID for this request.
umicProject :: Lens' URLMapsInvalidateCache Text

-- | Multipart request metadata.
umicPayload :: Lens' URLMapsInvalidateCache CacheInvalidationRule
instance GHC.Generics.Generic Network.Google.Resource.Compute.URLMaps.InvalidateCache.URLMapsInvalidateCache
instance Data.Data.Data Network.Google.Resource.Compute.URLMaps.InvalidateCache.URLMapsInvalidateCache
instance GHC.Show.Show Network.Google.Resource.Compute.URLMaps.InvalidateCache.URLMapsInvalidateCache
instance GHC.Classes.Eq Network.Google.Resource.Compute.URLMaps.InvalidateCache.URLMapsInvalidateCache
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.URLMaps.InvalidateCache.URLMapsInvalidateCache


-- | Retrieves the list of UrlMap resources available to the specified
--   project.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.urlMaps.list</tt>.
module Network.Google.Resource.Compute.URLMaps.List

-- | A resource alias for <tt>compute.urlMaps.list</tt> method which the
--   <a>URLMapsList</a> request conforms to.
type URLMapsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("urlMaps" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] URLMapList))))))))))

-- | Creates a value of <a>URLMapsList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umlOrderBy</a></li>
--   <li><a>umlProject</a></li>
--   <li><a>umlFilter</a></li>
--   <li><a>umlPageToken</a></li>
--   <li><a>umlMaxResults</a></li>
--   </ul>
urlMapsList :: Text -> URLMapsList

-- | Retrieves the list of UrlMap resources available to the specified
--   project.
--   
--   <i>See:</i> <a>urlMapsList</a> smart constructor.
data URLMapsList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
umlOrderBy :: Lens' URLMapsList (Maybe Text)

-- | Project ID for this request.
umlProject :: Lens' URLMapsList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
umlFilter :: Lens' URLMapsList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
umlPageToken :: Lens' URLMapsList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
umlMaxResults :: Lens' URLMapsList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.URLMaps.List.URLMapsList
instance Data.Data.Data Network.Google.Resource.Compute.URLMaps.List.URLMapsList
instance GHC.Show.Show Network.Google.Resource.Compute.URLMaps.List.URLMapsList
instance GHC.Classes.Eq Network.Google.Resource.Compute.URLMaps.List.URLMapsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.URLMaps.List.URLMapsList


-- | Updates the specified UrlMap resource with the data included in the
--   request. This method supports patch semantics.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.urlMaps.patch</tt>.
module Network.Google.Resource.Compute.URLMaps.Patch

-- | A resource alias for <tt>compute.urlMaps.patch</tt> method which the
--   <a>URLMapsPatch</a> request conforms to.
type URLMapsPatchResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("urlMaps" :> (Capture "urlMap" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] URLMap :> Patch '[JSON] Operation))))))))

-- | Creates a value of <a>URLMapsPatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umpURLMap</a></li>
--   <li><a>umpProject</a></li>
--   <li><a>umpPayload</a></li>
--   </ul>
urlMapsPatch :: Text -> Text -> URLMap -> URLMapsPatch

-- | Updates the specified UrlMap resource with the data included in the
--   request. This method supports patch semantics.
--   
--   <i>See:</i> <a>urlMapsPatch</a> smart constructor.
data URLMapsPatch

-- | Name of the UrlMap resource to update.
umpURLMap :: Lens' URLMapsPatch Text

-- | Project ID for this request.
umpProject :: Lens' URLMapsPatch Text

-- | Multipart request metadata.
umpPayload :: Lens' URLMapsPatch URLMap
instance GHC.Generics.Generic Network.Google.Resource.Compute.URLMaps.Patch.URLMapsPatch
instance Data.Data.Data Network.Google.Resource.Compute.URLMaps.Patch.URLMapsPatch
instance GHC.Show.Show Network.Google.Resource.Compute.URLMaps.Patch.URLMapsPatch
instance GHC.Classes.Eq Network.Google.Resource.Compute.URLMaps.Patch.URLMapsPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.URLMaps.Patch.URLMapsPatch


-- | Updates the specified UrlMap resource with the data included in the
--   request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.urlMaps.update</tt>.
module Network.Google.Resource.Compute.URLMaps.Update

-- | A resource alias for <tt>compute.urlMaps.update</tt> method which the
--   <a>URLMapsUpdate</a> request conforms to.
type URLMapsUpdateResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("urlMaps" :> (Capture "urlMap" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] URLMap :> Put '[JSON] Operation))))))))

-- | Creates a value of <a>URLMapsUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umuURLMap</a></li>
--   <li><a>umuProject</a></li>
--   <li><a>umuPayload</a></li>
--   </ul>
urlMapsUpdate :: Text -> Text -> URLMap -> URLMapsUpdate

-- | Updates the specified UrlMap resource with the data included in the
--   request.
--   
--   <i>See:</i> <a>urlMapsUpdate</a> smart constructor.
data URLMapsUpdate

-- | Name of the UrlMap resource to update.
umuURLMap :: Lens' URLMapsUpdate Text

-- | Project ID for this request.
umuProject :: Lens' URLMapsUpdate Text

-- | Multipart request metadata.
umuPayload :: Lens' URLMapsUpdate URLMap
instance GHC.Generics.Generic Network.Google.Resource.Compute.URLMaps.Update.URLMapsUpdate
instance Data.Data.Data Network.Google.Resource.Compute.URLMaps.Update.URLMapsUpdate
instance GHC.Show.Show Network.Google.Resource.Compute.URLMaps.Update.URLMapsUpdate
instance GHC.Classes.Eq Network.Google.Resource.Compute.URLMaps.Update.URLMapsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.URLMaps.Update.URLMapsUpdate


-- | Runs static validation for the UrlMap. In particular, the tests of the
--   provided UrlMap will be run. Calling this method does NOT create the
--   UrlMap.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.urlMaps.validate</tt>.
module Network.Google.Resource.Compute.URLMaps.Validate

-- | A resource alias for <tt>compute.urlMaps.validate</tt> method which
--   the <a>URLMapsValidate</a> request conforms to.
type URLMapsValidateResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("global" :> ("urlMaps" :> (Capture "urlMap" Text :> ("validate" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] URLMapsValidateRequest :> Post '[JSON] URLMapsValidateResponse)))))))))

-- | Creates a value of <a>URLMapsValidate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umvURLMap</a></li>
--   <li><a>umvProject</a></li>
--   <li><a>umvPayload</a></li>
--   </ul>
urlMapsValidate :: Text -> Text -> URLMapsValidateRequest -> URLMapsValidate

-- | Runs static validation for the UrlMap. In particular, the tests of the
--   provided UrlMap will be run. Calling this method does NOT create the
--   UrlMap.
--   
--   <i>See:</i> <a>urlMapsValidate</a> smart constructor.
data URLMapsValidate

-- | Name of the UrlMap resource to be validated as.
umvURLMap :: Lens' URLMapsValidate Text

-- | Project ID for this request.
umvProject :: Lens' URLMapsValidate Text

-- | Multipart request metadata.
umvPayload :: Lens' URLMapsValidate URLMapsValidateRequest
instance GHC.Generics.Generic Network.Google.Resource.Compute.URLMaps.Validate.URLMapsValidate
instance Data.Data.Data Network.Google.Resource.Compute.URLMaps.Validate.URLMapsValidate
instance GHC.Show.Show Network.Google.Resource.Compute.URLMaps.Validate.URLMapsValidate
instance GHC.Classes.Eq Network.Google.Resource.Compute.URLMaps.Validate.URLMapsValidate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.URLMaps.Validate.URLMapsValidate


-- | Retrieves an aggregated list of VPN tunnels.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.vpnTunnels.aggregatedList</tt>.
module Network.Google.Resource.Compute.VPNTunnels.AggregatedList

-- | A resource alias for <tt>compute.vpnTunnels.aggregatedList</tt> method
--   which the <a>VPNTunnelsAggregatedList</a> request conforms to.
type VPNTunnelsAggregatedListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("aggregated" :> ("vpnTunnels" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] VPNTunnelAggregatedList))))))))))

-- | Creates a value of <a>VPNTunnelsAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vtalOrderBy</a></li>
--   <li><a>vtalProject</a></li>
--   <li><a>vtalFilter</a></li>
--   <li><a>vtalPageToken</a></li>
--   <li><a>vtalMaxResults</a></li>
--   </ul>
vpnTunnelsAggregatedList :: Text -> VPNTunnelsAggregatedList

-- | Retrieves an aggregated list of VPN tunnels.
--   
--   <i>See:</i> <a>vpnTunnelsAggregatedList</a> smart constructor.
data VPNTunnelsAggregatedList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
vtalOrderBy :: Lens' VPNTunnelsAggregatedList (Maybe Text)

-- | Project ID for this request.
vtalProject :: Lens' VPNTunnelsAggregatedList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
vtalFilter :: Lens' VPNTunnelsAggregatedList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
vtalPageToken :: Lens' VPNTunnelsAggregatedList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
vtalMaxResults :: Lens' VPNTunnelsAggregatedList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.VPNTunnels.AggregatedList.VPNTunnelsAggregatedList
instance Data.Data.Data Network.Google.Resource.Compute.VPNTunnels.AggregatedList.VPNTunnelsAggregatedList
instance GHC.Show.Show Network.Google.Resource.Compute.VPNTunnels.AggregatedList.VPNTunnelsAggregatedList
instance GHC.Classes.Eq Network.Google.Resource.Compute.VPNTunnels.AggregatedList.VPNTunnelsAggregatedList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.VPNTunnels.AggregatedList.VPNTunnelsAggregatedList


-- | Deletes the specified VpnTunnel resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.vpnTunnels.delete</tt>.
module Network.Google.Resource.Compute.VPNTunnels.Delete

-- | A resource alias for <tt>compute.vpnTunnels.delete</tt> method which
--   the <a>VPNTunnelsDelete</a> request conforms to.
type VPNTunnelsDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("vpnTunnels" :> (Capture "vpnTunnel" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Operation))))))))

-- | Creates a value of <a>VPNTunnelsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vtdProject</a></li>
--   <li><a>vtdVPNTunnel</a></li>
--   <li><a>vtdRegion</a></li>
--   </ul>
vpnTunnelsDelete :: Text -> Text -> Text -> VPNTunnelsDelete

-- | Deletes the specified VpnTunnel resource.
--   
--   <i>See:</i> <a>vpnTunnelsDelete</a> smart constructor.
data VPNTunnelsDelete

-- | Project ID for this request.
vtdProject :: Lens' VPNTunnelsDelete Text

-- | Name of the VpnTunnel resource to delete.
vtdVPNTunnel :: Lens' VPNTunnelsDelete Text

-- | Name of the region for this request.
vtdRegion :: Lens' VPNTunnelsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.VPNTunnels.Delete.VPNTunnelsDelete
instance Data.Data.Data Network.Google.Resource.Compute.VPNTunnels.Delete.VPNTunnelsDelete
instance GHC.Show.Show Network.Google.Resource.Compute.VPNTunnels.Delete.VPNTunnelsDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.VPNTunnels.Delete.VPNTunnelsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.VPNTunnels.Delete.VPNTunnelsDelete


-- | Returns the specified VpnTunnel resource. Get a list of available VPN
--   tunnels by making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.vpnTunnels.get</tt>.
module Network.Google.Resource.Compute.VPNTunnels.Get

-- | A resource alias for <tt>compute.vpnTunnels.get</tt> method which the
--   <a>VPNTunnelsGet</a> request conforms to.
type VPNTunnelsGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("vpnTunnels" :> (Capture "vpnTunnel" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] VPNTunnel))))))))

-- | Creates a value of <a>VPNTunnelsGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vtgProject</a></li>
--   <li><a>vtgVPNTunnel</a></li>
--   <li><a>vtgRegion</a></li>
--   </ul>
vpnTunnelsGet :: Text -> Text -> Text -> VPNTunnelsGet

-- | Returns the specified VpnTunnel resource. Get a list of available VPN
--   tunnels by making a list() request.
--   
--   <i>See:</i> <a>vpnTunnelsGet</a> smart constructor.
data VPNTunnelsGet

-- | Project ID for this request.
vtgProject :: Lens' VPNTunnelsGet Text

-- | Name of the VpnTunnel resource to return.
vtgVPNTunnel :: Lens' VPNTunnelsGet Text

-- | Name of the region for this request.
vtgRegion :: Lens' VPNTunnelsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.VPNTunnels.Get.VPNTunnelsGet
instance Data.Data.Data Network.Google.Resource.Compute.VPNTunnels.Get.VPNTunnelsGet
instance GHC.Show.Show Network.Google.Resource.Compute.VPNTunnels.Get.VPNTunnelsGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.VPNTunnels.Get.VPNTunnelsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.VPNTunnels.Get.VPNTunnelsGet


-- | Creates a VpnTunnel resource in the specified project and region using
--   the data included in the request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.vpnTunnels.insert</tt>.
module Network.Google.Resource.Compute.VPNTunnels.Insert

-- | A resource alias for <tt>compute.vpnTunnels.insert</tt> method which
--   the <a>VPNTunnelsInsert</a> request conforms to.
type VPNTunnelsInsertResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("vpnTunnels" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] VPNTunnel :> Post '[JSON] Operation))))))))

-- | Creates a value of <a>VPNTunnelsInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vtiProject</a></li>
--   <li><a>vtiPayload</a></li>
--   <li><a>vtiRegion</a></li>
--   </ul>
vpnTunnelsInsert :: Text -> VPNTunnel -> Text -> VPNTunnelsInsert

-- | Creates a VpnTunnel resource in the specified project and region using
--   the data included in the request.
--   
--   <i>See:</i> <a>vpnTunnelsInsert</a> smart constructor.
data VPNTunnelsInsert

-- | Project ID for this request.
vtiProject :: Lens' VPNTunnelsInsert Text

-- | Multipart request metadata.
vtiPayload :: Lens' VPNTunnelsInsert VPNTunnel

-- | Name of the region for this request.
vtiRegion :: Lens' VPNTunnelsInsert Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.VPNTunnels.Insert.VPNTunnelsInsert
instance Data.Data.Data Network.Google.Resource.Compute.VPNTunnels.Insert.VPNTunnelsInsert
instance GHC.Show.Show Network.Google.Resource.Compute.VPNTunnels.Insert.VPNTunnelsInsert
instance GHC.Classes.Eq Network.Google.Resource.Compute.VPNTunnels.Insert.VPNTunnelsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.VPNTunnels.Insert.VPNTunnelsInsert


-- | Retrieves a list of VpnTunnel resources contained in the specified
--   project and region.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.vpnTunnels.list</tt>.
module Network.Google.Resource.Compute.VPNTunnels.List

-- | A resource alias for <tt>compute.vpnTunnels.list</tt> method which the
--   <a>VPNTunnelsList</a> request conforms to.
type VPNTunnelsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("regions" :> (Capture "region" Text :> ("vpnTunnels" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] VPNTunnelList)))))))))))

-- | Creates a value of <a>VPNTunnelsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vtlOrderBy</a></li>
--   <li><a>vtlProject</a></li>
--   <li><a>vtlFilter</a></li>
--   <li><a>vtlRegion</a></li>
--   <li><a>vtlPageToken</a></li>
--   <li><a>vtlMaxResults</a></li>
--   </ul>
vpnTunnelsList :: Text -> Text -> VPNTunnelsList

-- | Retrieves a list of VpnTunnel resources contained in the specified
--   project and region.
--   
--   <i>See:</i> <a>vpnTunnelsList</a> smart constructor.
data VPNTunnelsList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
vtlOrderBy :: Lens' VPNTunnelsList (Maybe Text)

-- | Project ID for this request.
vtlProject :: Lens' VPNTunnelsList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
vtlFilter :: Lens' VPNTunnelsList (Maybe Text)

-- | Name of the region for this request.
vtlRegion :: Lens' VPNTunnelsList Text

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
vtlPageToken :: Lens' VPNTunnelsList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
vtlMaxResults :: Lens' VPNTunnelsList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.VPNTunnels.List.VPNTunnelsList
instance Data.Data.Data Network.Google.Resource.Compute.VPNTunnels.List.VPNTunnelsList
instance GHC.Show.Show Network.Google.Resource.Compute.VPNTunnels.List.VPNTunnelsList
instance GHC.Classes.Eq Network.Google.Resource.Compute.VPNTunnels.List.VPNTunnelsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.VPNTunnels.List.VPNTunnelsList


-- | Deletes the specified zone-specific Operations resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.zoneOperations.delete</tt>.
module Network.Google.Resource.Compute.ZoneOperations.Delete

-- | A resource alias for <tt>compute.zoneOperations.delete</tt> method
--   which the <a>ZoneOperationsDelete</a> request conforms to.
type ZoneOperationsDeleteResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("operations" :> (Capture "operation" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))))))

-- | Creates a value of <a>ZoneOperationsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>zodProject</a></li>
--   <li><a>zodOperation</a></li>
--   <li><a>zodZone</a></li>
--   </ul>
zoneOperationsDelete :: Text -> Text -> Text -> ZoneOperationsDelete

-- | Deletes the specified zone-specific Operations resource.
--   
--   <i>See:</i> <a>zoneOperationsDelete</a> smart constructor.
data ZoneOperationsDelete

-- | Project ID for this request.
zodProject :: Lens' ZoneOperationsDelete Text

-- | Name of the Operations resource to delete.
zodOperation :: Lens' ZoneOperationsDelete Text

-- | Name of the zone for this request.
zodZone :: Lens' ZoneOperationsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.ZoneOperations.Delete.ZoneOperationsDelete
instance Data.Data.Data Network.Google.Resource.Compute.ZoneOperations.Delete.ZoneOperationsDelete
instance GHC.Show.Show Network.Google.Resource.Compute.ZoneOperations.Delete.ZoneOperationsDelete
instance GHC.Classes.Eq Network.Google.Resource.Compute.ZoneOperations.Delete.ZoneOperationsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.ZoneOperations.Delete.ZoneOperationsDelete


-- | Retrieves the specified zone-specific Operations resource.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.zoneOperations.get</tt>.
module Network.Google.Resource.Compute.ZoneOperations.Get

-- | A resource alias for <tt>compute.zoneOperations.get</tt> method which
--   the <a>ZoneOperationsGet</a> request conforms to.
type ZoneOperationsGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("operations" :> (Capture "operation" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Operation))))))))

-- | Creates a value of <a>ZoneOperationsGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>zogProject</a></li>
--   <li><a>zogOperation</a></li>
--   <li><a>zogZone</a></li>
--   </ul>
zoneOperationsGet :: Text -> Text -> Text -> ZoneOperationsGet

-- | Retrieves the specified zone-specific Operations resource.
--   
--   <i>See:</i> <a>zoneOperationsGet</a> smart constructor.
data ZoneOperationsGet

-- | Project ID for this request.
zogProject :: Lens' ZoneOperationsGet Text

-- | Name of the Operations resource to return.
zogOperation :: Lens' ZoneOperationsGet Text

-- | Name of the zone for this request.
zogZone :: Lens' ZoneOperationsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.ZoneOperations.Get.ZoneOperationsGet
instance Data.Data.Data Network.Google.Resource.Compute.ZoneOperations.Get.ZoneOperationsGet
instance GHC.Show.Show Network.Google.Resource.Compute.ZoneOperations.Get.ZoneOperationsGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.ZoneOperations.Get.ZoneOperationsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.ZoneOperations.Get.ZoneOperationsGet


-- | Retrieves a list of Operation resources contained within the specified
--   zone.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.zoneOperations.list</tt>.
module Network.Google.Resource.Compute.ZoneOperations.List

-- | A resource alias for <tt>compute.zoneOperations.list</tt> method which
--   the <a>ZoneOperationsList</a> request conforms to.
type ZoneOperationsListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> ("operations" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] OperationList)))))))))))

-- | Creates a value of <a>ZoneOperationsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>zolOrderBy</a></li>
--   <li><a>zolProject</a></li>
--   <li><a>zolZone</a></li>
--   <li><a>zolFilter</a></li>
--   <li><a>zolPageToken</a></li>
--   <li><a>zolMaxResults</a></li>
--   </ul>
zoneOperationsList :: Text -> Text -> ZoneOperationsList

-- | Retrieves a list of Operation resources contained within the specified
--   zone.
--   
--   <i>See:</i> <a>zoneOperationsList</a> smart constructor.
data ZoneOperationsList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
zolOrderBy :: Lens' ZoneOperationsList (Maybe Text)

-- | Project ID for this request.
zolProject :: Lens' ZoneOperationsList Text

-- | Name of the zone for request.
zolZone :: Lens' ZoneOperationsList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
zolFilter :: Lens' ZoneOperationsList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
zolPageToken :: Lens' ZoneOperationsList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
zolMaxResults :: Lens' ZoneOperationsList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.ZoneOperations.List.ZoneOperationsList
instance Data.Data.Data Network.Google.Resource.Compute.ZoneOperations.List.ZoneOperationsList
instance GHC.Show.Show Network.Google.Resource.Compute.ZoneOperations.List.ZoneOperationsList
instance GHC.Classes.Eq Network.Google.Resource.Compute.ZoneOperations.List.ZoneOperationsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.ZoneOperations.List.ZoneOperationsList


-- | Returns the specified Zone resource. Get a list of available zones by
--   making a list() request.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.zones.get</tt>.
module Network.Google.Resource.Compute.Zones.Get

-- | A resource alias for <tt>compute.zones.get</tt> method which the
--   <a>ZonesGet</a> request conforms to.
type ZonesGetResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (Capture "zone" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Zone))))))

-- | Creates a value of <a>ZonesGet</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>zgProject</a></li>
--   <li><a>zgZone</a></li>
--   </ul>
zonesGet :: Text -> Text -> ZonesGet

-- | Returns the specified Zone resource. Get a list of available zones by
--   making a list() request.
--   
--   <i>See:</i> <a>zonesGet</a> smart constructor.
data ZonesGet

-- | Project ID for this request.
zgProject :: Lens' ZonesGet Text

-- | Name of the zone resource to return.
zgZone :: Lens' ZonesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Compute.Zones.Get.ZonesGet
instance Data.Data.Data Network.Google.Resource.Compute.Zones.Get.ZonesGet
instance GHC.Show.Show Network.Google.Resource.Compute.Zones.Get.ZonesGet
instance GHC.Classes.Eq Network.Google.Resource.Compute.Zones.Get.ZonesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Zones.Get.ZonesGet


-- | Retrieves the list of Zone resources available to the specified
--   project.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a> for
--   <tt>compute.zones.list</tt>.
module Network.Google.Resource.Compute.Zones.List

-- | A resource alias for <tt>compute.zones.list</tt> method which the
--   <a>ZonesList</a> request conforms to.
type ZonesListResource = "compute" :> ("v1" :> ("projects" :> (Capture "project" Text :> ("zones" :> (QueryParam "orderBy" Text :> (QueryParam "filter" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] ZoneList)))))))))

-- | Creates a value of <a>ZonesList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>zlOrderBy</a></li>
--   <li><a>zlProject</a></li>
--   <li><a>zlFilter</a></li>
--   <li><a>zlPageToken</a></li>
--   <li><a>zlMaxResults</a></li>
--   </ul>
zonesList :: Text -> ZonesList

-- | Retrieves the list of Zone resources available to the specified
--   project.
--   
--   <i>See:</i> <a>zonesList</a> smart constructor.
data ZonesList

-- | Sorts list results by a certain order. By default, results are
--   returned in alphanumerical order based on the resource name. You can
--   also sort results in descending order based on the creation timestamp
--   using orderBy="creationTimestamp desc". This sorts results based on
--   the creationTimestamp field in reverse chronological order (newest
--   result first). Use this to sort resources like operations so that the
--   newest operation is returned first. Currently, only sorting by name or
--   creationTimestamp desc is supported.
zlOrderBy :: Lens' ZonesList (Maybe Text)

-- | Project ID for this request.
zlProject :: Lens' ZonesList Text

-- | Sets a filter expression for filtering listed resources, in the form
--   filter={expression}. Your {expression} must be in the format:
--   field_name comparison_string literal_string. The field_name is the
--   name of the field you want to compare. Only atomic field types are
--   supported (string, number, boolean). The comparison_string must be
--   either eq (equals) or ne (not equals). The literal_string is the
--   string value to filter to. The literal value must be valid for the
--   type of field you are filtering by (string, number, boolean). For
--   string fields, the literal value is interpreted as a regular
--   expression using RE2 syntax. The literal value must match the entire
--   field. For example, to filter for instances that do not have a name of
--   example-instance, you would use filter=name ne example-instance. You
--   can filter on nested fields. For example, you could filter on
--   instances that have set the scheduling.automaticRestart field to true.
--   Use filtering on nested fields to take advantage of labels to organize
--   and search for results based on label values. To filter on multiple
--   expressions, provide each separate expression within parentheses. For
--   example, (scheduling.automaticRestart eq true) (zone eq
--   us-central1-f). Multiple expressions are treated as AND expressions,
--   meaning that resources must match all expressions to pass the filters.
zlFilter :: Lens' ZonesList (Maybe Text)

-- | Specifies a page token to use. Set pageToken to the nextPageToken
--   returned by a previous list request to get the next page of results.
zlPageToken :: Lens' ZonesList (Maybe Text)

-- | The maximum number of results per page that should be returned. If the
--   number of available results is larger than maxResults, Compute Engine
--   returns a nextPageToken that can be used to get the next page of
--   results in subsequent list requests.
zlMaxResults :: Lens' ZonesList Word32
instance GHC.Generics.Generic Network.Google.Resource.Compute.Zones.List.ZonesList
instance Data.Data.Data Network.Google.Resource.Compute.Zones.List.ZonesList
instance GHC.Show.Show Network.Google.Resource.Compute.Zones.List.ZonesList
instance GHC.Classes.Eq Network.Google.Resource.Compute.Zones.List.ZonesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Compute.Zones.List.ZonesList


-- | Creates and runs virtual machines on Google Cloud Platform.
--   
--   <i>See:</i> <a>Compute Engine API Reference</a>
module Network.Google.Compute

-- | Default request referring to version <tt>v1</tt> of the Compute Engine
--   API. This contains the host and root path used as a starting point for
--   constructing service requests.
computeService :: ServiceConfig

-- | View and manage your Google Compute Engine resources
computeScope :: Proxy '["https://www.googleapis.com/auth/compute"]

-- | View and manage your data across Google Cloud Platform services
cloudPlatformScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform"]

-- | View your data in Google Cloud Storage
storageReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/devstorage.read_only"]

-- | Manage your data in Google Cloud Storage
storageReadWriteScope :: Proxy '["https://www.googleapis.com/auth/devstorage.read_write"]

-- | View your Google Compute Engine resources
computeReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/compute.readonly"]

-- | Manage your data and permissions in Google Cloud Storage
storageFullControlScope :: Proxy '["https://www.googleapis.com/auth/devstorage.full_control"]

-- | Represents the entirety of the methods and resources available for the
--   Compute Engine API service.
type ComputeAPI = ImagesInsertResource :<|> (ImagesListResource :<|> (ImagesGetResource :<|> (ImagesGetFromFamilyResource :<|> (ImagesDeprecateResource :<|> (ImagesDeleteResource :<|> (URLMapsInsertResource :<|> (URLMapsListResource :<|> (URLMapsPatchResource :<|> (URLMapsGetResource :<|> (URLMapsInvalidateCacheResource :<|> (URLMapsValidateResource :<|> (URLMapsDeleteResource :<|> (URLMapsUpdateResource :<|> (RoutesInsertResource :<|> (RoutesListResource :<|> (RoutesGetResource :<|> (RoutesDeleteResource :<|> (RegionBackendServicesInsertResource :<|> (RegionBackendServicesListResource :<|> (RegionBackendServicesGetHealthResource :<|> (RegionBackendServicesPatchResource :<|> (RegionBackendServicesGetResource :<|> (RegionBackendServicesDeleteResource :<|> (RegionBackendServicesUpdateResource :<|> (InstanceTemplatesInsertResource :<|> (InstanceTemplatesListResource :<|> (InstanceTemplatesGetResource :<|> (InstanceTemplatesDeleteResource :<|> (TargetVPNGatewaysAggregatedListResource :<|> (TargetVPNGatewaysInsertResource :<|> (TargetVPNGatewaysListResource :<|> (TargetVPNGatewaysGetResource :<|> (TargetVPNGatewaysDeleteResource :<|> (SSLCertificatesInsertResource :<|> (SSLCertificatesListResource :<|> (SSLCertificatesGetResource :<|> (SSLCertificatesDeleteResource :<|> (ZonesListResource :<|> (ZonesGetResource :<|> (RegionInstanceGroupsListResource :<|> (RegionInstanceGroupsGetResource :<|> (RegionInstanceGroupsListInstancesResource :<|> (RegionInstanceGroupsSetNamedPortsResource :<|> (GlobalForwardingRulesInsertResource :<|> (GlobalForwardingRulesListResource :<|> (GlobalForwardingRulesGetResource :<|> (GlobalForwardingRulesSetTargetResource :<|> (GlobalForwardingRulesDeleteResource :<|> (NetworksInsertResource :<|> (NetworksListResource :<|> (NetworksGetResource :<|> (NetworksSwitchToCustomModeResource :<|> (NetworksDeleteResource :<|> (RoutersAggregatedListResource :<|> (RoutersInsertResource :<|> (RoutersListResource :<|> (RoutersPatchResource :<|> (RoutersGetResource :<|> (RoutersPreviewResource :<|> (RoutersDeleteResource :<|> (RoutersUpdateResource :<|> (RoutersGetRouterStatusResource :<|> (AddressesAggregatedListResource :<|> (AddressesInsertResource :<|> (AddressesListResource :<|> (AddressesGetResource :<|> (AddressesDeleteResource :<|> (GlobalAddressesInsertResource :<|> (GlobalAddressesListResource :<|> (GlobalAddressesGetResource :<|> (GlobalAddressesDeleteResource :<|> (RegionsListResource :<|> (RegionsGetResource :<|> (TargetHTTPProxiesInsertResource :<|> (TargetHTTPProxiesListResource :<|> (TargetHTTPProxiesSetURLMapResource :<|> (TargetHTTPProxiesGetResource :<|> (TargetHTTPProxiesDeleteResource :<|> (VPNTunnelsAggregatedListResource :<|> (VPNTunnelsInsertResource :<|> (VPNTunnelsListResource :<|> (VPNTunnelsGetResource :<|> (VPNTunnelsDeleteResource :<|> (AutoscalersAggregatedListResource :<|> (AutoscalersInsertResource :<|> (AutoscalersListResource :<|> (AutoscalersPatchResource :<|> (AutoscalersGetResource :<|> (AutoscalersDeleteResource :<|> (AutoscalersUpdateResource :<|> (RegionInstanceGroupManagersSetTargetPoolsResource :<|> (RegionInstanceGroupManagersInsertResource :<|> (RegionInstanceGroupManagersResizeResource :<|> (RegionInstanceGroupManagersListResource :<|> (RegionInstanceGroupManagersListManagedInstancesResource :<|> (RegionInstanceGroupManagersAbandonInstancesResource :<|> (RegionInstanceGroupManagersSetInstanceTemplateResource :<|> (RegionInstanceGroupManagersGetResource :<|> (RegionInstanceGroupManagersDeleteInstancesResource :<|> (RegionInstanceGroupManagersDeleteResource :<|> (RegionInstanceGroupManagersRecreateInstancesResource :<|> (DiskTypesAggregatedListResource :<|> (DiskTypesListResource :<|> (DiskTypesGetResource :<|> (RegionOperationsListResource :<|> (RegionOperationsGetResource :<|> (RegionOperationsDeleteResource :<|> (MachineTypesAggregatedListResource :<|> (MachineTypesListResource :<|> (MachineTypesGetResource :<|> (HTTPHealthChecksInsertResource :<|> (HTTPHealthChecksListResource :<|> (HTTPHealthChecksPatchResource :<|> (HTTPHealthChecksGetResource :<|> (HTTPHealthChecksDeleteResource :<|> (HTTPHealthChecksUpdateResource :<|> (SubnetworksExpandIPCIdRRangeResource :<|> (SubnetworksAggregatedListResource :<|> (SubnetworksInsertResource :<|> (SubnetworksListResource :<|> (SubnetworksGetResource :<|> (SubnetworksDeleteResource :<|> (SnapshotsListResource :<|> (SnapshotsGetResource :<|> (SnapshotsDeleteResource :<|> (TargetSSLProxiesInsertResource :<|> (TargetSSLProxiesListResource :<|> (TargetSSLProxiesSetSSLCertificatesResource :<|> (TargetSSLProxiesGetResource :<|> (TargetSSLProxiesSetBackendServiceResource :<|> (TargetSSLProxiesDeleteResource :<|> (TargetSSLProxiesSetProxyHeaderResource :<|> (HTTPSHealthChecksInsertResource :<|> (HTTPSHealthChecksListResource :<|> (HTTPSHealthChecksPatchResource :<|> (HTTPSHealthChecksGetResource :<|> (HTTPSHealthChecksDeleteResource :<|> (HTTPSHealthChecksUpdateResource :<|> (InstancesAddAccessConfigResource :<|> (InstancesAggregatedListResource :<|> (InstancesInsertResource :<|> (InstancesDetachDiskResource :<|> (InstancesListResource :<|> (InstancesStartResource :<|> (InstancesSetServiceAccountResource :<|> (InstancesGetResource :<|> (InstancesSetMachineTypeResource :<|> (InstancesDeleteAccessConfigResource :<|> (InstancesSetMetadataResource :<|> (InstancesSetSchedulingResource :<|> (InstancesStartWithEncryptionKeyResource :<|> (InstancesResetResource :<|> (InstancesStopResource :<|> (InstancesGetSerialPortOutputResource :<|> (InstancesSetTagsResource :<|> (InstancesAttachDiskResource :<|> (InstancesDeleteResource :<|> (InstancesSetDiskAutoDeleteResource :<|> (BackendServicesAggregatedListResource :<|> (BackendServicesInsertResource :<|> (BackendServicesListResource :<|> (BackendServicesGetHealthResource :<|> (BackendServicesPatchResource :<|> (BackendServicesGetResource :<|> (BackendServicesDeleteResource :<|> (BackendServicesUpdateResource :<|> (InstanceGroupsRemoveInstancesResource :<|> (InstanceGroupsAggregatedListResource :<|> (InstanceGroupsInsertResource :<|> (InstanceGroupsListResource :<|> (InstanceGroupsAddInstancesResource :<|> (InstanceGroupsGetResource :<|> (InstanceGroupsListInstancesResource :<|> (InstanceGroupsSetNamedPortsResource :<|> (InstanceGroupsDeleteResource :<|> (FirewallsInsertResource :<|> (FirewallsListResource :<|> (FirewallsPatchResource :<|> (FirewallsGetResource :<|> (FirewallsDeleteResource :<|> (FirewallsUpdateResource :<|> (GlobalOperationsAggregatedListResource :<|> (GlobalOperationsListResource :<|> (GlobalOperationsGetResource :<|> (GlobalOperationsDeleteResource :<|> (LicensesGetResource :<|> (ZoneOperationsListResource :<|> (ZoneOperationsGetResource :<|> (ZoneOperationsDeleteResource :<|> (TargetHTTPSProxiesInsertResource :<|> (TargetHTTPSProxiesListResource :<|> (TargetHTTPSProxiesSetURLMapResource :<|> (TargetHTTPSProxiesSetSSLCertificatesResource :<|> (TargetHTTPSProxiesGetResource :<|> (TargetHTTPSProxiesDeleteResource :<|> (TargetInstancesAggregatedListResource :<|> (TargetInstancesInsertResource :<|> (TargetInstancesListResource :<|> (TargetInstancesGetResource :<|> (TargetInstancesDeleteResource :<|> (DisksAggregatedListResource :<|> (DisksInsertResource :<|> (DisksResizeResource :<|> (DisksListResource :<|> (DisksGetResource :<|> (DisksCreateSnapshotResource :<|> (DisksDeleteResource :<|> (ForwardingRulesAggregatedListResource :<|> (ForwardingRulesInsertResource :<|> (ForwardingRulesListResource :<|> (ForwardingRulesGetResource :<|> (ForwardingRulesSetTargetResource :<|> (ForwardingRulesDeleteResource :<|> (InstanceGroupManagersSetTargetPoolsResource :<|> (InstanceGroupManagersAggregatedListResource :<|> (InstanceGroupManagersInsertResource :<|> (InstanceGroupManagersResizeResource :<|> (InstanceGroupManagersListResource :<|> (InstanceGroupManagersListManagedInstancesResource :<|> (InstanceGroupManagersAbandonInstancesResource :<|> (InstanceGroupManagersSetInstanceTemplateResource :<|> (InstanceGroupManagersGetResource :<|> (InstanceGroupManagersDeleteInstancesResource :<|> (InstanceGroupManagersDeleteResource :<|> (InstanceGroupManagersRecreateInstancesResource :<|> (RegionAutoscalersInsertResource :<|> (RegionAutoscalersListResource :<|> (RegionAutoscalersPatchResource :<|> (RegionAutoscalersGetResource :<|> (RegionAutoscalersDeleteResource :<|> (RegionAutoscalersUpdateResource :<|> (ProjectsSetUsageExportBucketResource :<|> (ProjectsMoveInstanceResource :<|> (ProjectsGetResource :<|> (ProjectsMoveDiskResource :<|> (ProjectsSetCommonInstanceMetadataResource :<|> (TargetPoolsAggregatedListResource :<|> (TargetPoolsRemoveInstanceResource :<|> (TargetPoolsInsertResource :<|> (TargetPoolsListResource :<|> (TargetPoolsGetHealthResource :<|> (TargetPoolsGetResource :<|> (TargetPoolsRemoveHealthCheckResource :<|> (TargetPoolsSetBackupResource :<|> (TargetPoolsAddInstanceResource :<|> (TargetPoolsAddHealthCheckResource :<|> (TargetPoolsDeleteResource :<|> (HealthChecksInsertResource :<|> (HealthChecksListResource :<|> (HealthChecksPatchResource :<|> (HealthChecksGetResource :<|> (HealthChecksDeleteResource :<|> HealthChecksUpdateResource))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

-- | Contains a list of TargetHttpsProxy resources.
--   
--   <i>See:</i> <a>targetHTTPSProxyList</a> smart constructor.
data TargetHTTPSProxyList

-- | Creates a value of <a>TargetHTTPSProxyList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>thplNextPageToken</a></li>
--   <li><a>thplKind</a></li>
--   <li><a>thplItems</a></li>
--   <li><a>thplSelfLink</a></li>
--   <li><a>thplId</a></li>
--   </ul>
targetHTTPSProxyList :: TargetHTTPSProxyList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
thplNextPageToken :: Lens' TargetHTTPSProxyList (Maybe Text)

-- | Type of resource. Always compute#targetHttpsProxyList for lists of
--   target HTTPS proxies.
thplKind :: Lens' TargetHTTPSProxyList Text

-- | A list of TargetHttpsProxy resources.
thplItems :: Lens' TargetHTTPSProxyList [TargetHTTPSProxy]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
thplSelfLink :: Lens' TargetHTTPSProxyList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
thplId :: Lens' TargetHTTPSProxyList (Maybe Text)
data RoutersScopedList

-- | Creates a value of <a>RoutersScopedList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rslRouters</a></li>
--   <li><a>rslWarning</a></li>
--   </ul>
routersScopedList :: RoutersScopedList

-- | List of routers contained in this scope.
rslRouters :: Lens' RoutersScopedList [Router]

-- | Informational warning which replaces the list of routers when the list
--   is empty.
rslWarning :: Lens' RoutersScopedList (Maybe RoutersScopedListWarning)
data RouterStatusResponse

-- | Creates a value of <a>RouterStatusResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rsrKind</a></li>
--   <li><a>rsrResult</a></li>
--   </ul>
routerStatusResponse :: RouterStatusResponse

-- | Type of resource.
rsrKind :: Lens' RouterStatusResponse Text
rsrResult :: Lens' RouterStatusResponse (Maybe RouterStatus)
data RegionInstanceGroupManagersDeleteInstancesRequest

-- | Creates a value of
--   <a>RegionInstanceGroupManagersDeleteInstancesRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmdirInstances</a></li>
--   </ul>
regionInstanceGroupManagersDeleteInstancesRequest :: RegionInstanceGroupManagersDeleteInstancesRequest

-- | The names of one or more instances to delete.
rigmdirInstances :: Lens' RegionInstanceGroupManagersDeleteInstancesRequest [Text]
data AddressesScopedList

-- | Creates a value of <a>AddressesScopedList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aslAddresses</a></li>
--   <li><a>aslWarning</a></li>
--   </ul>
addressesScopedList :: AddressesScopedList

-- | <ul>
--   <li><i>Output Only</i> List of addresses contained in this scope.</li>
--   </ul>
aslAddresses :: Lens' AddressesScopedList [Address]

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of addresses when the list is empty.</li>
--   </ul>
aslWarning :: Lens' AddressesScopedList (Maybe AddressesScopedListWarning)
data OperationWarningsItemDataItem

-- | Creates a value of <a>OperationWarningsItemDataItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>owidiValue</a></li>
--   <li><a>owidiKey</a></li>
--   </ul>
operationWarningsItemDataItem :: OperationWarningsItemDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
owidiValue :: Lens' OperationWarningsItemDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
owidiKey :: Lens' OperationWarningsItemDataItem (Maybe Text)

-- | Defines the maintenance behavior for this instance. For standard
--   instances, the default behavior is MIGRATE. For preemptible instances,
--   the default and only possible behavior is TERMINATE. For more
--   information, see Setting Instance Scheduling Options.
data SchedulingOnHostMaintenance

-- | <pre>
--   MIGRATE
--   </pre>
Migrate :: SchedulingOnHostMaintenance

-- | <pre>
--   TERMINATE
--   </pre>
Terminate :: SchedulingOnHostMaintenance
data RegionInstanceGroupsListInstancesRequest

-- | Creates a value of <a>RegionInstanceGroupsListInstancesRequest</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>riglirInstanceState</a></li>
--   <li><a>riglirPortName</a></li>
--   </ul>
regionInstanceGroupsListInstancesRequest :: RegionInstanceGroupsListInstancesRequest

-- | Instances in which state should be returned. Valid options are: 'ALL',
--   'RUNNING'. By default, it lists all instances.
riglirInstanceState :: Lens' RegionInstanceGroupsListInstancesRequest (Maybe RegionInstanceGroupsListInstancesRequestInstanceState)

-- | Name of port user is interested in. It is optional. If it is set, only
--   information about this ports will be returned. If it is not set, all
--   the named ports will be returned. Always lists all instances.
riglirPortName :: Lens' RegionInstanceGroupsListInstancesRequest (Maybe Text)

-- | Defines how target utilization value is expressed for a Stackdriver
--   Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or
--   DELTA_PER_MINUTE. If not specified, the default is GAUGE.
data AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType

-- | <pre>
--   DELTA_PER_MINUTE
--   </pre>
DeltaPerMinute :: AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType

-- | <pre>
--   DELTA_PER_SECOND
--   </pre>
DeltaPerSecond :: AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType

-- | <pre>
--   GAUGE
--   </pre>
Gauge :: AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType
data InstanceGroupManagersAbandonInstancesRequest

-- | Creates a value of <a>InstanceGroupManagersAbandonInstancesRequest</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmairInstances</a></li>
--   </ul>
instanceGroupManagersAbandonInstancesRequest :: InstanceGroupManagersAbandonInstancesRequest

-- | The URL for one or more instances to abandon from the managed instance
--   group.
igmairInstances :: Lens' InstanceGroupManagersAbandonInstancesRequest [Text]

-- | <ul>
--   <li><i>Output Only</i> A map of scoped machine type lists.</li>
--   </ul>
--   
--   <i>See:</i> <a>machineTypeAggregatedListItems</a> smart constructor.
data MachineTypeAggregatedListItems

-- | Creates a value of <a>MachineTypeAggregatedListItems</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mtaliAddtional</a></li>
--   </ul>
machineTypeAggregatedListItems :: HashMap Text MachineTypesScopedList -> MachineTypeAggregatedListItems

-- | <ul>
--   <li><i>Output Only</i> Name of the scope containing this set of
--   machine types.</li>
--   </ul>
mtaliAddtional :: Lens' MachineTypeAggregatedListItems (HashMap Text MachineTypesScopedList)

-- | <ul>
--   <li><i>Output Only</i> A map of scoped disk type lists.</li>
--   </ul>
--   
--   <i>See:</i> <a>diskTypeAggregatedListItems</a> smart constructor.
data DiskTypeAggregatedListItems

-- | Creates a value of <a>DiskTypeAggregatedListItems</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtaliAddtional</a></li>
--   </ul>
diskTypeAggregatedListItems :: HashMap Text DiskTypesScopedList -> DiskTypeAggregatedListItems

-- | <ul>
--   <li><i>Output Only</i> Name of the scope containing this set of disk
--   types.</li>
--   </ul>
dtaliAddtional :: Lens' DiskTypeAggregatedListItems (HashMap Text DiskTypesScopedList)

-- | Contains a list of routers.
--   
--   <i>See:</i> <a>routerAggregatedList</a> smart constructor.
data RouterAggregatedList

-- | Creates a value of <a>RouterAggregatedList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ralNextPageToken</a></li>
--   <li><a>ralKind</a></li>
--   <li><a>ralItems</a></li>
--   <li><a>ralSelfLink</a></li>
--   <li><a>ralId</a></li>
--   </ul>
routerAggregatedList :: RouterAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
ralNextPageToken :: Lens' RouterAggregatedList (Maybe Text)

-- | Type of resource.
ralKind :: Lens' RouterAggregatedList Text

-- | A map of scoped router lists.
ralItems :: Lens' RouterAggregatedList (Maybe RouterAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
ralSelfLink :: Lens' RouterAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
ralId :: Lens' RouterAggregatedList (Maybe Text)

-- | Contains a list of firewalls.
--   
--   <i>See:</i> <a>firewallList</a> smart constructor.
data FirewallList

-- | Creates a value of <a>FirewallList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>flNextPageToken</a></li>
--   <li><a>flKind</a></li>
--   <li><a>flItems</a></li>
--   <li><a>flSelfLink</a></li>
--   <li><a>flId</a></li>
--   </ul>
firewallList :: FirewallList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
flNextPageToken :: Lens' FirewallList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#firewallList
--   for lists of firewalls.</li>
--   </ul>
flKind :: Lens' FirewallList Text

-- | <ul>
--   <li><i>Output Only</i> A list of Firewall resources.</li>
--   </ul>
flItems :: Lens' FirewallList [Firewall]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
flSelfLink :: Lens' FirewallList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
flId :: Lens' FirewallList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of instances when the list is empty.</li>
--   </ul>
--   
--   <i>See:</i> <a>instancesScopedListWarning</a> smart constructor.
data InstancesScopedListWarning

-- | Creates a value of <a>InstancesScopedListWarning</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>islwData</a></li>
--   <li><a>islwCode</a></li>
--   <li><a>islwMessage</a></li>
--   </ul>
instancesScopedListWarning :: InstancesScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
islwData :: Lens' InstancesScopedListWarning [InstancesScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
islwCode :: Lens' InstancesScopedListWarning (Maybe InstancesScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
islwMessage :: Lens' InstancesScopedListWarning (Maybe Text)
data RegionInstanceGroupManagersRecreateRequest

-- | Creates a value of <a>RegionInstanceGroupManagersRecreateRequest</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmrrInstances</a></li>
--   </ul>
regionInstanceGroupManagersRecreateRequest :: RegionInstanceGroupManagersRecreateRequest

-- | The URL for one or more instances to recreate.
rigmrrInstances :: Lens' RegionInstanceGroupManagersRecreateRequest [Text]

-- | Informational warning which replaces the list of backend services when
--   the list is empty.
--   
--   <i>See:</i> <a>backendServicesScopedListWarning</a> smart constructor.
data BackendServicesScopedListWarning

-- | Creates a value of <a>BackendServicesScopedListWarning</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bsslwData</a></li>
--   <li><a>bsslwCode</a></li>
--   <li><a>bsslwMessage</a></li>
--   </ul>
backendServicesScopedListWarning :: BackendServicesScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
bsslwData :: Lens' BackendServicesScopedListWarning [BackendServicesScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
bsslwCode :: Lens' BackendServicesScopedListWarning (Maybe BackendServicesScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
bsslwMessage :: Lens' BackendServicesScopedListWarning (Maybe Text)

-- | A list of InstanceGroup resources.
--   
--   <i>See:</i> <a>instanceGroupList</a> smart constructor.
data InstanceGroupList

-- | Creates a value of <a>InstanceGroupList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iglNextPageToken</a></li>
--   <li><a>iglKind</a></li>
--   <li><a>iglItems</a></li>
--   <li><a>iglSelfLink</a></li>
--   <li><a>iglId</a></li>
--   </ul>
instanceGroupList :: InstanceGroupList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
iglNextPageToken :: Lens' InstanceGroupList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The resource type, which is always
--   compute#instanceGroupList for instance group lists.</li>
--   </ul>
iglKind :: Lens' InstanceGroupList Text

-- | A list of instance groups.
iglItems :: Lens' InstanceGroupList [InstanceGroup]

-- | <ul>
--   <li><i>Output Only</i> The URL for this resource type. The server
--   generates this URL.</li>
--   </ul>
iglSelfLink :: Lens' InstanceGroupList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A unique identifier for this list of instance
--   groups. The server generates this identifier.</li>
--   </ul>
iglId :: Lens' InstanceGroupList (Maybe Text)
data InstancesSetMachineTypeRequest

-- | Creates a value of <a>InstancesSetMachineTypeRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ismtrMachineType</a></li>
--   </ul>
instancesSetMachineTypeRequest :: InstancesSetMachineTypeRequest

-- | Full or partial URL of the machine type resource. See Machine Types
--   for a full list of machine types. For example:
--   zones/us-central1-f/machineTypes/n1-standard-1
ismtrMachineType :: Lens' InstancesSetMachineTypeRequest (Maybe Text)

-- | Represents a customer-supplied encryption key
--   
--   <i>See:</i> <a>customerEncryptionKey</a> smart constructor.
data CustomerEncryptionKey

-- | Creates a value of <a>CustomerEncryptionKey</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cekSha256</a></li>
--   <li><a>cekRawKey</a></li>
--   </ul>
customerEncryptionKey :: CustomerEncryptionKey

-- | <ul>
--   <li><i>Output only</i> The RFC 4648 base64 encoded SHA-256 hash of the
--   customer-supplied encryption key that protects this resource.</li>
--   </ul>
cekSha256 :: Lens' CustomerEncryptionKey (Maybe Text)

-- | Specifies a 256-bit customer-supplied encryption key, encoded in RFC
--   4648 base64 to either encrypt or decrypt this resource.
cekRawKey :: Lens' CustomerEncryptionKey (Maybe Text)

-- | A map of scoped autoscaler lists.
--   
--   <i>See:</i> <a>autoscalerAggregatedListItems</a> smart constructor.
data AutoscalerAggregatedListItems

-- | Creates a value of <a>AutoscalerAggregatedListItems</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aaliAddtional</a></li>
--   </ul>
autoscalerAggregatedListItems :: HashMap Text AutoscalersScopedList -> AutoscalerAggregatedListItems

-- | <ul>
--   <li><i>Output Only</i> Name of the scope containing this set of
--   autoscalers.</li>
--   </ul>
aaliAddtional :: Lens' AutoscalerAggregatedListItems (HashMap Text AutoscalersScopedList)
data InstanceGroupManagersSetInstanceTemplateRequest

-- | Creates a value of
--   <a>InstanceGroupManagersSetInstanceTemplateRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmsitrInstanceTemplate</a></li>
--   </ul>
instanceGroupManagersSetInstanceTemplateRequest :: InstanceGroupManagersSetInstanceTemplateRequest

-- | The URL of the instance template that is specified for this managed
--   instance group. The group uses this template to create all new
--   instances in the managed instance group.
igmsitrInstanceTemplate :: Lens' InstanceGroupManagersSetInstanceTemplateRequest (Maybe Text)

-- | Deprecation status for a public resource.
--   
--   <i>See:</i> <a>deprecationStatus</a> smart constructor.
data DeprecationStatus

-- | Creates a value of <a>DeprecationStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsState</a></li>
--   <li><a>dsDeleted</a></li>
--   <li><a>dsReplacement</a></li>
--   <li><a>dsObsolete</a></li>
--   <li><a>dsDeprecated</a></li>
--   </ul>
deprecationStatus :: DeprecationStatus

-- | The deprecation state of this resource. This can be DEPRECATED,
--   OBSOLETE, or DELETED. Operations which create a new resource using a
--   DEPRECATED resource will return successfully, but with a warning
--   indicating the deprecated resource and recommending its replacement.
--   Operations which use OBSOLETE or DELETED resources will be rejected
--   and result in an error.
dsState :: Lens' DeprecationStatus (Maybe DeprecationStatusState)

-- | An optional RFC3339 timestamp on or after which the state of this
--   resource is intended to change to DELETED. This is only informational
--   and the status will not change unless the client explicitly changes
--   it.
dsDeleted :: Lens' DeprecationStatus (Maybe Text)

-- | The URL of the suggested replacement for a deprecated resource. The
--   suggested replacement resource must be the same kind of resource as
--   the deprecated resource.
dsReplacement :: Lens' DeprecationStatus (Maybe Text)

-- | An optional RFC3339 timestamp on or after which the state of this
--   resource is intended to change to OBSOLETE. This is only informational
--   and the status will not change unless the client explicitly changes
--   it.
dsObsolete :: Lens' DeprecationStatus (Maybe Text)

-- | An optional RFC3339 timestamp on or after which the state of this
--   resource is intended to change to DEPRECATED. This is only
--   informational and the status will not change unless the client
--   explicitly changes it.
dsDeprecated :: Lens' DeprecationStatus (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data OperationWarningsItemCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
CleanupFailed :: OperationWarningsItemCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
DeprecatedResourceUsed :: OperationWarningsItemCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
DiskSizeLargerThanImageSize :: OperationWarningsItemCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
FieldValueOverriden :: OperationWarningsItemCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
InjectedKernelsDeprecated :: OperationWarningsItemCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
NextHopAddressNotAssigned :: OperationWarningsItemCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
NextHopCannotIPForward :: OperationWarningsItemCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
NextHopInstanceNotFound :: OperationWarningsItemCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
NextHopInstanceNotOnNetwork :: OperationWarningsItemCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
NextHopNotRunning :: OperationWarningsItemCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
NotCriticalError :: OperationWarningsItemCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
NoResultsOnPage :: OperationWarningsItemCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
RequiredTosAgreement :: OperationWarningsItemCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
ResourceNotDeleted :: OperationWarningsItemCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
SingleInstancePropertyTemplate :: OperationWarningsItemCode

-- | <pre>
--   UNREACHABLE
--   </pre>
Unreachable :: OperationWarningsItemCode

-- | A persistent disk snapshot resource.
--   
--   <i>See:</i> <a>snapshot</a> smart constructor.
data Snapshot

-- | Creates a value of <a>Snapshot</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sStorageBytesStatus</a></li>
--   <li><a>sStatus</a></li>
--   <li><a>sDiskSizeGb</a></li>
--   <li><a>sSourceDiskId</a></li>
--   <li><a>sKind</a></li>
--   <li><a>sSourceDiskEncryptionKey</a></li>
--   <li><a>sStorageBytes</a></li>
--   <li><a>sSelfLink</a></li>
--   <li><a>sSnapshotEncryptionKey</a></li>
--   <li><a>sName</a></li>
--   <li><a>sCreationTimestamp</a></li>
--   <li><a>sId</a></li>
--   <li><a>sLicenses</a></li>
--   <li><a>sSourceDisk</a></li>
--   <li><a>sDescription</a></li>
--   </ul>
snapshot :: Snapshot

-- | <ul>
--   <li><i>Output Only</i> An indicator whether storageBytes is in a
--   stable state or it is being adjusted as a result of shared storage
--   reallocation. This status can either be UPDATING, meaning the size of
--   the snapshot is being updated, or UP_TO_DATE, meaning the size of the
--   snapshot is up-to-date.</li>
--   </ul>
sStorageBytesStatus :: Lens' Snapshot (Maybe SnapshotStorageBytesStatus)

-- | <ul>
--   <li><i>Output Only</i> The status of the snapshot. This can be
--   CREATING, DELETING, FAILED, READY, or UPLOADING.</li>
--   </ul>
sStatus :: Lens' Snapshot (Maybe SnapshotStatus)

-- | <ul>
--   <li><i>Output Only</i> Size of the snapshot, specified in GB.</li>
--   </ul>
sDiskSizeGb :: Lens' Snapshot (Maybe Int64)

-- | <ul>
--   <li><i>Output Only</i> The ID value of the disk used to create this
--   snapshot. This value may be used to determine whether the snapshot was
--   taken from the current or a previous instance of a given disk
--   name.</li>
--   </ul>
sSourceDiskId :: Lens' Snapshot (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#snapshot
--   for Snapshot resources.</li>
--   </ul>
sKind :: Lens' Snapshot Text

-- | The customer-supplied encryption key of the source disk. Required if
--   the source disk is protected by a customer-supplied encryption key.
sSourceDiskEncryptionKey :: Lens' Snapshot (Maybe CustomerEncryptionKey)

-- | <ul>
--   <li><i>Output Only</i> A size of the the storage used by the snapshot.
--   As snapshots share storage, this number is expected to change with
--   snapshot creation/deletion.</li>
--   </ul>
sStorageBytes :: Lens' Snapshot (Maybe Int64)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
sSelfLink :: Lens' Snapshot (Maybe Text)

-- | Encrypts the snapshot using a customer-supplied encryption key. After
--   you encrypt a snapshot using a customer-supplied key, you must provide
--   the same key if you use the image later For example, you must provide
--   the encryption key when you create a disk from the encrypted snapshot
--   in a future request. Customer-supplied encryption keys do not protect
--   access to metadata of the disk. If you do not provide an encryption
--   key when creating the snapshot, then the snapshot will be encrypted
--   using an automatically generated key and you do not need to provide a
--   key to use the snapshot later.
sSnapshotEncryptionKey :: Lens' Snapshot (Maybe CustomerEncryptionKey)

-- | Name of the resource; provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
sName :: Lens' Snapshot (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
sCreationTimestamp :: Lens' Snapshot (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
sId :: Lens' Snapshot (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> A list of public visible licenses that apply to
--   this snapshot. This can be because the original image had licenses
--   attached (such as a Windows image).</li>
--   </ul>
sLicenses :: Lens' Snapshot [Text]

-- | <ul>
--   <li><i>Output Only</i> The source disk used to create this
--   snapshot.</li>
--   </ul>
sSourceDisk :: Lens' Snapshot (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
sDescription :: Lens' Snapshot (Maybe Text)
data RouterStatus

-- | Creates a value of <a>RouterStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rsBGPPeerStatus</a></li>
--   <li><a>rsNetwork</a></li>
--   <li><a>rsBestRoutes</a></li>
--   </ul>
routerStatus :: RouterStatus
rsBGPPeerStatus :: Lens' RouterStatus [RouterStatusBGPPeerStatus]

-- | URI of the network to which this router belongs.
rsNetwork :: Lens' RouterStatus (Maybe Text)

-- | Best routes for this router's network.
rsBestRoutes :: Lens' RouterStatus [Route]

-- | Custom utilization metric policy.
--   
--   <i>See:</i> <a>autoscalingPolicyCustomMetricUtilization</a> smart
--   constructor.
data AutoscalingPolicyCustomMetricUtilization

-- | Creates a value of <a>AutoscalingPolicyCustomMetricUtilization</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>apcmuUtilizationTarget</a></li>
--   <li><a>apcmuMetric</a></li>
--   <li><a>apcmuUtilizationTargetType</a></li>
--   </ul>
autoscalingPolicyCustomMetricUtilization :: AutoscalingPolicyCustomMetricUtilization

-- | Target value of the metric which autoscaler should maintain. Must be a
--   positive value.
apcmuUtilizationTarget :: Lens' AutoscalingPolicyCustomMetricUtilization (Maybe Double)

-- | The identifier of the Stackdriver Monitoring metric. The metric cannot
--   have negative values and should be a utilization metric, which means
--   that the number of virtual machines handling requests should increase
--   or decrease proportionally to the metric. The metric must also have a
--   label of compute.googleapis.com/resource_id with the value of the
--   instance's unique ID, although this alone does not guarantee that the
--   metric is valid. For example, the following is a valid metric:
--   compute.googleapis.com/instance/network/received_bytes_count The
--   following is not a valid metric because it does not increase or
--   decrease based on usage:
--   compute.googleapis.com/instance/cpu/reserved_cores
apcmuMetric :: Lens' AutoscalingPolicyCustomMetricUtilization (Maybe Text)

-- | Defines how target utilization value is expressed for a Stackdriver
--   Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or
--   DELTA_PER_MINUTE. If not specified, the default is GAUGE.
apcmuUtilizationTargetType :: Lens' AutoscalingPolicyCustomMetricUtilization (Maybe AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType)

-- | Contains a list of ForwardingRule resources.
--   
--   <i>See:</i> <a>forwardingRuleList</a> smart constructor.
data ForwardingRuleList

-- | Creates a value of <a>ForwardingRuleList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>frlNextPageToken</a></li>
--   <li><a>frlKind</a></li>
--   <li><a>frlItems</a></li>
--   <li><a>frlSelfLink</a></li>
--   <li><a>frlId</a></li>
--   </ul>
forwardingRuleList :: ForwardingRuleList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
frlNextPageToken :: Lens' ForwardingRuleList (Maybe Text)

-- | Type of resource.
frlKind :: Lens' ForwardingRuleList Text

-- | A list of ForwardingRule resources.
frlItems :: Lens' ForwardingRuleList [ForwardingRule]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
frlSelfLink :: Lens' ForwardingRuleList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource. Set by the
--   server.</li>
--   </ul>
frlId :: Lens' ForwardingRuleList (Maybe Text)
data VPNTunnelsScopedList

-- | Creates a value of <a>VPNTunnelsScopedList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vtslVPNTunnels</a></li>
--   <li><a>vtslWarning</a></li>
--   </ul>
vpnTunnelsScopedList :: VPNTunnelsScopedList

-- | List of vpn tunnels contained in this scope.
vtslVPNTunnels :: Lens' VPNTunnelsScopedList [VPNTunnel]

-- | Informational warning which replaces the list of addresses when the
--   list is empty.
vtslWarning :: Lens' VPNTunnelsScopedList (Maybe VPNTunnelsScopedListWarning)

-- | The protocol this BackendService uses to communicate with backends.
--   Possible values are HTTP, HTTPS, HTTP2, TCP and SSL. The default is
--   HTTP. For internal load balancing, the possible values are TCP and
--   UDP, and the default is TCP.
data BackendServiceProtocol

-- | <pre>
--   HTTP
--   </pre>
HTTP :: BackendServiceProtocol

-- | <pre>
--   HTTPS
--   </pre>
HTTPS :: BackendServiceProtocol

-- | <pre>
--   SSL
--   </pre>
SSL :: BackendServiceProtocol

-- | <pre>
--   TCP
--   </pre>
TCP :: BackendServiceProtocol

-- | <pre>
--   UDP
--   </pre>
Udp :: BackendServiceProtocol
data InstanceGroupsSetNamedPortsRequest

-- | Creates a value of <a>InstanceGroupsSetNamedPortsRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igsnprFingerprint</a></li>
--   <li><a>igsnprNamedPorts</a></li>
--   </ul>
instanceGroupsSetNamedPortsRequest :: InstanceGroupsSetNamedPortsRequest

-- | The fingerprint of the named ports information for this instance
--   group. Use this optional property to prevent conflicts when multiple
--   users change the named ports settings concurrently. Obtain the
--   fingerprint with the instanceGroups.get method. Then, include the
--   fingerprint in your request to ensure that you do not overwrite
--   changes that were applied from another concurrent request.
igsnprFingerprint :: Lens' InstanceGroupsSetNamedPortsRequest (Maybe ByteString)

-- | The list of named ports to set for this instance group.
igsnprNamedPorts :: Lens' InstanceGroupsSetNamedPortsRequest [NamedPort]

-- | Contains a list of Operation resources.
--   
--   <i>See:</i> <a>operationList</a> smart constructor.
data OperationList

-- | Creates a value of <a>OperationList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>olNextPageToken</a></li>
--   <li><a>olKind</a></li>
--   <li><a>olItems</a></li>
--   <li><a>olSelfLink</a></li>
--   <li><a>olId</a></li>
--   </ul>
operationList :: OperationList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
olNextPageToken :: Lens' OperationList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#operations for
--   Operations resource.</li>
--   </ul>
olKind :: Lens' OperationList Text

-- | <ul>
--   <li><i>Output Only</i> A list of Operation resources.</li>
--   </ul>
olItems :: Lens' OperationList [Operation]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
olSelfLink :: Lens' OperationList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
olId :: Lens' OperationList (Maybe Text)

-- | A list of Disk resources.
--   
--   <i>See:</i> <a>diskList</a> smart constructor.
data DiskList

-- | Creates a value of <a>DiskList</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dlNextPageToken</a></li>
--   <li><a>dlKind</a></li>
--   <li><a>dlItems</a></li>
--   <li><a>dlSelfLink</a></li>
--   <li><a>dlId</a></li>
--   </ul>
diskList :: DiskList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
dlNextPageToken :: Lens' DiskList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#diskList for
--   lists of disks.</li>
--   </ul>
dlKind :: Lens' DiskList Text

-- | <ul>
--   <li><i>Output Only</i> A list of persistent disks.</li>
--   </ul>
dlItems :: Lens' DiskList [Disk]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
dlSelfLink :: Lens' DiskList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
dlId :: Lens' DiskList (Maybe Text)
data TargetPoolsAddInstanceRequest

-- | Creates a value of <a>TargetPoolsAddInstanceRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpairInstances</a></li>
--   </ul>
targetPoolsAddInstanceRequest :: TargetPoolsAddInstanceRequest

-- | A full or partial URL to an instance to add to this target pool. This
--   can be a full or partial URL. For example, the following are valid
--   URLs: -
--   https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-name
--   - projects/project-id/zones/zone/instances/instance-name -
--   zones/zone/instances/instance-name
tpairInstances :: Lens' TargetPoolsAddInstanceRequest [InstanceReference]

-- | Contains a list of autoscalers.
--   
--   <i>See:</i> <a>regionAutoscalerList</a> smart constructor.
data RegionAutoscalerList

-- | Creates a value of <a>RegionAutoscalerList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rNextPageToken</a></li>
--   <li><a>rKind</a></li>
--   <li><a>rItems</a></li>
--   <li><a>rSelfLink</a></li>
--   <li><a>rId</a></li>
--   </ul>
regionAutoscalerList :: RegionAutoscalerList

-- | <ul>
--   <li><i>Output Only</i> A token used to continue a truncated list
--   request.</li>
--   </ul>
rNextPageToken :: Lens' RegionAutoscalerList (Maybe Text)

-- | Type of resource.
rKind :: Lens' RegionAutoscalerList Text

-- | A list of autoscalers.
rItems :: Lens' RegionAutoscalerList [Autoscaler]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
rSelfLink :: Lens' RegionAutoscalerList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
rId :: Lens' RegionAutoscalerList (Maybe Text)
data InstanceGroupsAddInstancesRequest

-- | Creates a value of <a>InstanceGroupsAddInstancesRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igairInstances</a></li>
--   </ul>
instanceGroupsAddInstancesRequest :: InstanceGroupsAddInstancesRequest

-- | The list of instances to add to the instance group.
igairInstances :: Lens' InstanceGroupsAddInstancesRequest [InstanceReference]

-- | <ul>
--   <li><i>Output Only</i> A list of managed instance groups.</li>
--   </ul>
--   
--   <i>See:</i> <a>instanceGroupManagerList</a> smart constructor.
data InstanceGroupManagerList

-- | Creates a value of <a>InstanceGroupManagerList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmlNextPageToken</a></li>
--   <li><a>igmlKind</a></li>
--   <li><a>igmlItems</a></li>
--   <li><a>igmlSelfLink</a></li>
--   <li><a>igmlId</a></li>
--   </ul>
instanceGroupManagerList :: InstanceGroupManagerList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
igmlNextPageToken :: Lens' InstanceGroupManagerList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The resource type, which is always
--   compute#instanceGroupManagerList for a list of managed instance
--   groups.</li>
--   </ul>
igmlKind :: Lens' InstanceGroupManagerList Text

-- | <ul>
--   <li><i>Output Only</i> A list of managed instance groups.</li>
--   </ul>
igmlItems :: Lens' InstanceGroupManagerList [InstanceGroupManager]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
igmlSelfLink :: Lens' InstanceGroupManagerList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A unique identifier for this resource type. The
--   server generates this identifier.</li>
--   </ul>
igmlId :: Lens' InstanceGroupManagerList (Maybe Text)

-- | An informational warning that appears when the list of addresses is
--   empty.
--   
--   <i>See:</i> <a>subnetworksScopedListWarning</a> smart constructor.
data SubnetworksScopedListWarning

-- | Creates a value of <a>SubnetworksScopedListWarning</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sslwData</a></li>
--   <li><a>sslwCode</a></li>
--   <li><a>sslwMessage</a></li>
--   </ul>
subnetworksScopedListWarning :: SubnetworksScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
sslwData :: Lens' SubnetworksScopedListWarning [SubnetworksScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
sslwCode :: Lens' SubnetworksScopedListWarning (Maybe SubnetworksScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
sslwMessage :: Lens' SubnetworksScopedListWarning (Maybe Text)

-- | Specifies the type of the disk, either SCRATCH or PERSISTENT. If not
--   specified, the default is PERSISTENT.
data AttachedDiskType

-- | <pre>
--   PERSISTENT
--   </pre>
Persistent :: AttachedDiskType

-- | <pre>
--   SCRATCH
--   </pre>
Scratch :: AttachedDiskType

-- | An Image resource.
--   
--   <i>See:</i> <a>image</a> smart constructor.
data Image

-- | Creates a value of <a>Image</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iStatus</a></li>
--   <li><a>iImageEncryptionKey</a></li>
--   <li><a>iDiskSizeGb</a></li>
--   <li><a>iSourceType</a></li>
--   <li><a>iSourceDiskId</a></li>
--   <li><a>iKind</a></li>
--   <li><a>iSourceDiskEncryptionKey</a></li>
--   <li><a>iGuestOSFeatures</a></li>
--   <li><a>iArchiveSizeBytes</a></li>
--   <li><a>iFamily</a></li>
--   <li><a>iRawDisk</a></li>
--   <li><a>iSelfLink</a></li>
--   <li><a>iName</a></li>
--   <li><a>iCreationTimestamp</a></li>
--   <li><a>iId</a></li>
--   <li><a>iLicenses</a></li>
--   <li><a>iSourceDisk</a></li>
--   <li><a>iDescription</a></li>
--   <li><a>iDeprecated</a></li>
--   </ul>
image :: Image

-- | <ul>
--   <li><i>Output Only</i> The status of the image. An image can be used
--   to create other resources, such as instances, only after the image has
--   been successfully created and the status is set to READY. Possible
--   values are FAILED, PENDING, or READY.</li>
--   </ul>
iStatus :: Lens' Image (Maybe ImageStatus)

-- | Encrypts the image using a customer-supplied encryption key. After you
--   encrypt an image with a customer-supplied key, you must provide the
--   same key if you use the image later (e.g. to create a disk from the
--   image). Customer-supplied encryption keys do not protect access to
--   metadata of the disk. If you do not provide an encryption key when
--   creating the image, then the disk will be encrypted using an
--   automatically generated key and you do not need to provide a key to
--   use the image later.
iImageEncryptionKey :: Lens' Image (Maybe CustomerEncryptionKey)

-- | Size of the image when restored onto a persistent disk (in GB).
iDiskSizeGb :: Lens' Image (Maybe Int64)

-- | The type of the image used to create this disk. The default and only
--   value is RAW
iSourceType :: Lens' Image ImageSourceType

-- | The ID value of the disk used to create this image. This value may be
--   used to determine whether the image was taken from the current or a
--   previous instance of a given disk name.
iSourceDiskId :: Lens' Image (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#image for
--   images.</li>
--   </ul>
iKind :: Lens' Image Text

-- | The customer-supplied encryption key of the source disk. Required if
--   the source disk is protected by a customer-supplied encryption key.
iSourceDiskEncryptionKey :: Lens' Image (Maybe CustomerEncryptionKey)

-- | A list of features to enable on the guest OS. Applicable for bootable
--   images only. Currently, only one feature can be enabled,
--   VIRTIO_SCSCI_MULTIQUEUE, which allows each virtual CPU to have its own
--   queue. For Windows images, you can only enable VIRTIO_SCSCI_MULTIQUEUE
--   on images with driver version 1.2.0.1621 or higher. Linux images with
--   kernel versions 3.17 and higher will support VIRTIO_SCSCI_MULTIQUEUE.
--   For new Windows images, the server might also populate this field with
--   the value WINDOWS, to indicate that this is a Windows image. This
--   value is purely informational and does not enable or disable any
--   features.
iGuestOSFeatures :: Lens' Image [GuestOSFeature]

-- | Size of the image tar.gz archive stored in Google Cloud Storage (in
--   bytes).
iArchiveSizeBytes :: Lens' Image (Maybe Int64)

-- | The name of the image family to which this image belongs. You can
--   create disks by specifying an image family instead of a specific image
--   name. The image family always returns its latest image that is not
--   deprecated. The name of the image family must comply with RFC1035.
iFamily :: Lens' Image (Maybe Text)

-- | The parameters of the raw disk image.
iRawDisk :: Lens' Image (Maybe ImageRawDisk)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
iSelfLink :: Lens' Image (Maybe Text)

-- | Name of the resource; provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
iName :: Lens' Image (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
iCreationTimestamp :: Lens' Image (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
iId :: Lens' Image (Maybe Word64)

-- | Any applicable license URI.
iLicenses :: Lens' Image [Text]

-- | URL of the source disk used to create this image. This can be a full
--   or valid partial URL. You must provide either this property or the
--   rawDisk.source property but not both to create an image. For example,
--   the following are valid values: -
--   https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk
--   - projects/project/zones/zone/disks/disk - zones/zone/disks/disk
iSourceDisk :: Lens' Image (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
iDescription :: Lens' Image (Maybe Text)

-- | The deprecation status associated with this image.
iDeprecated :: Lens' Image (Maybe DeprecationStatus)

-- | A UrlMap resource. This resource defines the mapping from URL to the
--   BackendService resource, based on the "longest-match" of the URL's
--   host and path.
--   
--   <i>See:</i> <a>urlMap</a> smart constructor.
data URLMap

-- | Creates a value of <a>URLMap</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umTests</a></li>
--   <li><a>umKind</a></li>
--   <li><a>umFingerprint</a></li>
--   <li><a>umDefaultService</a></li>
--   <li><a>umSelfLink</a></li>
--   <li><a>umName</a></li>
--   <li><a>umCreationTimestamp</a></li>
--   <li><a>umPathMatchers</a></li>
--   <li><a>umId</a></li>
--   <li><a>umHostRules</a></li>
--   <li><a>umDescription</a></li>
--   </ul>
urlMap :: URLMap

-- | The list of expected URL mappings. Request to update this UrlMap will
--   succeed only if all of the test cases pass.
umTests :: Lens' URLMap [URLMapTest]

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#urlMaps
--   for url maps.</li>
--   </ul>
umKind :: Lens' URLMap Text

-- | Fingerprint of this resource. A hash of the contents stored in this
--   object. This field is used in optimistic locking. This field will be
--   ignored when inserting a UrlMap. An up-to-date fingerprint must be
--   provided in order to update the UrlMap.
umFingerprint :: Lens' URLMap (Maybe ByteString)

-- | The URL of the BackendService resource if none of the hostRules match.
umDefaultService :: Lens' URLMap (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
umSelfLink :: Lens' URLMap (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
umName :: Lens' URLMap (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
umCreationTimestamp :: Lens' URLMap (Maybe Text)

-- | The list of named PathMatchers to use against the URL.
umPathMatchers :: Lens' URLMap [PathMatcher]

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
umId :: Lens' URLMap (Maybe Word64)

-- | The list of HostRules to use against the URL.
umHostRules :: Lens' URLMap [HostRule]

-- | An optional description of this resource. Provide this property when
--   you create the resource.
umDescription :: Lens' URLMap (Maybe Text)

-- | A map of scoped instance group lists.
--   
--   <i>See:</i> <a>instanceGroupAggregatedListItems</a> smart constructor.
data InstanceGroupAggregatedListItems

-- | Creates a value of <a>InstanceGroupAggregatedListItems</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igaliAddtional</a></li>
--   </ul>
instanceGroupAggregatedListItems :: HashMap Text InstanceGroupsScopedList -> InstanceGroupAggregatedListItems

-- | The name of the scope that contains this set of instance groups.
igaliAddtional :: Lens' InstanceGroupAggregatedListItems (HashMap Text InstanceGroupsScopedList)

-- | Contains a list of TargetPool resources.
--   
--   <i>See:</i> <a>targetPoolList</a> smart constructor.
data TargetPoolList

-- | Creates a value of <a>TargetPoolList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tplNextPageToken</a></li>
--   <li><a>tplKind</a></li>
--   <li><a>tplItems</a></li>
--   <li><a>tplSelfLink</a></li>
--   <li><a>tplId</a></li>
--   </ul>
targetPoolList :: TargetPoolList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
tplNextPageToken :: Lens' TargetPoolList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#targetPoolList
--   for lists of target pools.</li>
--   </ul>
tplKind :: Lens' TargetPoolList Text

-- | A list of TargetPool resources.
tplItems :: Lens' TargetPoolList [TargetPool]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
tplSelfLink :: Lens' TargetPoolList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource. Defined by
--   the server.</li>
--   </ul>
tplId :: Lens' TargetPoolList (Maybe Text)
data TargetInstanceAggregatedList

-- | Creates a value of <a>TargetInstanceAggregatedList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tialNextPageToken</a></li>
--   <li><a>tialKind</a></li>
--   <li><a>tialItems</a></li>
--   <li><a>tialSelfLink</a></li>
--   <li><a>tialId</a></li>
--   </ul>
targetInstanceAggregatedList :: TargetInstanceAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
tialNextPageToken :: Lens' TargetInstanceAggregatedList (Maybe Text)

-- | Type of resource.
tialKind :: Lens' TargetInstanceAggregatedList Text

-- | A map of scoped target instance lists.
tialItems :: Lens' TargetInstanceAggregatedList (Maybe TargetInstanceAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
tialSelfLink :: Lens' TargetInstanceAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource; defined by
--   the server.</li>
--   </ul>
tialId :: Lens' TargetInstanceAggregatedList (Maybe Text)
data DisksScopedList

-- | Creates a value of <a>DisksScopedList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dslWarning</a></li>
--   <li><a>dslDisks</a></li>
--   </ul>
disksScopedList :: DisksScopedList

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of disks when the list is empty.</li>
--   </ul>
dslWarning :: Lens' DisksScopedList (Maybe DisksScopedListWarning)

-- | <ul>
--   <li><i>Output Only</i> List of disks contained in this scope.</li>
--   </ul>
dslDisks :: Lens' DisksScopedList [Disk]
data InstanceGroupManagersScopedList

-- | Creates a value of <a>InstanceGroupManagersScopedList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmslWarning</a></li>
--   <li><a>igmslInstanceGroupManagers</a></li>
--   </ul>
instanceGroupManagersScopedList :: InstanceGroupManagersScopedList

-- | <ul>
--   <li><i>Output Only</i> The warning that replaces the list of managed
--   instance groups when the list is empty.</li>
--   </ul>
igmslWarning :: Lens' InstanceGroupManagersScopedList (Maybe InstanceGroupManagersScopedListWarning)

-- | <ul>
--   <li><i>Output Only</i> The list of managed instance groups that are
--   contained in the specified project and zone.</li>
--   </ul>
igmslInstanceGroupManagers :: Lens' InstanceGroupManagersScopedList [InstanceGroupManager]

-- | An HealthCheck resource. This resource defines a template for how
--   individual virtual machines should be checked for health, via one of
--   the supported protocols.
--   
--   <i>See:</i> <a>healthCheck</a> smart constructor.
data HealthCheck

-- | Creates a value of <a>HealthCheck</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hcHealthyThreshold</a></li>
--   <li><a>hcTCPHealthCheck</a></li>
--   <li><a>hcKind</a></li>
--   <li><a>hcSSLHealthCheck</a></li>
--   <li><a>hcSelfLink</a></li>
--   <li><a>hcCheckIntervalSec</a></li>
--   <li><a>hcName</a></li>
--   <li><a>hcCreationTimestamp</a></li>
--   <li><a>hcHTTPHealthCheck</a></li>
--   <li><a>hcId</a></li>
--   <li><a>hcType</a></li>
--   <li><a>hcTimeoutSec</a></li>
--   <li><a>hcDescription</a></li>
--   <li><a>hcUnhealthyThreshold</a></li>
--   <li><a>hcHTTPSHealthCheck</a></li>
--   </ul>
healthCheck :: HealthCheck

-- | A so-far unhealthy instance will be marked healthy after this many
--   consecutive successes. The default value is 2.
hcHealthyThreshold :: Lens' HealthCheck (Maybe Int32)
hcTCPHealthCheck :: Lens' HealthCheck (Maybe TCPHealthCheck)

-- | Type of the resource.
hcKind :: Lens' HealthCheck Text
hcSSLHealthCheck :: Lens' HealthCheck (Maybe SSLHealthCheck)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
hcSelfLink :: Lens' HealthCheck (Maybe Text)

-- | How often (in seconds) to send a health check. The default value is 5
--   seconds.
hcCheckIntervalSec :: Lens' HealthCheck (Maybe Int32)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
hcName :: Lens' HealthCheck (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in 3339 text format.</li>
--   </ul>
hcCreationTimestamp :: Lens' HealthCheck (Maybe Text)
hcHTTPHealthCheck :: Lens' HealthCheck (Maybe HTTPHealthCheck)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
hcId :: Lens' HealthCheck (Maybe Word64)

-- | Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS.
--   If not specified, the default is TCP. Exactly one of the
--   protocol-specific health check field must be specified, which must
--   match type field.
hcType :: Lens' HealthCheck (Maybe HealthCheckType)

-- | How long (in seconds) to wait before claiming failure. The default
--   value is 5 seconds. It is invalid for timeoutSec to have greater value
--   than checkIntervalSec.
hcTimeoutSec :: Lens' HealthCheck (Maybe Int32)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
hcDescription :: Lens' HealthCheck (Maybe Text)

-- | A so-far healthy instance will be marked unhealthy after this many
--   consecutive failures. The default value is 2.
hcUnhealthyThreshold :: Lens' HealthCheck (Maybe Int32)
hcHTTPSHealthCheck :: Lens' HealthCheck (Maybe HTTPSHealthCheck)

-- | Specifies the type of proxy header to append before sending data to
--   the backend, either NONE or PROXY_V1. The default is NONE.
data TargetSSLProxyProxyHeader

-- | <pre>
--   NONE
--   </pre>
None :: TargetSSLProxyProxyHeader

-- | <pre>
--   PROXY_V1
--   </pre>
ProxyV1 :: TargetSSLProxyProxyHeader
data DiskAggregatedList

-- | Creates a value of <a>DiskAggregatedList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dalNextPageToken</a></li>
--   <li><a>dalKind</a></li>
--   <li><a>dalItems</a></li>
--   <li><a>dalSelfLink</a></li>
--   <li><a>dalId</a></li>
--   </ul>
diskAggregatedList :: DiskAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
dalNextPageToken :: Lens' DiskAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#diskAggregatedList for aggregated lists of persistent
--   disks.</li>
--   </ul>
dalKind :: Lens' DiskAggregatedList Text

-- | <ul>
--   <li><i>Output Only</i> A map of scoped disk lists.</li>
--   </ul>
dalItems :: Lens' DiskAggregatedList (Maybe DiskAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
dalSelfLink :: Lens' DiskAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
dalId :: Lens' DiskAggregatedList (Maybe Text)
data InstanceWithNamedPorts

-- | Creates a value of <a>InstanceWithNamedPorts</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iwnpStatus</a></li>
--   <li><a>iwnpNamedPorts</a></li>
--   <li><a>iwnpInstance</a></li>
--   </ul>
instanceWithNamedPorts :: InstanceWithNamedPorts

-- | <ul>
--   <li><i>Output Only</i> The status of the instance.</li>
--   </ul>
iwnpStatus :: Lens' InstanceWithNamedPorts (Maybe InstanceWithNamedPortsStatus)

-- | <ul>
--   <li><i>Output Only</i> The named ports that belong to this instance
--   group.</li>
--   </ul>
iwnpNamedPorts :: Lens' InstanceWithNamedPorts [NamedPort]

-- | <ul>
--   <li><i>Output Only</i> The URL of the instance.</li>
--   </ul>
iwnpInstance :: Lens' InstanceWithNamedPorts (Maybe Text)
data ForwardingRulesScopedList

-- | Creates a value of <a>ForwardingRulesScopedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>frslWarning</a></li>
--   <li><a>frslForwardingRules</a></li>
--   </ul>
forwardingRulesScopedList :: ForwardingRulesScopedList

-- | Informational warning which replaces the list of forwarding rules when
--   the list is empty.
frslWarning :: Lens' ForwardingRulesScopedList (Maybe ForwardingRulesScopedListWarning)

-- | List of forwarding rules contained in this scope.
frslForwardingRules :: Lens' ForwardingRulesScopedList [ForwardingRule]
data InstanceReference

-- | Creates a value of <a>InstanceReference</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iInstance</a></li>
--   </ul>
instanceReference :: InstanceReference

-- | The URL for a specific instance.
iInstance :: Lens' InstanceReference (Maybe Text)
data OperationAggregatedList

-- | Creates a value of <a>OperationAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oalNextPageToken</a></li>
--   <li><a>oalKind</a></li>
--   <li><a>oalItems</a></li>
--   <li><a>oalSelfLink</a></li>
--   <li><a>oalId</a></li>
--   </ul>
operationAggregatedList :: OperationAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
oalNextPageToken :: Lens' OperationAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#operationAggregatedList for aggregated lists of
--   operations.</li>
--   </ul>
oalKind :: Lens' OperationAggregatedList Text

-- | <ul>
--   <li><i>Output Only</i> A map of scoped operation lists.</li>
--   </ul>
oalItems :: Lens' OperationAggregatedList (Maybe OperationAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
oalSelfLink :: Lens' OperationAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
oalId :: Lens' OperationAggregatedList (Maybe Text)
data OperationsScopedList

-- | Creates a value of <a>OperationsScopedList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oslWarning</a></li>
--   <li><a>oslOperations</a></li>
--   </ul>
operationsScopedList :: OperationsScopedList

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of operations when the list is empty.</li>
--   </ul>
oslWarning :: Lens' OperationsScopedList (Maybe OperationsScopedListWarning)

-- | <ul>
--   <li><i>Output Only</i> List of operations contained in this
--   scope.</li>
--   </ul>
oslOperations :: Lens' OperationsScopedList [Operation]

-- | The named port. For example: .
--   
--   <i>See:</i> <a>namedPort</a> smart constructor.
data NamedPort

-- | Creates a value of <a>NamedPort</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>npName</a></li>
--   <li><a>npPort</a></li>
--   </ul>
namedPort :: NamedPort

-- | The name for this named port. The name must be 1-63 characters long,
--   and comply with RFC1035.
npName :: Lens' NamedPort (Maybe Text)

-- | The port number, which can be a value between 1 and 65535.
npPort :: Lens' NamedPort (Maybe Int32)

-- | Instances in which state should be returned. Valid options are: 'ALL',
--   'RUNNING'. By default, it lists all instances.
data RegionInstanceGroupsListInstancesRequestInstanceState

-- | <pre>
--   ALL
--   </pre>
All :: RegionInstanceGroupsListInstancesRequestInstanceState

-- | <pre>
--   RUNNING
--   </pre>
Running :: RegionInstanceGroupsListInstancesRequestInstanceState

-- | Contains a list of TargetInstance resources.
--   
--   <i>See:</i> <a>targetInstanceList</a> smart constructor.
data TargetInstanceList

-- | Creates a value of <a>TargetInstanceList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tilNextPageToken</a></li>
--   <li><a>tilKind</a></li>
--   <li><a>tilItems</a></li>
--   <li><a>tilSelfLink</a></li>
--   <li><a>tilId</a></li>
--   </ul>
targetInstanceList :: TargetInstanceList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
tilNextPageToken :: Lens' TargetInstanceList (Maybe Text)

-- | Type of resource.
tilKind :: Lens' TargetInstanceList Text

-- | A list of TargetInstance resources.
tilItems :: Lens' TargetInstanceList [TargetInstance]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
tilSelfLink :: Lens' TargetInstanceList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
tilId :: Lens' TargetInstanceList (Maybe Text)
data InstanceGroupManagerAggregatedList

-- | Creates a value of <a>InstanceGroupManagerAggregatedList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmalNextPageToken</a></li>
--   <li><a>igmalKind</a></li>
--   <li><a>igmalItems</a></li>
--   <li><a>igmalSelfLink</a></li>
--   <li><a>igmalId</a></li>
--   </ul>
instanceGroupManagerAggregatedList :: InstanceGroupManagerAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
igmalNextPageToken :: Lens' InstanceGroupManagerAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The resource type, which is always
--   compute#instanceGroupManagerAggregatedList for an aggregated list of
--   managed instance groups.</li>
--   </ul>
igmalKind :: Lens' InstanceGroupManagerAggregatedList Text

-- | <ul>
--   <li><i>Output Only</i> A map of filtered managed instance group
--   lists.</li>
--   </ul>
igmalItems :: Lens' InstanceGroupManagerAggregatedList (Maybe InstanceGroupManagerAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> The URL for this resource type. The server
--   generates this URL.</li>
--   </ul>
igmalSelfLink :: Lens' InstanceGroupManagerAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A unique identifier for this aggregated list of
--   managed instance groups. The server generates this identifier.</li>
--   </ul>
igmalId :: Lens' InstanceGroupManagerAggregatedList (Maybe Text)

-- | The type of the image used to create this disk. The default and only
--   value is RAW
data ImageSourceType

-- | <pre>
--   RAW
--   </pre>
Raw :: ImageSourceType
data TargetPoolsScopedList

-- | Creates a value of <a>TargetPoolsScopedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpslWarning</a></li>
--   <li><a>tpslTargetPools</a></li>
--   </ul>
targetPoolsScopedList :: TargetPoolsScopedList

-- | Informational warning which replaces the list of addresses when the
--   list is empty.
tpslWarning :: Lens' TargetPoolsScopedList (Maybe TargetPoolsScopedListWarning)

-- | List of target pools contained in this scope.
tpslTargetPools :: Lens' TargetPoolsScopedList [TargetPool]
data ForwardingRuleAggregatedList

-- | Creates a value of <a>ForwardingRuleAggregatedList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fralNextPageToken</a></li>
--   <li><a>fralKind</a></li>
--   <li><a>fralItems</a></li>
--   <li><a>fralSelfLink</a></li>
--   <li><a>fralId</a></li>
--   </ul>
forwardingRuleAggregatedList :: ForwardingRuleAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
fralNextPageToken :: Lens' ForwardingRuleAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#forwardingRuleAggregatedList for lists of forwarding
--   rules.</li>
--   </ul>
fralKind :: Lens' ForwardingRuleAggregatedList Text

-- | A map of scoped forwarding rule lists.
fralItems :: Lens' ForwardingRuleAggregatedList (Maybe ForwardingRuleAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
fralSelfLink :: Lens' ForwardingRuleAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
fralId :: Lens' ForwardingRuleAggregatedList (Maybe Text)
data TargetReference

-- | Creates a value of <a>TargetReference</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>trTarget</a></li>
--   </ul>
targetReference :: TargetReference
trTarget :: Lens' TargetReference (Maybe Text)
data TargetPoolAggregatedList

-- | Creates a value of <a>TargetPoolAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpalNextPageToken</a></li>
--   <li><a>tpalKind</a></li>
--   <li><a>tpalItems</a></li>
--   <li><a>tpalSelfLink</a></li>
--   <li><a>tpalId</a></li>
--   </ul>
targetPoolAggregatedList :: TargetPoolAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
tpalNextPageToken :: Lens' TargetPoolAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#targetPoolAggregatedList for aggregated lists of target
--   pools.</li>
--   </ul>
tpalKind :: Lens' TargetPoolAggregatedList Text

-- | <ul>
--   <li><i>Output Only</i> A map of scoped target pool lists.</li>
--   </ul>
tpalItems :: Lens' TargetPoolAggregatedList (Maybe TargetPoolAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
tpalSelfLink :: Lens' TargetPoolAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource. Defined by
--   the server.</li>
--   </ul>
tpalId :: Lens' TargetPoolAggregatedList (Maybe Text)
data OperationsScopedListWarningDataItem

-- | Creates a value of <a>OperationsScopedListWarningDataItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oslwdiValue</a></li>
--   <li><a>oslwdiKey</a></li>
--   </ul>
operationsScopedListWarningDataItem :: OperationsScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
oslwdiValue :: Lens' OperationsScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
oslwdiKey :: Lens' OperationsScopedListWarningDataItem (Maybe Text)

-- | Type of session affinity to use. The default is NONE. When the load
--   balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or
--   GENERATED_COOKIE. When the load balancing scheme is INTERNAL, can be
--   NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO. When the
--   protocol is UDP, this field is not used.
data BackendServiceSessionAffinity

-- | <pre>
--   CLIENT_IP
--   </pre>
BSSAClientIP :: BackendServiceSessionAffinity

-- | <pre>
--   CLIENT_IP_PORT_PROTO
--   </pre>
BSSAClientIPPortProto :: BackendServiceSessionAffinity

-- | <pre>
--   CLIENT_IP_PROTO
--   </pre>
BSSAClientIPProto :: BackendServiceSessionAffinity

-- | <pre>
--   GENERATED_COOKIE
--   </pre>
BSSAGeneratedCookie :: BackendServiceSessionAffinity

-- | <pre>
--   NONE
--   </pre>
BSSANone :: BackendServiceSessionAffinity

-- | A TargetPool resource. This resource defines a pool of instances,
--   associated HttpHealthCheck resources, and the fallback target pool.
--   
--   <i>See:</i> <a>targetPool</a> smart constructor.
data TargetPool

-- | Creates a value of <a>TargetPool</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpSessionAffinity</a></li>
--   <li><a>tpBackupPool</a></li>
--   <li><a>tpKind</a></li>
--   <li><a>tpSelfLink</a></li>
--   <li><a>tpName</a></li>
--   <li><a>tpCreationTimestamp</a></li>
--   <li><a>tpInstances</a></li>
--   <li><a>tpId</a></li>
--   <li><a>tpFailoverRatio</a></li>
--   <li><a>tpRegion</a></li>
--   <li><a>tpDescription</a></li>
--   <li><a>tpHealthChecks</a></li>
--   </ul>
targetPool :: TargetPool

-- | Sesssion affinity option, must be one of the following values: NONE:
--   Connections from the same client IP may go to any instance in the
--   pool. CLIENT_IP: Connections from the same client IP will go to the
--   same instance in the pool while that instance remains healthy.
--   CLIENT_IP_PROTO: Connections from the same client IP with the same IP
--   protocol will go to the same instance in the pool while that instance
--   remains healthy.
tpSessionAffinity :: Lens' TargetPool (Maybe TargetPoolSessionAffinity)

-- | This field is applicable only when the containing target pool is
--   serving a forwarding rule as the primary pool, and its failoverRatio
--   field is properly set to a value between [0, 1]. backupPool and
--   failoverRatio together define the fallback behavior of the primary
--   target pool: if the ratio of the healthy instances in the primary pool
--   is at or below failoverRatio, traffic arriving at the load-balanced IP
--   will be directed to the backup pool. In case where failoverRatio and
--   backupPool are not set, or all the instances in the backup pool are
--   unhealthy, the traffic will be directed back to the primary pool in
--   the "force" mode, where traffic will be spread to the healthy
--   instances with the best effort, or to all instances when no instance
--   is healthy.
tpBackupPool :: Lens' TargetPool (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#targetPool
--   for target pools.</li>
--   </ul>
tpKind :: Lens' TargetPool Text

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
tpSelfLink :: Lens' TargetPool (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
tpName :: Lens' TargetPool (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
tpCreationTimestamp :: Lens' TargetPool (Maybe Text)

-- | A list of resource URLs to the virtual machine instances serving this
--   pool. They must live in zones contained in the same region as this
--   pool.
tpInstances :: Lens' TargetPool [Text]

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
tpId :: Lens' TargetPool (Maybe Word64)

-- | This field is applicable only when the containing target pool is
--   serving a forwarding rule as the primary pool (i.e., not as a backup
--   pool to some other target pool). The value of the field must be in [0,
--   1]. If set, backupPool must also be set. They together define the
--   fallback behavior of the primary target pool: if the ratio of the
--   healthy instances in the primary pool is at or below this number,
--   traffic arriving at the load-balanced IP will be directed to the
--   backup pool. In case where failoverRatio is not set or all the
--   instances in the backup pool are unhealthy, the traffic will be
--   directed back to the primary pool in the "force" mode, where traffic
--   will be spread to the healthy instances with the best effort, or to
--   all instances when no instance is healthy.
tpFailoverRatio :: Lens' TargetPool (Maybe Double)

-- | <ul>
--   <li><i>Output Only</i> URL of the region where the target pool
--   resides.</li>
--   </ul>
tpRegion :: Lens' TargetPool (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
tpDescription :: Lens' TargetPool (Maybe Text)

-- | A list of URLs to the HttpHealthCheck resource. A member instance in
--   this pool is considered healthy if and only if all specified health
--   checks pass. An empty list means all member instances will be
--   considered healthy at all times.
tpHealthChecks :: Lens' TargetPool [Text]

-- | Contains a list of images.
--   
--   <i>See:</i> <a>imageList</a> smart constructor.
data ImageList

-- | Creates a value of <a>ImageList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ilNextPageToken</a></li>
--   <li><a>ilKind</a></li>
--   <li><a>ilItems</a></li>
--   <li><a>ilSelfLink</a></li>
--   <li><a>ilId</a></li>
--   </ul>
imageList :: ImageList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
ilNextPageToken :: Lens' ImageList (Maybe Text)

-- | Type of resource.
ilKind :: Lens' ImageList Text

-- | <ul>
--   <li><i>Output Only</i> A list of Image resources.</li>
--   </ul>
ilItems :: Lens' ImageList [Image]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
ilSelfLink :: Lens' ImageList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
ilId :: Lens' ImageList (Maybe Text)

-- | Informational warning which replaces the list of addresses when the
--   list is empty.
--   
--   <i>See:</i> <a>vpnTunnelsScopedListWarning</a> smart constructor.
data VPNTunnelsScopedListWarning

-- | Creates a value of <a>VPNTunnelsScopedListWarning</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vtslwData</a></li>
--   <li><a>vtslwCode</a></li>
--   <li><a>vtslwMessage</a></li>
--   </ul>
vpnTunnelsScopedListWarning :: VPNTunnelsScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
vtslwData :: Lens' VPNTunnelsScopedListWarning [VPNTunnelsScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
vtslwCode :: Lens' VPNTunnelsScopedListWarning (Maybe VPNTunnelsScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
vtslwMessage :: Lens' VPNTunnelsScopedListWarning (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data ForwardingRulesScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
FRSLWCCleanupFailed :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
FRSLWCDeprecatedResourceUsed :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
FRSLWCDiskSizeLargerThanImageSize :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
FRSLWCFieldValueOverriden :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
FRSLWCInjectedKernelsDeprecated :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
FRSLWCNextHopAddressNotAssigned :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
FRSLWCNextHopCannotIPForward :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
FRSLWCNextHopInstanceNotFound :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
FRSLWCNextHopInstanceNotOnNetwork :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
FRSLWCNextHopNotRunning :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
FRSLWCNotCriticalError :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
FRSLWCNoResultsOnPage :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
FRSLWCRequiredTosAgreement :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
FRSLWCResourceNotDeleted :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
FRSLWCSingleInstancePropertyTemplate :: ForwardingRulesScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
FRSLWCUnreachable :: ForwardingRulesScopedListWarningCode

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data OperationsScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
OSLWCCleanupFailed :: OperationsScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
OSLWCDeprecatedResourceUsed :: OperationsScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
OSLWCDiskSizeLargerThanImageSize :: OperationsScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
OSLWCFieldValueOverriden :: OperationsScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
OSLWCInjectedKernelsDeprecated :: OperationsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
OSLWCNextHopAddressNotAssigned :: OperationsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
OSLWCNextHopCannotIPForward :: OperationsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
OSLWCNextHopInstanceNotFound :: OperationsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
OSLWCNextHopInstanceNotOnNetwork :: OperationsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
OSLWCNextHopNotRunning :: OperationsScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
OSLWCNotCriticalError :: OperationsScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
OSLWCNoResultsOnPage :: OperationsScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
OSLWCRequiredTosAgreement :: OperationsScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
OSLWCResourceNotDeleted :: OperationsScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
OSLWCSingleInstancePropertyTemplate :: OperationsScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
OSLWCUnreachable :: OperationsScopedListWarningCode
data TargetSSLProxiesSetBackendServiceRequest

-- | Creates a value of <a>TargetSSLProxiesSetBackendServiceRequest</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tspsbsrService</a></li>
--   </ul>
targetSSLProxiesSetBackendServiceRequest :: TargetSSLProxiesSetBackendServiceRequest

-- | The URL of the new BackendService resource for the targetSslProxy.
tspsbsrService :: Lens' TargetSSLProxiesSetBackendServiceRequest (Maybe Text)

-- | A ForwardingRule resource. A ForwardingRule resource specifies which
--   pool of target virtual machines to forward a packet to if it matches
--   the given [IPAddress, IPProtocol, portRange] tuple.
--   
--   <i>See:</i> <a>forwardingRule</a> smart constructor.
data ForwardingRule

-- | Creates a value of <a>ForwardingRule</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>frIPAddress</a></li>
--   <li><a>frLoadBalancingScheme</a></li>
--   <li><a>frKind</a></li>
--   <li><a>frNetwork</a></li>
--   <li><a>frPortRange</a></li>
--   <li><a>frSelfLink</a></li>
--   <li><a>frName</a></li>
--   <li><a>frIPProtocol</a></li>
--   <li><a>frCreationTimestamp</a></li>
--   <li><a>frSubnetwork</a></li>
--   <li><a>frPorts</a></li>
--   <li><a>frId</a></li>
--   <li><a>frRegion</a></li>
--   <li><a>frDescription</a></li>
--   <li><a>frTarget</a></li>
--   <li><a>frBackendService</a></li>
--   </ul>
forwardingRule :: ForwardingRule

-- | The IP address that this forwarding rule is serving on behalf of. For
--   global forwarding rules, the address must be a global IP; for regional
--   forwarding rules, the address must live in the same region as the
--   forwarding rule. By default, this field is empty and an ephemeral IP
--   from the same scope (global or regional) will be assigned. When the
--   load balancing scheme is INTERNAL, this can only be an RFC 1918 IP
--   address belonging to the network/subnetwork configured for the
--   forwarding rule. A reserved address cannot be used. If the field is
--   empty, the IP address will be automatically allocated from the
--   internal IP range of the subnetwork or network configured for this
--   forwarding rule. Only IPv4 is supported.
frIPAddress :: Lens' ForwardingRule (Maybe Text)

-- | This signifies what the ForwardingRule will be used for and can only
--   take the following values: INTERNAL EXTERNAL The value of INTERNAL
--   means that this will be used for Internal Network Load Balancing (TCP,
--   UDP). The value of EXTERNAL means that this will be used for External
--   Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
frLoadBalancingScheme :: Lens' ForwardingRule (Maybe ForwardingRuleLoadBalancingScheme)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always
--   compute#forwardingRule for Forwarding Rule resources.</li>
--   </ul>
frKind :: Lens' ForwardingRule Text

-- | This field is not used for external load balancing. For internal load
--   balancing, this field identifies the network that the load balanced IP
--   should belong to for this Forwarding Rule. If this field is not
--   specified, the default network will be used.
frNetwork :: Lens' ForwardingRule (Maybe Text)

-- | Applicable only when IPProtocol is TCP, UDP, or SCTP, only packets
--   addressed to ports in the specified range will be forwarded to target.
--   Forwarding rules with the same [IPAddress, IPProtocol] pair must have
--   disjoint port ranges. This field is not used for internal load
--   balancing.
frPortRange :: Lens' ForwardingRule (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
frSelfLink :: Lens' ForwardingRule (Maybe Text)

-- | Name of the resource; provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
frName :: Lens' ForwardingRule (Maybe Text)

-- | The IP protocol to which this rule applies. Valid options are TCP,
--   UDP, ESP, AH, SCTP or ICMP. When the load balancing scheme is INTERNAL
frIPProtocol :: Lens' ForwardingRule (Maybe ForwardingRuleIPProtocol)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
frCreationTimestamp :: Lens' ForwardingRule (Maybe Text)

-- | This field is not used for external load balancing. For internal load
--   balancing, this field identifies the subnetwork that the load balanced
--   IP should belong to for this Forwarding Rule. If the network specified
--   is in auto subnet mode, this field is optional. However, if the
--   network is in custom subnet mode, a subnetwork must be specified.
frSubnetwork :: Lens' ForwardingRule (Maybe Text)

-- | This field is not used for external load balancing. When the load
--   balancing scheme is INTERNAL, a single port or a comma separated list
--   of ports can be configured. Only packets addressed to these ports will
--   be forwarded to the backends configured with this forwarding rule. If
--   the port list is not provided then all ports are allowed to pass
--   through. You may specify a maximum of up to 5 ports.
frPorts :: Lens' ForwardingRule [Text]

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
frId :: Lens' ForwardingRule (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> URL of the region where the regional forwarding
--   rule resides. This field is not applicable to global forwarding
--   rules.</li>
--   </ul>
frRegion :: Lens' ForwardingRule (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
frDescription :: Lens' ForwardingRule (Maybe Text)

-- | The URL of the target resource to receive the matched traffic. For
--   regional forwarding rules, this target must live in the same region as
--   the forwarding rule. For global forwarding rules, this target must be
--   a global TargetHttpProxy or TargetHttpsProxy resource. The forwarded
--   traffic must be of a type appropriate to the target object. For
--   example, TargetHttpProxy requires HTTP traffic, and TargetHttpsProxy
--   requires HTTPS traffic. This field is not used for internal load
--   balancing.
frTarget :: Lens' ForwardingRule (Maybe Text)

-- | This field is not used for external load balancing. For internal load
--   balancing, this field identifies the BackendService resource to
--   receive the matched traffic.
frBackendService :: Lens' ForwardingRule (Maybe Text)

-- | Contains a list of UrlMap resources.
--   
--   <i>See:</i> <a>urlMapList</a> smart constructor.
data URLMapList

-- | Creates a value of <a>URLMapList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umlNextPageToken</a></li>
--   <li><a>umlKind</a></li>
--   <li><a>umlItems</a></li>
--   <li><a>umlSelfLink</a></li>
--   <li><a>umlId</a></li>
--   </ul>
urlMapList :: URLMapList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
umlNextPageToken :: Lens' URLMapList (Maybe Text)

-- | Type of resource.
umlKind :: Lens' URLMapList Text

-- | A list of UrlMap resources.
umlItems :: Lens' URLMapList [URLMap]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
umlSelfLink :: Lens' URLMapList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource. Set by the
--   server.</li>
--   </ul>
umlId :: Lens' URLMapList (Maybe Text)
data ForwardingRulesScopedListWarningDataItem

-- | Creates a value of <a>ForwardingRulesScopedListWarningDataItem</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>frslwdiValue</a></li>
--   <li><a>frslwdiKey</a></li>
--   </ul>
forwardingRulesScopedListWarningDataItem :: ForwardingRulesScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
frslwdiValue :: Lens' ForwardingRulesScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
frslwdiKey :: Lens' ForwardingRulesScopedListWarningDataItem (Maybe Text)
data InstanceGroupManagersScopedListWarningDataItem

-- | Creates a value of
--   <a>InstanceGroupManagersScopedListWarningDataItem</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmslwdiValue</a></li>
--   <li><a>igmslwdiKey</a></li>
--   </ul>
instanceGroupManagersScopedListWarningDataItem :: InstanceGroupManagersScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
igmslwdiValue :: Lens' InstanceGroupManagersScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
igmslwdiKey :: Lens' InstanceGroupManagersScopedListWarningDataItem (Maybe Text)
data SubnetworksScopedList

-- | Creates a value of <a>SubnetworksScopedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sslSubnetworks</a></li>
--   <li><a>sslWarning</a></li>
--   </ul>
subnetworksScopedList :: SubnetworksScopedList

-- | List of subnetworks contained in this scope.
sslSubnetworks :: Lens' SubnetworksScopedList [Subnetwork]

-- | An informational warning that appears when the list of addresses is
--   empty.
sslWarning :: Lens' SubnetworksScopedList (Maybe SubnetworksScopedListWarning)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data DisksScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
DSLWCCleanupFailed :: DisksScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
DSLWCDeprecatedResourceUsed :: DisksScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
DSLWCDiskSizeLargerThanImageSize :: DisksScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
DSLWCFieldValueOverriden :: DisksScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
DSLWCInjectedKernelsDeprecated :: DisksScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
DSLWCNextHopAddressNotAssigned :: DisksScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
DSLWCNextHopCannotIPForward :: DisksScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
DSLWCNextHopInstanceNotFound :: DisksScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
DSLWCNextHopInstanceNotOnNetwork :: DisksScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
DSLWCNextHopNotRunning :: DisksScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
DSLWCNotCriticalError :: DisksScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
DSLWCNoResultsOnPage :: DisksScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
DSLWCRequiredTosAgreement :: DisksScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
DSLWCResourceNotDeleted :: DisksScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
DSLWCSingleInstancePropertyTemplate :: DisksScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
DSLWCUnreachable :: DisksScopedListWarningCode

-- | A Project resource. Projects can only be created in the Google Cloud
--   Platform Console. Unless marked otherwise, values can only be modified
--   in the console.
--   
--   <i>See:</i> <a>project</a> smart constructor.
data Project

-- | Creates a value of <a>Project</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pKind</a></li>
--   <li><a>pUsageExportLocation</a></li>
--   <li><a>pSelfLink</a></li>
--   <li><a>pName</a></li>
--   <li><a>pDefaultServiceAccount</a></li>
--   <li><a>pCreationTimestamp</a></li>
--   <li><a>pEnabledFeatures</a></li>
--   <li><a>pQuotas</a></li>
--   <li><a>pId</a></li>
--   <li><a>pDescription</a></li>
--   <li><a>pCommonInstanceMetadata</a></li>
--   </ul>
project :: Project

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#project
--   for projects.</li>
--   </ul>
pKind :: Lens' Project Text

-- | The naming prefix for daily usage reports and the Google Cloud Storage
--   bucket where they are stored.
pUsageExportLocation :: Lens' Project (Maybe UsageExportLocation)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
pSelfLink :: Lens' Project (Maybe Text)

-- | The project ID. For example: my-example-project. Use the project ID to
--   make requests to Compute Engine.
pName :: Lens' Project (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Default service account used by VMs running in
--   this project.</li>
--   </ul>
pDefaultServiceAccount :: Lens' Project (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
pCreationTimestamp :: Lens' Project (Maybe Text)

-- | Restricted features enabled for use on this project.
pEnabledFeatures :: Lens' Project [Text]

-- | <ul>
--   <li><i>Output Only</i> Quotas assigned to this project.</li>
--   </ul>
pQuotas :: Lens' Project [Quota]

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server. This is not the project ID, and
--   is just a unique ID used by Compute Engine to identify resources.</li>
--   </ul>
pId :: Lens' Project (Maybe Word64)

-- | An optional textual description of the resource.
pDescription :: Lens' Project (Maybe Text)

-- | Metadata key/value pairs available to all instances contained in this
--   project. See Custom metadata for more information.
pCommonInstanceMetadata :: Lens' Project (Maybe Metadata)
data RegionInstanceGroupManagersListInstancesResponse

-- | Creates a value of
--   <a>RegionInstanceGroupManagersListInstancesResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmlirManagedInstances</a></li>
--   </ul>
regionInstanceGroupManagersListInstancesResponse :: RegionInstanceGroupManagersListInstancesResponse

-- | List of managed instances.
rigmlirManagedInstances :: Lens' RegionInstanceGroupManagersListInstancesResponse [ManagedInstance]

-- | An Operation resource, used to manage asynchronous API requests.
--   
--   <i>See:</i> <a>operation</a> smart constructor.
data Operation

-- | Creates a value of <a>Operation</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oTargetId</a></li>
--   <li><a>oStatus</a></li>
--   <li><a>oInsertTime</a></li>
--   <li><a>oProgress</a></li>
--   <li><a>oStartTime</a></li>
--   <li><a>oKind</a></li>
--   <li><a>oError</a></li>
--   <li><a>oHTTPErrorMessage</a></li>
--   <li><a>oZone</a></li>
--   <li><a>oWarnings</a></li>
--   <li><a>oHTTPErrorStatusCode</a></li>
--   <li><a>oUser</a></li>
--   <li><a>oSelfLink</a></li>
--   <li><a>oName</a></li>
--   <li><a>oStatusMessage</a></li>
--   <li><a>oCreationTimestamp</a></li>
--   <li><a>oEndTime</a></li>
--   <li><a>oId</a></li>
--   <li><a>oOperationType</a></li>
--   <li><a>oRegion</a></li>
--   <li><a>oDescription</a></li>
--   <li><a>oTargetLink</a></li>
--   <li><a>oClientOperationId</a></li>
--   </ul>
operation :: Operation

-- | <ul>
--   <li><i>Output Only</i> The unique target ID, which identifies a
--   specific incarnation of the target resource.</li>
--   </ul>
oTargetId :: Lens' Operation (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> The status of the operation, which can be one
--   of the following: PENDING, RUNNING, or DONE.</li>
--   </ul>
oStatus :: Lens' Operation (Maybe OperationStatus)

-- | <ul>
--   <li><i>Output Only</i> The time that this operation was requested.
--   This value is in RFC3339 text format.</li>
--   </ul>
oInsertTime :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> An optional progress indicator that ranges from
--   0 to 100. There is no requirement that this be linear or support any
--   granularity of operations. This should not be used to guess when the
--   operation will be complete. This number should monotonically increase
--   as the operation progresses.</li>
--   </ul>
oProgress :: Lens' Operation (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The time that this operation was started by the
--   server. This value is in RFC3339 text format.</li>
--   </ul>
oStartTime :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#operation
--   for Operation resources.</li>
--   </ul>
oKind :: Lens' Operation Text

-- | <ul>
--   <li><i>Output Only</i> If errors are generated during processing of
--   the operation, this field will be populated.</li>
--   </ul>
oError :: Lens' Operation (Maybe OperationError)

-- | <ul>
--   <li><i>Output Only</i> If the operation fails, this field contains the
--   HTTP error message that was returned, such as NOT FOUND.</li>
--   </ul>
oHTTPErrorMessage :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The URL of the zone where the operation
--   resides. Only available when performing per-zone operations.</li>
--   </ul>
oZone :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> If warning messages are generated during
--   processing of the operation, this field will be populated.</li>
--   </ul>
oWarnings :: Lens' Operation [OperationWarningsItem]

-- | <ul>
--   <li><i>Output Only</i> If the operation fails, this field contains the
--   HTTP error status code that was returned. For example, a 404 means the
--   resource was not found.</li>
--   </ul>
oHTTPErrorStatusCode :: Lens' Operation (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> User who requested the operation, for example:
--   user'example.com.</li>
--   </ul>
oUser :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
oSelfLink :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Name of the resource.</li>
--   </ul>
oName :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> An optional textual description of the current
--   status of the operation.</li>
--   </ul>
oStatusMessage :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
oCreationTimestamp :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The time that this operation was completed.
--   This value is in RFC3339 text format.</li>
--   </ul>
oEndTime :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
oId :: Lens' Operation (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> The type of operation, such as insert, update,
--   or delete, and so on.</li>
--   </ul>
oOperationType :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The URL of the region where the operation
--   resides. Only available when performing regional operations.</li>
--   </ul>
oRegion :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A textual description of the operation, which
--   is set when the operation is created.</li>
--   </ul>
oDescription :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The URL of the resource that the operation
--   modifies. For operations related to creating a snapshot, this points
--   to the persistent disk that the snapshot was created from.</li>
--   </ul>
oTargetLink :: Lens' Operation (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Reserved for future use.</li>
--   </ul>
oClientOperationId :: Lens' Operation (Maybe Text)
data DisksScopedListWarningDataItem

-- | Creates a value of <a>DisksScopedListWarningDataItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dslwdiValue</a></li>
--   <li><a>dslwdiKey</a></li>
--   </ul>
disksScopedListWarningDataItem :: DisksScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
dslwdiValue :: Lens' DisksScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
dslwdiKey :: Lens' DisksScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
IGMSLWCCleanupFailed :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
IGMSLWCDeprecatedResourceUsed :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
IGMSLWCDiskSizeLargerThanImageSize :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
IGMSLWCFieldValueOverriden :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
IGMSLWCInjectedKernelsDeprecated :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
IGMSLWCNextHopAddressNotAssigned :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
IGMSLWCNextHopCannotIPForward :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
IGMSLWCNextHopInstanceNotFound :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
IGMSLWCNextHopInstanceNotOnNetwork :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
IGMSLWCNextHopNotRunning :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
IGMSLWCNotCriticalError :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
IGMSLWCNoResultsOnPage :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
IGMSLWCRequiredTosAgreement :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
IGMSLWCResourceNotDeleted :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
IGMSLWCSingleInstancePropertyTemplate :: InstanceGroupManagersScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
IGMSLWCUnreachable :: InstanceGroupManagersScopedListWarningCode

-- | A Disk resource.
--   
--   <i>See:</i> <a>disk</a> smart constructor.
data Disk

-- | Creates a value of <a>Disk</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dStatus</a></li>
--   <li><a>dSourceSnapshotId</a></li>
--   <li><a>dLastAttachTimestamp</a></li>
--   <li><a>dUsers</a></li>
--   <li><a>dSourceImage</a></li>
--   <li><a>dDiskEncryptionKey</a></li>
--   <li><a>dSizeGb</a></li>
--   <li><a>dKind</a></li>
--   <li><a>dLastDetachTimestamp</a></li>
--   <li><a>dZone</a></li>
--   <li><a>dSelfLink</a></li>
--   <li><a>dName</a></li>
--   <li><a>dSourceImageId</a></li>
--   <li><a>dCreationTimestamp</a></li>
--   <li><a>dSourceImageEncryptionKey</a></li>
--   <li><a>dId</a></li>
--   <li><a>dLicenses</a></li>
--   <li><a>dOptions</a></li>
--   <li><a>dType</a></li>
--   <li><a>dDescription</a></li>
--   <li><a>dSourceSnapshotEncryptionKey</a></li>
--   <li><a>dSourceSnapshot</a></li>
--   </ul>
disk :: Disk

-- | <ul>
--   <li><i>Output Only</i> The status of disk creation.</li>
--   </ul>
dStatus :: Lens' Disk (Maybe DiskStatus)

-- | <ul>
--   <li><i>Output Only</i> The unique ID of the snapshot used to create
--   this disk. This value identifies the exact snapshot that was used to
--   create this persistent disk. For example, if you created the
--   persistent disk from a snapshot that was later deleted and recreated
--   under the same name, the source snapshot ID would identify the exact
--   version of the snapshot that was used.</li>
--   </ul>
dSourceSnapshotId :: Lens' Disk (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Last attach timestamp in RFC3339 text
--   format.</li>
--   </ul>
dLastAttachTimestamp :: Lens' Disk (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Links to the users of the disk (attached
--   instances) in form: project/zones/zone/instances/instance</li>
--   </ul>
dUsers :: Lens' Disk [Text]

-- | The source image used to create this disk. If the source image is
--   deleted, this field will not be set. To create a disk with one of the
--   public operating system images, specify the image by its family name.
--   For example, specify family/debian-8 to use the latest Debian 8 image:
--   projects/debian-cloud/global/images/family/debian-8 Alternatively, use
--   a specific version of a public operating system image:
--   projects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD To
--   create a disk with a private image that you created, specify the image
--   name in the following format: global/images/my-private-image You can
--   also specify a private image by its image family, which returns the
--   latest version of the image in that family. Replace the image name
--   with family/family-name: global/images/family/my-private-family
dSourceImage :: Lens' Disk (Maybe Text)

-- | Encrypts the disk using a customer-supplied encryption key. After you
--   encrypt a disk with a customer-supplied key, you must provide the same
--   key if you use the disk later (e.g. to create a disk snapshot or an
--   image, or to attach the disk to a virtual machine). Customer-supplied
--   encryption keys do not protect access to metadata of the disk. If you
--   do not provide an encryption key when creating the disk, then the disk
--   will be encrypted using an automatically generated key and you do not
--   need to provide a key to use the disk later.
dDiskEncryptionKey :: Lens' Disk (Maybe CustomerEncryptionKey)

-- | Size of the persistent disk, specified in GB. You can specify this
--   field when creating a persistent disk using the sourceImage or
--   sourceSnapshot parameter, or specify it alone to create an empty
--   persistent disk. If you specify this field along with sourceImage or
--   sourceSnapshot, the value of sizeGb must not be less than the size of
--   the sourceImage or the size of the snapshot.
dSizeGb :: Lens' Disk (Maybe Int64)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#disk for
--   disks.</li>
--   </ul>
dKind :: Lens' Disk Text

-- | <ul>
--   <li><i>Output Only</i> Last detach timestamp in RFC3339 text
--   format.</li>
--   </ul>
dLastDetachTimestamp :: Lens' Disk (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> URL of the zone where the disk resides.</li>
--   </ul>
dZone :: Lens' Disk (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined fully-qualified URL for this
--   resource.</li>
--   </ul>
dSelfLink :: Lens' Disk (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
dName :: Lens' Disk (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The ID value of the image used to create this
--   disk. This value identifies the exact image that was used to create
--   this persistent disk. For example, if you created the persistent disk
--   from an image that was later deleted and recreated under the same
--   name, the source image ID would identify the exact version of the
--   image that was used.</li>
--   </ul>
dSourceImageId :: Lens' Disk (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
dCreationTimestamp :: Lens' Disk (Maybe Text)

-- | The customer-supplied encryption key of the source image. Required if
--   the source image is protected by a customer-supplied encryption key.
dSourceImageEncryptionKey :: Lens' Disk (Maybe CustomerEncryptionKey)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
dId :: Lens' Disk (Maybe Word64)

-- | Any applicable publicly visible licenses.
dLicenses :: Lens' Disk [Text]

-- | Internal use only.
dOptions :: Lens' Disk (Maybe Text)

-- | URL of the disk type resource describing which disk type to use to
--   create the disk. Provide this when creating the disk.
dType :: Lens' Disk (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
dDescription :: Lens' Disk (Maybe Text)

-- | The customer-supplied encryption key of the source snapshot. Required
--   if the source snapshot is protected by a customer-supplied encryption
--   key.
dSourceSnapshotEncryptionKey :: Lens' Disk (Maybe CustomerEncryptionKey)

-- | The source snapshot used to create this disk. You can provide this as
--   a partial or full URL to the resource. For example, the following are
--   valid values: -
--   https://www.googleapis.com/compute/v1/projects/project/global/snapshots/snapshot
--   - projects/project/global/snapshots/snapshot -
--   global/snapshots/snapshot
dSourceSnapshot :: Lens' Disk (Maybe Text)
data DiskMoveRequest

-- | Creates a value of <a>DiskMoveRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dmrTargetDisk</a></li>
--   <li><a>dmrDestinationZone</a></li>
--   </ul>
diskMoveRequest :: DiskMoveRequest

-- | The URL of the target disk to move. This can be a full or partial URL.
--   For example, the following are all valid URLs to a disk: -
--   https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk
--   - projects/project/zones/zone/disks/disk - zones/zone/disks/disk
dmrTargetDisk :: Lens' DiskMoveRequest (Maybe Text)

-- | The URL of the destination zone to move the disk. This can be a full
--   or partial URL. For example, the following are all valid URLs to a
--   zone: -
--   https://www.googleapis.com/compute/v1/projects/project/zones/zone -
--   projects/project/zones/zone - zones/zone
dmrDestinationZone :: Lens' DiskMoveRequest (Maybe Text)

-- | Configuration parameters of autoscaling based on load balancing.
--   
--   <i>See:</i> <a>autoscalingPolicyLoadBalancingUtilization</a> smart
--   constructor.
data AutoscalingPolicyLoadBalancingUtilization

-- | Creates a value of <a>AutoscalingPolicyLoadBalancingUtilization</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aplbuUtilizationTarget</a></li>
--   </ul>
autoscalingPolicyLoadBalancingUtilization :: AutoscalingPolicyLoadBalancingUtilization

-- | Fraction of backend capacity utilization (set in HTTP(s) load
--   balancing configuration) that autoscaler should maintain. Must be a
--   positive float value. If not defined, the default is 0.8.
aplbuUtilizationTarget :: Lens' AutoscalingPolicyLoadBalancingUtilization (Maybe Double)
data TargetPoolsScopedListWarningDataItem

-- | Creates a value of <a>TargetPoolsScopedListWarningDataItem</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpslwdiValue</a></li>
--   <li><a>tpslwdiKey</a></li>
--   </ul>
targetPoolsScopedListWarningDataItem :: TargetPoolsScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
tpslwdiValue :: Lens' TargetPoolsScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
tpslwdiKey :: Lens' TargetPoolsScopedListWarningDataItem (Maybe Text)

-- | An Instance Group Manager resource.
--   
--   <i>See:</i> <a>instanceGroupManager</a> smart constructor.
data InstanceGroupManager

-- | Creates a value of <a>InstanceGroupManager</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmKind</a></li>
--   <li><a>igmFingerprint</a></li>
--   <li><a>igmBaseInstanceName</a></li>
--   <li><a>igmZone</a></li>
--   <li><a>igmInstanceTemplate</a></li>
--   <li><a>igmTargetSize</a></li>
--   <li><a>igmSelfLink</a></li>
--   <li><a>igmCurrentActions</a></li>
--   <li><a>igmName</a></li>
--   <li><a>igmCreationTimestamp</a></li>
--   <li><a>igmId</a></li>
--   <li><a>igmRegion</a></li>
--   <li><a>igmTargetPools</a></li>
--   <li><a>igmDescription</a></li>
--   <li><a>igmInstanceGroup</a></li>
--   <li><a>igmNamedPorts</a></li>
--   </ul>
instanceGroupManager :: InstanceGroupManager

-- | <ul>
--   <li><i>Output Only</i> The resource type, which is always
--   compute#instanceGroupManager for managed instance groups.</li>
--   </ul>
igmKind :: Lens' InstanceGroupManager Text

-- | <ul>
--   <li><i>Output Only</i> The fingerprint of the resource data. You can
--   use this optional field for optimistic locking when you update the
--   resource.</li>
--   </ul>
igmFingerprint :: Lens' InstanceGroupManager (Maybe ByteString)

-- | The base instance name to use for instances in this group. The value
--   must be 1-58 characters long. Instances are named by appending a
--   hyphen and a random four-character string to the base instance name.
--   The base instance name must comply with RFC1035.
igmBaseInstanceName :: Lens' InstanceGroupManager (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The URL of the zone where the managed instance
--   group is located (for zonal resources).</li>
--   </ul>
igmZone :: Lens' InstanceGroupManager (Maybe Text)

-- | The URL of the instance template that is specified for this managed
--   instance group. The group uses this template to create all new
--   instances in the managed instance group.
igmInstanceTemplate :: Lens' InstanceGroupManager (Maybe Text)

-- | The target number of running instances for this managed instance
--   group. Deleting or abandoning instances reduces this number. Resizing
--   the group changes this number.
igmTargetSize :: Lens' InstanceGroupManager (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The URL for this managed instance group. The
--   server defines this URL.</li>
--   </ul>
igmSelfLink :: Lens' InstanceGroupManager (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The list of instance actions and the number of
--   instances in this managed instance group that are scheduled for each
--   of those actions.</li>
--   </ul>
igmCurrentActions :: Lens' InstanceGroupManager (Maybe InstanceGroupManagerActionsSummary)

-- | The name of the managed instance group. The name must be 1-63
--   characters long, and comply with RFC1035.
igmName :: Lens' InstanceGroupManager (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The creation timestamp for this managed
--   instance group in RFC3339 text format.</li>
--   </ul>
igmCreationTimestamp :: Lens' InstanceGroupManager (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A unique identifier for this resource type. The
--   server generates this identifier.</li>
--   </ul>
igmId :: Lens' InstanceGroupManager (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> The URL of the region where the managed
--   instance group resides (for regional resources).</li>
--   </ul>
igmRegion :: Lens' InstanceGroupManager (Maybe Text)

-- | The URLs for all TargetPool resources to which instances in the
--   instanceGroup field are added. The target pools automatically apply to
--   all of the instances in the managed instance group.
igmTargetPools :: Lens' InstanceGroupManager [Text]

-- | An optional description of this resource. Provide this property when
--   you create the resource.
igmDescription :: Lens' InstanceGroupManager (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The URL of the Instance Group resource.</li>
--   </ul>
igmInstanceGroup :: Lens' InstanceGroupManager (Maybe Text)

-- | Named ports configured for the Instance Groups complementary to this
--   Instance Group Manager.
igmNamedPorts :: Lens' InstanceGroupManager [NamedPort]
data RegionInstanceGroupsListInstances

-- | Creates a value of <a>RegionInstanceGroupsListInstances</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigliNextPageToken</a></li>
--   <li><a>rigliKind</a></li>
--   <li><a>rigliItems</a></li>
--   <li><a>rigliSelfLink</a></li>
--   <li><a>rigliId</a></li>
--   </ul>
regionInstanceGroupsListInstances :: RegionInstanceGroupsListInstances

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
rigliNextPageToken :: Lens' RegionInstanceGroupsListInstances (Maybe Text)

-- | The resource type.
rigliKind :: Lens' RegionInstanceGroupsListInstances Text

-- | A list of instances and any named ports that are assigned to those
--   instances.
rigliItems :: Lens' RegionInstanceGroupsListInstances [InstanceWithNamedPorts]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
rigliSelfLink :: Lens' RegionInstanceGroupsListInstances (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource. Defined by
--   the server.</li>
--   </ul>
rigliId :: Lens' RegionInstanceGroupsListInstances (Maybe Text)
data TCPHealthCheck

-- | Creates a value of <a>TCPHealthCheck</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>thcResponse</a></li>
--   <li><a>thcProxyHeader</a></li>
--   <li><a>thcPortName</a></li>
--   <li><a>thcPort</a></li>
--   <li><a>thcRequest</a></li>
--   </ul>
tcpHealthCheck :: TCPHealthCheck

-- | The bytes to match against the beginning of the response data. If left
--   empty (the default value), any response will indicate health. The
--   response data can only be ASCII.
thcResponse :: Lens' TCPHealthCheck (Maybe Text)

-- | Specifies the type of proxy header to append before sending data to
--   the backend, either NONE or PROXY_V1. The default is NONE.
thcProxyHeader :: Lens' TCPHealthCheck (Maybe TCPHealthCheckProxyHeader)

-- | Port name as defined in InstanceGroupname. If both port and port_name
--   are defined, port takes precedence.
thcPortName :: Lens' TCPHealthCheck (Maybe Text)

-- | The TCP port number for the health check request. The default value is
--   80.
thcPort :: Lens' TCPHealthCheck (Maybe Int32)

-- | The application data to send once the TCP connection has been
--   established (default value is empty). If both request and response are
--   empty, the connection establishment alone will indicate health. The
--   request data can only be ASCII.
thcRequest :: Lens' TCPHealthCheck (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data TargetPoolsScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
TPSLWCCleanupFailed :: TargetPoolsScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
TPSLWCDeprecatedResourceUsed :: TargetPoolsScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
TPSLWCDiskSizeLargerThanImageSize :: TargetPoolsScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
TPSLWCFieldValueOverriden :: TargetPoolsScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
TPSLWCInjectedKernelsDeprecated :: TargetPoolsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
TPSLWCNextHopAddressNotAssigned :: TargetPoolsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
TPSLWCNextHopCannotIPForward :: TargetPoolsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
TPSLWCNextHopInstanceNotFound :: TargetPoolsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
TPSLWCNextHopInstanceNotOnNetwork :: TargetPoolsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
TPSLWCNextHopNotRunning :: TargetPoolsScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
TPSLWCNotCriticalError :: TargetPoolsScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
TPSLWCNoResultsOnPage :: TargetPoolsScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
TPSLWCRequiredTosAgreement :: TargetPoolsScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
TPSLWCResourceNotDeleted :: TargetPoolsScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
TPSLWCSingleInstancePropertyTemplate :: TargetPoolsScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
TPSLWCUnreachable :: TargetPoolsScopedListWarningCode

-- | Specifies the type of proxy header to append before sending data to
--   the backend, either NONE or PROXY_V1. The default is NONE.
data SSLHealthCheckProxyHeader

-- | <pre>
--   NONE
--   </pre>
SHCPHNone :: SSLHealthCheckProxyHeader

-- | <pre>
--   PROXY_V1
--   </pre>
SHCPHProxyV1 :: SSLHealthCheckProxyHeader

-- | <ul>
--   <li><i>Output Only</i> The status of the VPN gateway.</li>
--   </ul>
data TargetVPNGatewayStatus

-- | <pre>
--   CREATING
--   </pre>
Creating :: TargetVPNGatewayStatus

-- | <pre>
--   DELETING
--   </pre>
Deleting :: TargetVPNGatewayStatus

-- | <pre>
--   FAILED
--   </pre>
Failed :: TargetVPNGatewayStatus

-- | <pre>
--   READY
--   </pre>
Ready :: TargetVPNGatewayStatus
data InstanceGroupsRemoveInstancesRequest

-- | Creates a value of <a>InstanceGroupsRemoveInstancesRequest</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igrirInstances</a></li>
--   </ul>
instanceGroupsRemoveInstancesRequest :: InstanceGroupsRemoveInstancesRequest

-- | The list of instances to remove from the instance group.
igrirInstances :: Lens' InstanceGroupsRemoveInstancesRequest [InstanceReference]

-- | <ul>
--   <li><i>Output Only</i> The status of the snapshot. This can be
--   CREATING, DELETING, FAILED, READY, or UPLOADING.</li>
--   </ul>
data SnapshotStatus

-- | <pre>
--   CREATING
--   </pre>
SSCreating :: SnapshotStatus

-- | <pre>
--   DELETING
--   </pre>
SSDeleting :: SnapshotStatus

-- | <pre>
--   FAILED
--   </pre>
SSFailed :: SnapshotStatus

-- | <pre>
--   READY
--   </pre>
SSReady :: SnapshotStatus

-- | <pre>
--   UPLOADING
--   </pre>
SSUploading :: SnapshotStatus
data RouteWarningsItemDataItem

-- | Creates a value of <a>RouteWarningsItemDataItem</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rwidiValue</a></li>
--   <li><a>rwidiKey</a></li>
--   </ul>
routeWarningsItemDataItem :: RouteWarningsItemDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
rwidiValue :: Lens' RouteWarningsItemDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
rwidiKey :: Lens' RouteWarningsItemDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data TargetInstancesScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
TISLWCCleanupFailed :: TargetInstancesScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
TISLWCDeprecatedResourceUsed :: TargetInstancesScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
TISLWCDiskSizeLargerThanImageSize :: TargetInstancesScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
TISLWCFieldValueOverriden :: TargetInstancesScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
TISLWCInjectedKernelsDeprecated :: TargetInstancesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
TISLWCNextHopAddressNotAssigned :: TargetInstancesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
TISLWCNextHopCannotIPForward :: TargetInstancesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
TISLWCNextHopInstanceNotFound :: TargetInstancesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
TISLWCNextHopInstanceNotOnNetwork :: TargetInstancesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
TISLWCNextHopNotRunning :: TargetInstancesScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
TISLWCNotCriticalError :: TargetInstancesScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
TISLWCNoResultsOnPage :: TargetInstancesScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
TISLWCRequiredTosAgreement :: TargetInstancesScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
TISLWCResourceNotDeleted :: TargetInstancesScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
TISLWCSingleInstancePropertyTemplate :: TargetInstancesScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
TISLWCUnreachable :: TargetInstancesScopedListWarningCode

-- | A map of scoped BackendService lists.
--   
--   <i>See:</i> <a>backendServiceAggregatedListItems</a> smart
--   constructor.
data BackendServiceAggregatedListItems

-- | Creates a value of <a>BackendServiceAggregatedListItems</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bsaliAddtional</a></li>
--   </ul>
backendServiceAggregatedListItems :: HashMap Text BackendServicesScopedList -> BackendServiceAggregatedListItems

-- | Name of the scope containing this set of BackendServices.
bsaliAddtional :: Lens' BackendServiceAggregatedListItems (HashMap Text BackendServicesScopedList)

-- | <ul>
--   <li><i>Output Only</i> A map of scoped instance lists.</li>
--   </ul>
--   
--   <i>See:</i> <a>instanceAggregatedListItems</a> smart constructor.
data InstanceAggregatedListItems

-- | Creates a value of <a>InstanceAggregatedListItems</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ialiAddtional</a></li>
--   </ul>
instanceAggregatedListItems :: HashMap Text InstancesScopedList -> InstanceAggregatedListItems

-- | <ul>
--   <li><i>Output Only</i> Name of the scope containing this set of
--   instances.</li>
--   </ul>
ialiAddtional :: Lens' InstanceAggregatedListItems (HashMap Text InstancesScopedList)

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of autoscalers when the list is empty.</li>
--   </ul>
--   
--   <i>See:</i> <a>autoscalersScopedListWarning</a> smart constructor.
data AutoscalersScopedListWarning

-- | Creates a value of <a>AutoscalersScopedListWarning</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aslwData</a></li>
--   <li><a>aslwCode</a></li>
--   <li><a>aslwMessage</a></li>
--   </ul>
autoscalersScopedListWarning :: AutoscalersScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
aslwData :: Lens' AutoscalersScopedListWarning [AutoscalersScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
aslwCode :: Lens' AutoscalersScopedListWarning (Maybe AutoscalersScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
aslwMessage :: Lens' AutoscalersScopedListWarning (Maybe Text)

-- | Contains a list of HealthCheck resources.
--   
--   <i>See:</i> <a>healthCheckList</a> smart constructor.
data HealthCheckList

-- | Creates a value of <a>HealthCheckList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hclNextPageToken</a></li>
--   <li><a>hclKind</a></li>
--   <li><a>hclItems</a></li>
--   <li><a>hclSelfLink</a></li>
--   <li><a>hclId</a></li>
--   </ul>
healthCheckList :: HealthCheckList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
hclNextPageToken :: Lens' HealthCheckList (Maybe Text)

-- | Type of resource.
hclKind :: Lens' HealthCheckList Text

-- | A list of HealthCheck resources.
hclItems :: Lens' HealthCheckList [HealthCheck]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
hclSelfLink :: Lens' HealthCheckList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
hclId :: Lens' HealthCheckList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Encountered errors during the last attempt to
--   create or delete the instance.</li>
--   </ul>
--   
--   <i>See:</i> <a>managedInstanceLastAttemptErrors</a> smart constructor.
data ManagedInstanceLastAttemptErrors

-- | Creates a value of <a>ManagedInstanceLastAttemptErrors</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>milaeErrors</a></li>
--   </ul>
managedInstanceLastAttemptErrors :: ManagedInstanceLastAttemptErrors

-- | <ul>
--   <li><i>Output Only</i> The array of errors encountered while
--   processing this operation.</li>
--   </ul>
milaeErrors :: Lens' ManagedInstanceLastAttemptErrors [ManagedInstanceLastAttemptErrorsErrorsItem]

-- | The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is
--   supported. For newer Windows images, the server might also populate
--   this property with the value WINDOWS to indicate that this is a
--   Windows image. This value is purely informational and does not enable
--   or disable any features.
data GuestOSFeatureType

-- | <pre>
--   FEATURE_TYPE_UNSPECIFIED
--   </pre>
FeatureTypeUnspecified :: GuestOSFeatureType

-- | <pre>
--   VIRTIO_SCSI_MULTIQUEUE
--   </pre>
VirtioScsiMultiQueue :: GuestOSFeatureType

-- | <pre>
--   WINDOWS
--   </pre>
Windows :: GuestOSFeatureType

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data RouteWarningsItemCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
RWICCleanupFailed :: RouteWarningsItemCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
RWICDeprecatedResourceUsed :: RouteWarningsItemCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
RWICDiskSizeLargerThanImageSize :: RouteWarningsItemCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
RWICFieldValueOverriden :: RouteWarningsItemCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
RWICInjectedKernelsDeprecated :: RouteWarningsItemCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
RWICNextHopAddressNotAssigned :: RouteWarningsItemCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
RWICNextHopCannotIPForward :: RouteWarningsItemCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
RWICNextHopInstanceNotFound :: RouteWarningsItemCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
RWICNextHopInstanceNotOnNetwork :: RouteWarningsItemCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
RWICNextHopNotRunning :: RouteWarningsItemCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
RWICNotCriticalError :: RouteWarningsItemCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
RWICNoResultsOnPage :: RouteWarningsItemCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
RWICRequiredTosAgreement :: RouteWarningsItemCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
RWICResourceNotDeleted :: RouteWarningsItemCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
RWICSingleInstancePropertyTemplate :: RouteWarningsItemCode

-- | <pre>
--   UNREACHABLE
--   </pre>
RWICUnreachable :: RouteWarningsItemCode
data TargetPoolsRemoveInstanceRequest

-- | Creates a value of <a>TargetPoolsRemoveInstanceRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tprirInstances</a></li>
--   </ul>
targetPoolsRemoveInstanceRequest :: TargetPoolsRemoveInstanceRequest

-- | URLs of the instances to be removed from target pool.
tprirInstances :: Lens' TargetPoolsRemoveInstanceRequest [InstanceReference]
data TargetInstancesScopedListWarningDataItem

-- | Creates a value of <a>TargetInstancesScopedListWarningDataItem</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tislwdiValue</a></li>
--   <li><a>tislwdiKey</a></li>
--   </ul>
targetInstancesScopedListWarningDataItem :: TargetInstancesScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
tislwdiValue :: Lens' TargetInstancesScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
tislwdiKey :: Lens' TargetInstancesScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> An informational warning that appears when the
--   machine types list is empty.</li>
--   </ul>
--   
--   <i>See:</i> <a>machineTypesScopedListWarning</a> smart constructor.
data MachineTypesScopedListWarning

-- | Creates a value of <a>MachineTypesScopedListWarning</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mtslwData</a></li>
--   <li><a>mtslwCode</a></li>
--   <li><a>mtslwMessage</a></li>
--   </ul>
machineTypesScopedListWarning :: MachineTypesScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
mtslwData :: Lens' MachineTypesScopedListWarning [MachineTypesScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
mtslwCode :: Lens' MachineTypesScopedListWarning (Maybe MachineTypesScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
mtslwMessage :: Lens' MachineTypesScopedListWarning (Maybe Text)

-- | A TargetInstance resource. This resource defines an endpoint instance
--   that terminates traffic of certain protocols.
--   
--   <i>See:</i> <a>targetInstance</a> smart constructor.
data TargetInstance

-- | Creates a value of <a>TargetInstance</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tiKind</a></li>
--   <li><a>tiNATPolicy</a></li>
--   <li><a>tiZone</a></li>
--   <li><a>tiSelfLink</a></li>
--   <li><a>tiName</a></li>
--   <li><a>tiCreationTimestamp</a></li>
--   <li><a>tiId</a></li>
--   <li><a>tiDescription</a></li>
--   <li><a>tiInstance</a></li>
--   </ul>
targetInstance :: TargetInstance

-- | <ul>
--   <li><i>Output Only</i> The type of the resource. Always
--   compute#targetInstance for target instances.</li>
--   </ul>
tiKind :: Lens' TargetInstance Text

-- | NAT option controlling how IPs are NAT'ed to the instance. Currently
--   only NO_NAT (default value) is supported.
tiNATPolicy :: Lens' TargetInstance (Maybe TargetInstanceNATPolicy)

-- | <ul>
--   <li><i>Output Only</i> URL of the zone where the target instance
--   resides.</li>
--   </ul>
tiZone :: Lens' TargetInstance (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
tiSelfLink :: Lens' TargetInstance (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
tiName :: Lens' TargetInstance (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
tiCreationTimestamp :: Lens' TargetInstance (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
tiId :: Lens' TargetInstance (Maybe Word64)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
tiDescription :: Lens' TargetInstance (Maybe Text)

-- | A URL to the virtual machine instance that handles traffic for this
--   target instance. When creating a target instance, you can provide the
--   fully-qualified URL or a valid partial URL to the desired virtual
--   machine. For example, the following are all valid URLs: -
--   https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance
--   - projects/project/zones/zone/instances/instance -
--   zones/zone/instances/instance
tiInstance :: Lens' TargetInstance (Maybe Text)
data TargetPoolInstanceHealth

-- | Creates a value of <a>TargetPoolInstanceHealth</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpihKind</a></li>
--   <li><a>tpihHealthStatus</a></li>
--   </ul>
targetPoolInstanceHealth :: TargetPoolInstanceHealth

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#targetPoolInstanceHealth when checking the health of an
--   instance.</li>
--   </ul>
tpihKind :: Lens' TargetPoolInstanceHealth Text
tpihHealthStatus :: Lens' TargetPoolInstanceHealth [HealthStatus]

-- | <ul>
--   <li><i>Output Only</i> An indicator whether storageBytes is in a
--   stable state or it is being adjusted as a result of shared storage
--   reallocation. This status can either be UPDATING, meaning the size of
--   the snapshot is being updated, or UP_TO_DATE, meaning the size of the
--   snapshot is up-to-date.</li>
--   </ul>
data SnapshotStorageBytesStatus

-- | <pre>
--   UPDATING
--   </pre>
Updating :: SnapshotStorageBytesStatus

-- | <pre>
--   UP_TO_DATE
--   </pre>
UpToDate :: SnapshotStorageBytesStatus
data InstanceGroupManagersListManagedInstancesResponse

-- | Creates a value of
--   <a>InstanceGroupManagersListManagedInstancesResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmlmirManagedInstances</a></li>
--   </ul>
instanceGroupManagersListManagedInstancesResponse :: InstanceGroupManagersListManagedInstancesResponse

-- | <ul>
--   <li><i>Output Only</i> The list of instances in the managed instance
--   group.</li>
--   </ul>
igmlmirManagedInstances :: Lens' InstanceGroupManagersListManagedInstancesResponse [ManagedInstance]

-- | <i>See:</i> <a>instanceProperties</a> smart constructor.
data InstanceProperties

-- | Creates a value of <a>InstanceProperties</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ipServiceAccounts</a></li>
--   <li><a>ipNetworkInterfaces</a></li>
--   <li><a>ipMachineType</a></li>
--   <li><a>ipMetadata</a></li>
--   <li><a>ipScheduling</a></li>
--   <li><a>ipDisks</a></li>
--   <li><a>ipCanIPForward</a></li>
--   <li><a>ipDescription</a></li>
--   <li><a>ipTags</a></li>
--   </ul>
instanceProperties :: InstanceProperties

-- | A list of service accounts with specified scopes. Access tokens for
--   these service accounts are available to the instances that are created
--   from this template. Use metadata queries to obtain the access tokens
--   for these instances.
ipServiceAccounts :: Lens' InstanceProperties [ServiceAccount]

-- | An array of network access configurations for this interface.
ipNetworkInterfaces :: Lens' InstanceProperties [NetworkInterface]

-- | The machine type to use for instances that are created from this
--   template.
ipMachineType :: Lens' InstanceProperties (Maybe Text)

-- | The metadata key/value pairs to assign to instances that are created
--   from this template. These pairs can consist of custom metadata or
--   predefined keys. See Project and instance metadata for more
--   information.
ipMetadata :: Lens' InstanceProperties (Maybe Metadata)

-- | Specifies the scheduling options for the instances that are created
--   from this template.
ipScheduling :: Lens' InstanceProperties (Maybe Scheduling)

-- | An array of disks that are associated with the instances that are
--   created from this template.
ipDisks :: Lens' InstanceProperties [AttachedDisk]

-- | Enables instances created based on this template to send packets with
--   source IP addresses other than their own and receive packets with
--   destination IP addresses other than their own. If these instances will
--   be used as an IP gateway or it will be set as the next-hop in a Route
--   resource, specify true. If unsure, leave this set to false. See the
--   Enable IP forwarding for instances documentation for more information.
ipCanIPForward :: Lens' InstanceProperties (Maybe Bool)

-- | An optional text description for the instances that are created from
--   this instance template.
ipDescription :: Lens' InstanceProperties (Maybe Text)

-- | A list of tags to apply to the instances that are created from this
--   template. The tags identify valid sources or targets for network
--   firewalls. The setTags method can modify this list of tags. Each tag
--   within the list must comply with RFC1035.
ipTags :: Lens' InstanceProperties (Maybe Tags)

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of disk types when the list is empty.</li>
--   </ul>
--   
--   <i>See:</i> <a>diskTypesScopedListWarning</a> smart constructor.
data DiskTypesScopedListWarning

-- | Creates a value of <a>DiskTypesScopedListWarning</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtslwData</a></li>
--   <li><a>dtslwCode</a></li>
--   <li><a>dtslwMessage</a></li>
--   </ul>
diskTypesScopedListWarning :: DiskTypesScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
dtslwData :: Lens' DiskTypesScopedListWarning [DiskTypesScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
dtslwCode :: Lens' DiskTypesScopedListWarning (Maybe DiskTypesScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
dtslwMessage :: Lens' DiskTypesScopedListWarning (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data AddressesScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
ASLWCCleanupFailed :: AddressesScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
ASLWCDeprecatedResourceUsed :: AddressesScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
ASLWCDiskSizeLargerThanImageSize :: AddressesScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
ASLWCFieldValueOverriden :: AddressesScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
ASLWCInjectedKernelsDeprecated :: AddressesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
ASLWCNextHopAddressNotAssigned :: AddressesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
ASLWCNextHopCannotIPForward :: AddressesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
ASLWCNextHopInstanceNotFound :: AddressesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
ASLWCNextHopInstanceNotOnNetwork :: AddressesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
ASLWCNextHopNotRunning :: AddressesScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
ASLWCNotCriticalError :: AddressesScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
ASLWCNoResultsOnPage :: AddressesScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
ASLWCRequiredTosAgreement :: AddressesScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
ASLWCResourceNotDeleted :: AddressesScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
ASLWCSingleInstancePropertyTemplate :: AddressesScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
ASLWCUnreachable :: AddressesScopedListWarningCode

-- | <ul>
--   <li><i>Input Only</i> Specifies the parameters for a new disk that
--   will be created alongside the new instance. Use initialization
--   parameters to create boot disks or local SSDs attached to the new
--   instance. This property is mutually exclusive with the source
--   property; you can only define one or the other, but not both.</li>
--   </ul>
--   
--   <i>See:</i> <a>attachedDiskInitializeParams</a> smart constructor.
data AttachedDiskInitializeParams

-- | Creates a value of <a>AttachedDiskInitializeParams</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>adipSourceImage</a></li>
--   <li><a>adipDiskSizeGb</a></li>
--   <li><a>adipDiskName</a></li>
--   <li><a>adipSourceImageEncryptionKey</a></li>
--   <li><a>adipDiskType</a></li>
--   </ul>
attachedDiskInitializeParams :: AttachedDiskInitializeParams

-- | The source image to create this disk. When creating a new instance,
--   one of initializeParams.sourceImage or disks.source is required. To
--   create a disk with one of the public operating system images, specify
--   the image by its family name. For example, specify family/debian-8 to
--   use the latest Debian 8 image:
--   projects/debian-cloud/global/images/family/debian-8 Alternatively, use
--   a specific version of a public operating system image:
--   projects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD To
--   create a disk with a private image that you created, specify the image
--   name in the following format: global/images/my-private-image You can
--   also specify a private image by its image family, which returns the
--   latest version of the image in that family. Replace the image name
--   with family/family-name: global/images/family/my-private-family If the
--   source image is deleted later, this field will not be set.
adipSourceImage :: Lens' AttachedDiskInitializeParams (Maybe Text)

-- | Specifies the size of the disk in base-2 GB.
adipDiskSizeGb :: Lens' AttachedDiskInitializeParams (Maybe Int64)

-- | Specifies the disk name. If not specified, the default is to use the
--   name of the instance.
adipDiskName :: Lens' AttachedDiskInitializeParams (Maybe Text)

-- | The customer-supplied encryption key of the source image. Required if
--   the source image is protected by a customer-supplied encryption key.
--   Instance templates do not store customer-supplied encryption keys, so
--   you cannot create disks for instances in a managed instance group if
--   the source images are encrypted with your own keys.
adipSourceImageEncryptionKey :: Lens' AttachedDiskInitializeParams (Maybe CustomerEncryptionKey)

-- | Specifies the disk type to use to create the instance. If not
--   specified, the default is pd-standard, specified using the full URL.
--   For example:
--   https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/pd-standard
--   Other values include pd-ssd and local-ssd. If you define this field,
--   you can provide either the full or partial URL. For example, the
--   following are valid values: -
--   https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/diskType
--   - projects/project/zones/zone/diskTypes/diskType -
--   zones/zone/diskTypes/diskType Note that for InstanceTemplate, this is
--   the name of the disk type, not URL.
adipDiskType :: Lens' AttachedDiskInitializeParams (Maybe Text)
data AddressesScopedListWarningDataItem

-- | Creates a value of <a>AddressesScopedListWarningDataItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aslwdiValue</a></li>
--   <li><a>aslwdiKey</a></li>
--   </ul>
addressesScopedListWarningDataItem :: AddressesScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
aslwdiValue :: Lens' AddressesScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
aslwdiKey :: Lens' AddressesScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The status of the image. An image can be used
--   to create other resources, such as instances, only after the image has
--   been successfully created and the status is set to READY. Possible
--   values are FAILED, PENDING, or READY.</li>
--   </ul>
data ImageStatus

-- | <pre>
--   FAILED
--   </pre>
ISFailed :: ImageStatus

-- | <pre>
--   PENDING
--   </pre>
ISPending :: ImageStatus

-- | <pre>
--   READY
--   </pre>
ISReady :: ImageStatus

-- | A network interface resource attached to an instance.
--   
--   <i>See:</i> <a>networkInterface</a> smart constructor.
data NetworkInterface

-- | Creates a value of <a>NetworkInterface</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>niKind</a></li>
--   <li><a>niNetwork</a></li>
--   <li><a>niName</a></li>
--   <li><a>niNetworkIP</a></li>
--   <li><a>niSubnetwork</a></li>
--   <li><a>niAccessConfigs</a></li>
--   </ul>
networkInterface :: NetworkInterface

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always
--   compute#networkInterface for network interfaces.</li>
--   </ul>
niKind :: Lens' NetworkInterface Text

-- | URL of the network resource for this instance. This is required for
--   creating an instance but optional when creating a firewall rule. If
--   not specified when creating a firewall rule, the default network is
--   used: global/networks/default If you specify this property, you can
--   specify the network as a full or partial URL. For example, the
--   following are all valid URLs: -
--   https://www.googleapis.com/compute/v1/projects/project/global/networks/network
--   - projects/project/global/networks/network - global/networks/default
niNetwork :: Lens' NetworkInterface (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The name of the network interface, generated by
--   the server. For network devices, these are eth0, eth1, etc.</li>
--   </ul>
niName :: Lens' NetworkInterface (Maybe Text)

-- | An IPv4 internal network address to assign to the instance for this
--   network interface. If not specified by the user, an unused internal IP
--   is assigned by the system.
niNetworkIP :: Lens' NetworkInterface (Maybe Text)

-- | The URL of the Subnetwork resource for this instance. If the network
--   resource is in legacy mode, do not provide this property. If the
--   network is in auto subnet mode, providing the subnetwork is optional.
--   If the network is in custom subnet mode, then this field should be
--   specified. If you specify this property, you can specify the
--   subnetwork as a full or partial URL. For example, the following are
--   all valid URLs: -
--   https://www.googleapis.com/compute/v1/projects/project/regions/region/subnetworks/subnetwork
--   - regions/region/subnetworks/subnetwork
niSubnetwork :: Lens' NetworkInterface (Maybe Text)

-- | An array of configurations for this interface. Currently, only one
--   access config, ONE_TO_ONE_NAT, is supported. If there are no
--   accessConfigs specified, then this instance will have no external
--   internet access.
niAccessConfigs :: Lens' NetworkInterface [AccessConfig]
data TargetPoolsRemoveHealthCheckRequest

-- | Creates a value of <a>TargetPoolsRemoveHealthCheckRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tprhcrHealthChecks</a></li>
--   </ul>
targetPoolsRemoveHealthCheckRequest :: TargetPoolsRemoveHealthCheckRequest

-- | Health check URL to be removed. This can be a full or valid partial
--   URL. For example, the following are valid URLs: -
--   https://www.googleapis.com/compute/beta/projects/project/global/httpHealthChecks/health-check
--   - projects/project/global/httpHealthChecks/health-check -
--   global/httpHealthChecks/health-check
tprhcrHealthChecks :: Lens' TargetPoolsRemoveHealthCheckRequest [HealthCheckReference]
data RegionInstanceGroupManagersSetTargetPoolsRequest

-- | Creates a value of
--   <a>RegionInstanceGroupManagersSetTargetPoolsRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmstprFingerprint</a></li>
--   <li><a>rigmstprTargetPools</a></li>
--   </ul>
regionInstanceGroupManagersSetTargetPoolsRequest :: RegionInstanceGroupManagersSetTargetPoolsRequest

-- | Fingerprint of the target pools information, which is a hash of the
--   contents. This field is used for optimistic locking when you update
--   the target pool entries. This field is optional.
rigmstprFingerprint :: Lens' RegionInstanceGroupManagersSetTargetPoolsRequest (Maybe ByteString)

-- | The URL of all TargetPool resources to which instances in the
--   instanceGroup field are added. The target pools automatically apply to
--   all of the instances in the managed instance group.
rigmstprTargetPools :: Lens' RegionInstanceGroupManagersSetTargetPoolsRequest [Text]

-- | Contains a list of TargetSslProxy resources.
--   
--   <i>See:</i> <a>targetSSLProxyList</a> smart constructor.
data TargetSSLProxyList

-- | Creates a value of <a>TargetSSLProxyList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tsplNextPageToken</a></li>
--   <li><a>tsplKind</a></li>
--   <li><a>tsplItems</a></li>
--   <li><a>tsplSelfLink</a></li>
--   <li><a>tsplId</a></li>
--   </ul>
targetSSLProxyList :: TargetSSLProxyList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
tsplNextPageToken :: Lens' TargetSSLProxyList (Maybe Text)

-- | Type of resource.
tsplKind :: Lens' TargetSSLProxyList Text

-- | A list of TargetSslProxy resources.
tsplItems :: Lens' TargetSSLProxyList [TargetSSLProxy]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
tsplSelfLink :: Lens' TargetSSLProxyList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
tsplId :: Lens' TargetSSLProxyList (Maybe Text)
data CustomerEncryptionKeyProtectedDisk

-- | Creates a value of <a>CustomerEncryptionKeyProtectedDisk</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cekpdDiskEncryptionKey</a></li>
--   <li><a>cekpdSource</a></li>
--   </ul>
customerEncryptionKeyProtectedDisk :: CustomerEncryptionKeyProtectedDisk

-- | Decrypts data associated with the disk with a customer-supplied
--   encryption key.
cekpdDiskEncryptionKey :: Lens' CustomerEncryptionKeyProtectedDisk (Maybe CustomerEncryptionKey)

-- | Specifies a valid partial or full URL to an existing Persistent Disk
--   resource. This field is only applicable for persistent disks.
cekpdSource :: Lens' CustomerEncryptionKeyProtectedDisk (Maybe Text)

-- | Health state of the instance.
data HealthStatusHealthState

-- | <pre>
--   HEALTHY
--   </pre>
Healthy :: HealthStatusHealthState

-- | <pre>
--   UNHEALTHY
--   </pre>
Unhealthy :: HealthStatusHealthState

-- | A list of instance templates.
--   
--   <i>See:</i> <a>instanceTemplateList</a> smart constructor.
data InstanceTemplateList

-- | Creates a value of <a>InstanceTemplateList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>itlNextPageToken</a></li>
--   <li><a>itlKind</a></li>
--   <li><a>itlItems</a></li>
--   <li><a>itlSelfLink</a></li>
--   <li><a>itlId</a></li>
--   </ul>
instanceTemplateList :: InstanceTemplateList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
itlNextPageToken :: Lens' InstanceTemplateList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The resource type, which is always
--   compute#instanceTemplatesListResponse for instance template
--   lists.</li>
--   </ul>
itlKind :: Lens' InstanceTemplateList Text

-- | <ul>
--   <li><i>Output Only</i> list of InstanceTemplate resources.</li>
--   </ul>
itlItems :: Lens' InstanceTemplateList [InstanceTemplate]

-- | <ul>
--   <li><i>Output Only</i> The URL for this instance template list. The
--   server defines this URL.</li>
--   </ul>
itlSelfLink :: Lens' InstanceTemplateList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A unique identifier for this instance template.
--   The server defines this identifier.</li>
--   </ul>
itlId :: Lens' InstanceTemplateList (Maybe Text)

-- | Contains a list of Route resources.
--   
--   <i>See:</i> <a>routeList</a> smart constructor.
data RouteList

-- | Creates a value of <a>RouteList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rlNextPageToken</a></li>
--   <li><a>rlKind</a></li>
--   <li><a>rlItems</a></li>
--   <li><a>rlSelfLink</a></li>
--   <li><a>rlId</a></li>
--   </ul>
routeList :: RouteList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
rlNextPageToken :: Lens' RouteList (Maybe Text)

-- | Type of resource.
rlKind :: Lens' RouteList Text

-- | <ul>
--   <li><i>Output Only</i> A list of Route resources.</li>
--   </ul>
rlItems :: Lens' RouteList [Route]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
rlSelfLink :: Lens' RouteList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource. Defined by
--   the server.</li>
--   </ul>
rlId :: Lens' RouteList (Maybe Text)

-- | The deprecation state of this resource. This can be DEPRECATED,
--   OBSOLETE, or DELETED. Operations which create a new resource using a
--   DEPRECATED resource will return successfully, but with a warning
--   indicating the deprecated resource and recommending its replacement.
--   Operations which use OBSOLETE or DELETED resources will be rejected
--   and result in an error.
data DeprecationStatusState

-- | <pre>
--   DELETED
--   </pre>
Deleted :: DeprecationStatusState

-- | <pre>
--   DEPRECATED
--   </pre>
Deprecated :: DeprecationStatusState

-- | <pre>
--   OBSOLETE
--   </pre>
Obsolete :: DeprecationStatusState

-- | Router resource.
--   
--   <i>See:</i> <a>router</a> smart constructor.
data Router

-- | Creates a value of <a>Router</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rouBGPPeers</a></li>
--   <li><a>rouBGP</a></li>
--   <li><a>rouKind</a></li>
--   <li><a>rouNetwork</a></li>
--   <li><a>rouInterfaces</a></li>
--   <li><a>rouSelfLink</a></li>
--   <li><a>rouName</a></li>
--   <li><a>rouCreationTimestamp</a></li>
--   <li><a>rouId</a></li>
--   <li><a>rouRegion</a></li>
--   <li><a>rouDescription</a></li>
--   </ul>
router :: Router

-- | BGP information that needs to be configured into the routing stack to
--   establish the BGP peering. It must specify peer ASN and either
--   interface name, IP, or peer IP. Please refer to RFC4273.
rouBGPPeers :: Lens' Router [RouterBGPPeer]

-- | BGP information specific to this router.
rouBGP :: Lens' Router (Maybe RouterBGP)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#router for
--   routers.</li>
--   </ul>
rouKind :: Lens' Router Text

-- | URI of the network to which this router belongs.
rouNetwork :: Lens' Router (Maybe Text)

-- | Router interfaces. Each interface requires either one linked resource
--   (e.g. linkedVpnTunnel), or IP address and IP address range (e.g.
--   ipRange), or both.
rouInterfaces :: Lens' Router [RouterInterface]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
rouSelfLink :: Lens' Router (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
rouName :: Lens' Router (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
rouCreationTimestamp :: Lens' Router (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
rouId :: Lens' Router (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> URI of the region where the router
--   resides.</li>
--   </ul>
rouRegion :: Lens' Router (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
rouDescription :: Lens' Router (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data RoutersScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
RSLWCCleanupFailed :: RoutersScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
RSLWCDeprecatedResourceUsed :: RoutersScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
RSLWCDiskSizeLargerThanImageSize :: RoutersScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
RSLWCFieldValueOverriden :: RoutersScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
RSLWCInjectedKernelsDeprecated :: RoutersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
RSLWCNextHopAddressNotAssigned :: RoutersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
RSLWCNextHopCannotIPForward :: RoutersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
RSLWCNextHopInstanceNotFound :: RoutersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
RSLWCNextHopInstanceNotOnNetwork :: RoutersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
RSLWCNextHopNotRunning :: RoutersScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
RSLWCNotCriticalError :: RoutersScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
RSLWCNoResultsOnPage :: RoutersScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
RSLWCRequiredTosAgreement :: RoutersScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
RSLWCResourceNotDeleted :: RoutersScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
RSLWCSingleInstancePropertyTemplate :: RoutersScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
RSLWCUnreachable :: RoutersScopedListWarningCode
data RoutersScopedListWarningDataItem

-- | Creates a value of <a>RoutersScopedListWarningDataItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rslwdiValue</a></li>
--   <li><a>rslwdiKey</a></li>
--   </ul>
routersScopedListWarningDataItem :: RoutersScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
rslwdiValue :: Lens' RoutersScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
rslwdiKey :: Lens' RoutersScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The current action that the managed instance
--   group has scheduled for the instance. Possible values: - NONE The
--   instance is running, and the managed instance group does not have any
--   scheduled actions for this instance. - CREATING The managed instance
--   group is creating this instance. If the group fails to create this
--   instance, it will try again until it is successful. -
--   CREATING_WITHOUT_RETRIES The managed instance group is attempting to
--   create this instance only once. If the group fails to create this
--   instance, it does not try again and the group's targetSize value is
--   decreased instead. - RECREATING The managed instance group is
--   recreating this instance. - DELETING The managed instance group is
--   permanently deleting this instance. - ABANDONING The managed instance
--   group is abandoning this instance. The instance will be removed from
--   the instance group and from any target pools that are associated with
--   this group. - RESTARTING The managed instance group is restarting the
--   instance. - REFRESHING The managed instance group is applying
--   configuration changes to the instance without stopping it. For
--   example, the group can update the target pool list for an instance
--   without stopping that instance.</li>
--   </ul>
data ManagedInstanceCurrentAction

-- | <pre>
--   ABANDONING
--   </pre>
MICAAbandoning :: ManagedInstanceCurrentAction

-- | <pre>
--   CREATING
--   </pre>
MICACreating :: ManagedInstanceCurrentAction

-- | <pre>
--   CREATING_WITHOUT_RETRIES
--   </pre>
MICACreatingWithoutRetries :: ManagedInstanceCurrentAction

-- | <pre>
--   DELETING
--   </pre>
MICADeleting :: ManagedInstanceCurrentAction

-- | <pre>
--   NONE
--   </pre>
MICANone :: ManagedInstanceCurrentAction

-- | <pre>
--   RECREATING
--   </pre>
MICARecreating :: ManagedInstanceCurrentAction

-- | <pre>
--   REFRESHING
--   </pre>
MICARefreshing :: ManagedInstanceCurrentAction

-- | <pre>
--   RESTARTING
--   </pre>
MICARestarting :: ManagedInstanceCurrentAction

-- | Contains a list of TargetVpnGateway resources.
--   
--   <i>See:</i> <a>targetVPNGatewayList</a> smart constructor.
data TargetVPNGatewayList

-- | Creates a value of <a>TargetVPNGatewayList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tvglNextPageToken</a></li>
--   <li><a>tvglKind</a></li>
--   <li><a>tvglItems</a></li>
--   <li><a>tvglSelfLink</a></li>
--   <li><a>tvglId</a></li>
--   </ul>
targetVPNGatewayList :: TargetVPNGatewayList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
tvglNextPageToken :: Lens' TargetVPNGatewayList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#targetVpnGateway for target VPN gateways.</li>
--   </ul>
tvglKind :: Lens' TargetVPNGatewayList Text

-- | <ul>
--   <li><i>Output Only</i> A list of TargetVpnGateway resources.</li>
--   </ul>
tvglItems :: Lens' TargetVPNGatewayList [TargetVPNGateway]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
tvglSelfLink :: Lens' TargetVPNGatewayList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
tvglId :: Lens' TargetVPNGatewayList (Maybe Text)

-- | NAT option controlling how IPs are NAT'ed to the instance. Currently
--   only NO_NAT (default value) is supported.
data TargetInstanceNATPolicy

-- | <pre>
--   NO_NAT
--   </pre>
NoNAT :: TargetInstanceNATPolicy

-- | Contains a list of SslCertificate resources.
--   
--   <i>See:</i> <a>sslCertificateList</a> smart constructor.
data SSLCertificateList

-- | Creates a value of <a>SSLCertificateList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sclNextPageToken</a></li>
--   <li><a>sclKind</a></li>
--   <li><a>sclItems</a></li>
--   <li><a>sclSelfLink</a></li>
--   <li><a>sclId</a></li>
--   </ul>
sslCertificateList :: SSLCertificateList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
sclNextPageToken :: Lens' SSLCertificateList (Maybe Text)

-- | Type of resource.
sclKind :: Lens' SSLCertificateList Text

-- | A list of SslCertificate resources.
sclItems :: Lens' SSLCertificateList [SSLCertificate]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
sclSelfLink :: Lens' SSLCertificateList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource. Defined by
--   the server.</li>
--   </ul>
sclId :: Lens' SSLCertificateList (Maybe Text)
data FirewallAllowedItem

-- | Creates a value of <a>FirewallAllowedItem</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>faiIPProtocol</a></li>
--   <li><a>faiPorts</a></li>
--   </ul>
firewallAllowedItem :: FirewallAllowedItem

-- | The IP protocol to which this rule applies. The protocol type is
--   required when creating a firewall rule. This value can either be one
--   of the following well known protocol strings (tcp, udp, icmp, esp, ah,
--   sctp), or the IP protocol number.
faiIPProtocol :: Lens' FirewallAllowedItem (Maybe Text)

-- | An optional list of ports to which this rule applies. This field is
--   only applicable for UDP or TCP protocol. Each entry must be either an
--   integer or a range. If not specified, this rule applies to connections
--   through any port. Example inputs include: ["22"], ["80","443"], and
--   ["12345-12349"].
faiPorts :: Lens' FirewallAllowedItem [Text]

-- | Contains a list of BackendServicesScopedList.
--   
--   <i>See:</i> <a>backendServiceAggregatedList</a> smart constructor.
data BackendServiceAggregatedList

-- | Creates a value of <a>BackendServiceAggregatedList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bsalNextPageToken</a></li>
--   <li><a>bsalKind</a></li>
--   <li><a>bsalItems</a></li>
--   <li><a>bsalSelfLink</a></li>
--   <li><a>bsalId</a></li>
--   </ul>
backendServiceAggregatedList :: BackendServiceAggregatedList

-- | <ul>
--   <li><i>Output Only</i> A token used to continue a truncated list
--   request.</li>
--   </ul>
bsalNextPageToken :: Lens' BackendServiceAggregatedList (Maybe Text)

-- | Type of resource.
bsalKind :: Lens' BackendServiceAggregatedList Text

-- | A map of scoped BackendService lists.
bsalItems :: Lens' BackendServiceAggregatedList (Maybe BackendServiceAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
bsalSelfLink :: Lens' BackendServiceAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource; defined by
--   the server.</li>
--   </ul>
bsalId :: Lens' BackendServiceAggregatedList (Maybe Text)

-- | Represents a Network resource. Read Networks and Firewalls for more
--   information.
--   
--   <i>See:</i> <a>network</a> smart constructor.
data Network

-- | Creates a value of <a>Network</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nAutoCreateSubnetworks</a></li>
--   <li><a>nKind</a></li>
--   <li><a>nSubnetworks</a></li>
--   <li><a>nIPv4Range</a></li>
--   <li><a>nSelfLink</a></li>
--   <li><a>nName</a></li>
--   <li><a>nCreationTimestamp</a></li>
--   <li><a>nId</a></li>
--   <li><a>nGatewayIPv4</a></li>
--   <li><a>nDescription</a></li>
--   </ul>
network :: Network

-- | When set to true, the network is created in "auto subnet mode". When
--   set to false, the network is in "custom subnet mode". In "auto subnet
--   mode", a newly created network is assigned the default CIDR of
--   10.128.0.0/9 and it automatically creates one subnetwork per region.
nAutoCreateSubnetworks :: Lens' Network (Maybe Bool)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#network
--   for networks.</li>
--   </ul>
nKind :: Lens' Network Text

-- | <ul>
--   <li><i>Output Only</i> Server-defined fully-qualified URLs for all
--   subnetworks in this network.</li>
--   </ul>
nSubnetworks :: Lens' Network [Text]

-- | The range of internal addresses that are legal on this network. This
--   range is a CIDR specification, for example: 192.168.0.0/16. Provided
--   by the client when the network is created.
nIPv4Range :: Lens' Network (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
nSelfLink :: Lens' Network (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
nName :: Lens' Network (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
nCreationTimestamp :: Lens' Network (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
nId :: Lens' Network (Maybe Word64)

-- | A gateway address for default routing to other networks. This value is
--   read only and is selected by the Google Compute Engine, typically as
--   the first usable address in the IPv4Range.
nGatewayIPv4 :: Lens' Network (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
nDescription :: Lens' Network (Maybe Text)

-- | Informational warning which replaces the list of routers when the list
--   is empty.
--   
--   <i>See:</i> <a>routersScopedListWarning</a> smart constructor.
data RoutersScopedListWarning

-- | Creates a value of <a>RoutersScopedListWarning</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rslwData</a></li>
--   <li><a>rslwCode</a></li>
--   <li><a>rslwMessage</a></li>
--   </ul>
routersScopedListWarning :: RoutersScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
rslwData :: Lens' RoutersScopedListWarning [RoutersScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
rslwCode :: Lens' RoutersScopedListWarning (Maybe RoutersScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
rslwMessage :: Lens' RoutersScopedListWarning (Maybe Text)

-- | The type of configuration. The default and only option is
--   ONE_TO_ONE_NAT.
data AccessConfigType

-- | <pre>
--   ONE_TO_ONE_NAT
--   </pre>
OneToOneNAT :: AccessConfigType

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of addresses when the list is empty.</li>
--   </ul>
--   
--   <i>See:</i> <a>addressesScopedListWarning</a> smart constructor.
data AddressesScopedListWarning

-- | Creates a value of <a>AddressesScopedListWarning</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aData</a></li>
--   <li><a>aCode</a></li>
--   <li><a>aMessage</a></li>
--   </ul>
addressesScopedListWarning :: AddressesScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
aData :: Lens' AddressesScopedListWarning [AddressesScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
aCode :: Lens' AddressesScopedListWarning (Maybe AddressesScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
aMessage :: Lens' AddressesScopedListWarning (Maybe Text)

-- | The parameters of the raw disk image.
--   
--   <i>See:</i> <a>imageRawDisk</a> smart constructor.
data ImageRawDisk

-- | Creates a value of <a>ImageRawDisk</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>irdContainerType</a></li>
--   <li><a>irdSource</a></li>
--   <li><a>irdSha1Checksum</a></li>
--   </ul>
imageRawDisk :: ImageRawDisk

-- | The format used to encode and transmit the block device, which should
--   be TAR. This is just a container and transmission format and not a
--   runtime format. Provided by the client when the disk image is created.
irdContainerType :: Lens' ImageRawDisk (Maybe ImageRawDiskContainerType)

-- | The full Google Cloud Storage URL where the disk image is stored. You
--   must provide either this property or the sourceDisk property but not
--   both.
irdSource :: Lens' ImageRawDisk (Maybe Text)

-- | An optional SHA1 checksum of the disk image before unpackaging;
--   provided by the client when the disk image is created.
irdSha1Checksum :: Lens' ImageRawDisk (Maybe Text)
data InstanceAggregatedList

-- | Creates a value of <a>InstanceAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ialNextPageToken</a></li>
--   <li><a>ialKind</a></li>
--   <li><a>ialItems</a></li>
--   <li><a>ialSelfLink</a></li>
--   <li><a>ialId</a></li>
--   </ul>
instanceAggregatedList :: InstanceAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
ialNextPageToken :: Lens' InstanceAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#instanceAggregatedList for aggregated lists of Instance
--   resources.</li>
--   </ul>
ialKind :: Lens' InstanceAggregatedList Text

-- | <ul>
--   <li><i>Output Only</i> A map of scoped instance lists.</li>
--   </ul>
ialItems :: Lens' InstanceAggregatedList (Maybe InstanceAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
ialSelfLink :: Lens' InstanceAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
ialId :: Lens' InstanceAggregatedList (Maybe Text)
data SSLHealthCheck

-- | Creates a value of <a>SSLHealthCheck</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>shcResponse</a></li>
--   <li><a>shcProxyHeader</a></li>
--   <li><a>shcPortName</a></li>
--   <li><a>shcPort</a></li>
--   <li><a>shcRequest</a></li>
--   </ul>
sslHealthCheck :: SSLHealthCheck

-- | The bytes to match against the beginning of the response data. If left
--   empty (the default value), any response will indicate health. The
--   response data can only be ASCII.
shcResponse :: Lens' SSLHealthCheck (Maybe Text)

-- | Specifies the type of proxy header to append before sending data to
--   the backend, either NONE or PROXY_V1. The default is NONE.
shcProxyHeader :: Lens' SSLHealthCheck (Maybe SSLHealthCheckProxyHeader)

-- | Port name as defined in InstanceGroupname. If both port and port_name
--   are defined, port takes precedence.
shcPortName :: Lens' SSLHealthCheck (Maybe Text)

-- | The TCP port number for the health check request. The default value is
--   443.
shcPort :: Lens' SSLHealthCheck (Maybe Int32)

-- | The application data to send once the SSL connection has been
--   established (default value is empty). If both request and response are
--   empty, the connection establishment alone will indicate health. The
--   request data can only be ASCII.
shcRequest :: Lens' SSLHealthCheck (Maybe Text)

-- | A reserved address resource.
--   
--   <i>See:</i> <a>address</a> smart constructor.
data Address

-- | Creates a value of <a>Address</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aStatus</a></li>
--   <li><a>aUsers</a></li>
--   <li><a>aKind</a></li>
--   <li><a>aAddress</a></li>
--   <li><a>aSelfLink</a></li>
--   <li><a>aName</a></li>
--   <li><a>aCreationTimestamp</a></li>
--   <li><a>aId</a></li>
--   <li><a>aRegion</a></li>
--   <li><a>aDescription</a></li>
--   </ul>
address :: Address

-- | <ul>
--   <li><i>Output Only</i> The status of the address, which can be either
--   IN_USE or RESERVED. An address that is RESERVED is currently reserved
--   and available to use. An IN_USE address is currently being used by
--   another resource and is not available.</li>
--   </ul>
aStatus :: Lens' Address (Maybe AddressStatus)

-- | <ul>
--   <li><i>Output Only</i> The URLs of the resources that are using this
--   address.</li>
--   </ul>
aUsers :: Lens' Address [Text]

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#address
--   for addresses.</li>
--   </ul>
aKind :: Lens' Address Text

-- | The static external IP address represented by this resource. Only IPv4
--   is supported.
aAddress :: Lens' Address (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
aSelfLink :: Lens' Address (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
aName :: Lens' Address (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
aCreationTimestamp :: Lens' Address (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
aId :: Lens' Address (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> URL of the region where the regional address
--   resides. This field is not applicable to global addresses.</li>
--   </ul>
aRegion :: Lens' Address (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
aDescription :: Lens' Address (Maybe Text)

-- | A Zone resource.
--   
--   <i>See:</i> <a>zone</a> smart constructor.
data Zone

-- | Creates a value of <a>Zone</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>zStatus</a></li>
--   <li><a>zKind</a></li>
--   <li><a>zSelfLink</a></li>
--   <li><a>zName</a></li>
--   <li><a>zCreationTimestamp</a></li>
--   <li><a>zId</a></li>
--   <li><a>zRegion</a></li>
--   <li><a>zDescription</a></li>
--   <li><a>zDeprecated</a></li>
--   </ul>
zone :: Zone

-- | <ul>
--   <li><i>Output Only</i> Status of the zone, either UP or DOWN.</li>
--   </ul>
zStatus :: Lens' Zone (Maybe ZoneStatus)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#zone for
--   zones.</li>
--   </ul>
zKind :: Lens' Zone Text

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
zSelfLink :: Lens' Zone (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Name of the resource.</li>
--   </ul>
zName :: Lens' Zone (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
zCreationTimestamp :: Lens' Zone (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
zId :: Lens' Zone (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> Full URL reference to the region which hosts
--   the zone.</li>
--   </ul>
zRegion :: Lens' Zone (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Textual description of the resource.</li>
--   </ul>
zDescription :: Lens' Zone (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The deprecation status associated with this
--   zone.</li>
--   </ul>
zDeprecated :: Lens' Zone (Maybe DeprecationStatus)
data RouterBGP

-- | Creates a value of <a>RouterBGP</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rbASN</a></li>
--   </ul>
routerBGP :: RouterBGP

-- | Local BGP Autonomous System Number (ASN). Must be an RFC6996 private
--   ASN, either 16-bit or 32-bit. The value will be fixed for this router
--   resource. All VPN tunnels that link to this router will have the same
--   local ASN.
rbASN :: Lens' RouterBGP (Maybe Word32)
data BackendServicesScopedList

-- | Creates a value of <a>BackendServicesScopedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bsslWarning</a></li>
--   <li><a>bsslBackendServices</a></li>
--   </ul>
backendServicesScopedList :: BackendServicesScopedList

-- | Informational warning which replaces the list of backend services when
--   the list is empty.
bsslWarning :: Lens' BackendServicesScopedList (Maybe BackendServicesScopedListWarning)

-- | List of BackendServices contained in this scope.
bsslBackendServices :: Lens' BackendServicesScopedList [BackendService]
data InstanceGroupManagersRecreateInstancesRequest

-- | Creates a value of
--   <a>InstanceGroupManagersRecreateInstancesRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmrirInstances</a></li>
--   </ul>
instanceGroupManagersRecreateInstancesRequest :: InstanceGroupManagersRecreateInstancesRequest

-- | The URL for one or more instances to recreate.
igmrirInstances :: Lens' InstanceGroupManagersRecreateInstancesRequest [Text]
data TargetSSLProxiesSetSSLCertificatesRequest

-- | Creates a value of <a>TargetSSLProxiesSetSSLCertificatesRequest</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tspsscrSSLCertificates</a></li>
--   </ul>
targetSSLProxiesSetSSLCertificatesRequest :: TargetSSLProxiesSetSSLCertificatesRequest

-- | New set of URLs to SslCertificate resources to associate with this
--   TargetSslProxy. Currently exactly one ssl certificate must be
--   specified.
tspsscrSSLCertificates :: Lens' TargetSSLProxiesSetSSLCertificatesRequest [Text]
data InstancesScopedList

-- | Creates a value of <a>InstancesScopedList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>islWarning</a></li>
--   <li><a>islInstances</a></li>
--   </ul>
instancesScopedList :: InstancesScopedList

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of instances when the list is empty.</li>
--   </ul>
islWarning :: Lens' InstancesScopedList (Maybe InstancesScopedListWarning)

-- | <ul>
--   <li><i>Output Only</i> List of instances contained in this scope.</li>
--   </ul>
islInstances :: Lens' InstancesScopedList [Instance]
data BackendServiceLoadBalancingScheme

-- | <pre>
--   EXTERNAL
--   </pre>
External :: BackendServiceLoadBalancingScheme

-- | <pre>
--   INTERNAL
--   </pre>
Internal :: BackendServiceLoadBalancingScheme

-- | <pre>
--   INVALID_LOAD_BALANCING_SCHEME
--   </pre>
InvalidLoadBalancingScheme :: BackendServiceLoadBalancingScheme

-- | A full or valid partial URL to a health check. For example, the
--   following are valid URLs: -
--   https://www.googleapis.com/compute/beta/projects/project-id/global/httpHealthChecks/health-check
--   - projects/project-id/global/httpHealthChecks/health-check -
--   global/httpHealthChecks/health-check
--   
--   <i>See:</i> <a>healthCheckReference</a> smart constructor.
data HealthCheckReference

-- | Creates a value of <a>HealthCheckReference</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hcrHealthCheck</a></li>
--   </ul>
healthCheckReference :: HealthCheckReference
hcrHealthCheck :: Lens' HealthCheckReference (Maybe Text)

-- | A map of scoped target instance lists.
--   
--   <i>See:</i> <a>targetInstanceAggregatedListItems</a> smart
--   constructor.
data TargetInstanceAggregatedListItems

-- | Creates a value of <a>TargetInstanceAggregatedListItems</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tialiAddtional</a></li>
--   </ul>
targetInstanceAggregatedListItems :: HashMap Text TargetInstancesScopedList -> TargetInstanceAggregatedListItems

-- | Name of the scope containing this set of target instances.
tialiAddtional :: Lens' TargetInstanceAggregatedListItems (HashMap Text TargetInstancesScopedList)
data InstanceGroupAggregatedList

-- | Creates a value of <a>InstanceGroupAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igalNextPageToken</a></li>
--   <li><a>igalKind</a></li>
--   <li><a>igalItems</a></li>
--   <li><a>igalSelfLink</a></li>
--   <li><a>igalId</a></li>
--   </ul>
instanceGroupAggregatedList :: InstanceGroupAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
igalNextPageToken :: Lens' InstanceGroupAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The resource type, which is always
--   compute#instanceGroupAggregatedList for aggregated lists of instance
--   groups.</li>
--   </ul>
igalKind :: Lens' InstanceGroupAggregatedList Text

-- | A map of scoped instance group lists.
igalItems :: Lens' InstanceGroupAggregatedList (Maybe InstanceGroupAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> The URL for this resource type. The server
--   generates this URL.</li>
--   </ul>
igalSelfLink :: Lens' InstanceGroupAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A unique identifier for this aggregated list of
--   instance groups. The server generates this identifier.</li>
--   </ul>
igalId :: Lens' InstanceGroupAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The status of the operation, which can be one
--   of the following: PENDING, RUNNING, or DONE.</li>
--   </ul>
data OperationStatus

-- | <pre>
--   DONE
--   </pre>
OSDone :: OperationStatus

-- | <pre>
--   PENDING
--   </pre>
OSPending :: OperationStatus

-- | <pre>
--   RUNNING
--   </pre>
OSRunning :: OperationStatus

-- | Represents a Route resource. A route specifies how certain packets
--   should be handled by the network. Routes are associated with instances
--   by tags and the set of routes for a particular instance is called its
--   routing table. For each packet leaving a instance, the system searches
--   that instance's routing table for a single best matching route. Routes
--   match packets by destination IP address, preferring smaller or more
--   specific ranges over larger ones. If there is a tie, the system
--   selects the route with the smallest priority value. If there is still
--   a tie, it uses the layer three and four packet headers to select just
--   one of the remaining matching routes. The packet is then forwarded as
--   specified by the nextHop field of the winning route - either to
--   another instance destination, a instance gateway or a Google Compute
--   Engine-operated gateway. Packets that do not match any route in the
--   sending instance's routing table are dropped.
--   
--   <i>See:</i> <a>route</a> smart constructor.
data Route

-- | Creates a value of <a>Route</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rrPriority</a></li>
--   <li><a>rrKind</a></li>
--   <li><a>rrNextHopGateway</a></li>
--   <li><a>rrNextHopNetwork</a></li>
--   <li><a>rrNetwork</a></li>
--   <li><a>rrWarnings</a></li>
--   <li><a>rrNextHopIP</a></li>
--   <li><a>rrDestRange</a></li>
--   <li><a>rrSelfLink</a></li>
--   <li><a>rrName</a></li>
--   <li><a>rrCreationTimestamp</a></li>
--   <li><a>rrId</a></li>
--   <li><a>rrNextHopVPNTunnel</a></li>
--   <li><a>rrDescription</a></li>
--   <li><a>rrTags</a></li>
--   <li><a>rrNextHopInstance</a></li>
--   </ul>
route :: Route

-- | The priority of this route. Priority is used to break ties in cases
--   where there is more than one matching route of equal prefix length. In
--   the case of two routes with equal prefix length, the one with the
--   lowest-numbered priority value wins. Default value is 1000. Valid
--   range is 0 through 65535.
rrPriority :: Lens' Route (Maybe Word32)

-- | <ul>
--   <li><i>Output Only</i> Type of this resource. Always compute#routes
--   for Route resources.</li>
--   </ul>
rrKind :: Lens' Route Text

-- | The URL to a gateway that should handle matching packets. You can only
--   specify the internet gateway using a full or partial valid URL:
--   projects//global/gateways/default-internet-gateway
rrNextHopGateway :: Lens' Route (Maybe Text)

-- | The URL of the local network if it should handle matching packets.
rrNextHopNetwork :: Lens' Route (Maybe Text)

-- | Fully-qualified URL of the network that this route applies to.
rrNetwork :: Lens' Route (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> If potential misconfigurations are detected for
--   this route, this field will be populated with warning messages.</li>
--   </ul>
rrWarnings :: Lens' Route [RouteWarningsItem]

-- | The network IP address of an instance that should handle matching
--   packets. Only IPv4 is supported.
rrNextHopIP :: Lens' Route (Maybe Text)

-- | The destination range of outgoing packets that this route applies to.
--   Only IPv4 is supported.
rrDestRange :: Lens' Route (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined fully-qualified URL for this
--   resource.</li>
--   </ul>
rrSelfLink :: Lens' Route (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
rrName :: Lens' Route (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
rrCreationTimestamp :: Lens' Route (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
rrId :: Lens' Route (Maybe Word64)

-- | The URL to a VpnTunnel that should handle matching packets.
rrNextHopVPNTunnel :: Lens' Route (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
rrDescription :: Lens' Route (Maybe Text)

-- | A list of instance tags to which this route applies.
rrTags :: Lens' Route [Text]

-- | The URL to an instance that should handle matching packets. You can
--   specify this as a full or partial URL. For example:
--   https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/
rrNextHopInstance :: Lens' Route (Maybe Text)
data TargetVPNGatewaysScopedListWarningDataItem

-- | Creates a value of <a>TargetVPNGatewaysScopedListWarningDataItem</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tvgslwdiValue</a></li>
--   <li><a>tvgslwdiKey</a></li>
--   </ul>
targetVPNGatewaysScopedListWarningDataItem :: TargetVPNGatewaysScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
tvgslwdiValue :: Lens' TargetVPNGatewaysScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
tvgslwdiKey :: Lens' TargetVPNGatewaysScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
TVGSLWCCleanupFailed :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
TVGSLWCDeprecatedResourceUsed :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
TVGSLWCDiskSizeLargerThanImageSize :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
TVGSLWCFieldValueOverriden :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
TVGSLWCInjectedKernelsDeprecated :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
TVGSLWCNextHopAddressNotAssigned :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
TVGSLWCNextHopCannotIPForward :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
TVGSLWCNextHopInstanceNotFound :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
TVGSLWCNextHopInstanceNotOnNetwork :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
TVGSLWCNextHopNotRunning :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
TVGSLWCNotCriticalError :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
TVGSLWCNoResultsOnPage :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
TVGSLWCRequiredTosAgreement :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
TVGSLWCResourceNotDeleted :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
TVGSLWCSingleInstancePropertyTemplate :: TargetVPNGatewaysScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
TVGSLWCUnreachable :: TargetVPNGatewaysScopedListWarningCode
data TargetHTTPSProxiesSetSSLCertificatesRequest

-- | Creates a value of <a>TargetHTTPSProxiesSetSSLCertificatesRequest</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>thpsscrSSLCertificates</a></li>
--   </ul>
targetHTTPSProxiesSetSSLCertificatesRequest :: TargetHTTPSProxiesSetSSLCertificatesRequest

-- | New set of SslCertificate resources to associate with this
--   TargetHttpsProxy resource. Currently exactly one SslCertificate
--   resource must be specified.
thpsscrSSLCertificates :: Lens' TargetHTTPSProxiesSetSSLCertificatesRequest [Text]

-- | An Instance Template resource.
--   
--   <i>See:</i> <a>instanceTemplate</a> smart constructor.
data InstanceTemplate

-- | Creates a value of <a>InstanceTemplate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>itKind</a></li>
--   <li><a>itSelfLink</a></li>
--   <li><a>itName</a></li>
--   <li><a>itCreationTimestamp</a></li>
--   <li><a>itId</a></li>
--   <li><a>itDescription</a></li>
--   <li><a>itProperties</a></li>
--   </ul>
instanceTemplate :: InstanceTemplate

-- | <ul>
--   <li><i>Output Only</i> The resource type, which is always
--   compute#instanceTemplate for instance templates.</li>
--   </ul>
itKind :: Lens' InstanceTemplate Text

-- | <ul>
--   <li><i>Output Only</i> The URL for this instance template. The server
--   defines this URL.</li>
--   </ul>
itSelfLink :: Lens' InstanceTemplate (Maybe Text)

-- | Name of the resource; provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
itName :: Lens' InstanceTemplate (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The creation timestamp for this instance
--   template in RFC3339 text format.</li>
--   </ul>
itCreationTimestamp :: Lens' InstanceTemplate (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A unique identifier for this instance template.
--   The server defines this identifier.</li>
--   </ul>
itId :: Lens' InstanceTemplate (Maybe Word64)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
itDescription :: Lens' InstanceTemplate (Maybe Text)

-- | The instance properties for this instance template.
itProperties :: Lens' InstanceTemplate (Maybe InstanceProperties)

-- | Contains a list of Router resources.
--   
--   <i>See:</i> <a>routerList</a> smart constructor.
data RouterList

-- | Creates a value of <a>RouterList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rllNextPageToken</a></li>
--   <li><a>rllKind</a></li>
--   <li><a>rllItems</a></li>
--   <li><a>rllSelfLink</a></li>
--   <li><a>rllId</a></li>
--   </ul>
routerList :: RouterList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
rllNextPageToken :: Lens' RouterList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#router for
--   routers.</li>
--   </ul>
rllKind :: Lens' RouterList Text

-- | A list of Router resources.
rllItems :: Lens' RouterList [Router]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
rllSelfLink :: Lens' RouterList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
rllId :: Lens' RouterList (Maybe Text)

-- | A TargetSslProxy resource. This resource defines an SSL proxy.
--   
--   <i>See:</i> <a>targetSSLProxy</a> smart constructor.
data TargetSSLProxy

-- | Creates a value of <a>TargetSSLProxy</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tspSSLCertificates</a></li>
--   <li><a>tspService</a></li>
--   <li><a>tspKind</a></li>
--   <li><a>tspSelfLink</a></li>
--   <li><a>tspName</a></li>
--   <li><a>tspCreationTimestamp</a></li>
--   <li><a>tspId</a></li>
--   <li><a>tspProxyHeader</a></li>
--   <li><a>tspDescription</a></li>
--   </ul>
targetSSLProxy :: TargetSSLProxy

-- | URLs to SslCertificate resources that are used to authenticate
--   connections to Backends. Currently exactly one SSL certificate must be
--   specified.
tspSSLCertificates :: Lens' TargetSSLProxy [Text]

-- | URL to the BackendService resource.
tspService :: Lens' TargetSSLProxy (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always
--   compute#targetSslProxy for target SSL proxies.</li>
--   </ul>
tspKind :: Lens' TargetSSLProxy Text

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
tspSelfLink :: Lens' TargetSSLProxy (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
tspName :: Lens' TargetSSLProxy (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
tspCreationTimestamp :: Lens' TargetSSLProxy (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
tspId :: Lens' TargetSSLProxy (Maybe Word64)

-- | Specifies the type of proxy header to append before sending data to
--   the backend, either NONE or PROXY_V1. The default is NONE.
tspProxyHeader :: Lens' TargetSSLProxy (Maybe TargetSSLProxyProxyHeader)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
tspDescription :: Lens' TargetSSLProxy (Maybe Text)

-- | Represents a Target VPN gateway resource.
--   
--   <i>See:</i> <a>targetVPNGateway</a> smart constructor.
data TargetVPNGateway

-- | Creates a value of <a>TargetVPNGateway</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tvgStatus</a></li>
--   <li><a>tvgKind</a></li>
--   <li><a>tvgNetwork</a></li>
--   <li><a>tvgSelfLink</a></li>
--   <li><a>tvgName</a></li>
--   <li><a>tvgCreationTimestamp</a></li>
--   <li><a>tvgId</a></li>
--   <li><a>tvgRegion</a></li>
--   <li><a>tvgTunnels</a></li>
--   <li><a>tvgDescription</a></li>
--   <li><a>tvgForwardingRules</a></li>
--   </ul>
targetVPNGateway :: TargetVPNGateway

-- | <ul>
--   <li><i>Output Only</i> The status of the VPN gateway.</li>
--   </ul>
tvgStatus :: Lens' TargetVPNGateway (Maybe TargetVPNGatewayStatus)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#targetVpnGateway for target VPN gateways.</li>
--   </ul>
tvgKind :: Lens' TargetVPNGateway Text

-- | URL of the network to which this VPN gateway is attached. Provided by
--   the client when the VPN gateway is created.
tvgNetwork :: Lens' TargetVPNGateway (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
tvgSelfLink :: Lens' TargetVPNGateway (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
tvgName :: Lens' TargetVPNGateway (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
tvgCreationTimestamp :: Lens' TargetVPNGateway (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
tvgId :: Lens' TargetVPNGateway (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> URL of the region where the target VPN gateway
--   resides.</li>
--   </ul>
tvgRegion :: Lens' TargetVPNGateway (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A list of URLs to VpnTunnel resources.
--   VpnTunnels are created using compute.vpntunnels.insert method and
--   associated to a VPN gateway.</li>
--   </ul>
tvgTunnels :: Lens' TargetVPNGateway [Text]

-- | An optional description of this resource. Provide this property when
--   you create the resource.
tvgDescription :: Lens' TargetVPNGateway (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A list of URLs to the ForwardingRule resources.
--   ForwardingRules are created using compute.forwardingRules.insert and
--   associated to a VPN gateway.</li>
--   </ul>
tvgForwardingRules :: Lens' TargetVPNGateway [Text]

-- | <ul>
--   <li><i>Output Only</i> The status of disk creation.</li>
--   </ul>
data DiskStatus

-- | <pre>
--   CREATING
--   </pre>
DSCreating :: DiskStatus

-- | <pre>
--   FAILED
--   </pre>
DSFailed :: DiskStatus

-- | <pre>
--   READY
--   </pre>
DSReady :: DiskStatus

-- | <pre>
--   RESTORING
--   </pre>
DSRestoring :: DiskStatus

-- | <ul>
--   <li><i>Output Only</i> The status of the instance. This field is empty
--   when the instance does not exist.</li>
--   </ul>
data ManagedInstanceInstanceStatus

-- | <pre>
--   PROVISIONING
--   </pre>
MIISProvisioning :: ManagedInstanceInstanceStatus

-- | <pre>
--   RUNNING
--   </pre>
MIISRunning :: ManagedInstanceInstanceStatus

-- | <pre>
--   STAGING
--   </pre>
MIISStaging :: ManagedInstanceInstanceStatus

-- | <pre>
--   STOPPED
--   </pre>
MIISStopped :: ManagedInstanceInstanceStatus

-- | <pre>
--   STOPPING
--   </pre>
MIISStopping :: ManagedInstanceInstanceStatus

-- | <pre>
--   SUSPENDED
--   </pre>
MIISSuspended :: ManagedInstanceInstanceStatus

-- | <pre>
--   SUSPENDING
--   </pre>
MIISSuspending :: ManagedInstanceInstanceStatus

-- | <pre>
--   TERMINATED
--   </pre>
MIISTerminated :: ManagedInstanceInstanceStatus

-- | Specifies the type of proxy header to append before sending data to
--   the backend, either NONE or PROXY_V1. The default is NONE.
data HTTPHealthCheckProxyHeader

-- | <pre>
--   NONE
--   </pre>
HTTPHCPHNone :: HTTPHealthCheckProxyHeader

-- | <pre>
--   PROXY_V1
--   </pre>
HTTPHCPHProxyV1 :: HTTPHealthCheckProxyHeader
data URLMapsValidateResponse

-- | Creates a value of <a>URLMapsValidateResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umvrResult</a></li>
--   </ul>
urlMapsValidateResponse :: URLMapsValidateResponse
umvrResult :: Lens' URLMapsValidateResponse (Maybe URLMapValidationResult)

-- | An SslCertificate resource. This resource provides a mechanism to
--   upload an SSL key and certificate to the load balancer to serve secure
--   connections from the user.
--   
--   <i>See:</i> <a>sslCertificate</a> smart constructor.
data SSLCertificate

-- | Creates a value of <a>SSLCertificate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>scPrivateKey</a></li>
--   <li><a>scKind</a></li>
--   <li><a>scSelfLink</a></li>
--   <li><a>scName</a></li>
--   <li><a>scCreationTimestamp</a></li>
--   <li><a>scId</a></li>
--   <li><a>scCertificate</a></li>
--   <li><a>scDescription</a></li>
--   </ul>
sslCertificate :: SSLCertificate

-- | A write-only private key in PEM format. Only insert requests will
--   include this field.
scPrivateKey :: Lens' SSLCertificate (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always
--   compute#sslCertificate for SSL certificates.</li>
--   </ul>
scKind :: Lens' SSLCertificate Text

-- | <ul>
--   <li><i>Output only</i> Server-defined URL for the resource.</li>
--   </ul>
scSelfLink :: Lens' SSLCertificate (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
scName :: Lens' SSLCertificate (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
scCreationTimestamp :: Lens' SSLCertificate (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
scId :: Lens' SSLCertificate (Maybe Word64)

-- | A local certificate file. The certificate must be in PEM format. The
--   certificate chain must be no greater than 5 certs long. The chain must
--   include at least one intermediate cert.
scCertificate :: Lens' SSLCertificate (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
scDescription :: Lens' SSLCertificate (Maybe Text)
data RouterStatusBGPPeerStatus

-- | Creates a value of <a>RouterStatusBGPPeerStatus</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rsbpsStatus</a></li>
--   <li><a>rsbpsIPAddress</a></li>
--   <li><a>rsbpsState</a></li>
--   <li><a>rsbpsPeerIPAddress</a></li>
--   <li><a>rsbpsUptime</a></li>
--   <li><a>rsbpsNumLearnedRoutes</a></li>
--   <li><a>rsbpsName</a></li>
--   <li><a>rsbpsUptimeSeconds</a></li>
--   <li><a>rsbpsAdvertisedRoutes</a></li>
--   <li><a>rsbpsLinkedVPNTunnel</a></li>
--   </ul>
routerStatusBGPPeerStatus :: RouterStatusBGPPeerStatus

-- | Status of the BGP peer: {UP, DOWN}
rsbpsStatus :: Lens' RouterStatusBGPPeerStatus (Maybe RouterStatusBGPPeerStatusStatus)

-- | IP address of the local BGP interface.
rsbpsIPAddress :: Lens' RouterStatusBGPPeerStatus (Maybe Text)

-- | BGP state as specified in RFC1771.
rsbpsState :: Lens' RouterStatusBGPPeerStatus (Maybe Text)

-- | IP address of the remote BGP interface.
rsbpsPeerIPAddress :: Lens' RouterStatusBGPPeerStatus (Maybe Text)

-- | Time this session has been up. Format: 14 years, 51 weeks, 6 days, 23
--   hours, 59 minutes, 59 seconds
rsbpsUptime :: Lens' RouterStatusBGPPeerStatus (Maybe Text)

-- | Number of routes learned from the remote BGP Peer.
rsbpsNumLearnedRoutes :: Lens' RouterStatusBGPPeerStatus (Maybe Word32)

-- | Name of this BGP peer. Unique within the Routers resource.
rsbpsName :: Lens' RouterStatusBGPPeerStatus (Maybe Text)

-- | Time this session has been up, in seconds. Format: 145
rsbpsUptimeSeconds :: Lens' RouterStatusBGPPeerStatus (Maybe Text)

-- | Routes that were advertised to the remote BGP peer
rsbpsAdvertisedRoutes :: Lens' RouterStatusBGPPeerStatus [Route]

-- | URL of the VPN tunnel that this BGP peer controls.
rsbpsLinkedVPNTunnel :: Lens' RouterStatusBGPPeerStatus (Maybe Text)
data URLMapReference

-- | Creates a value of <a>URLMapReference</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umrURLMap</a></li>
--   </ul>
urlMapReference :: URLMapReference
umrURLMap :: Lens' URLMapReference (Maybe Text)

-- | The mode in which to attach this disk, either READ_WRITE or READ_ONLY.
--   If not specified, the default is to attach the disk in READ_WRITE
--   mode.
data AttachedDiskMode

-- | <pre>
--   READ_ONLY
--   </pre>
ReadOnly :: AttachedDiskMode

-- | <pre>
--   READ_WRITE
--   </pre>
ReadWrite :: AttachedDiskMode
data TargetPoolsAddHealthCheckRequest

-- | Creates a value of <a>TargetPoolsAddHealthCheckRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpahcrHealthChecks</a></li>
--   </ul>
targetPoolsAddHealthCheckRequest :: TargetPoolsAddHealthCheckRequest

-- | A list of HttpHealthCheck resources to add to the target pool.
tpahcrHealthChecks :: Lens' TargetPoolsAddHealthCheckRequest [HealthCheckReference]

-- | <ul>
--   <li><i>Output Only</i> A map of scoped disk lists.</li>
--   </ul>
--   
--   <i>See:</i> <a>diskAggregatedListItems</a> smart constructor.
data DiskAggregatedListItems

-- | Creates a value of <a>DiskAggregatedListItems</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>daliAddtional</a></li>
--   </ul>
diskAggregatedListItems :: HashMap Text DisksScopedList -> DiskAggregatedListItems

-- | <ul>
--   <li><i>Output Only</i> Name of the scope containing this set of
--   disks.</li>
--   </ul>
daliAddtional :: Lens' DiskAggregatedListItems (HashMap Text DisksScopedList)

-- | The location in Cloud Storage and naming method of the daily usage
--   report. Contains bucket_name and report_name prefix.
--   
--   <i>See:</i> <a>usageExportLocation</a> smart constructor.
data UsageExportLocation

-- | Creates a value of <a>UsageExportLocation</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uelReportNamePrefix</a></li>
--   <li><a>uelBucketName</a></li>
--   </ul>
usageExportLocation :: UsageExportLocation

-- | An optional prefix for the name of the usage report object stored in
--   bucketName. If not supplied, defaults to usage. The report is stored
--   as a CSV file named report_name_prefix_gce_YYYYMMDD.csv where YYYYMMDD
--   is the day of the usage according to Pacific Time. If you supply a
--   prefix, it should conform to Cloud Storage object naming conventions.
uelReportNamePrefix :: Lens' UsageExportLocation (Maybe Text)

-- | The name of an existing bucket in Cloud Storage where the usage report
--   object is stored. The Google Service Account is granted write access
--   to this bucket. This can either be the bucket name by itself, such as
--   example-bucket, or the bucket name with gs:// or
--   https://storage.googleapis.com/ in front of it, such as
--   gs://example-bucket.
uelBucketName :: Lens' UsageExportLocation (Maybe Text)

-- | Contains a list of zone resources.
--   
--   <i>See:</i> <a>zoneList</a> smart constructor.
data ZoneList

-- | Creates a value of <a>ZoneList</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>zlNextPageToken</a></li>
--   <li><a>zlKind</a></li>
--   <li><a>zlItems</a></li>
--   <li><a>zlSelfLink</a></li>
--   <li><a>zlId</a></li>
--   </ul>
zoneList :: ZoneList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
zlNextPageToken :: Lens' ZoneList (Maybe Text)

-- | Type of resource.
zlKind :: Lens' ZoneList Text

-- | <ul>
--   <li><i>Output Only</i> A list of Zone resources.</li>
--   </ul>
zlItems :: Lens' ZoneList [Zone]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
zlSelfLink :: Lens' ZoneList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource; defined by
--   the server.</li>
--   </ul>
zlId :: Lens' ZoneList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Status of the region, either UP or DOWN.</li>
--   </ul>
data RegionStatus

-- | <pre>
--   DOWN
--   </pre>
Down :: RegionStatus

-- | <pre>
--   UP
--   </pre>
UP :: RegionStatus
data RouterBGPPeer

-- | Creates a value of <a>RouterBGPPeer</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rbpIPAddress</a></li>
--   <li><a>rbpInterfaceName</a></li>
--   <li><a>rbpPeerIPAddress</a></li>
--   <li><a>rbpAdvertisedRoutePriority</a></li>
--   <li><a>rbpPeerASN</a></li>
--   <li><a>rbpName</a></li>
--   </ul>
routerBGPPeer :: RouterBGPPeer

-- | IP address of the interface inside Google Cloud Platform. Only IPv4 is
--   supported.
rbpIPAddress :: Lens' RouterBGPPeer (Maybe Text)

-- | Name of the interface the BGP peer is associated with.
rbpInterfaceName :: Lens' RouterBGPPeer (Maybe Text)

-- | IP address of the BGP interface outside Google cloud. Only IPv4 is
--   supported.
rbpPeerIPAddress :: Lens' RouterBGPPeer (Maybe Text)

-- | The priority of routes advertised to this BGP peer. In the case where
--   there is more than one matching route of maximum length, the routes
--   with lowest priority value win.
rbpAdvertisedRoutePriority :: Lens' RouterBGPPeer (Maybe Word32)

-- | Peer BGP Autonomous System Number (ASN). For VPN use case, this value
--   can be different for every tunnel.
rbpPeerASN :: Lens' RouterBGPPeer (Maybe Word32)

-- | Name of this BGP peer. The name must be 1-63 characters long and
--   comply with RFC1035.
rbpName :: Lens' RouterBGPPeer (Maybe Text)
data SubnetworksExpandIPCIdRRangeRequest

-- | Creates a value of <a>SubnetworksExpandIPCIdRRangeRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>seicirrrIPCIdRRange</a></li>
--   </ul>
subnetworksExpandIPCIdRRangeRequest :: SubnetworksExpandIPCIdRRangeRequest

-- | The IP (in CIDR format or netmask) of internal addresses that are
--   legal on this Subnetwork. This range should be disjoint from other
--   subnetworks within this network. This range can only be larger than
--   (i.e. a superset of) the range previously defined before the update.
seicirrrIPCIdRRange :: Lens' SubnetworksExpandIPCIdRRangeRequest (Maybe Text)
data ManagedInstance

-- | Creates a value of <a>ManagedInstance</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>miLastAttempt</a></li>
--   <li><a>miCurrentAction</a></li>
--   <li><a>miId</a></li>
--   <li><a>miInstanceStatus</a></li>
--   <li><a>miInstance</a></li>
--   </ul>
managedInstance :: ManagedInstance

-- | <ul>
--   <li><i>Output Only</i> Information about the last attempt to create or
--   delete the instance.</li>
--   </ul>
miLastAttempt :: Lens' ManagedInstance (Maybe ManagedInstanceLastAttempt)

-- | <ul>
--   <li><i>Output Only</i> The current action that the managed instance
--   group has scheduled for the instance. Possible values: - NONE The
--   instance is running, and the managed instance group does not have any
--   scheduled actions for this instance. - CREATING The managed instance
--   group is creating this instance. If the group fails to create this
--   instance, it will try again until it is successful. -
--   CREATING_WITHOUT_RETRIES The managed instance group is attempting to
--   create this instance only once. If the group fails to create this
--   instance, it does not try again and the group's targetSize value is
--   decreased instead. - RECREATING The managed instance group is
--   recreating this instance. - DELETING The managed instance group is
--   permanently deleting this instance. - ABANDONING The managed instance
--   group is abandoning this instance. The instance will be removed from
--   the instance group and from any target pools that are associated with
--   this group. - RESTARTING The managed instance group is restarting the
--   instance. - REFRESHING The managed instance group is applying
--   configuration changes to the instance without stopping it. For
--   example, the group can update the target pool list for an instance
--   without stopping that instance.</li>
--   </ul>
miCurrentAction :: Lens' ManagedInstance (Maybe ManagedInstanceCurrentAction)

-- | <ul>
--   <li><i>Output only</i> The unique identifier for this resource. This
--   field is empty when instance does not exist.</li>
--   </ul>
miId :: Lens' ManagedInstance (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> The status of the instance. This field is empty
--   when the instance does not exist.</li>
--   </ul>
miInstanceStatus :: Lens' ManagedInstance (Maybe ManagedInstanceInstanceStatus)

-- | <ul>
--   <li><i>Output Only</i> The URL of the instance. The URL can exist even
--   if the instance has not yet been created.</li>
--   </ul>
miInstance :: Lens' ManagedInstance (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A map of filtered managed instance group
--   lists.</li>
--   </ul>
--   
--   <i>See:</i> <a>instanceGroupManagerAggregatedListItems</a> smart
--   constructor.
data InstanceGroupManagerAggregatedListItems

-- | Creates a value of <a>InstanceGroupManagerAggregatedListItems</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmaliAddtional</a></li>
--   </ul>
instanceGroupManagerAggregatedListItems :: HashMap Text InstanceGroupManagersScopedList -> InstanceGroupManagerAggregatedListItems

-- | <ul>
--   <li><i>Output Only</i> The name of the scope that contains this set of
--   managed instance groups.</li>
--   </ul>
igmaliAddtional :: Lens' InstanceGroupManagerAggregatedListItems (HashMap Text InstanceGroupManagersScopedList)
data InstanceGroupManagersDeleteInstancesRequest

-- | Creates a value of <a>InstanceGroupManagersDeleteInstancesRequest</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmdirInstances</a></li>
--   </ul>
instanceGroupManagersDeleteInstancesRequest :: InstanceGroupManagersDeleteInstancesRequest

-- | The list of instances to delete from this managed instance group.
--   Specify one or more instance URLs.
igmdirInstances :: Lens' InstanceGroupManagersDeleteInstancesRequest [Text]

-- | Message containing information of one individual backend.
--   
--   <i>See:</i> <a>backend</a> smart constructor.
data Backend

-- | Creates a value of <a>Backend</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bGroup</a></li>
--   <li><a>bBalancingMode</a></li>
--   <li><a>bMaxUtilization</a></li>
--   <li><a>bMaxRate</a></li>
--   <li><a>bMaxConnections</a></li>
--   <li><a>bMaxConnectionsPerInstance</a></li>
--   <li><a>bMaxRatePerInstance</a></li>
--   <li><a>bDescription</a></li>
--   <li><a>bCapacityScaler</a></li>
--   </ul>
backend :: Backend

-- | The fully-qualified URL of a zonal Instance Group resource. This
--   instance group defines the list of instances that serve traffic.
--   Member virtual machine instances from each instance group must live in
--   the same zone as the instance group itself. No two backends in a
--   backend service are allowed to use same Instance Group resource. Note
--   that you must specify an Instance Group resource using the
--   fully-qualified URL, rather than a partial URL. When the
--   BackendService has load balancing scheme INTERNAL, the instance group
--   must be in a zone within the same region as the BackendService.
bGroup :: Lens' Backend (Maybe Text)

-- | Specifies the balancing mode for this backend. For global HTTP(S) or
--   TCP/SSL load balancing, the default is UTILIZATION. Valid values are
--   UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP/SSL). This
--   cannot be used for internal load balancing.
bBalancingMode :: Lens' Backend (Maybe BackendBalancingMode)

-- | Used when balancingMode is UTILIZATION. This ratio defines the CPU
--   utilization target for the group. The default is 0.8. Valid range is
--   [0.0, 1.0]. This cannot be used for internal load balancing.
bMaxUtilization :: Lens' Backend (Maybe Double)

-- | The max requests per second (RPS) of the group. Can be used with
--   either RATE or UTILIZATION balancing modes, but required if RATE mode.
--   For RATE mode, either maxRate or maxRatePerInstance must be set. This
--   cannot be used for internal load balancing.
bMaxRate :: Lens' Backend (Maybe Int32)

-- | The max number of simultaneous connections for the group. Can be used
--   with either CONNECTION or UTILIZATION balancing modes. For CONNECTION
--   mode, either maxConnections or maxConnectionsPerInstance must be set.
--   This cannot be used for internal load balancing.
bMaxConnections :: Lens' Backend (Maybe Int32)

-- | The max number of simultaneous connections that a single backend
--   instance can handle. This is used to calculate the capacity of the
--   group. Can be used in either CONNECTION or UTILIZATION balancing
--   modes. For CONNECTION mode, either maxConnections or
--   maxConnectionsPerInstance must be set. This cannot be used for
--   internal load balancing.
bMaxConnectionsPerInstance :: Lens' Backend (Maybe Int32)

-- | The max requests per second (RPS) that a single backend instance can
--   handle.This is used to calculate the capacity of the group. Can be
--   used in either balancing mode. For RATE mode, either maxRate or
--   maxRatePerInstance must be set. This cannot be used for internal load
--   balancing.
bMaxRatePerInstance :: Lens' Backend (Maybe Double)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
bDescription :: Lens' Backend (Maybe Text)

-- | A multiplier applied to the group's maximum servicing capacity (based
--   on UTILIZATION, RATE or CONNECTION). Default value is 1, which means
--   the group will serve up to 100% of its configured capacity (depending
--   on balancingMode). A setting of 0 means the group is completely
--   drained, offering 0% of its available Capacity. Valid range is
--   [0.0,1.0]. This cannot be used for internal load balancing.
bCapacityScaler :: Lens' Backend (Maybe Double)

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of addresses when the list is empty.</li>
--   </ul>
--   
--   <i>See:</i> <a>targetVPNGatewaysScopedListWarning</a> smart
--   constructor.
data TargetVPNGatewaysScopedListWarning

-- | Creates a value of <a>TargetVPNGatewaysScopedListWarning</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tvgslwData</a></li>
--   <li><a>tvgslwCode</a></li>
--   <li><a>tvgslwMessage</a></li>
--   </ul>
targetVPNGatewaysScopedListWarning :: TargetVPNGatewaysScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
tvgslwData :: Lens' TargetVPNGatewaysScopedListWarning [TargetVPNGatewaysScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
tvgslwCode :: Lens' TargetVPNGatewaysScopedListWarning (Maybe TargetVPNGatewaysScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
tvgslwMessage :: Lens' TargetVPNGatewaysScopedListWarning (Maybe Text)

-- | The new type of proxy header to append before sending data to the
--   backend. NONE or PROXY_V1 are allowed.
data TargetSSLProxiesSetProxyHeaderRequestProxyHeader

-- | <pre>
--   NONE
--   </pre>
TSPSPHRPHNone :: TargetSSLProxiesSetProxyHeaderRequestProxyHeader

-- | <pre>
--   PROXY_V1
--   </pre>
TSPSPHRPHProxyV1 :: TargetSSLProxiesSetProxyHeaderRequestProxyHeader

-- | Contains a list of addresses.
--   
--   <i>See:</i> <a>addressList</a> smart constructor.
data AddressList

-- | Creates a value of <a>AddressList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>alNextPageToken</a></li>
--   <li><a>alKind</a></li>
--   <li><a>alItems</a></li>
--   <li><a>alSelfLink</a></li>
--   <li><a>alId</a></li>
--   </ul>
addressList :: AddressList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
alNextPageToken :: Lens' AddressList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#addressList
--   for lists of addresses.</li>
--   </ul>
alKind :: Lens' AddressList Text

-- | <ul>
--   <li><i>Output Only</i> A list of addresses.</li>
--   </ul>
alItems :: Lens' AddressList [Address]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
alSelfLink :: Lens' AddressList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
alId :: Lens' AddressList (Maybe Text)

-- | A map of scoped forwarding rule lists.
--   
--   <i>See:</i> <a>forwardingRuleAggregatedListItems</a> smart
--   constructor.
data ForwardingRuleAggregatedListItems

-- | Creates a value of <a>ForwardingRuleAggregatedListItems</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fraliAddtional</a></li>
--   </ul>
forwardingRuleAggregatedListItems :: HashMap Text ForwardingRulesScopedList -> ForwardingRuleAggregatedListItems

-- | Name of the scope containing this set of addresses.
fraliAddtional :: Lens' ForwardingRuleAggregatedListItems (HashMap Text ForwardingRulesScopedList)

-- | <ul>
--   <li><i>Output Only</i> A map of scoped operation lists.</li>
--   </ul>
--   
--   <i>See:</i> <a>operationAggregatedListItems</a> smart constructor.
data OperationAggregatedListItems

-- | Creates a value of <a>OperationAggregatedListItems</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oaliAddtional</a></li>
--   </ul>
operationAggregatedListItems :: HashMap Text OperationsScopedList -> OperationAggregatedListItems

-- | <ul>
--   <li><i>Output Only</i> Name of the scope containing this set of
--   operations.</li>
--   </ul>
oaliAddtional :: Lens' OperationAggregatedListItems (HashMap Text OperationsScopedList)
data InstanceGroupManagerActionsSummary

-- | Creates a value of <a>InstanceGroupManagerActionsSummary</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmasDeleting</a></li>
--   <li><a>igmasRestarting</a></li>
--   <li><a>igmasNone</a></li>
--   <li><a>igmasCreating</a></li>
--   <li><a>igmasRefreshing</a></li>
--   <li><a>igmasCreatingWithoutRetries</a></li>
--   <li><a>igmasRecreating</a></li>
--   <li><a>igmasAbandoning</a></li>
--   </ul>
instanceGroupManagerActionsSummary :: InstanceGroupManagerActionsSummary

-- | <ul>
--   <li><i>Output Only</i> The number of instances in the managed instance
--   group that are scheduled to be deleted or are currently being
--   deleted.</li>
--   </ul>
igmasDeleting :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The number of instances in the managed instance
--   group that are scheduled to be restarted or are currently being
--   restarted.</li>
--   </ul>
igmasRestarting :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The number of instances in the managed instance
--   group that are running and have no scheduled actions.</li>
--   </ul>
igmasNone :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The number of instances in the managed instance
--   group that are scheduled to be created or are currently being created.
--   If the group fails to create any of these instances, it tries again
--   until it creates the instance successfully. If you have disabled
--   creation retries, this field will not be populated; instead, the
--   creatingWithoutRetries field will be populated.</li>
--   </ul>
igmasCreating :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The number of instances in the managed instance
--   group that are being reconfigured with properties that do not require
--   a restart or a recreate action. For example, setting or removing
--   target pools for the instance.</li>
--   </ul>
igmasRefreshing :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The number of instances that the managed
--   instance group will attempt to create. The group attempts to create
--   each instance only once. If the group fails to create any of these
--   instances, it decreases the group's targetSize value accordingly.</li>
--   </ul>
igmasCreatingWithoutRetries :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The number of instances in the managed instance
--   group that are scheduled to be recreated or are currently being being
--   recreated. Recreating an instance deletes the existing root persistent
--   disk and creates a new disk from the image that is defined in the
--   instance template.</li>
--   </ul>
igmasRecreating :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The total number of instances in the managed
--   instance group that are scheduled to be abandoned. Abandoning an
--   instance removes it from the managed instance group without deleting
--   it.</li>
--   </ul>
igmasAbandoning :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The status of the VPN tunnel.</li>
--   </ul>
data VPNTunnelStatus

-- | <pre>
--   ALLOCATING_RESOURCES
--   </pre>
VTSAllocatingResources :: VPNTunnelStatus

-- | <pre>
--   AUTHORIZATION_ERROR
--   </pre>
VTSAuthorizationError :: VPNTunnelStatus

-- | <pre>
--   DEPROVISIONING
--   </pre>
VTSDeprovisioning :: VPNTunnelStatus

-- | <pre>
--   ESTABLISHED
--   </pre>
VTSEstablished :: VPNTunnelStatus

-- | <pre>
--   FAILED
--   </pre>
VTSFailed :: VPNTunnelStatus

-- | <pre>
--   FIRST_HANDSHAKE
--   </pre>
VTSFirstHandshake :: VPNTunnelStatus

-- | <pre>
--   NEGOTIATION_FAILURE
--   </pre>
VTSNegotiationFailure :: VPNTunnelStatus

-- | <pre>
--   NETWORK_ERROR
--   </pre>
VTSNetworkError :: VPNTunnelStatus

-- | <pre>
--   NO_INCOMING_PACKETS
--   </pre>
VTSNoIncomingPackets :: VPNTunnelStatus

-- | <pre>
--   PROVISIONING
--   </pre>
VTSProvisioning :: VPNTunnelStatus

-- | <pre>
--   REJECTED
--   </pre>
VTSRejected :: VPNTunnelStatus

-- | <pre>
--   WAITING_FOR_FULL_CONFIG
--   </pre>
VTSWaitingForFullConfig :: VPNTunnelStatus

-- | A service account.
--   
--   <i>See:</i> <a>serviceAccount</a> smart constructor.
data ServiceAccount

-- | Creates a value of <a>ServiceAccount</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>saEmail</a></li>
--   <li><a>saScopes</a></li>
--   </ul>
serviceAccount :: ServiceAccount

-- | Email address of the service account.
saEmail :: Lens' ServiceAccount (Maybe Text)

-- | The list of scopes to be made available for this service account.
saScopes :: Lens' ServiceAccount [Text]
data RegionInstanceGroupManagersAbandonInstancesRequest

-- | Creates a value of
--   <a>RegionInstanceGroupManagersAbandonInstancesRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmairInstances</a></li>
--   </ul>
regionInstanceGroupManagersAbandonInstancesRequest :: RegionInstanceGroupManagersAbandonInstancesRequest

-- | The names of one or more instances to abandon.
rigmairInstances :: Lens' RegionInstanceGroupManagersAbandonInstancesRequest [Text]

-- | Contains a list of networks.
--   
--   <i>See:</i> <a>networkList</a> smart constructor.
data NetworkList

-- | Creates a value of <a>NetworkList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nlNextPageToken</a></li>
--   <li><a>nlKind</a></li>
--   <li><a>nlItems</a></li>
--   <li><a>nlSelfLink</a></li>
--   <li><a>nlId</a></li>
--   </ul>
networkList :: NetworkList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
nlNextPageToken :: Lens' NetworkList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#networkList
--   for lists of networks.</li>
--   </ul>
nlKind :: Lens' NetworkList Text

-- | <ul>
--   <li><i>Output Only</i> A list of Network resources.</li>
--   </ul>
nlItems :: Lens' NetworkList [Network]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
nlSelfLink :: Lens' NetworkList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
nlId :: Lens' NetworkList (Maybe Text)
data InstanceGroupsListInstancesRequest

-- | Creates a value of <a>InstanceGroupsListInstancesRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iglirInstanceState</a></li>
--   </ul>
instanceGroupsListInstancesRequest :: InstanceGroupsListInstancesRequest

-- | A filter for the state of the instances in the instance group. Valid
--   options are ALL or RUNNING. If you do not specify this parameter the
--   list includes all instances regardless of their state.
iglirInstanceState :: Lens' InstanceGroupsListInstancesRequest (Maybe InstanceGroupsListInstancesRequestInstanceState)

-- | Specifies the balancing mode for this backend. For global HTTP(S) or
--   TCP/SSL load balancing, the default is UTILIZATION. Valid values are
--   UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP/SSL). This
--   cannot be used for internal load balancing.
data BackendBalancingMode

-- | <pre>
--   CONNECTION
--   </pre>
Connection :: BackendBalancingMode

-- | <pre>
--   RATE
--   </pre>
Rate :: BackendBalancingMode

-- | <pre>
--   UTILIZATION
--   </pre>
Utilization :: BackendBalancingMode

-- | Contains a list of InstanceGroup resources.
--   
--   <i>See:</i> <a>regionInstanceGroupList</a> smart constructor.
data RegionInstanceGroupList

-- | Creates a value of <a>RegionInstanceGroupList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>riglNextPageToken</a></li>
--   <li><a>riglKind</a></li>
--   <li><a>riglItems</a></li>
--   <li><a>riglSelfLink</a></li>
--   <li><a>riglId</a></li>
--   </ul>
regionInstanceGroupList :: RegionInstanceGroupList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
riglNextPageToken :: Lens' RegionInstanceGroupList (Maybe Text)

-- | The resource type.
riglKind :: Lens' RegionInstanceGroupList Text

-- | A list of InstanceGroup resources.
riglItems :: Lens' RegionInstanceGroupList [InstanceGroup]

-- | <ul>
--   <li><i>Output Only</i> The URL for this resource type. The server
--   generates this URL.</li>
--   </ul>
riglSelfLink :: Lens' RegionInstanceGroupList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
riglId :: Lens' RegionInstanceGroupList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A map of scoped target pool lists.</li>
--   </ul>
--   
--   <i>See:</i> <a>targetPoolAggregatedListItems</a> smart constructor.
data TargetPoolAggregatedListItems

-- | Creates a value of <a>TargetPoolAggregatedListItems</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpaliAddtional</a></li>
--   </ul>
targetPoolAggregatedListItems :: HashMap Text TargetPoolsScopedList -> TargetPoolAggregatedListItems

-- | Name of the scope containing this set of target pools.
tpaliAddtional :: Lens' TargetPoolAggregatedListItems (HashMap Text TargetPoolsScopedList)
data TargetInstancesScopedList

-- | Creates a value of <a>TargetInstancesScopedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tislWarning</a></li>
--   <li><a>tislTargetInstances</a></li>
--   </ul>
targetInstancesScopedList :: TargetInstancesScopedList

-- | Informational warning which replaces the list of addresses when the
--   list is empty.
tislWarning :: Lens' TargetInstancesScopedList (Maybe TargetInstancesScopedListWarning)

-- | List of target instances contained in this scope.
tislTargetInstances :: Lens' TargetInstancesScopedList [TargetInstance]

-- | <ul>
--   <li><i>Output Only</i> A map of scoped address lists.</li>
--   </ul>
--   
--   <i>See:</i> <a>addressAggregatedListItems</a> smart constructor.
data AddressAggregatedListItems

-- | Creates a value of <a>AddressAggregatedListItems</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aAddtional</a></li>
--   </ul>
addressAggregatedListItems :: HashMap Text AddressesScopedList -> AddressAggregatedListItems

-- | <ul>
--   <li><i>Output Only</i> Name of the scope containing this set of
--   addresses.</li>
--   </ul>
aAddtional :: Lens' AddressAggregatedListItems (HashMap Text AddressesScopedList)

-- | Contains a list of Autoscaler resources.
--   
--   <i>See:</i> <a>autoscalerList</a> smart constructor.
data AutoscalerList

-- | Creates a value of <a>AutoscalerList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>autNextPageToken</a></li>
--   <li><a>autKind</a></li>
--   <li><a>autItems</a></li>
--   <li><a>autSelfLink</a></li>
--   <li><a>autId</a></li>
--   </ul>
autoscalerList :: AutoscalerList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
autNextPageToken :: Lens' AutoscalerList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#autoscalerList
--   for lists of autoscalers.</li>
--   </ul>
autKind :: Lens' AutoscalerList Text

-- | A list of Autoscaler resources.
autItems :: Lens' AutoscalerList [Autoscaler]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
autSelfLink :: Lens' AutoscalerList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
autId :: Lens' AutoscalerList (Maybe Text)
data TargetSSLProxiesSetProxyHeaderRequest

-- | Creates a value of <a>TargetSSLProxiesSetProxyHeaderRequest</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tspsphrProxyHeader</a></li>
--   </ul>
targetSSLProxiesSetProxyHeaderRequest :: TargetSSLProxiesSetProxyHeaderRequest

-- | The new type of proxy header to append before sending data to the
--   backend. NONE or PROXY_V1 are allowed.
tspsphrProxyHeader :: Lens' TargetSSLProxiesSetProxyHeaderRequest (Maybe TargetSSLProxiesSetProxyHeaderRequestProxyHeader)
data VPNTunnelAggregatedList

-- | Creates a value of <a>VPNTunnelAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vtalNextPageToken</a></li>
--   <li><a>vtalKind</a></li>
--   <li><a>vtalItems</a></li>
--   <li><a>vtalSelfLink</a></li>
--   <li><a>vtalId</a></li>
--   </ul>
vpnTunnelAggregatedList :: VPNTunnelAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
vtalNextPageToken :: Lens' VPNTunnelAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#vpnTunnel for
--   VPN tunnels.</li>
--   </ul>
vtalKind :: Lens' VPNTunnelAggregatedList Text

-- | <ul>
--   <li><i>Output Only</i> A map of scoped vpn tunnel lists.</li>
--   </ul>
vtalItems :: Lens' VPNTunnelAggregatedList (Maybe VPNTunnelAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
vtalSelfLink :: Lens' VPNTunnelAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
vtalId :: Lens' VPNTunnelAggregatedList (Maybe Text)

-- | An instance-attached disk resource.
--   
--   <i>See:</i> <a>attachedDisk</a> smart constructor.
data AttachedDisk

-- | Creates a value of <a>AttachedDisk</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>adDiskEncryptionKey</a></li>
--   <li><a>adKind</a></li>
--   <li><a>adMode</a></li>
--   <li><a>adBoot</a></li>
--   <li><a>adAutoDelete</a></li>
--   <li><a>adInitializeParams</a></li>
--   <li><a>adDeviceName</a></li>
--   <li><a>adInterface</a></li>
--   <li><a>adSource</a></li>
--   <li><a>adLicenses</a></li>
--   <li><a>adType</a></li>
--   <li><a>adIndex</a></li>
--   </ul>
attachedDisk :: AttachedDisk

-- | Encrypts or decrypts a disk using a customer-supplied encryption key.
--   If you are creating a new disk, this field encrypts the new disk using
--   an encryption key that you provide. If you are attaching an existing
--   disk that is already encrypted, this field decrypts the disk using the
--   customer-supplied encryption key. If you encrypt a disk using a
--   customer-supplied key, you must provide the same key again when you
--   attempt to use this resource at a later time. For example, you must
--   provide the key when you create a snapshot or an image from the disk
--   or when you attach the disk to a virtual machine instance. If you do
--   not provide an encryption key, then the disk will be encrypted using
--   an automatically generated key and you do not need to provide a key to
--   use the disk later. Instance templates do not store customer-supplied
--   encryption keys, so you cannot use your own keys to encrypt disks in a
--   managed instance group.
adDiskEncryptionKey :: Lens' AttachedDisk (Maybe CustomerEncryptionKey)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always
--   compute#attachedDisk for attached disks.</li>
--   </ul>
adKind :: Lens' AttachedDisk Text

-- | The mode in which to attach this disk, either READ_WRITE or READ_ONLY.
--   If not specified, the default is to attach the disk in READ_WRITE
--   mode.
adMode :: Lens' AttachedDisk (Maybe AttachedDiskMode)

-- | Indicates that this is a boot disk. The virtual machine will use the
--   first partition of the disk for its root filesystem.
adBoot :: Lens' AttachedDisk (Maybe Bool)

-- | Specifies whether the disk will be auto-deleted when the instance is
--   deleted (but not when the disk is detached from the instance).
adAutoDelete :: Lens' AttachedDisk (Maybe Bool)

-- | <ul>
--   <li><i>Input Only</i> Specifies the parameters for a new disk that
--   will be created alongside the new instance. Use initialization
--   parameters to create boot disks or local SSDs attached to the new
--   instance. This property is mutually exclusive with the source
--   property; you can only define one or the other, but not both.</li>
--   </ul>
adInitializeParams :: Lens' AttachedDisk (Maybe AttachedDiskInitializeParams)

-- | Specifies a unique device name of your choice that is reflected into
--   the /dev/disk/by-id/google-* tree of a Linux operating system running
--   within the instance. This name can be used to reference the device for
--   mounting, resizing, and so on, from within the instance. If not
--   specified, the server chooses a default device name to apply to this
--   disk, in the form persistent-disks-x, where x is a number assigned by
--   Google Compute Engine. This field is only applicable for persistent
--   disks.
adDeviceName :: Lens' AttachedDisk (Maybe Text)

-- | Specifies the disk interface to use for attaching this disk, which is
--   either SCSI or NVME. The default is SCSI. Persistent disks must always
--   use SCSI and the request will fail if you attempt to attach a
--   persistent disk in any other format than SCSI. Local SSDs can use
--   either NVME or SCSI. For performance characteristics of SCSI over
--   NVMe, see Local SSD performance.
adInterface :: Lens' AttachedDisk (Maybe AttachedDiskInterface)

-- | Specifies a valid partial or full URL to an existing Persistent Disk
--   resource. When creating a new instance, one of
--   initializeParams.sourceImage or disks.source is required. If desired,
--   you can also attach existing non-root persistent disks using this
--   property. This field is only applicable for persistent disks. Note
--   that for InstanceTemplate, specify the disk name, not the URL for the
--   disk.
adSource :: Lens' AttachedDisk (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Any valid publicly visible licenses.</li>
--   </ul>
adLicenses :: Lens' AttachedDisk [Text]

-- | Specifies the type of the disk, either SCRATCH or PERSISTENT. If not
--   specified, the default is PERSISTENT.
adType :: Lens' AttachedDisk (Maybe AttachedDiskType)

-- | Assigns a zero-based index to this disk, where 0 is reserved for the
--   boot disk. For example, if you have many disks attached to an
--   instance, each disk would have a unique index number. If not
--   specified, the server will choose an appropriate value.
adIndex :: Lens' AttachedDisk (Maybe Int32)

-- | Contains a list of disk types.
--   
--   <i>See:</i> <a>diskTypeList</a> smart constructor.
data DiskTypeList

-- | Creates a value of <a>DiskTypeList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtlNextPageToken</a></li>
--   <li><a>dtlKind</a></li>
--   <li><a>dtlItems</a></li>
--   <li><a>dtlSelfLink</a></li>
--   <li><a>dtlId</a></li>
--   </ul>
diskTypeList :: DiskTypeList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
dtlNextPageToken :: Lens' DiskTypeList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#diskTypeList
--   for disk types.</li>
--   </ul>
dtlKind :: Lens' DiskTypeList Text

-- | <ul>
--   <li><i>Output Only</i> A list of Disk Type resources.</li>
--   </ul>
dtlItems :: Lens' DiskTypeList [DiskType]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
dtlSelfLink :: Lens' DiskTypeList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
dtlId :: Lens' DiskTypeList (Maybe Text)
data RegionInstanceGroupsSetNamedPortsRequest

-- | Creates a value of <a>RegionInstanceGroupsSetNamedPortsRequest</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigsnprFingerprint</a></li>
--   <li><a>rigsnprNamedPorts</a></li>
--   </ul>
regionInstanceGroupsSetNamedPortsRequest :: RegionInstanceGroupsSetNamedPortsRequest

-- | The fingerprint of the named ports information for this instance
--   group. Use this optional property to prevent conflicts when multiple
--   users change the named ports settings concurrently. Obtain the
--   fingerprint with the instanceGroups.get method. Then, include the
--   fingerprint in your request to ensure that you do not overwrite
--   changes that were applied from another concurrent request.
rigsnprFingerprint :: Lens' RegionInstanceGroupsSetNamedPortsRequest (Maybe ByteString)

-- | The list of named ports to set for this instance group.
rigsnprNamedPorts :: Lens' RegionInstanceGroupsSetNamedPortsRequest [NamedPort]

-- | Contains a list of machine types.
--   
--   <i>See:</i> <a>machineTypeList</a> smart constructor.
data MachineTypeList

-- | Creates a value of <a>MachineTypeList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mtlNextPageToken</a></li>
--   <li><a>mtlKind</a></li>
--   <li><a>mtlItems</a></li>
--   <li><a>mtlSelfLink</a></li>
--   <li><a>mtlId</a></li>
--   </ul>
machineTypeList :: MachineTypeList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
mtlNextPageToken :: Lens' MachineTypeList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#machineTypeList for lists of machine types.</li>
--   </ul>
mtlKind :: Lens' MachineTypeList Text

-- | <ul>
--   <li><i>Output Only</i> A list of Machine Type resources.</li>
--   </ul>
mtlItems :: Lens' MachineTypeList [MachineType]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
mtlSelfLink :: Lens' MachineTypeList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
mtlId :: Lens' MachineTypeList (Maybe Text)

-- | A list of TargetHttpProxy resources.
--   
--   <i>See:</i> <a>targetHTTPProxyList</a> smart constructor.
data TargetHTTPProxyList

-- | Creates a value of <a>TargetHTTPProxyList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>thttpplNextPageToken</a></li>
--   <li><a>thttpplKind</a></li>
--   <li><a>thttpplItems</a></li>
--   <li><a>thttpplSelfLink</a></li>
--   <li><a>thttpplId</a></li>
--   </ul>
targetHTTPProxyList :: TargetHTTPProxyList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
thttpplNextPageToken :: Lens' TargetHTTPProxyList (Maybe Text)

-- | Type of resource. Always compute#targetHttpProxyList for lists of
--   target HTTP proxies.
thttpplKind :: Lens' TargetHTTPProxyList Text

-- | A list of TargetHttpProxy resources.
thttpplItems :: Lens' TargetHTTPProxyList [TargetHTTPProxy]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
thttpplSelfLink :: Lens' TargetHTTPProxyList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
thttpplId :: Lens' TargetHTTPProxyList (Maybe Text)

-- | Contains a list of managed instance groups.
--   
--   <i>See:</i> <a>regionInstanceGroupManagerList</a> smart constructor.
data RegionInstanceGroupManagerList

-- | Creates a value of <a>RegionInstanceGroupManagerList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmlNextPageToken</a></li>
--   <li><a>rigmlKind</a></li>
--   <li><a>rigmlItems</a></li>
--   <li><a>rigmlSelfLink</a></li>
--   <li><a>rigmlId</a></li>
--   </ul>
regionInstanceGroupManagerList :: RegionInstanceGroupManagerList

-- | <ul>
--   <li><i>Output only</i> A token used to continue a truncated list
--   request.</li>
--   </ul>
rigmlNextPageToken :: Lens' RegionInstanceGroupManagerList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The resource type, which is always
--   compute#instanceGroupManagerList for a list of managed instance groups
--   that exist in th regional scope.</li>
--   </ul>
rigmlKind :: Lens' RegionInstanceGroupManagerList Text

-- | A list of managed instance groups.
rigmlItems :: Lens' RegionInstanceGroupManagerList [InstanceGroupManager]

-- | <ul>
--   <li><i>Output only</i> The URL for this resource type. The server
--   generates this URL.</li>
--   </ul>
rigmlSelfLink :: Lens' RegionInstanceGroupManagerList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
rigmlId :: Lens' RegionInstanceGroupManagerList (Maybe Text)

-- | The IP protocol to which this rule applies. Valid options are TCP,
--   UDP, ESP, AH, SCTP or ICMP. When the load balancing scheme is INTERNAL
data ForwardingRuleIPProtocol

-- | <pre>
--   AH
--   </pre>
FRIPAH :: ForwardingRuleIPProtocol

-- | <pre>
--   ESP
--   </pre>
FRIPEsp :: ForwardingRuleIPProtocol

-- | <pre>
--   SCTP
--   </pre>
FRIPSctp :: ForwardingRuleIPProtocol

-- | <pre>
--   TCP
--   </pre>
FRIPTCP :: ForwardingRuleIPProtocol

-- | <pre>
--   UDP
--   </pre>
FRIPUdp :: ForwardingRuleIPProtocol
data DiskTypesScopedList

-- | Creates a value of <a>DiskTypesScopedList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtslDiskTypes</a></li>
--   <li><a>dtslWarning</a></li>
--   </ul>
diskTypesScopedList :: DiskTypesScopedList

-- | <ul>
--   <li><i>Output Only</i> List of disk types contained in this
--   scope.</li>
--   </ul>
dtslDiskTypes :: Lens' DiskTypesScopedList [DiskType]

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of disk types when the list is empty.</li>
--   </ul>
dtslWarning :: Lens' DiskTypesScopedList (Maybe DiskTypesScopedListWarning)

-- | <ul>
--   <li><i>Output Only</i> The status of the address, which can be either
--   IN_USE or RESERVED. An address that is RESERVED is currently reserved
--   and available to use. An IN_USE address is currently being used by
--   another resource and is not available.</li>
--   </ul>
data AddressStatus

-- | <pre>
--   IN_USE
--   </pre>
InUse :: AddressStatus

-- | <pre>
--   RESERVED
--   </pre>
Reserved :: AddressStatus
data DiskTypeAggregatedList

-- | Creates a value of <a>DiskTypeAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtalNextPageToken</a></li>
--   <li><a>dtalKind</a></li>
--   <li><a>dtalItems</a></li>
--   <li><a>dtalSelfLink</a></li>
--   <li><a>dtalId</a></li>
--   </ul>
diskTypeAggregatedList :: DiskTypeAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
dtalNextPageToken :: Lens' DiskTypeAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#diskTypeAggregatedList.</li>
--   </ul>
dtalKind :: Lens' DiskTypeAggregatedList Text

-- | <ul>
--   <li><i>Output Only</i> A map of scoped disk type lists.</li>
--   </ul>
dtalItems :: Lens' DiskTypeAggregatedList (Maybe DiskTypeAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
dtalSelfLink :: Lens' DiskTypeAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
dtalId :: Lens' DiskTypeAggregatedList (Maybe Text)
data HTTPHealthCheck

-- | Creates a value of <a>HTTPHealthCheck</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>httphcRequestPath</a></li>
--   <li><a>httphcHost</a></li>
--   <li><a>httphcProxyHeader</a></li>
--   <li><a>httphcPortName</a></li>
--   <li><a>httphcPort</a></li>
--   </ul>
hTTPHealthCheck :: HTTPHealthCheck

-- | The request path of the HTTP health check request. The default value
--   is /.
httphcRequestPath :: Lens' HTTPHealthCheck (Maybe Text)

-- | The value of the host header in the HTTP health check request. If left
--   empty (default value), the IP on behalf of which this health check is
--   performed will be used.
httphcHost :: Lens' HTTPHealthCheck (Maybe Text)

-- | Specifies the type of proxy header to append before sending data to
--   the backend, either NONE or PROXY_V1. The default is NONE.
httphcProxyHeader :: Lens' HTTPHealthCheck (Maybe HTTPHealthCheckProxyHeader)

-- | Port name as defined in InstanceGroupname. If both port and port_name
--   are defined, port takes precedence.
httphcPortName :: Lens' HTTPHealthCheck (Maybe Text)

-- | The TCP port number for the health check request. The default value is
--   80.
httphcPort :: Lens' HTTPHealthCheck (Maybe Int32)
data BackendServiceGroupHealth

-- | Creates a value of <a>BackendServiceGroupHealth</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bsghKind</a></li>
--   <li><a>bsghHealthStatus</a></li>
--   </ul>
backendServiceGroupHealth :: BackendServiceGroupHealth

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#backendServiceGroupHealth for the health of backend
--   services.</li>
--   </ul>
bsghKind :: Lens' BackendServiceGroupHealth Text
bsghHealthStatus :: Lens' BackendServiceGroupHealth [HealthStatus]

-- | A filter for the state of the instances in the instance group. Valid
--   options are ALL or RUNNING. If you do not specify this parameter the
--   list includes all instances regardless of their state.
data InstanceGroupsListInstancesRequestInstanceState

-- | <pre>
--   ALL
--   </pre>
IGLIRISAll :: InstanceGroupsListInstancesRequestInstanceState

-- | <pre>
--   RUNNING
--   </pre>
IGLIRISRunning :: InstanceGroupsListInstancesRequestInstanceState
data AutoscalersScopedList

-- | Creates a value of <a>AutoscalersScopedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aAutoscalers</a></li>
--   <li><a>aWarning</a></li>
--   </ul>
autoscalersScopedList :: AutoscalersScopedList

-- | <ul>
--   <li><i>Output Only</i> List of autoscalers contained in this
--   scope.</li>
--   </ul>
aAutoscalers :: Lens' AutoscalersScopedList [Autoscaler]

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of autoscalers when the list is empty.</li>
--   </ul>
aWarning :: Lens' AutoscalersScopedList (Maybe AutoscalersScopedListWarning)
data AutoscalerAggregatedList

-- | Creates a value of <a>AutoscalerAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aalNextPageToken</a></li>
--   <li><a>aalKind</a></li>
--   <li><a>aalItems</a></li>
--   <li><a>aalSelfLink</a></li>
--   <li><a>aalId</a></li>
--   </ul>
autoscalerAggregatedList :: AutoscalerAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
aalNextPageToken :: Lens' AutoscalerAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#autoscalerAggregatedList for aggregated lists of
--   autoscalers.</li>
--   </ul>
aalKind :: Lens' AutoscalerAggregatedList Text

-- | A map of scoped autoscaler lists.
aalItems :: Lens' AutoscalerAggregatedList (Maybe AutoscalerAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
aalSelfLink :: Lens' AutoscalerAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
aalId :: Lens' AutoscalerAggregatedList (Maybe Text)

-- | A map of scoped router lists.
--   
--   <i>See:</i> <a>routerAggregatedListItems</a> smart constructor.
data RouterAggregatedListItems

-- | Creates a value of <a>RouterAggregatedListItems</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>raliAddtional</a></li>
--   </ul>
routerAggregatedListItems :: HashMap Text RoutersScopedList -> RouterAggregatedListItems

-- | Name of the scope containing this set of routers.
raliAddtional :: Lens' RouterAggregatedListItems (HashMap Text RoutersScopedList)

-- | Specifies the type of proxy header to append before sending data to
--   the backend, either NONE or PROXY_V1. The default is NONE.
data HTTPSHealthCheckProxyHeader

-- | <pre>
--   NONE
--   </pre>
HHCPHNone :: HTTPSHealthCheckProxyHeader

-- | <pre>
--   PROXY_V1
--   </pre>
HHCPHProxyV1 :: HTTPSHealthCheckProxyHeader

-- | Cloud Autoscaler policy.
--   
--   <i>See:</i> <a>autoscalingPolicy</a> smart constructor.
data AutoscalingPolicy

-- | Creates a value of <a>AutoscalingPolicy</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>apCustomMetricUtilizations</a></li>
--   <li><a>apMaxNumReplicas</a></li>
--   <li><a>apCPUUtilization</a></li>
--   <li><a>apLoadBalancingUtilization</a></li>
--   <li><a>apMinNumReplicas</a></li>
--   <li><a>apCoolDownPeriodSec</a></li>
--   </ul>
autoscalingPolicy :: AutoscalingPolicy

-- | Configuration parameters of autoscaling based on a custom metric.
apCustomMetricUtilizations :: Lens' AutoscalingPolicy [AutoscalingPolicyCustomMetricUtilization]

-- | The maximum number of instances that the autoscaler can scale up to.
--   This is required when creating or updating an autoscaler. The maximum
--   number of replicas should not be lower than minimal number of
--   replicas.
apMaxNumReplicas :: Lens' AutoscalingPolicy (Maybe Int32)

-- | Defines the CPU utilization policy that allows the autoscaler to scale
--   based on the average CPU utilization of a managed instance group.
apCPUUtilization :: Lens' AutoscalingPolicy (Maybe AutoscalingPolicyCPUUtilization)

-- | Configuration parameters of autoscaling based on load balancer.
apLoadBalancingUtilization :: Lens' AutoscalingPolicy (Maybe AutoscalingPolicyLoadBalancingUtilization)

-- | The minimum number of replicas that the autoscaler can scale down to.
--   This cannot be less than 0. If not provided, autoscaler will choose a
--   default value depending on maximum number of instances allowed.
apMinNumReplicas :: Lens' AutoscalingPolicy (Maybe Int32)

-- | The number of seconds that the autoscaler should wait before it starts
--   collecting information from a new instance. This prevents the
--   autoscaler from collecting information when the instance is
--   initializing, during which the collected usage would not be reliable.
--   The default time autoscaler waits is 60 seconds. Virtual machine
--   initialization times might vary because of numerous factors. We
--   recommend that you test how long an instance may take to initialize.
--   To do this, create an instance and time the startup process.
apCoolDownPeriodSec :: Lens' AutoscalingPolicy (Maybe Int32)

-- | Contains a list of region resources.
--   
--   <i>See:</i> <a>regionList</a> smart constructor.
data RegionList

-- | Creates a value of <a>RegionList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>regNextPageToken</a></li>
--   <li><a>regKind</a></li>
--   <li><a>regItems</a></li>
--   <li><a>regSelfLink</a></li>
--   <li><a>regId</a></li>
--   </ul>
regionList :: RegionList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
regNextPageToken :: Lens' RegionList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#regionList for
--   lists of regions.</li>
--   </ul>
regKind :: Lens' RegionList Text

-- | <ul>
--   <li><i>Output Only</i> A list of Region resources.</li>
--   </ul>
regItems :: Lens' RegionList [Region]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
regSelfLink :: Lens' RegionList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
regId :: Lens' RegionList (Maybe Text)

-- | Specifies the disk interface to use for attaching this disk, which is
--   either SCSI or NVME. The default is SCSI. Persistent disks must always
--   use SCSI and the request will fail if you attempt to attach a
--   persistent disk in any other format than SCSI. Local SSDs can use
--   either NVME or SCSI. For performance characteristics of SCSI over
--   NVMe, see Local SSD performance.
data AttachedDiskInterface

-- | <pre>
--   NVME
--   </pre>
Nvme :: AttachedDiskInterface

-- | <pre>
--   SCSI
--   </pre>
Scsi :: AttachedDiskInterface

-- | Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS.
--   If not specified, the default is TCP. Exactly one of the
--   protocol-specific health check field must be specified, which must
--   match type field.
data HealthCheckType

-- | <pre>
--   HTTP
--   </pre>
HCTHTTP :: HealthCheckType

-- | <pre>
--   HTTPS
--   </pre>
HCTHTTPS :: HealthCheckType

-- | <pre>
--   INVALID
--   </pre>
HCTInvalid :: HealthCheckType

-- | <pre>
--   SSL
--   </pre>
HCTSSL :: HealthCheckType

-- | <pre>
--   TCP
--   </pre>
HCTTCP :: HealthCheckType

-- | <ul>
--   <li><i>Output Only</i> Status of the zone, either UP or DOWN.</li>
--   </ul>
data ZoneStatus

-- | <pre>
--   DOWN
--   </pre>
ZSDown :: ZoneStatus

-- | <pre>
--   UP
--   </pre>
ZSUP :: ZoneStatus

-- | Contains a list of VpnTunnel resources.
--   
--   <i>See:</i> <a>vpnTunnelList</a> smart constructor.
data VPNTunnelList

-- | Creates a value of <a>VPNTunnelList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vtlNextPageToken</a></li>
--   <li><a>vtlKind</a></li>
--   <li><a>vtlItems</a></li>
--   <li><a>vtlSelfLink</a></li>
--   <li><a>vtlId</a></li>
--   </ul>
vpnTunnelList :: VPNTunnelList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
vtlNextPageToken :: Lens' VPNTunnelList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#vpnTunnel for
--   VPN tunnels.</li>
--   </ul>
vtlKind :: Lens' VPNTunnelList Text

-- | <ul>
--   <li><i>Output Only</i> A list of VpnTunnel resources.</li>
--   </ul>
vtlItems :: Lens' VPNTunnelList [VPNTunnel]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
vtlSelfLink :: Lens' VPNTunnelList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
vtlId :: Lens' VPNTunnelList (Maybe Text)
data MachineTypeScratchDisksItem

-- | Creates a value of <a>MachineTypeScratchDisksItem</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mtsdiDiskGb</a></li>
--   </ul>
machineTypeScratchDisksItem :: MachineTypeScratchDisksItem

-- | Size of the scratch disk, defined in GB.
mtsdiDiskGb :: Lens' MachineTypeScratchDisksItem (Maybe Int32)
data SubnetworksScopedListWarningDataItem

-- | Creates a value of <a>SubnetworksScopedListWarningDataItem</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sslwdiValue</a></li>
--   <li><a>sslwdiKey</a></li>
--   </ul>
subnetworksScopedListWarningDataItem :: SubnetworksScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
sslwdiValue :: Lens' SubnetworksScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
sslwdiKey :: Lens' SubnetworksScopedListWarningDataItem (Maybe Text)
data MachineTypesScopedList

-- | Creates a value of <a>MachineTypesScopedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mtslMachineTypes</a></li>
--   <li><a>mtslWarning</a></li>
--   </ul>
machineTypesScopedList :: MachineTypesScopedList

-- | <ul>
--   <li><i>Output Only</i> List of machine types contained in this
--   scope.</li>
--   </ul>
mtslMachineTypes :: Lens' MachineTypesScopedList [MachineType]

-- | <ul>
--   <li><i>Output Only</i> An informational warning that appears when the
--   machine types list is empty.</li>
--   </ul>
mtslWarning :: Lens' MachineTypesScopedList (Maybe MachineTypesScopedListWarning)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data SubnetworksScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
SSLWCCleanupFailed :: SubnetworksScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
SSLWCDeprecatedResourceUsed :: SubnetworksScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
SSLWCDiskSizeLargerThanImageSize :: SubnetworksScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
SSLWCFieldValueOverriden :: SubnetworksScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
SSLWCInjectedKernelsDeprecated :: SubnetworksScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
SSLWCNextHopAddressNotAssigned :: SubnetworksScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
SSLWCNextHopCannotIPForward :: SubnetworksScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
SSLWCNextHopInstanceNotFound :: SubnetworksScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
SSLWCNextHopInstanceNotOnNetwork :: SubnetworksScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
SSLWCNextHopNotRunning :: SubnetworksScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
SSLWCNotCriticalError :: SubnetworksScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
SSLWCNoResultsOnPage :: SubnetworksScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
SSLWCRequiredTosAgreement :: SubnetworksScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
SSLWCResourceNotDeleted :: SubnetworksScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
SSLWCSingleInstancePropertyTemplate :: SubnetworksScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
SSLWCUnreachable :: SubnetworksScopedListWarningCode

-- | A Subnetwork resource.
--   
--   <i>See:</i> <a>subnetwork</a> smart constructor.
data Subnetwork

-- | Creates a value of <a>Subnetwork</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>subKind</a></li>
--   <li><a>subNetwork</a></li>
--   <li><a>subGatewayAddress</a></li>
--   <li><a>subSelfLink</a></li>
--   <li><a>subName</a></li>
--   <li><a>subCreationTimestamp</a></li>
--   <li><a>subIPCIdRRange</a></li>
--   <li><a>subId</a></li>
--   <li><a>subRegion</a></li>
--   <li><a>subDescription</a></li>
--   </ul>
subnetwork :: Subnetwork

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#subnetwork
--   for Subnetwork resources.</li>
--   </ul>
subKind :: Lens' Subnetwork Text

-- | The URL of the network to which this subnetwork belongs, provided by
--   the client when initially creating the subnetwork. Only networks that
--   are in the distributed mode can have subnetworks.
subNetwork :: Lens' Subnetwork (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The gateway address for default routes to reach
--   destination addresses outside this subnetwork.</li>
--   </ul>
subGatewayAddress :: Lens' Subnetwork (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
subSelfLink :: Lens' Subnetwork (Maybe Text)

-- | The name of the resource, provided by the client when initially
--   creating the resource. The name must be 1-63 characters long, and
--   comply with RFC1035. Specifically, the name must be 1-63 characters
--   long and match the regular expression <a>a-z</a>? which means the
--   first character must be a lowercase letter, and all following
--   characters must be a dash, lowercase letter, or digit, except the last
--   character, which cannot be a dash.
subName :: Lens' Subnetwork (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
subCreationTimestamp :: Lens' Subnetwork (Maybe Text)

-- | The range of internal addresses that are owned by this subnetwork.
--   Provide this property when you create the subnetwork. For example,
--   10.0.0.0/8 or 192.168.0.0/16. Ranges must be unique and
--   non-overlapping within a network. Only IPv4 is supported.
subIPCIdRRange :: Lens' Subnetwork (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
subId :: Lens' Subnetwork (Maybe Word64)

-- | URL of the region where the Subnetwork resides.
subRegion :: Lens' Subnetwork (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
subDescription :: Lens' Subnetwork (Maybe Text)
data MachineTypeAggregatedList

-- | Creates a value of <a>MachineTypeAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mtalNextPageToken</a></li>
--   <li><a>mtalKind</a></li>
--   <li><a>mtalItems</a></li>
--   <li><a>mtalSelfLink</a></li>
--   <li><a>mtalId</a></li>
--   </ul>
machineTypeAggregatedList :: MachineTypeAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
mtalNextPageToken :: Lens' MachineTypeAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#machineTypeAggregatedList for aggregated lists of machine
--   types.</li>
--   </ul>
mtalKind :: Lens' MachineTypeAggregatedList Text

-- | <ul>
--   <li><i>Output Only</i> A map of scoped machine type lists.</li>
--   </ul>
mtalItems :: Lens' MachineTypeAggregatedList (Maybe MachineTypeAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
mtalSelfLink :: Lens' MachineTypeAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
mtalId :: Lens' MachineTypeAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Name of the quota metric.</li>
--   </ul>
data QuotaMetric

-- | <pre>
--   AUTOSCALERS
--   </pre>
Autoscalers :: QuotaMetric

-- | <pre>
--   BACKEND_SERVICES
--   </pre>
BackendServices :: QuotaMetric

-- | <pre>
--   CPUS
--   </pre>
CPUs :: QuotaMetric

-- | <pre>
--   DISKS_TOTAL_GB
--   </pre>
DisksTotalGb :: QuotaMetric

-- | <pre>
--   FIREWALLS
--   </pre>
Firewalls :: QuotaMetric

-- | <pre>
--   FORWARDING_RULES
--   </pre>
ForwardingRules :: QuotaMetric

-- | <pre>
--   HEALTH_CHECKS
--   </pre>
HealthChecks :: QuotaMetric

-- | <pre>
--   IMAGES
--   </pre>
Images :: QuotaMetric

-- | <pre>
--   INSTANCES
--   </pre>
Instances :: QuotaMetric

-- | <pre>
--   INSTANCE_GROUPS
--   </pre>
InstanceGroups :: QuotaMetric

-- | <pre>
--   INSTANCE_GROUP_MANAGERS
--   </pre>
InstanceGroupManagers :: QuotaMetric

-- | <pre>
--   INSTANCE_TEMPLATES
--   </pre>
InstanceTemplates :: QuotaMetric

-- | <pre>
--   IN_USE_ADDRESSES
--   </pre>
InUseAddresses :: QuotaMetric

-- | <pre>
--   LOCAL_SSD_TOTAL_GB
--   </pre>
LocalSsdTotalGb :: QuotaMetric

-- | <pre>
--   NETWORKS
--   </pre>
Networks :: QuotaMetric

-- | <pre>
--   PREEMPTIBLE_CPUS
--   </pre>
PreemptibleCPUs :: QuotaMetric

-- | <pre>
--   REGIONAL_AUTOSCALERS
--   </pre>
RegionalAutoscalers :: QuotaMetric

-- | <pre>
--   REGIONAL_INSTANCE_GROUP_MANAGERS
--   </pre>
RegionalInstanceGroupManagers :: QuotaMetric

-- | <pre>
--   ROUTERS
--   </pre>
Routers :: QuotaMetric

-- | <pre>
--   ROUTES
--   </pre>
Routes :: QuotaMetric

-- | <pre>
--   SNAPSHOTS
--   </pre>
Snapshots :: QuotaMetric

-- | <pre>
--   SSD_TOTAL_GB
--   </pre>
SsdTotalGb :: QuotaMetric

-- | <pre>
--   SSL_CERTIFICATES
--   </pre>
SSLCertificates :: QuotaMetric

-- | <pre>
--   STATIC_ADDRESSES
--   </pre>
StaticAddresses :: QuotaMetric

-- | <pre>
--   SUBNETWORKS
--   </pre>
Subnetworks :: QuotaMetric

-- | <pre>
--   TARGET_HTTPS_PROXIES
--   </pre>
TargetHTTPSProxies :: QuotaMetric

-- | <pre>
--   TARGET_HTTP_PROXIES
--   </pre>
TargetHTTPProxies :: QuotaMetric

-- | <pre>
--   TARGET_INSTANCES
--   </pre>
TargetInstances :: QuotaMetric

-- | <pre>
--   TARGET_POOLS
--   </pre>
TargetPools :: QuotaMetric

-- | <pre>
--   TARGET_SSL_PROXIES
--   </pre>
TargetSSLProxies :: QuotaMetric

-- | <pre>
--   TARGET_VPN_GATEWAYS
--   </pre>
TargetVPNGateways :: QuotaMetric

-- | <pre>
--   TOTAL_CPUS
--   </pre>
TotalCPUs :: QuotaMetric

-- | <pre>
--   URL_MAPS
--   </pre>
URLMaps :: QuotaMetric

-- | <pre>
--   VPN_TUNNELS
--   </pre>
VPNTunnels :: QuotaMetric

-- | A DiskType resource.
--   
--   <i>See:</i> <a>diskType</a> smart constructor.
data DiskType

-- | Creates a value of <a>DiskType</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtKind</a></li>
--   <li><a>dtZone</a></li>
--   <li><a>dtSelfLink</a></li>
--   <li><a>dtName</a></li>
--   <li><a>dtCreationTimestamp</a></li>
--   <li><a>dtId</a></li>
--   <li><a>dtValidDiskSize</a></li>
--   <li><a>dtDescription</a></li>
--   <li><a>dtDefaultDiskSizeGb</a></li>
--   <li><a>dtDeprecated</a></li>
--   </ul>
diskType :: DiskType

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#diskType
--   for disk types.</li>
--   </ul>
dtKind :: Lens' DiskType Text

-- | <ul>
--   <li><i>Output Only</i> URL of the zone where the disk type
--   resides.</li>
--   </ul>
dtZone :: Lens' DiskType (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
dtSelfLink :: Lens' DiskType (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Name of the resource.</li>
--   </ul>
dtName :: Lens' DiskType (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
dtCreationTimestamp :: Lens' DiskType (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
dtId :: Lens' DiskType (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> An optional textual description of the valid
--   disk size, such as "10GB-10TB".</li>
--   </ul>
dtValidDiskSize :: Lens' DiskType (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> An optional description of this resource.</li>
--   </ul>
dtDescription :: Lens' DiskType (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined default disk size in GB.</li>
--   </ul>
dtDefaultDiskSizeGb :: Lens' DiskType (Maybe Int64)

-- | <ul>
--   <li><i>Output Only</i> The deprecation status associated with this
--   disk type.</li>
--   </ul>
dtDeprecated :: Lens' DiskType (Maybe DeprecationStatus)

-- | Message representing the validation result for a UrlMap.
--   
--   <i>See:</i> <a>urlMapValidationResult</a> smart constructor.
data URLMapValidationResult

-- | Creates a value of <a>URLMapValidationResult</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umvrLoadErrors</a></li>
--   <li><a>umvrLoadSucceeded</a></li>
--   <li><a>umvrTestPassed</a></li>
--   <li><a>umvrTestFailures</a></li>
--   </ul>
urlMapValidationResult :: URLMapValidationResult
umvrLoadErrors :: Lens' URLMapValidationResult [Text]

-- | Whether the given UrlMap can be successfully loaded. If false,
--   'loadErrors' indicates the reasons.
umvrLoadSucceeded :: Lens' URLMapValidationResult (Maybe Bool)

-- | If successfully loaded, this field indicates whether the test passed.
--   If false, 'testFailures's indicate the reason of failure.
umvrTestPassed :: Lens' URLMapValidationResult (Maybe Bool)
umvrTestFailures :: Lens' URLMapValidationResult [TestFailure]

-- | A metadata key/value entry.
--   
--   <i>See:</i> <a>metadata</a> smart constructor.
data Metadata

-- | Creates a value of <a>Metadata</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mKind</a></li>
--   <li><a>mFingerprint</a></li>
--   <li><a>mItems</a></li>
--   </ul>
metadata :: Metadata

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#metadata
--   for metadata.</li>
--   </ul>
mKind :: Lens' Metadata Text

-- | Specifies a fingerprint for this request, which is essentially a hash
--   of the metadata's contents and used for optimistic locking. The
--   fingerprint is initially generated by Compute Engine and changes after
--   every request to modify or update metadata. You must always provide an
--   up-to-date fingerprint hash in order to update or change metadata.
mFingerprint :: Lens' Metadata (Maybe ByteString)

-- | Array of key/value pairs. The total size of all keys and values must
--   be less than 512 KB.
mItems :: Lens' Metadata [MetadataItemsItem]
data RouteWarningsItem

-- | Creates a value of <a>RouteWarningsItem</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rwiData</a></li>
--   <li><a>rwiCode</a></li>
--   <li><a>rwiMessage</a></li>
--   </ul>
routeWarningsItem :: RouteWarningsItem

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
rwiData :: Lens' RouteWarningsItem [RouteWarningsItemDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
rwiCode :: Lens' RouteWarningsItem (Maybe RouteWarningsItemCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
rwiMessage :: Lens' RouteWarningsItem (Maybe Text)
data MachineTypesScopedListWarningDataItem

-- | Creates a value of <a>MachineTypesScopedListWarningDataItem</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mtslwdiValue</a></li>
--   <li><a>mtslwdiKey</a></li>
--   </ul>
machineTypesScopedListWarningDataItem :: MachineTypesScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
mtslwdiValue :: Lens' MachineTypesScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
mtslwdiKey :: Lens' MachineTypesScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The status of the instance. One of the
--   following values: PROVISIONING, STAGING, RUNNING, STOPPING,
--   SUSPENDING, SUSPENDED, and TERMINATED.</li>
--   </ul>
data InstanceStatus

-- | <pre>
--   PROVISIONING
--   </pre>
ISProvisioning :: InstanceStatus

-- | <pre>
--   RUNNING
--   </pre>
ISRunning :: InstanceStatus

-- | <pre>
--   STAGING
--   </pre>
ISStaging :: InstanceStatus

-- | <pre>
--   STOPPED
--   </pre>
ISStopped :: InstanceStatus

-- | <pre>
--   STOPPING
--   </pre>
ISStopping :: InstanceStatus

-- | <pre>
--   SUSPENDED
--   </pre>
ISSuspended :: InstanceStatus

-- | <pre>
--   SUSPENDING
--   </pre>
ISSuspending :: InstanceStatus

-- | <pre>
--   TERMINATED
--   </pre>
ISTerminated :: InstanceStatus

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data MachineTypesScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
MTSLWCCleanupFailed :: MachineTypesScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
MTSLWCDeprecatedResourceUsed :: MachineTypesScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
MTSLWCDiskSizeLargerThanImageSize :: MachineTypesScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
MTSLWCFieldValueOverriden :: MachineTypesScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
MTSLWCInjectedKernelsDeprecated :: MachineTypesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
MTSLWCNextHopAddressNotAssigned :: MachineTypesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
MTSLWCNextHopCannotIPForward :: MachineTypesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
MTSLWCNextHopInstanceNotFound :: MachineTypesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
MTSLWCNextHopInstanceNotOnNetwork :: MachineTypesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
MTSLWCNextHopNotRunning :: MachineTypesScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
MTSLWCNotCriticalError :: MachineTypesScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
MTSLWCNoResultsOnPage :: MachineTypesScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
MTSLWCRequiredTosAgreement :: MachineTypesScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
MTSLWCResourceNotDeleted :: MachineTypesScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
MTSLWCSingleInstancePropertyTemplate :: MachineTypesScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
MTSLWCUnreachable :: MachineTypesScopedListWarningCode
data InstancesSetServiceAccountRequest

-- | Creates a value of <a>InstancesSetServiceAccountRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>issarEmail</a></li>
--   <li><a>issarScopes</a></li>
--   </ul>
instancesSetServiceAccountRequest :: InstancesSetServiceAccountRequest

-- | Email address of the service account.
issarEmail :: Lens' InstancesSetServiceAccountRequest (Maybe Text)

-- | The list of scopes to be made available for this service account.
issarScopes :: Lens' InstancesSetServiceAccountRequest [Text]
data DiskTypesScopedListWarningDataItem

-- | Creates a value of <a>DiskTypesScopedListWarningDataItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtslwdiValue</a></li>
--   <li><a>dtslwdiKey</a></li>
--   </ul>
diskTypesScopedListWarningDataItem :: DiskTypesScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
dtslwdiValue :: Lens' DiskTypesScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
dtslwdiKey :: Lens' DiskTypesScopedListWarningDataItem (Maybe Text)

-- | A TargetHttpProxy resource. This resource defines an HTTP proxy.
--   
--   <i>See:</i> <a>targetHTTPProxy</a> smart constructor.
data TargetHTTPProxy

-- | Creates a value of <a>TargetHTTPProxy</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>thttppURLMap</a></li>
--   <li><a>thttppKind</a></li>
--   <li><a>thttppSelfLink</a></li>
--   <li><a>thttppName</a></li>
--   <li><a>thttppCreationTimestamp</a></li>
--   <li><a>thttppId</a></li>
--   <li><a>thttppDescription</a></li>
--   </ul>
targetHTTPProxy :: TargetHTTPProxy

-- | URL to the UrlMap resource that defines the mapping from URL to the
--   BackendService.
thttppURLMap :: Lens' TargetHTTPProxy (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#targetHttpProxy for target HTTP proxies.</li>
--   </ul>
thttppKind :: Lens' TargetHTTPProxy Text

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
thttppSelfLink :: Lens' TargetHTTPProxy (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
thttppName :: Lens' TargetHTTPProxy (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
thttppCreationTimestamp :: Lens' TargetHTTPProxy (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
thttppId :: Lens' TargetHTTPProxy (Maybe Word64)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
thttppDescription :: Lens' TargetHTTPProxy (Maybe Text)

-- | A Machine Type resource.
--   
--   <i>See:</i> <a>machineType</a> smart constructor.
data MachineType

-- | Creates a value of <a>MachineType</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mtIsSharedCPU</a></li>
--   <li><a>mtKind</a></li>
--   <li><a>mtImageSpaceGb</a></li>
--   <li><a>mtZone</a></li>
--   <li><a>mtSelfLink</a></li>
--   <li><a>mtName</a></li>
--   <li><a>mtCreationTimestamp</a></li>
--   <li><a>mtScratchDisks</a></li>
--   <li><a>mtId</a></li>
--   <li><a>mtGuestCPUs</a></li>
--   <li><a>mtMaximumPersistentDisksSizeGb</a></li>
--   <li><a>mtMaximumPersistentDisks</a></li>
--   <li><a>mtMemoryMb</a></li>
--   <li><a>mtDescription</a></li>
--   <li><a>mtDeprecated</a></li>
--   </ul>
machineType :: MachineType

-- | <ul>
--   <li><i>Output Only</i> Whether this machine type has a shared CPU. See
--   Shared-core machine types for more information.</li>
--   </ul>
mtIsSharedCPU :: Lens' MachineType (Maybe Bool)

-- | <ul>
--   <li><i>Output Only</i> The type of the resource. Always
--   compute#machineType for machine types.</li>
--   </ul>
mtKind :: Lens' MachineType Text

-- | <ul>
--   <li><i>Deprecated</i> This property is deprecated and will never be
--   populated with any relevant values.</li>
--   </ul>
mtImageSpaceGb :: Lens' MachineType (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The name of the zone where the machine type
--   resides, such as us-central1-a.</li>
--   </ul>
mtZone :: Lens' MachineType (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
mtSelfLink :: Lens' MachineType (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Name of the resource.</li>
--   </ul>
mtName :: Lens' MachineType (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
mtCreationTimestamp :: Lens' MachineType (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> List of extended scratch disks assigned to the
--   instance.</li>
--   </ul>
mtScratchDisks :: Lens' MachineType [MachineTypeScratchDisksItem]

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
mtId :: Lens' MachineType (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> The number of virtual CPUs that are available
--   to the instance.</li>
--   </ul>
mtGuestCPUs :: Lens' MachineType (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> Maximum total persistent disks size (GB)
--   allowed.</li>
--   </ul>
mtMaximumPersistentDisksSizeGb :: Lens' MachineType (Maybe Int64)

-- | <ul>
--   <li><i>Output Only</i> Maximum persistent disks allowed.</li>
--   </ul>
mtMaximumPersistentDisks :: Lens' MachineType (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The amount of physical memory available to the
--   instance, defined in MB.</li>
--   </ul>
mtMemoryMb :: Lens' MachineType (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> An optional textual description of the
--   resource.</li>
--   </ul>
mtDescription :: Lens' MachineType (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The deprecation status associated with this
--   machine type.</li>
--   </ul>
mtDeprecated :: Lens' MachineType (Maybe DeprecationStatus)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data DiskTypesScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
DTSLWCCleanupFailed :: DiskTypesScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
DTSLWCDeprecatedResourceUsed :: DiskTypesScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
DTSLWCDiskSizeLargerThanImageSize :: DiskTypesScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
DTSLWCFieldValueOverriden :: DiskTypesScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
DTSLWCInjectedKernelsDeprecated :: DiskTypesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
DTSLWCNextHopAddressNotAssigned :: DiskTypesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
DTSLWCNextHopCannotIPForward :: DiskTypesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
DTSLWCNextHopInstanceNotFound :: DiskTypesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
DTSLWCNextHopInstanceNotOnNetwork :: DiskTypesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
DTSLWCNextHopNotRunning :: DiskTypesScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
DTSLWCNotCriticalError :: DiskTypesScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
DTSLWCNoResultsOnPage :: DiskTypesScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
DTSLWCRequiredTosAgreement :: DiskTypesScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
DTSLWCResourceNotDeleted :: DiskTypesScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
DTSLWCSingleInstancePropertyTemplate :: DiskTypesScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
DTSLWCUnreachable :: DiskTypesScopedListWarningCode

-- | <ul>
--   <li><i>Output Only</i> If errors are generated during processing of
--   the operation, this field will be populated.</li>
--   </ul>
--   
--   <i>See:</i> <a>operationError</a> smart constructor.
data OperationError

-- | Creates a value of <a>OperationError</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oeErrors</a></li>
--   </ul>
operationError :: OperationError

-- | <ul>
--   <li><i>Output Only</i> The array of errors encountered while
--   processing this operation.</li>
--   </ul>
oeErrors :: Lens' OperationError [OperationErrorErrorsItem]

-- | Informational warning which replaces the list of addresses when the
--   list is empty.
--   
--   <i>See:</i> <a>targetInstancesScopedListWarning</a> smart constructor.
data TargetInstancesScopedListWarning

-- | Creates a value of <a>TargetInstancesScopedListWarning</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tislwData</a></li>
--   <li><a>tislwCode</a></li>
--   <li><a>tislwMessage</a></li>
--   </ul>
targetInstancesScopedListWarning :: TargetInstancesScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
tislwData :: Lens' TargetInstancesScopedListWarning [TargetInstancesScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
tislwCode :: Lens' TargetInstancesScopedListWarning (Maybe TargetInstancesScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
tislwMessage :: Lens' TargetInstancesScopedListWarning (Maybe Text)
data SubnetworkAggregatedList

-- | Creates a value of <a>SubnetworkAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>salNextPageToken</a></li>
--   <li><a>salKind</a></li>
--   <li><a>salItems</a></li>
--   <li><a>salSelfLink</a></li>
--   <li><a>salId</a></li>
--   </ul>
subnetworkAggregatedList :: SubnetworkAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
salNextPageToken :: Lens' SubnetworkAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#subnetworkAggregatedList for aggregated lists of
--   subnetworks.</li>
--   </ul>
salKind :: Lens' SubnetworkAggregatedList Text

-- | <ul>
--   <li><i>Output</i> A map of scoped Subnetwork lists.</li>
--   </ul>
salItems :: Lens' SubnetworkAggregatedList (Maybe SubnetworkAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
salSelfLink :: Lens' SubnetworkAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
salId :: Lens' SubnetworkAggregatedList (Maybe Text)
data DisksResizeRequest

-- | Creates a value of <a>DisksResizeRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>drrSizeGb</a></li>
--   </ul>
disksResizeRequest :: DisksResizeRequest

-- | The new size of the persistent disk, which is specified in GB.
drrSizeGb :: Lens' DisksResizeRequest (Maybe Int64)
data AutoscalersScopedListWarningDataItem

-- | Creates a value of <a>AutoscalersScopedListWarningDataItem</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aValue</a></li>
--   <li><a>aKey</a></li>
--   </ul>
autoscalersScopedListWarningDataItem :: AutoscalersScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
aValue :: Lens' AutoscalersScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
aKey :: Lens' AutoscalersScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data AutoscalersScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
ACleanupFailed :: AutoscalersScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
ADeprecatedResourceUsed :: AutoscalersScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
ADiskSizeLargerThanImageSize :: AutoscalersScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
AFieldValueOverriden :: AutoscalersScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
AInjectedKernelsDeprecated :: AutoscalersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
ANextHopAddressNotAssigned :: AutoscalersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
ANextHopCannotIPForward :: AutoscalersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
ANextHopInstanceNotFound :: AutoscalersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
ANextHopInstanceNotOnNetwork :: AutoscalersScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
ANextHopNotRunning :: AutoscalersScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
ANotCriticalError :: AutoscalersScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
ANoResultsOnPage :: AutoscalersScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
ARequiredTosAgreement :: AutoscalersScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
AResourceNotDeleted :: AutoscalersScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
ASingleInstancePropertyTemplate :: AutoscalersScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
AUnreachable :: AutoscalersScopedListWarningCode

-- | This signifies what the ForwardingRule will be used for and can only
--   take the following values: INTERNAL EXTERNAL The value of INTERNAL
--   means that this will be used for Internal Network Load Balancing (TCP,
--   UDP). The value of EXTERNAL means that this will be used for External
--   Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
data ForwardingRuleLoadBalancingScheme

-- | <pre>
--   EXTERNAL
--   </pre>
FRLBSExternal :: ForwardingRuleLoadBalancingScheme

-- | <pre>
--   INTERNAL
--   </pre>
FRLBSInternal :: ForwardingRuleLoadBalancingScheme

-- | <pre>
--   INVALID
--   </pre>
FRLBSInvalid :: ForwardingRuleLoadBalancingScheme
data RegionInstanceGroupManagersSetTemplateRequest

-- | Creates a value of
--   <a>RegionInstanceGroupManagersSetTemplateRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rigmstrInstanceTemplate</a></li>
--   </ul>
regionInstanceGroupManagersSetTemplateRequest :: RegionInstanceGroupManagersSetTemplateRequest

-- | URL of the InstanceTemplate resource from which all new instances will
--   be created.
rigmstrInstanceTemplate :: Lens' RegionInstanceGroupManagersSetTemplateRequest (Maybe Text)
data InstanceGroupsListInstances

-- | Creates a value of <a>InstanceGroupsListInstances</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igliNextPageToken</a></li>
--   <li><a>igliKind</a></li>
--   <li><a>igliItems</a></li>
--   <li><a>igliSelfLink</a></li>
--   <li><a>igliId</a></li>
--   </ul>
instanceGroupsListInstances :: InstanceGroupsListInstances

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
igliNextPageToken :: Lens' InstanceGroupsListInstances (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The resource type, which is always
--   compute#instanceGroupsListInstances for the list of instances in the
--   specified instance group.</li>
--   </ul>
igliKind :: Lens' InstanceGroupsListInstances Text

-- | <ul>
--   <li><i>Output Only</i> A list of instances and any named ports that
--   are assigned to those instances.</li>
--   </ul>
igliItems :: Lens' InstanceGroupsListInstances [InstanceWithNamedPorts]

-- | <ul>
--   <li><i>Output Only</i> The URL for this list of instances in the
--   specified instance groups. The server generates this URL.</li>
--   </ul>
igliSelfLink :: Lens' InstanceGroupsListInstances (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A unique identifier for this list of instances
--   in the specified instance group. The server generates this
--   identifier.</li>
--   </ul>
igliId :: Lens' InstanceGroupsListInstances (Maybe Text)

-- | Represents an Autoscaler resource. Autoscalers allow you to
--   automatically scale virtual machine instances in managed instance
--   groups according to an autoscaling policy that you define. For more
--   information, read Autoscaling Groups of Instances.
--   
--   <i>See:</i> <a>autoscaler</a> smart constructor.
data Autoscaler

-- | Creates a value of <a>Autoscaler</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aaKind</a></li>
--   <li><a>aaZone</a></li>
--   <li><a>aaSelfLink</a></li>
--   <li><a>aaName</a></li>
--   <li><a>aaCreationTimestamp</a></li>
--   <li><a>aaAutoscalingPolicy</a></li>
--   <li><a>aaId</a></li>
--   <li><a>aaRegion</a></li>
--   <li><a>aaDescription</a></li>
--   <li><a>aaTarget</a></li>
--   </ul>
autoscaler :: Autoscaler

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#autoscaler
--   for autoscalers.</li>
--   </ul>
aaKind :: Lens' Autoscaler Text

-- | <ul>
--   <li><i>Output Only</i> URL of the zone where the instance group
--   resides (for autoscalers living in zonal scope).</li>
--   </ul>
aaZone :: Lens' Autoscaler (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
aaSelfLink :: Lens' Autoscaler (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
aaName :: Lens' Autoscaler (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
aaCreationTimestamp :: Lens' Autoscaler (Maybe Text)

-- | The configuration parameters for the autoscaling algorithm. You can
--   define one or more of the policies for an autoscaler: cpuUtilization,
--   customMetricUtilizations, and loadBalancingUtilization. If none of
--   these are specified, the default will be to autoscale based on
--   cpuUtilization to 0.6 or 60%.
aaAutoscalingPolicy :: Lens' Autoscaler (Maybe AutoscalingPolicy)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
aaId :: Lens' Autoscaler (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> URL of the region where the instance group
--   resides (for autoscalers living in regional scope).</li>
--   </ul>
aaRegion :: Lens' Autoscaler (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
aaDescription :: Lens' Autoscaler (Maybe Text)

-- | URL of the managed instance group that this autoscaler will scale.
aaTarget :: Lens' Autoscaler (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of disks when the list is empty.</li>
--   </ul>
--   
--   <i>See:</i> <a>disksScopedListWarning</a> smart constructor.
data DisksScopedListWarning

-- | Creates a value of <a>DisksScopedListWarning</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dslwData</a></li>
--   <li><a>dslwCode</a></li>
--   <li><a>dslwMessage</a></li>
--   </ul>
disksScopedListWarning :: DisksScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
dslwData :: Lens' DisksScopedListWarning [DisksScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
dslwCode :: Lens' DisksScopedListWarning (Maybe DisksScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
dslwMessage :: Lens' DisksScopedListWarning (Maybe Text)

-- | A map of scoped target vpn gateway lists.
--   
--   <i>See:</i> <a>targetVPNGatewayAggregatedListItems</a> smart
--   constructor.
data TargetVPNGatewayAggregatedListItems

-- | Creates a value of <a>TargetVPNGatewayAggregatedListItems</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tvgaliAddtional</a></li>
--   </ul>
targetVPNGatewayAggregatedListItems :: HashMap Text TargetVPNGatewaysScopedList -> TargetVPNGatewayAggregatedListItems

-- | <ul>
--   <li><i>Output Only</i> Name of the scope containing this set of target
--   VPN gateways.</li>
--   </ul>
tvgaliAddtional :: Lens' TargetVPNGatewayAggregatedListItems (HashMap Text TargetVPNGatewaysScopedList)

-- | Status of the BGP peer: {UP, DOWN}
data RouterStatusBGPPeerStatusStatus

-- | <pre>
--   DOWN
--   </pre>
RSBPSSDown :: RouterStatusBGPPeerStatusStatus

-- | <pre>
--   UNKNOWN
--   </pre>
RSBPSSUnknown :: RouterStatusBGPPeerStatusStatus

-- | <pre>
--   UP
--   </pre>
RSBPSSUP :: RouterStatusBGPPeerStatusStatus

-- | Informational warning which replaces the list of addresses when the
--   list is empty.
--   
--   <i>See:</i> <a>targetPoolsScopedListWarning</a> smart constructor.
data TargetPoolsScopedListWarning

-- | Creates a value of <a>TargetPoolsScopedListWarning</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tpslwData</a></li>
--   <li><a>tpslwCode</a></li>
--   <li><a>tpslwMessage</a></li>
--   </ul>
targetPoolsScopedListWarning :: TargetPoolsScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
tpslwData :: Lens' TargetPoolsScopedListWarning [TargetPoolsScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
tpslwCode :: Lens' TargetPoolsScopedListWarning (Maybe TargetPoolsScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
tpslwMessage :: Lens' TargetPoolsScopedListWarning (Maybe Text)
data HealthStatus

-- | Creates a value of <a>HealthStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hsIPAddress</a></li>
--   <li><a>hsHealthState</a></li>
--   <li><a>hsPort</a></li>
--   <li><a>hsInstance</a></li>
--   </ul>
healthStatus :: HealthStatus

-- | The IP address represented by this resource.
hsIPAddress :: Lens' HealthStatus (Maybe Text)

-- | Health state of the instance.
hsHealthState :: Lens' HealthStatus (Maybe HealthStatusHealthState)

-- | The port on the instance.
hsPort :: Lens' HealthStatus (Maybe Int32)

-- | URL of the instance resource.
hsInstance :: Lens' HealthStatus (Maybe Text)

-- | Region resource.
--   
--   <i>See:</i> <a>region</a> smart constructor.
data Region

-- | Creates a value of <a>Region</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>regeStatus</a></li>
--   <li><a>regeZones</a></li>
--   <li><a>regeKind</a></li>
--   <li><a>regeSelfLink</a></li>
--   <li><a>regeName</a></li>
--   <li><a>regeCreationTimestamp</a></li>
--   <li><a>regeQuotas</a></li>
--   <li><a>regeId</a></li>
--   <li><a>regeDescription</a></li>
--   <li><a>regeDeprecated</a></li>
--   </ul>
region :: Region

-- | <ul>
--   <li><i>Output Only</i> Status of the region, either UP or DOWN.</li>
--   </ul>
regeStatus :: Lens' Region (Maybe RegionStatus)

-- | <ul>
--   <li><i>Output Only</i> A list of zones available in this region, in
--   the form of resource URLs.</li>
--   </ul>
regeZones :: Lens' Region [Text]

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#region for
--   regions.</li>
--   </ul>
regeKind :: Lens' Region Text

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
regeSelfLink :: Lens' Region (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Name of the resource.</li>
--   </ul>
regeName :: Lens' Region (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
regeCreationTimestamp :: Lens' Region (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Quotas assigned to this region.</li>
--   </ul>
regeQuotas :: Lens' Region [Quota]

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
regeId :: Lens' Region (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> Textual description of the resource.</li>
--   </ul>
regeDescription :: Lens' Region (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The deprecation status associated with this
--   region.</li>
--   </ul>
regeDeprecated :: Lens' Region (Maybe DeprecationStatus)

-- | Guest OS features.
--   
--   <i>See:</i> <a>guestOSFeature</a> smart constructor.
data GuestOSFeature

-- | Creates a value of <a>GuestOSFeature</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gofType</a></li>
--   </ul>
guestOSFeature :: GuestOSFeature

-- | The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is
--   supported. For newer Windows images, the server might also populate
--   this property with the value WINDOWS to indicate that this is a
--   Windows image. This value is purely informational and does not enable
--   or disable any features.
gofType :: Lens' GuestOSFeature (Maybe GuestOSFeatureType)
data VPNTunnel

-- | Creates a value of <a>VPNTunnel</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vtDetailedStatus</a></li>
--   <li><a>vtStatus</a></li>
--   <li><a>vtLocalTrafficSelector</a></li>
--   <li><a>vtKind</a></li>
--   <li><a>vtPeerIP</a></li>
--   <li><a>vtRouter</a></li>
--   <li><a>vtTargetVPNGateway</a></li>
--   <li><a>vtRemoteTrafficSelector</a></li>
--   <li><a>vtSelfLink</a></li>
--   <li><a>vtSharedSecret</a></li>
--   <li><a>vtName</a></li>
--   <li><a>vtCreationTimestamp</a></li>
--   <li><a>vtSharedSecretHash</a></li>
--   <li><a>vtId</a></li>
--   <li><a>vtIkeVersion</a></li>
--   <li><a>vtRegion</a></li>
--   <li><a>vtDescription</a></li>
--   </ul>
vpnTunnel :: VPNTunnel

-- | <ul>
--   <li><i>Output Only</i> Detailed status message for the VPN
--   tunnel.</li>
--   </ul>
vtDetailedStatus :: Lens' VPNTunnel (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The status of the VPN tunnel.</li>
--   </ul>
vtStatus :: Lens' VPNTunnel (Maybe VPNTunnelStatus)

-- | Local traffic selector to use when establishing the VPN tunnel with
--   peer VPN gateway. The value should be a CIDR formatted string, for
--   example: 192.168.0.0/16. The ranges should be disjoint. Only IPv4 is
--   supported.
vtLocalTrafficSelector :: Lens' VPNTunnel [Text]

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#vpnTunnel for
--   VPN tunnels.</li>
--   </ul>
vtKind :: Lens' VPNTunnel Text

-- | IP address of the peer VPN gateway. Only IPv4 is supported.
vtPeerIP :: Lens' VPNTunnel (Maybe Text)

-- | URL of router resource to be used for dynamic routing.
vtRouter :: Lens' VPNTunnel (Maybe Text)

-- | URL of the VPN gateway with which this VPN tunnel is associated.
--   Provided by the client when the VPN tunnel is created.
vtTargetVPNGateway :: Lens' VPNTunnel (Maybe Text)

-- | Remote traffic selectors to use when establishing the VPN tunnel with
--   peer VPN gateway. The value should be a CIDR formatted string, for
--   example: 192.168.0.0/16. The ranges should be disjoint. Only IPv4 is
--   supported.
vtRemoteTrafficSelector :: Lens' VPNTunnel [Text]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
vtSelfLink :: Lens' VPNTunnel (Maybe Text)

-- | Shared secret used to set the secure session between the Cloud VPN
--   gateway and the peer VPN gateway.
vtSharedSecret :: Lens' VPNTunnel (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
vtName :: Lens' VPNTunnel (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
vtCreationTimestamp :: Lens' VPNTunnel (Maybe Text)

-- | Hash of the shared secret.
vtSharedSecretHash :: Lens' VPNTunnel (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
vtId :: Lens' VPNTunnel (Maybe Word64)

-- | IKE protocol version to use when establishing the VPN tunnel with peer
--   VPN gateway. Acceptable IKE versions are 1 or 2. Default version is 2.
vtIkeVersion :: Lens' VPNTunnel (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> URL of the region where the VPN tunnel
--   resides.</li>
--   </ul>
vtRegion :: Lens' VPNTunnel (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
vtDescription :: Lens' VPNTunnel (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data VPNTunnelsScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
VTSLWCCleanupFailed :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
VTSLWCDeprecatedResourceUsed :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
VTSLWCDiskSizeLargerThanImageSize :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
VTSLWCFieldValueOverriden :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
VTSLWCInjectedKernelsDeprecated :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
VTSLWCNextHopAddressNotAssigned :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
VTSLWCNextHopCannotIPForward :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
VTSLWCNextHopInstanceNotFound :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
VTSLWCNextHopInstanceNotOnNetwork :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
VTSLWCNextHopNotRunning :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
VTSLWCNotCriticalError :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
VTSLWCNoResultsOnPage :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
VTSLWCRequiredTosAgreement :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
VTSLWCResourceNotDeleted :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
VTSLWCSingleInstancePropertyTemplate :: VPNTunnelsScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
VTSLWCUnreachable :: VPNTunnelsScopedListWarningCode

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of operations when the list is empty.</li>
--   </ul>
--   
--   <i>See:</i> <a>operationsScopedListWarning</a> smart constructor.
data OperationsScopedListWarning

-- | Creates a value of <a>OperationsScopedListWarning</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oslwData</a></li>
--   <li><a>oslwCode</a></li>
--   <li><a>oslwMessage</a></li>
--   </ul>
operationsScopedListWarning :: OperationsScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
oslwData :: Lens' OperationsScopedListWarning [OperationsScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
oslwCode :: Lens' OperationsScopedListWarning (Maybe OperationsScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
oslwMessage :: Lens' OperationsScopedListWarning (Maybe Text)

-- | Sets the scheduling options for an Instance.
--   
--   <i>See:</i> <a>scheduling</a> smart constructor.
data Scheduling

-- | Creates a value of <a>Scheduling</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sAutomaticRestart</a></li>
--   <li><a>sOnHostMaintenance</a></li>
--   <li><a>sPreemptible</a></li>
--   </ul>
scheduling :: Scheduling

-- | Specifies whether the instance should be automatically restarted if it
--   is terminated by Compute Engine (not terminated by a user). You can
--   only set the automatic restart option for standard instances.
--   Preemptible instances cannot be automatically restarted.
sAutomaticRestart :: Lens' Scheduling (Maybe Bool)

-- | Defines the maintenance behavior for this instance. For standard
--   instances, the default behavior is MIGRATE. For preemptible instances,
--   the default and only possible behavior is TERMINATE. For more
--   information, see Setting Instance Scheduling Options.
sOnHostMaintenance :: Lens' Scheduling (Maybe SchedulingOnHostMaintenance)

-- | Whether the instance is preemptible.
sPreemptible :: Lens' Scheduling (Maybe Bool)
data VPNTunnelsScopedListWarningDataItem

-- | Creates a value of <a>VPNTunnelsScopedListWarningDataItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vtslwdiValue</a></li>
--   <li><a>vtslwdiKey</a></li>
--   </ul>
vpnTunnelsScopedListWarningDataItem :: VPNTunnelsScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
vtslwdiValue :: Lens' VPNTunnelsScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
vtslwdiKey :: Lens' VPNTunnelsScopedListWarningDataItem (Maybe Text)

-- | Contains a list of Subnetwork resources.
--   
--   <i>See:</i> <a>subnetworkList</a> smart constructor.
data SubnetworkList

-- | Creates a value of <a>SubnetworkList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>slNextPageToken</a></li>
--   <li><a>slKind</a></li>
--   <li><a>slItems</a></li>
--   <li><a>slSelfLink</a></li>
--   <li><a>slId</a></li>
--   </ul>
subnetworkList :: SubnetworkList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
slNextPageToken :: Lens' SubnetworkList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#subnetworkList
--   for lists of subnetworks.</li>
--   </ul>
slKind :: Lens' SubnetworkList Text

-- | The Subnetwork resources.
slItems :: Lens' SubnetworkList [Subnetwork]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
slSelfLink :: Lens' SubnetworkList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
slId :: Lens' SubnetworkList (Maybe Text)

-- | Informational warning which replaces the list of forwarding rules when
--   the list is empty.
--   
--   <i>See:</i> <a>forwardingRulesScopedListWarning</a> smart constructor.
data ForwardingRulesScopedListWarning

-- | Creates a value of <a>ForwardingRulesScopedListWarning</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>frslwData</a></li>
--   <li><a>frslwCode</a></li>
--   <li><a>frslwMessage</a></li>
--   </ul>
forwardingRulesScopedListWarning :: ForwardingRulesScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
frslwData :: Lens' ForwardingRulesScopedListWarning [ForwardingRulesScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
frslwCode :: Lens' ForwardingRulesScopedListWarning (Maybe ForwardingRulesScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
frslwMessage :: Lens' ForwardingRulesScopedListWarning (Maybe Text)

-- | Contains a list of HttpHealthCheck resources.
--   
--   <i>See:</i> <a>hTTPHealthCheckList</a> smart constructor.
data HTTPHealthCheckList

-- | Creates a value of <a>HTTPHealthCheckList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>httphclNextPageToken</a></li>
--   <li><a>httphclKind</a></li>
--   <li><a>httphclItems</a></li>
--   <li><a>httphclSelfLink</a></li>
--   <li><a>httphclId</a></li>
--   </ul>
hTTPHealthCheckList :: HTTPHealthCheckList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
httphclNextPageToken :: Lens' HTTPHealthCheckList (Maybe Text)

-- | Type of resource.
httphclKind :: Lens' HTTPHealthCheckList Text

-- | A list of HttpHealthCheck resources.
httphclItems :: Lens' HTTPHealthCheckList [HTTPHealthCheck]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
httphclSelfLink :: Lens' HTTPHealthCheckList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource. Defined by
--   the server.</li>
--   </ul>
httphclId :: Lens' HTTPHealthCheckList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The warning that replaces the list of managed
--   instance groups when the list is empty.</li>
--   </ul>
--   
--   <i>See:</i> <a>instanceGroupManagersScopedListWarning</a> smart
--   constructor.
data InstanceGroupManagersScopedListWarning

-- | Creates a value of <a>InstanceGroupManagersScopedListWarning</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmslwData</a></li>
--   <li><a>igmslwCode</a></li>
--   <li><a>igmslwMessage</a></li>
--   </ul>
instanceGroupManagersScopedListWarning :: InstanceGroupManagersScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
igmslwData :: Lens' InstanceGroupManagersScopedListWarning [InstanceGroupManagersScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
igmslwCode :: Lens' InstanceGroupManagersScopedListWarning (Maybe InstanceGroupManagersScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
igmslwMessage :: Lens' InstanceGroupManagersScopedListWarning (Maybe Text)
data URLMapsValidateRequest

-- | Creates a value of <a>URLMapsValidateRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umvrResource</a></li>
--   </ul>
urlMapsValidateRequest :: URLMapsValidateRequest

-- | Content of the UrlMap to be validated.
umvrResource :: Lens' URLMapsValidateRequest (Maybe URLMap)
data InstanceGroupManagersSetTargetPoolsRequest

-- | Creates a value of <a>InstanceGroupManagersSetTargetPoolsRequest</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igmstprFingerprint</a></li>
--   <li><a>igmstprTargetPools</a></li>
--   </ul>
instanceGroupManagersSetTargetPoolsRequest :: InstanceGroupManagersSetTargetPoolsRequest

-- | The fingerprint of the target pools information. Use this optional
--   property to prevent conflicts when multiple users change the target
--   pools settings concurrently. Obtain the fingerprint with the
--   instanceGroupManagers.get method. Then, include the fingerprint in
--   your request to ensure that you do not overwrite changes that were
--   applied from another concurrent request.
igmstprFingerprint :: Lens' InstanceGroupManagersSetTargetPoolsRequest (Maybe ByteString)

-- | The list of target pool URLs that instances in this managed instance
--   group belong to. The managed instance group applies these target pools
--   to all of the instances in the group. Existing instances and new
--   instances in the group all receive these target pool settings.
igmstprTargetPools :: Lens' InstanceGroupManagersSetTargetPoolsRequest [Text]

-- | Contains a list of HttpsHealthCheck resources.
--   
--   <i>See:</i> <a>httpsHealthCheckList</a> smart constructor.
data HTTPSHealthCheckList

-- | Creates a value of <a>HTTPSHealthCheckList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hhclNextPageToken</a></li>
--   <li><a>hhclKind</a></li>
--   <li><a>hhclItems</a></li>
--   <li><a>hhclSelfLink</a></li>
--   <li><a>hhclId</a></li>
--   </ul>
httpsHealthCheckList :: HTTPSHealthCheckList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
hhclNextPageToken :: Lens' HTTPSHealthCheckList (Maybe Text)

-- | Type of resource.
hhclKind :: Lens' HTTPSHealthCheckList Text

-- | A list of HttpsHealthCheck resources.
hhclItems :: Lens' HTTPSHealthCheckList [HTTPSHealthCheck]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
hhclSelfLink :: Lens' HTTPSHealthCheckList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource; defined by
--   the server.</li>
--   </ul>
hhclId :: Lens' HTTPSHealthCheckList (Maybe Text)
data OperationErrorErrorsItem

-- | Creates a value of <a>OperationErrorErrorsItem</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oeeiLocation</a></li>
--   <li><a>oeeiCode</a></li>
--   <li><a>oeeiMessage</a></li>
--   </ul>
operationErrorErrorsItem :: OperationErrorErrorsItem

-- | <ul>
--   <li><i>Output Only</i> Indicates the field in the request that caused
--   the error. This property is optional.</li>
--   </ul>
oeeiLocation :: Lens' OperationErrorErrorsItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The error type identifier for this error.</li>
--   </ul>
oeeiCode :: Lens' OperationErrorErrorsItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> An optional, human-readable error message.</li>
--   </ul>
oeeiMessage :: Lens' OperationErrorErrorsItem (Maybe Text)

-- | A license resource.
--   
--   <i>See:</i> <a>license</a> smart constructor.
data License

-- | Creates a value of <a>License</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lChargesUseFee</a></li>
--   <li><a>lKind</a></li>
--   <li><a>lSelfLink</a></li>
--   <li><a>lName</a></li>
--   </ul>
license :: License

-- | <ul>
--   <li><i>Output Only</i> If true, the customer will be charged license
--   fee for running software that contains this license on an
--   instance.</li>
--   </ul>
lChargesUseFee :: Lens' License (Maybe Bool)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#license for
--   licenses.</li>
--   </ul>
lKind :: Lens' License Text

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
lSelfLink :: Lens' License (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Name of the resource. The name is 1-63
--   characters long and complies with RFC1035.</li>
--   </ul>
lName :: Lens' License (Maybe Text)

-- | A path-matching rule for a URL. If matched, will use the specified
--   BackendService to handle the traffic arriving at this URL.
--   
--   <i>See:</i> <a>pathRule</a> smart constructor.
data PathRule

-- | Creates a value of <a>PathRule</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>prService</a></li>
--   <li><a>prPaths</a></li>
--   </ul>
pathRule :: PathRule

-- | The URL of the BackendService resource if this rule is matched.
prService :: Lens' PathRule (Maybe Text)

-- | The list of path patterns to match. Each must start with / and the
--   only place a * is allowed is at the end following a /. The string fed
--   to the path matcher does not include any text after the first ? or #,
--   and those chars are not allowed here.
prPaths :: Lens' PathRule [Text]

-- | Contains a list of instances.
--   
--   <i>See:</i> <a>instanceList</a> smart constructor.
data InstanceList

-- | Creates a value of <a>InstanceList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>insNextPageToken</a></li>
--   <li><a>insKind</a></li>
--   <li><a>insItems</a></li>
--   <li><a>insSelfLink</a></li>
--   <li><a>insId</a></li>
--   </ul>
instanceList :: InstanceList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
insNextPageToken :: Lens' InstanceList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#instanceList
--   for lists of Instance resources.</li>
--   </ul>
insKind :: Lens' InstanceList Text

-- | <ul>
--   <li><i>Output Only</i> A list of instances.</li>
--   </ul>
insItems :: Lens' InstanceList [Instance]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
insSelfLink :: Lens' InstanceList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
insId :: Lens' InstanceList (Maybe Text)

-- | <ul>
--   <li><i>Output</i> A map of scoped Subnetwork lists.</li>
--   </ul>
--   
--   <i>See:</i> <a>subnetworkAggregatedListItems</a> smart constructor.
data SubnetworkAggregatedListItems

-- | Creates a value of <a>SubnetworkAggregatedListItems</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>saliAddtional</a></li>
--   </ul>
subnetworkAggregatedListItems :: HashMap Text SubnetworksScopedList -> SubnetworkAggregatedListItems

-- | Name of the scope containing this set of Subnetworks.
saliAddtional :: Lens' SubnetworkAggregatedListItems (HashMap Text SubnetworksScopedList)
data ManagedInstanceLastAttempt

-- | Creates a value of <a>ManagedInstanceLastAttempt</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>milaErrors</a></li>
--   </ul>
managedInstanceLastAttempt :: ManagedInstanceLastAttempt

-- | <ul>
--   <li><i>Output Only</i> Encountered errors during the last attempt to
--   create or delete the instance.</li>
--   </ul>
milaErrors :: Lens' ManagedInstanceLastAttempt (Maybe ManagedInstanceLastAttemptErrors)

-- | Contains a list of BackendService resources.
--   
--   <i>See:</i> <a>backendServiceList</a> smart constructor.
data BackendServiceList

-- | Creates a value of <a>BackendServiceList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bslNextPageToken</a></li>
--   <li><a>bslKind</a></li>
--   <li><a>bslItems</a></li>
--   <li><a>bslSelfLink</a></li>
--   <li><a>bslId</a></li>
--   </ul>
backendServiceList :: BackendServiceList

-- | <ul>
--   <li><i>Output Only</i> A token used to continue a truncated list
--   request.</li>
--   </ul>
bslNextPageToken :: Lens' BackendServiceList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#backendServiceList for lists of backend services.</li>
--   </ul>
bslKind :: Lens' BackendServiceList Text

-- | A list of BackendService resources.
bslItems :: Lens' BackendServiceList [BackendService]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
bslSelfLink :: Lens' BackendServiceList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource; defined by
--   the server.</li>
--   </ul>
bslId :: Lens' BackendServiceList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> An informational warning that replaces the list
--   of instance groups when the list is empty.</li>
--   </ul>
--   
--   <i>See:</i> <a>instanceGroupsScopedListWarning</a> smart constructor.
data InstanceGroupsScopedListWarning

-- | Creates a value of <a>InstanceGroupsScopedListWarning</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igslwData</a></li>
--   <li><a>igslwCode</a></li>
--   <li><a>igslwMessage</a></li>
--   </ul>
instanceGroupsScopedListWarning :: InstanceGroupsScopedListWarning

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
igslwData :: Lens' InstanceGroupsScopedListWarning [InstanceGroupsScopedListWarningDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
igslwCode :: Lens' InstanceGroupsScopedListWarning (Maybe InstanceGroupsScopedListWarningCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
igslwMessage :: Lens' InstanceGroupsScopedListWarning (Maybe Text)

-- | CPU utilization policy.
--   
--   <i>See:</i> <a>autoscalingPolicyCPUUtilization</a> smart constructor.
data AutoscalingPolicyCPUUtilization

-- | Creates a value of <a>AutoscalingPolicyCPUUtilization</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>apcuUtilizationTarget</a></li>
--   </ul>
autoscalingPolicyCPUUtilization :: AutoscalingPolicyCPUUtilization

-- | The target CPU utilization that the autoscaler should maintain. Must
--   be a float value in the range (0, 1]. If not specified, the default is
--   0.6. If the CPU level is below the target utilization, the autoscaler
--   scales down the number of instances until it reaches the minimum
--   number of instances you specified or until the average CPU of your
--   instances reaches the target utilization. If the average CPU is above
--   the target utilization, the autoscaler scales up until it reaches the
--   maximum number of instances you specified or until the average
--   utilization reaches the target utilization.
apcuUtilizationTarget :: Lens' AutoscalingPolicyCPUUtilization (Maybe Double)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data InstanceGroupsScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
IGSLWCCleanupFailed :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
IGSLWCDeprecatedResourceUsed :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
IGSLWCDiskSizeLargerThanImageSize :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
IGSLWCFieldValueOverriden :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
IGSLWCInjectedKernelsDeprecated :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
IGSLWCNextHopAddressNotAssigned :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
IGSLWCNextHopCannotIPForward :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
IGSLWCNextHopInstanceNotFound :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
IGSLWCNextHopInstanceNotOnNetwork :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
IGSLWCNextHopNotRunning :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
IGSLWCNotCriticalError :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
IGSLWCNoResultsOnPage :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
IGSLWCRequiredTosAgreement :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
IGSLWCResourceNotDeleted :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
IGSLWCSingleInstancePropertyTemplate :: InstanceGroupsScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
IGSLWCUnreachable :: InstanceGroupsScopedListWarningCode
data InstanceGroupsScopedListWarningDataItem

-- | Creates a value of <a>InstanceGroupsScopedListWarningDataItem</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igslwdiValue</a></li>
--   <li><a>igslwdiKey</a></li>
--   </ul>
instanceGroupsScopedListWarningDataItem :: InstanceGroupsScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
igslwdiValue :: Lens' InstanceGroupsScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
igslwdiKey :: Lens' InstanceGroupsScopedListWarningDataItem (Maybe Text)
data ResourceGroupReference

-- | Creates a value of <a>ResourceGroupReference</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rgrGroup</a></li>
--   </ul>
resourceGroupReference :: ResourceGroupReference

-- | A URI referencing one of the instance groups listed in the backend
--   service.
rgrGroup :: Lens' ResourceGroupReference (Maybe Text)

-- | Represents a Firewall resource.
--   
--   <i>See:</i> <a>firewall</a> smart constructor.
data Firewall

-- | Creates a value of <a>Firewall</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fSourceTags</a></li>
--   <li><a>fKind</a></li>
--   <li><a>fTargetTags</a></li>
--   <li><a>fNetwork</a></li>
--   <li><a>fSourceRanges</a></li>
--   <li><a>fSelfLink</a></li>
--   <li><a>fName</a></li>
--   <li><a>fCreationTimestamp</a></li>
--   <li><a>fId</a></li>
--   <li><a>fAllowed</a></li>
--   <li><a>fDescription</a></li>
--   </ul>
firewall :: Firewall

-- | If source tags are specified, the firewall will apply only to traffic
--   with source IP that belongs to a tag listed in source tags. Source
--   tags cannot be used to control traffic to an instance's external IP
--   address. Because tags are associated with an instance, not an IP
--   address. One or both of sourceRanges and sourceTags may be set. If
--   both properties are set, the firewall will apply to traffic that has
--   source IP address within sourceRanges OR the source IP that belongs to
--   a tag listed in the sourceTags property. The connection does not need
--   to match both properties for the firewall to apply.
fSourceTags :: Lens' Firewall [Text]

-- | <ul>
--   <li><i>Output Ony</i> Type of the resource. Always compute#firewall
--   for firewall rules.</li>
--   </ul>
fKind :: Lens' Firewall Text

-- | A list of instance tags indicating sets of instances located in the
--   network that may make network connections as specified in allowed[].
--   If no targetTags are specified, the firewall rule applies to all
--   instances on the specified network.
fTargetTags :: Lens' Firewall [Text]

-- | URL of the network resource for this firewall rule. If not specified
--   when creating a firewall rule, the default network is used:
--   global/networks/default If you choose to specify this property, you
--   can specify the network as a full or partial URL. For example, the
--   following are all valid URLs: -
--   https://www.googleapis.com/compute/v1/projects/myproject/global/networks/my-network
--   - projects/myproject/global/networks/my-network -
--   global/networks/default
fNetwork :: Lens' Firewall (Maybe Text)

-- | If source ranges are specified, the firewall will apply only to
--   traffic that has source IP address in these ranges. These ranges must
--   be expressed in CIDR format. One or both of sourceRanges and
--   sourceTags may be set. If both properties are set, the firewall will
--   apply to traffic that has source IP address within sourceRanges OR the
--   source IP that belongs to a tag listed in the sourceTags property. The
--   connection does not need to match both properties for the firewall to
--   apply. Only IPv4 is supported.
fSourceRanges :: Lens' Firewall [Text]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
fSelfLink :: Lens' Firewall (Maybe Text)

-- | Name of the resource; provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
fName :: Lens' Firewall (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
fCreationTimestamp :: Lens' Firewall (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
fId :: Lens' Firewall (Maybe Word64)

-- | The list of ALLOW rules specified by this firewall. Each rule
--   specifies a protocol and port-range tuple that describes a permitted
--   connection.
fAllowed :: Lens' Firewall [FirewallAllowedItem]

-- | An optional description of this resource. Provide this property when
--   you create the resource.
fDescription :: Lens' Firewall (Maybe Text)

-- | UrlMaps A host-matching rule for a URL. If matched, will use the named
--   PathMatcher to select the BackendService.
--   
--   <i>See:</i> <a>hostRule</a> smart constructor.
data HostRule

-- | Creates a value of <a>HostRule</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hrHosts</a></li>
--   <li><a>hrDescription</a></li>
--   <li><a>hrPathMatcher</a></li>
--   </ul>
hostRule :: HostRule

-- | The list of host patterns to match. They must be valid hostnames,
--   except * will match any string of ([a-z0-9-.]*). In that case, * must
--   be the first character and must be followed in the pattern by either -
--   or ..
hrHosts :: Lens' HostRule [Text]

-- | An optional description of this resource. Provide this property when
--   you create the resource.
hrDescription :: Lens' HostRule (Maybe Text)

-- | The name of the PathMatcher to use to match the path portion of the
--   URL if the hostRule matches the URL's host portion.
hrPathMatcher :: Lens' HostRule (Maybe Text)

-- | A quotas entry.
--   
--   <i>See:</i> <a>quota</a> smart constructor.
data Quota

-- | Creates a value of <a>Quota</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>qMetric</a></li>
--   <li><a>qLimit</a></li>
--   <li><a>qUsage</a></li>
--   </ul>
quota :: Quota

-- | <ul>
--   <li><i>Output Only</i> Name of the quota metric.</li>
--   </ul>
qMetric :: Lens' Quota (Maybe QuotaMetric)

-- | <ul>
--   <li><i>Output Only</i> Quota limit for this metric.</li>
--   </ul>
qLimit :: Lens' Quota (Maybe Double)

-- | <ul>
--   <li><i>Output Only</i> Current usage of this metric.</li>
--   </ul>
qUsage :: Lens' Quota (Maybe Double)
data InstanceGroup

-- | Creates a value of <a>InstanceGroup</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iiSize</a></li>
--   <li><a>iiKind</a></li>
--   <li><a>iiFingerprint</a></li>
--   <li><a>iiNetwork</a></li>
--   <li><a>iiZone</a></li>
--   <li><a>iiSelfLink</a></li>
--   <li><a>iiName</a></li>
--   <li><a>iiCreationTimestamp</a></li>
--   <li><a>iiSubnetwork</a></li>
--   <li><a>iiId</a></li>
--   <li><a>iiRegion</a></li>
--   <li><a>iiDescription</a></li>
--   <li><a>iiNamedPorts</a></li>
--   </ul>
instanceGroup :: InstanceGroup

-- | <ul>
--   <li><i>Output Only</i> The total number of instances in the instance
--   group.</li>
--   </ul>
iiSize :: Lens' InstanceGroup (Maybe Int32)

-- | <ul>
--   <li><i>Output Only</i> The resource type, which is always
--   compute#instanceGroup for instance groups.</li>
--   </ul>
iiKind :: Lens' InstanceGroup Text

-- | <ul>
--   <li><i>Output Only</i> The fingerprint of the named ports. The system
--   uses this fingerprint to detect conflicts when multiple users change
--   the named ports concurrently.</li>
--   </ul>
iiFingerprint :: Lens' InstanceGroup (Maybe ByteString)

-- | The URL of the network to which all instances in the instance group
--   belong.
iiNetwork :: Lens' InstanceGroup (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The URL of the zone where the instance group is
--   located (for zonal resources).</li>
--   </ul>
iiZone :: Lens' InstanceGroup (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The URL for this instance group. The server
--   generates this URL.</li>
--   </ul>
iiSelfLink :: Lens' InstanceGroup (Maybe Text)

-- | The name of the instance group. The name must be 1-63 characters long,
--   and comply with RFC1035.
iiName :: Lens' InstanceGroup (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The creation timestamp for this instance group
--   in RFC3339 text format.</li>
--   </ul>
iiCreationTimestamp :: Lens' InstanceGroup (Maybe Text)

-- | The URL of the subnetwork to which all instances in the instance group
--   belong.
iiSubnetwork :: Lens' InstanceGroup (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A unique identifier for this instance group,
--   generated by the server.</li>
--   </ul>
iiId :: Lens' InstanceGroup (Maybe Word64)

-- | The URL of the region where the instance group is located (for
--   regional resources).
iiRegion :: Lens' InstanceGroup (Maybe Text)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
iiDescription :: Lens' InstanceGroup (Maybe Text)

-- | Assigns a name to a port number. For example: {name: "http", port: 80}
--   This allows the system to reference ports by the assigned name instead
--   of a port number. Named ports can also contain multiple ports. For
--   example: [{name: "http", port: 80},{name: "http", port: 8080}] Named
--   ports apply to all instances in this instance group.
iiNamedPorts :: Lens' InstanceGroup [NamedPort]
data RouterInterface

-- | Creates a value of <a>RouterInterface</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>riName</a></li>
--   <li><a>riIPRange</a></li>
--   <li><a>riLinkedVPNTunnel</a></li>
--   </ul>
routerInterface :: RouterInterface

-- | Name of this interface entry. The name must be 1-63 characters long
--   and comply with RFC1035.
riName :: Lens' RouterInterface (Maybe Text)

-- | IP address and range of the interface. The IP range must be in the
--   RFC3927 link-local IP space. The value must be a CIDR-formatted
--   string, for example: 169.254.0.1/30. NOTE: Do not truncate the address
--   as it represents the IP address of the interface.
riIPRange :: Lens' RouterInterface (Maybe Text)

-- | URI of linked VPN tunnel. It must be in the same region as the router.
--   Each interface can have at most one linked resource.
riLinkedVPNTunnel :: Lens' RouterInterface (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The status of the instance.</li>
--   </ul>
data InstanceWithNamedPortsStatus

-- | <pre>
--   PROVISIONING
--   </pre>
IWNPSProvisioning :: InstanceWithNamedPortsStatus

-- | <pre>
--   RUNNING
--   </pre>
IWNPSRunning :: InstanceWithNamedPortsStatus

-- | <pre>
--   STAGING
--   </pre>
IWNPSStaging :: InstanceWithNamedPortsStatus

-- | <pre>
--   STOPPED
--   </pre>
IWNPSStopped :: InstanceWithNamedPortsStatus

-- | <pre>
--   STOPPING
--   </pre>
IWNPSStopping :: InstanceWithNamedPortsStatus

-- | <pre>
--   SUSPENDED
--   </pre>
IWNPSSuspended :: InstanceWithNamedPortsStatus

-- | <pre>
--   SUSPENDING
--   </pre>
IWNPSSuspending :: InstanceWithNamedPortsStatus

-- | <pre>
--   TERMINATED
--   </pre>
IWNPSTerminated :: InstanceWithNamedPortsStatus

-- | Specifies the type of proxy header to append before sending data to
--   the backend, either NONE or PROXY_V1. The default is NONE.
data TCPHealthCheckProxyHeader

-- | <pre>
--   NONE
--   </pre>
THCPHNone :: TCPHealthCheckProxyHeader

-- | <pre>
--   PROXY_V1
--   </pre>
THCPHProxyV1 :: TCPHealthCheckProxyHeader

-- | Contains a list of Snapshot resources.
--   
--   <i>See:</i> <a>snapshotList</a> smart constructor.
data SnapshotList

-- | Creates a value of <a>SnapshotList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>snaNextPageToken</a></li>
--   <li><a>snaKind</a></li>
--   <li><a>snaItems</a></li>
--   <li><a>snaSelfLink</a></li>
--   <li><a>snaId</a></li>
--   </ul>
snapshotList :: SnapshotList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
snaNextPageToken :: Lens' SnapshotList (Maybe Text)

-- | Type of resource.
snaKind :: Lens' SnapshotList Text

-- | <ul>
--   <li><i>Output Only</i> A list of Snapshot resources.</li>
--   </ul>
snaItems :: Lens' SnapshotList [Snapshot]

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
snaSelfLink :: Lens' SnapshotList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
snaId :: Lens' SnapshotList (Maybe Text)
data TestFailure

-- | Creates a value of <a>TestFailure</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tfPath</a></li>
--   <li><a>tfExpectedService</a></li>
--   <li><a>tfHost</a></li>
--   <li><a>tfActualService</a></li>
--   </ul>
testFailure :: TestFailure
tfPath :: Lens' TestFailure (Maybe Text)
tfExpectedService :: Lens' TestFailure (Maybe Text)
tfHost :: Lens' TestFailure (Maybe Text)
tfActualService :: Lens' TestFailure (Maybe Text)

-- | An instance's serial console output.
--   
--   <i>See:</i> <a>serialPortOutput</a> smart constructor.
data SerialPortOutput

-- | Creates a value of <a>SerialPortOutput</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>spoNext</a></li>
--   <li><a>spoContents</a></li>
--   <li><a>spoKind</a></li>
--   <li><a>spoStart</a></li>
--   <li><a>spoSelfLink</a></li>
--   </ul>
serialPortOutput :: SerialPortOutput

-- | <ul>
--   <li><i>Output Only</i> The position of the next byte of content from
--   the serial console output. Use this value in the next request as the
--   start parameter.</li>
--   </ul>
spoNext :: Lens' SerialPortOutput (Maybe Int64)

-- | <ul>
--   <li><i>Output Only</i> The contents of the console output.</li>
--   </ul>
spoContents :: Lens' SerialPortOutput (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always
--   compute#serialPortOutput for serial port output.</li>
--   </ul>
spoKind :: Lens' SerialPortOutput Text

-- | <ul>
--   <li><i>Output Only</i> The starting byte position of the output that
--   was returned. This should match the start parameter sent with the
--   request. If the serial console output exceeds the size of the buffer,
--   older output will be overwritten by newer content and the start values
--   will be mismatched.</li>
--   </ul>
spoStart :: Lens' SerialPortOutput (Maybe Int64)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
spoSelfLink :: Lens' SerialPortOutput (Maybe Text)
data TargetVPNGatewayAggregatedList

-- | Creates a value of <a>TargetVPNGatewayAggregatedList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tvgalNextPageToken</a></li>
--   <li><a>tvgalKind</a></li>
--   <li><a>tvgalItems</a></li>
--   <li><a>tvgalSelfLink</a></li>
--   <li><a>tvgalId</a></li>
--   </ul>
targetVPNGatewayAggregatedList :: TargetVPNGatewayAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
tvgalNextPageToken :: Lens' TargetVPNGatewayAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#targetVpnGateway for target VPN gateways.</li>
--   </ul>
tvgalKind :: Lens' TargetVPNGatewayAggregatedList Text

-- | A map of scoped target vpn gateway lists.
tvgalItems :: Lens' TargetVPNGatewayAggregatedList (Maybe TargetVPNGatewayAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
tvgalSelfLink :: Lens' TargetVPNGatewayAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
tvgalId :: Lens' TargetVPNGatewayAggregatedList (Maybe Text)
data MetadataItemsItem

-- | Creates a value of <a>MetadataItemsItem</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>miiValue</a></li>
--   <li><a>miiKey</a></li>
--   </ul>
metadataItemsItem :: MetadataItemsItem

-- | Value for the metadata entry. These are free-form strings, and only
--   have meaning as interpreted by the image running in the instance. The
--   only restriction placed on values is that their size must be less than
--   or equal to 32768 bytes.
miiValue :: Lens' MetadataItemsItem (Maybe Text)

-- | Key for the metadata entry. Keys must conform to the following regexp:
--   [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is
--   reflected as part of a URL in the metadata server. Additionally, to
--   avoid ambiguity, keys must not conflict with any other metadata keys
--   for the project.
miiKey :: Lens' MetadataItemsItem (Maybe Text)

-- | A TargetHttpsProxy resource. This resource defines an HTTPS proxy.
--   
--   <i>See:</i> <a>targetHTTPSProxy</a> smart constructor.
data TargetHTTPSProxy

-- | Creates a value of <a>TargetHTTPSProxy</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>thpURLMap</a></li>
--   <li><a>thpSSLCertificates</a></li>
--   <li><a>thpKind</a></li>
--   <li><a>thpSelfLink</a></li>
--   <li><a>thpName</a></li>
--   <li><a>thpCreationTimestamp</a></li>
--   <li><a>thpId</a></li>
--   <li><a>thpDescription</a></li>
--   </ul>
targetHTTPSProxy :: TargetHTTPSProxy

-- | A fully-qualified or valid partial URL to the UrlMap resource that
--   defines the mapping from URL to the BackendService. For example, the
--   following are all valid URLs for specifying a URL map: -
--   https://www.googleapis.compute/v1/projects/project/global/urlMaps/url-map
--   - projects/project/global/urlMaps/url-map - global/urlMaps/url-map
thpURLMap :: Lens' TargetHTTPSProxy (Maybe Text)

-- | URLs to SslCertificate resources that are used to authenticate
--   connections between users and the load balancer. Currently, exactly
--   one SSL certificate must be specified.
thpSSLCertificates :: Lens' TargetHTTPSProxy [Text]

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#targetHttpsProxy for target HTTPS proxies.</li>
--   </ul>
thpKind :: Lens' TargetHTTPSProxy Text

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
thpSelfLink :: Lens' TargetHTTPSProxy (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
thpName :: Lens' TargetHTTPSProxy (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
thpCreationTimestamp :: Lens' TargetHTTPSProxy (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
thpId :: Lens' TargetHTTPSProxy (Maybe Word64)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
thpDescription :: Lens' TargetHTTPSProxy (Maybe Text)

-- | Message containing connection draining configuration.
--   
--   <i>See:</i> <a>connectionDraining</a> smart constructor.
data ConnectionDraining

-- | Creates a value of <a>ConnectionDraining</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cdDrainingTimeoutSec</a></li>
--   </ul>
connectionDraining :: ConnectionDraining

-- | Time for which instance will be drained (not accept new connections,
--   but still work to finish started).
cdDrainingTimeoutSec :: Lens' ConnectionDraining (Maybe Int32)
data CacheInvalidationRule

-- | Creates a value of <a>CacheInvalidationRule</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cirPath</a></li>
--   <li><a>cirHost</a></li>
--   </ul>
cacheInvalidationRule :: CacheInvalidationRule
cirPath :: Lens' CacheInvalidationRule (Maybe Text)

-- | If set, this invalidation rule will only apply to requests with a Host
--   header matching host.
cirHost :: Lens' CacheInvalidationRule (Maybe Text)
data TargetVPNGatewaysScopedList

-- | Creates a value of <a>TargetVPNGatewaysScopedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tvgslTargetVPNGateways</a></li>
--   <li><a>tvgslWarning</a></li>
--   </ul>
targetVPNGatewaysScopedList :: TargetVPNGatewaysScopedList

-- | <ul>
--   <li><i>Output Only</i> List of target vpn gateways contained in this
--   scope.</li>
--   </ul>
tvgslTargetVPNGateways :: Lens' TargetVPNGatewaysScopedList [TargetVPNGateway]

-- | <ul>
--   <li><i>Output Only</i> Informational warning which replaces the list
--   of addresses when the list is empty.</li>
--   </ul>
tvgslWarning :: Lens' TargetVPNGatewaysScopedList (Maybe TargetVPNGatewaysScopedListWarning)

-- | An access configuration attached to an instance's network interface.
--   Only one access config per instance is supported.
--   
--   <i>See:</i> <a>accessConfig</a> smart constructor.
data AccessConfig

-- | Creates a value of <a>AccessConfig</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acKind</a></li>
--   <li><a>acName</a></li>
--   <li><a>acNATIP</a></li>
--   <li><a>acType</a></li>
--   </ul>
accessConfig :: AccessConfig

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always
--   compute#accessConfig for access configs.</li>
--   </ul>
acKind :: Lens' AccessConfig Text

-- | Name of this access configuration.
acName :: Lens' AccessConfig (Maybe Text)

-- | An external IP address associated with this instance. Specify an
--   unused static external IP address available to the project or leave
--   this field undefined to use an IP from a shared ephemeral IP address
--   pool. If you specify a static external IP address, it must live in the
--   same region as the zone of the instance.
acNATIP :: Lens' AccessConfig (Maybe Text)

-- | The type of configuration. The default and only option is
--   ONE_TO_ONE_NAT.
acType :: Lens' AccessConfig AccessConfigType
data ManagedInstanceLastAttemptErrorsErrorsItem

-- | Creates a value of <a>ManagedInstanceLastAttemptErrorsErrorsItem</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>milaeeiLocation</a></li>
--   <li><a>milaeeiCode</a></li>
--   <li><a>milaeeiMessage</a></li>
--   </ul>
managedInstanceLastAttemptErrorsErrorsItem :: ManagedInstanceLastAttemptErrorsErrorsItem

-- | <ul>
--   <li><i>Output Only</i> Indicates the field in the request that caused
--   the error. This property is optional.</li>
--   </ul>
milaeeiLocation :: Lens' ManagedInstanceLastAttemptErrorsErrorsItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The error type identifier for this error.</li>
--   </ul>
milaeeiCode :: Lens' ManagedInstanceLastAttemptErrorsErrorsItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> An optional, human-readable error message.</li>
--   </ul>
milaeeiMessage :: Lens' ManagedInstanceLastAttemptErrorsErrorsItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data InstancesScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
ISLWCCleanupFailed :: InstancesScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
ISLWCDeprecatedResourceUsed :: InstancesScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
ISLWCDiskSizeLargerThanImageSize :: InstancesScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
ISLWCFieldValueOverriden :: InstancesScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
ISLWCInjectedKernelsDeprecated :: InstancesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
ISLWCNextHopAddressNotAssigned :: InstancesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
ISLWCNextHopCannotIPForward :: InstancesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
ISLWCNextHopInstanceNotFound :: InstancesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
ISLWCNextHopInstanceNotOnNetwork :: InstancesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
ISLWCNextHopNotRunning :: InstancesScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
ISLWCNotCriticalError :: InstancesScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
ISLWCNoResultsOnPage :: InstancesScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
ISLWCRequiredTosAgreement :: InstancesScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
ISLWCResourceNotDeleted :: InstancesScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
ISLWCSingleInstancePropertyTemplate :: InstancesScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
ISLWCUnreachable :: InstancesScopedListWarningCode
data InstancesScopedListWarningDataItem

-- | Creates a value of <a>InstancesScopedListWarningDataItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>islwdiValue</a></li>
--   <li><a>islwdiKey</a></li>
--   </ul>
instancesScopedListWarningDataItem :: InstancesScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
islwdiValue :: Lens' InstancesScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
islwdiKey :: Lens' InstancesScopedListWarningDataItem (Maybe Text)
data BackendServicesScopedListWarningDataItem

-- | Creates a value of <a>BackendServicesScopedListWarningDataItem</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bsslwdiValue</a></li>
--   <li><a>bsslwdiKey</a></li>
--   </ul>
backendServicesScopedListWarningDataItem :: BackendServicesScopedListWarningDataItem

-- | <ul>
--   <li><i>Output Only</i> A warning data value corresponding to the
--   key.</li>
--   </ul>
bsslwdiValue :: Lens' BackendServicesScopedListWarningDataItem (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A key that provides more detail on the warning
--   being returned. For example, for warnings where there are no results
--   in a list request for a particular zone, this key might be scope and
--   the key value might be the zone name. Other examples might be a key
--   indicating a deprecated resource and a suggested replacement, or a
--   warning about invalid network settings (for example, if an instance
--   attempts to perform IP forwarding but is not enabled for IP
--   forwarding).</li>
--   </ul>
bsslwdiKey :: Lens' BackendServicesScopedListWarningDataItem (Maybe Text)

-- | A BackendService resource. This resource defines a group of backend
--   virtual machines and their serving capacity.
--   
--   <i>See:</i> <a>backendService</a> smart constructor.
data BackendService

-- | Creates a value of <a>BackendService</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bsSessionAffinity</a></li>
--   <li><a>bsBackends</a></li>
--   <li><a>bsAffinityCookieTtlSec</a></li>
--   <li><a>bsLoadBalancingScheme</a></li>
--   <li><a>bsKind</a></li>
--   <li><a>bsEnableCDN</a></li>
--   <li><a>bsFingerprint</a></li>
--   <li><a>bsProtocol</a></li>
--   <li><a>bsSelfLink</a></li>
--   <li><a>bsName</a></li>
--   <li><a>bsCreationTimestamp</a></li>
--   <li><a>bsId</a></li>
--   <li><a>bsRegion</a></li>
--   <li><a>bsConnectionDraining</a></li>
--   <li><a>bsTimeoutSec</a></li>
--   <li><a>bsDescription</a></li>
--   <li><a>bsPortName</a></li>
--   <li><a>bsHealthChecks</a></li>
--   <li><a>bsPort</a></li>
--   </ul>
backendService :: BackendService

-- | Type of session affinity to use. The default is NONE. When the load
--   balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or
--   GENERATED_COOKIE. When the load balancing scheme is INTERNAL, can be
--   NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO. When the
--   protocol is UDP, this field is not used.
bsSessionAffinity :: Lens' BackendService (Maybe BackendServiceSessionAffinity)

-- | The list of backends that serve this BackendService.
bsBackends :: Lens' BackendService [Backend]

-- | Lifetime of cookies in seconds if session_affinity is
--   GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts
--   only until the end of the browser session (or equivalent). The maximum
--   allowed value for TTL is one day. When the load balancing scheme is
--   INTERNAL, this field is not used.
bsAffinityCookieTtlSec :: Lens' BackendService (Maybe Int32)
bsLoadBalancingScheme :: Lens' BackendService (Maybe BackendServiceLoadBalancingScheme)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always compute#backendService
--   for backend services.</li>
--   </ul>
bsKind :: Lens' BackendService Text

-- | If true, enable Cloud CDN for this BackendService. When the load
--   balancing scheme is INTERNAL, this field is not used.
bsEnableCDN :: Lens' BackendService (Maybe Bool)

-- | Fingerprint of this resource. A hash of the contents stored in this
--   object. This field is used in optimistic locking. This field will be
--   ignored when inserting a BackendService. An up-to-date fingerprint
--   must be provided in order to update the BackendService.
bsFingerprint :: Lens' BackendService (Maybe ByteString)

-- | The protocol this BackendService uses to communicate with backends.
--   Possible values are HTTP, HTTPS, HTTP2, TCP and SSL. The default is
--   HTTP. For internal load balancing, the possible values are TCP and
--   UDP, and the default is TCP.
bsProtocol :: Lens' BackendService (Maybe BackendServiceProtocol)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for the resource.</li>
--   </ul>
bsSelfLink :: Lens' BackendService (Maybe Text)

-- | Name of the resource. Provided by the client when the resource is
--   created. The name must be 1-63 characters long, and comply with
--   RFC1035. Specifically, the name must be 1-63 characters long and match
--   the regular expression <a>a-z</a>? which means the first character
--   must be a lowercase letter, and all following characters must be a
--   dash, lowercase letter, or digit, except the last character, which
--   cannot be a dash.
bsName :: Lens' BackendService (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
bsCreationTimestamp :: Lens' BackendService (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
bsId :: Lens' BackendService (Maybe Word64)

-- | <ul>
--   <li><i>Output Only</i> URL of the region where the regional backend
--   service resides. This field is not applicable to global backend
--   services.</li>
--   </ul>
bsRegion :: Lens' BackendService (Maybe Text)
bsConnectionDraining :: Lens' BackendService (Maybe ConnectionDraining)

-- | How many seconds to wait for the backend before considering it a
--   failed request. Default is 30 seconds.
bsTimeoutSec :: Lens' BackendService (Maybe Int32)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
bsDescription :: Lens' BackendService (Maybe Text)

-- | Name of backend port. The same name should appear in the instance
--   groups referenced by this service. Required when the load balancing
--   scheme is EXTERNAL. When the load balancing scheme is INTERNAL, this
--   field is not used.
bsPortName :: Lens' BackendService (Maybe Text)

-- | The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource
--   for health checking this BackendService. Currently at most one health
--   check can be specified, and a health check is required. For internal
--   load balancing, a URL to a HealthCheck resource must be specified
--   instead.
bsHealthChecks :: Lens' BackendService [Text]

-- | Deprecated in favor of portName. The TCP port to connect on the
--   backend. The default value is 80. This cannot be used for internal
--   load balancing.
bsPort :: Lens' BackendService (Maybe Int32)
data InstanceMoveRequest

-- | Creates a value of <a>InstanceMoveRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>imrTargetInstance</a></li>
--   <li><a>imrDestinationZone</a></li>
--   </ul>
instanceMoveRequest :: InstanceMoveRequest

-- | The URL of the target instance to move. This can be a full or partial
--   URL. For example, the following are all valid URLs to an instance: -
--   https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance
--   - projects/project/zones/zone/instances/instance -
--   zones/zone/instances/instance
imrTargetInstance :: Lens' InstanceMoveRequest (Maybe Text)

-- | The URL of the destination zone to move the instance. This can be a
--   full or partial URL. For example, the following are all valid URLs to
--   a zone: -
--   https://www.googleapis.com/compute/v1/projects/project/zones/zone -
--   projects/project/zones/zone - zones/zone
imrDestinationZone :: Lens' InstanceMoveRequest (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
data BackendServicesScopedListWarningCode

-- | <pre>
--   CLEANUP_FAILED
--   </pre>
BSSLWCCleanupFailed :: BackendServicesScopedListWarningCode

-- | <pre>
--   DEPRECATED_RESOURCE_USED
--   </pre>
BSSLWCDeprecatedResourceUsed :: BackendServicesScopedListWarningCode

-- | <pre>
--   DISK_SIZE_LARGER_THAN_IMAGE_SIZE
--   </pre>
BSSLWCDiskSizeLargerThanImageSize :: BackendServicesScopedListWarningCode

-- | <pre>
--   FIELD_VALUE_OVERRIDEN
--   </pre>
BSSLWCFieldValueOverriden :: BackendServicesScopedListWarningCode

-- | <pre>
--   INJECTED_KERNELS_DEPRECATED
--   </pre>
BSSLWCInjectedKernelsDeprecated :: BackendServicesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_ADDRESS_NOT_ASSIGNED
--   </pre>
BSSLWCNextHopAddressNotAssigned :: BackendServicesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_CANNOT_IP_FORWARD
--   </pre>
BSSLWCNextHopCannotIPForward :: BackendServicesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_FOUND
--   </pre>
BSSLWCNextHopInstanceNotFound :: BackendServicesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_INSTANCE_NOT_ON_NETWORK
--   </pre>
BSSLWCNextHopInstanceNotOnNetwork :: BackendServicesScopedListWarningCode

-- | <pre>
--   NEXT_HOP_NOT_RUNNING
--   </pre>
BSSLWCNextHopNotRunning :: BackendServicesScopedListWarningCode

-- | <pre>
--   NOT_CRITICAL_ERROR
--   </pre>
BSSLWCNotCriticalError :: BackendServicesScopedListWarningCode

-- | <pre>
--   NO_RESULTS_ON_PAGE
--   </pre>
BSSLWCNoResultsOnPage :: BackendServicesScopedListWarningCode

-- | <pre>
--   REQUIRED_TOS_AGREEMENT
--   </pre>
BSSLWCRequiredTosAgreement :: BackendServicesScopedListWarningCode

-- | <pre>
--   RESOURCE_NOT_DELETED
--   </pre>
BSSLWCResourceNotDeleted :: BackendServicesScopedListWarningCode

-- | <pre>
--   SINGLE_INSTANCE_PROPERTY_TEMPLATE
--   </pre>
BSSLWCSingleInstancePropertyTemplate :: BackendServicesScopedListWarningCode

-- | <pre>
--   UNREACHABLE
--   </pre>
BSSLWCUnreachable :: BackendServicesScopedListWarningCode

-- | Sesssion affinity option, must be one of the following values: NONE:
--   Connections from the same client IP may go to any instance in the
--   pool. CLIENT_IP: Connections from the same client IP will go to the
--   same instance in the pool while that instance remains healthy.
--   CLIENT_IP_PROTO: Connections from the same client IP with the same IP
--   protocol will go to the same instance in the pool while that instance
--   remains healthy.
data TargetPoolSessionAffinity

-- | <pre>
--   CLIENT_IP
--   </pre>
TPSAClientIP :: TargetPoolSessionAffinity

-- | <pre>
--   CLIENT_IP_PORT_PROTO
--   </pre>
TPSAClientIPPortProto :: TargetPoolSessionAffinity

-- | <pre>
--   CLIENT_IP_PROTO
--   </pre>
TPSAClientIPProto :: TargetPoolSessionAffinity

-- | <pre>
--   GENERATED_COOKIE
--   </pre>
TPSAGeneratedCookie :: TargetPoolSessionAffinity

-- | <pre>
--   NONE
--   </pre>
TPSANone :: TargetPoolSessionAffinity
data InstanceGroupsScopedList

-- | Creates a value of <a>InstanceGroupsScopedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igslWarning</a></li>
--   <li><a>igslInstanceGroups</a></li>
--   </ul>
instanceGroupsScopedList :: InstanceGroupsScopedList

-- | <ul>
--   <li><i>Output Only</i> An informational warning that replaces the list
--   of instance groups when the list is empty.</li>
--   </ul>
igslWarning :: Lens' InstanceGroupsScopedList (Maybe InstanceGroupsScopedListWarning)

-- | <ul>
--   <li><i>Output Only</i> The list of instance groups that are contained
--   in this scope.</li>
--   </ul>
igslInstanceGroups :: Lens' InstanceGroupsScopedList [InstanceGroup]
data InstancesStartWithEncryptionKeyRequest

-- | Creates a value of <a>InstancesStartWithEncryptionKeyRequest</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iswekrDisks</a></li>
--   </ul>
instancesStartWithEncryptionKeyRequest :: InstancesStartWithEncryptionKeyRequest

-- | Array of disks associated with this instance that are protected with a
--   customer-supplied encryption key. In order to start the instance, the
--   disk url and its corresponding key must be provided. If the disk is
--   not protected with a customer-supplied encryption key it should not be
--   specified.
iswekrDisks :: Lens' InstancesStartWithEncryptionKeyRequest [CustomerEncryptionKeyProtectedDisk]
data HTTPSHealthCheck

-- | Creates a value of <a>HTTPSHealthCheck</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>hhcRequestPath</a></li>
--   <li><a>hhcHost</a></li>
--   <li><a>hhcProxyHeader</a></li>
--   <li><a>hhcPortName</a></li>
--   <li><a>hhcPort</a></li>
--   </ul>
httpsHealthCheck :: HTTPSHealthCheck

-- | The request path of the HTTPS health check request. The default value
--   is /.
hhcRequestPath :: Lens' HTTPSHealthCheck (Maybe Text)

-- | The value of the host header in the HTTPS health check request. If
--   left empty (default value), the IP on behalf of which this health
--   check is performed will be used.
hhcHost :: Lens' HTTPSHealthCheck (Maybe Text)

-- | Specifies the type of proxy header to append before sending data to
--   the backend, either NONE or PROXY_V1. The default is NONE.
hhcProxyHeader :: Lens' HTTPSHealthCheck (Maybe HTTPSHealthCheckProxyHeader)

-- | Port name as defined in InstanceGroupname. If both port and port_name
--   are defined, port takes precedence.
hhcPortName :: Lens' HTTPSHealthCheck (Maybe Text)

-- | The TCP port number for the health check request. The default value is
--   443.
hhcPort :: Lens' HTTPSHealthCheck (Maybe Int32)

-- | The format used to encode and transmit the block device, which should
--   be TAR. This is just a container and transmission format and not a
--   runtime format. Provided by the client when the disk image is created.
data ImageRawDiskContainerType

-- | <pre>
--   TAR
--   </pre>
TAR :: ImageRawDiskContainerType

-- | <ul>
--   <li><i>Output Only</i> A map of scoped vpn tunnel lists.</li>
--   </ul>
--   
--   <i>See:</i> <a>vpnTunnelAggregatedListItems</a> smart constructor.
data VPNTunnelAggregatedListItems

-- | Creates a value of <a>VPNTunnelAggregatedListItems</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vtaliAddtional</a></li>
--   </ul>
vpnTunnelAggregatedListItems :: HashMap Text VPNTunnelsScopedList -> VPNTunnelAggregatedListItems

-- | Name of the scope containing this set of vpn tunnels.
vtaliAddtional :: Lens' VPNTunnelAggregatedListItems (HashMap Text VPNTunnelsScopedList)

-- | A set of instance tags.
--   
--   <i>See:</i> <a>tags</a> smart constructor.
data Tags

-- | Creates a value of <a>Tags</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tFingerprint</a></li>
--   <li><a>tItems</a></li>
--   </ul>
tags :: Tags

-- | Specifies a fingerprint for this request, which is essentially a hash
--   of the metadata's contents and used for optimistic locking. The
--   fingerprint is initially generated by Compute Engine and changes after
--   every request to modify or update metadata. You must always provide an
--   up-to-date fingerprint hash in order to update or change metadata. To
--   see the latest fingerprint, make get() request to the instance.
tFingerprint :: Lens' Tags (Maybe ByteString)

-- | An array of tags. Each tag must be 1-63 characters long, and comply
--   with RFC1035.
tItems :: Lens' Tags [Text]
data AddressAggregatedList

-- | Creates a value of <a>AddressAggregatedList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>addNextPageToken</a></li>
--   <li><a>addKind</a></li>
--   <li><a>addItems</a></li>
--   <li><a>addSelfLink</a></li>
--   <li><a>addId</a></li>
--   </ul>
addressAggregatedList :: AddressAggregatedList

-- | <ul>
--   <li><i>Output Only</i> This token allows you to get the next page of
--   results for list requests. If the number of results is larger than
--   maxResults, use the nextPageToken as a value for the query parameter
--   pageToken in the next list request. Subsequent list requests will have
--   their own nextPageToken to continue paging through the results.</li>
--   </ul>
addNextPageToken :: Lens' AddressAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Type of resource. Always
--   compute#addressAggregatedList for aggregated lists of addresses.</li>
--   </ul>
addKind :: Lens' AddressAggregatedList Text

-- | <ul>
--   <li><i>Output Only</i> A map of scoped address lists.</li>
--   </ul>
addItems :: Lens' AddressAggregatedList (Maybe AddressAggregatedListItems)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
addSelfLink :: Lens' AddressAggregatedList (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Unique identifier for the resource; defined by
--   the server.</li>
--   </ul>
addId :: Lens' AddressAggregatedList (Maybe Text)
data OperationWarningsItem

-- | Creates a value of <a>OperationWarningsItem</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>owiData</a></li>
--   <li><a>owiCode</a></li>
--   <li><a>owiMessage</a></li>
--   </ul>
operationWarningsItem :: OperationWarningsItem

-- | <ul>
--   <li><i>Output Only</i> Metadata about this warning in key: value
--   format. For example: "data": [ { "key": "scope", "value":
--   "zones/us-east1-d" }</li>
--   </ul>
owiData :: Lens' OperationWarningsItem [OperationWarningsItemDataItem]

-- | <ul>
--   <li><i>Output Only</i> A warning code, if applicable. For example,
--   Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
--   the response.</li>
--   </ul>
owiCode :: Lens' OperationWarningsItem (Maybe OperationWarningsItemCode)

-- | <ul>
--   <li><i>Output Only</i> A human-readable description of the warning
--   code.</li>
--   </ul>
owiMessage :: Lens' OperationWarningsItem (Maybe Text)

-- | Message for the expected URL mappings.
--   
--   <i>See:</i> <a>urlMapTest</a> smart constructor.
data URLMapTest

-- | Creates a value of <a>URLMapTest</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>umtPath</a></li>
--   <li><a>umtService</a></li>
--   <li><a>umtHost</a></li>
--   <li><a>umtDescription</a></li>
--   </ul>
urlMapTest :: URLMapTest

-- | Path portion of the URL.
umtPath :: Lens' URLMapTest (Maybe Text)

-- | Expected BackendService resource the given URL should be mapped to.
umtService :: Lens' URLMapTest (Maybe Text)

-- | Host portion of the URL.
umtHost :: Lens' URLMapTest (Maybe Text)

-- | Description of this test case.
umtDescription :: Lens' URLMapTest (Maybe Text)
data RoutersPreviewResponse

-- | Creates a value of <a>RoutersPreviewResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rprResource</a></li>
--   </ul>
routersPreviewResponse :: RoutersPreviewResponse

-- | Preview of given router.
rprResource :: Lens' RoutersPreviewResponse (Maybe Router)

-- | An Instance resource.
--   
--   <i>See:</i> <a>instance'</a> smart constructor.
data Instance

-- | Creates a value of <a>Instance</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>insnStatus</a></li>
--   <li><a>insnServiceAccounts</a></li>
--   <li><a>insnNetworkInterfaces</a></li>
--   <li><a>insnKind</a></li>
--   <li><a>insnZone</a></li>
--   <li><a>insnCPUPlatform</a></li>
--   <li><a>insnSelfLink</a></li>
--   <li><a>insnName</a></li>
--   <li><a>insnStatusMessage</a></li>
--   <li><a>insnCreationTimestamp</a></li>
--   <li><a>insnMachineType</a></li>
--   <li><a>insnMetadata</a></li>
--   <li><a>insnId</a></li>
--   <li><a>insnScheduling</a></li>
--   <li><a>insnDisks</a></li>
--   <li><a>insnCanIPForward</a></li>
--   <li><a>insnDescription</a></li>
--   <li><a>insnTags</a></li>
--   </ul>
instance' :: Instance

-- | <ul>
--   <li><i>Output Only</i> The status of the instance. One of the
--   following values: PROVISIONING, STAGING, RUNNING, STOPPING,
--   SUSPENDING, SUSPENDED, and TERMINATED.</li>
--   </ul>
insnStatus :: Lens' Instance (Maybe InstanceStatus)

-- | A list of service accounts, with their specified scopes, authorized
--   for this instance. Service accounts generate access tokens that can be
--   accessed through the metadata server and used to authenticate
--   applications on the instance. See Service Accounts for more
--   information.
insnServiceAccounts :: Lens' Instance [ServiceAccount]

-- | An array of configurations for this interface. This specifies how this
--   interface is configured to interact with other network services, such
--   as connecting to the internet. Only one interface is supported per
--   instance.
insnNetworkInterfaces :: Lens' Instance [NetworkInterface]

-- | <ul>
--   <li><i>Output Only</i> Type of the resource. Always compute#instance
--   for instances.</li>
--   </ul>
insnKind :: Lens' Instance Text

-- | <ul>
--   <li><i>Output Only</i> URL of the zone where the instance
--   resides.</li>
--   </ul>
insnZone :: Lens' Instance (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> The CPU platform used by this instance.</li>
--   </ul>
insnCPUPlatform :: Lens' Instance (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Server-defined URL for this resource.</li>
--   </ul>
insnSelfLink :: Lens' Instance (Maybe Text)

-- | The name of the resource, provided by the client when initially
--   creating the resource. The resource name must be 1-63 characters long,
--   and comply with RFC1035. Specifically, the name must be 1-63
--   characters long and match the regular expression <a>a-z</a>? which
--   means the first character must be a lowercase letter, and all
--   following characters must be a dash, lowercase letter, or digit,
--   except the last character, which cannot be a dash.
insnName :: Lens' Instance (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> An optional, human-readable explanation of the
--   status.</li>
--   </ul>
insnStatusMessage :: Lens' Instance (Maybe Text)

-- | <ul>
--   <li><i>Output Only</i> Creation timestamp in RFC3339 text format.</li>
--   </ul>
insnCreationTimestamp :: Lens' Instance (Maybe Text)

-- | Full or partial URL of the machine type resource to use for this
--   instance, in the format: zones/zone/machineTypes/machine-type. This is
--   provided by the client when the instance is created. For example, the
--   following is a valid partial url to a predefined machine type:
--   zones/us-central1-f/machineTypes/n1-standard-1 To create a custom
--   machine type, provide a URL to a machine type in the following format,
--   where CPUS is 1 or an even number up to 32 (2, 4, 6, ... 24, etc), and
--   MEMORY is the total memory for this instance. Memory must be a
--   multiple of 256 MB and must be supplied in MB (e.g. 5 GB of memory is
--   5120 MB): zones/zone/machineTypes/custom-CPUS-MEMORY For example:
--   zones/us-central1-f/machineTypes/custom-4-5120 For a full list of
--   restrictions, read the Specifications for custom machine types.
insnMachineType :: Lens' Instance (Maybe Text)

-- | The metadata key/value pairs assigned to this instance. This includes
--   custom metadata and predefined keys.
insnMetadata :: Lens' Instance (Maybe Metadata)

-- | <ul>
--   <li><i>Output Only</i> The unique identifier for the resource. This
--   identifier is defined by the server.</li>
--   </ul>
insnId :: Lens' Instance (Maybe Word64)

-- | Scheduling options for this instance.
insnScheduling :: Lens' Instance (Maybe Scheduling)

-- | Array of disks associated with this instance. Persistent disks must be
--   created before you can assign them.
insnDisks :: Lens' Instance [AttachedDisk]

-- | Allows this instance to send and receive packets with non-matching
--   destination or source IPs. This is required if you plan to use this
--   instance to forward routes. For more information, see Enabling IP
--   Forwarding.
insnCanIPForward :: Lens' Instance (Maybe Bool)

-- | An optional description of this resource. Provide this property when
--   you create the resource.
insnDescription :: Lens' Instance (Maybe Text)

-- | A list of tags to apply to this instance. Tags are used to identify
--   valid sources or targets for network firewalls and are specified by
--   the client during instance creation. The tags can be later modified by
--   the setTags method. Each tag within the list must comply with RFC1035.
insnTags :: Lens' Instance (Maybe Tags)

-- | A matcher for the path portion of the URL. The BackendService from the
--   longest-matched rule will serve the URL. If no rule was matched, the
--   default service will be used.
--   
--   <i>See:</i> <a>pathMatcher</a> smart constructor.
data PathMatcher

-- | Creates a value of <a>PathMatcher</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pmDefaultService</a></li>
--   <li><a>pmName</a></li>
--   <li><a>pmPathRules</a></li>
--   <li><a>pmDescription</a></li>
--   </ul>
pathMatcher :: PathMatcher

-- | The full or partial URL to the BackendService resource. This will be
--   used if none of the pathRules defined by this PathMatcher is matched
--   by the URL's path portion. For example, the following are all valid
--   URLs to a BackendService resource: -
--   https://www.googleapis.com/compute/v1/projects/project/global/backendServices/backendService
--   - compute/v1/projects/project/global/backendServices/backendService -
--   global/backendServices/backendService
pmDefaultService :: Lens' PathMatcher (Maybe Text)

-- | The name to which this PathMatcher is referred by the HostRule.
pmName :: Lens' PathMatcher (Maybe Text)

-- | The list of path rules.
pmPathRules :: Lens' PathMatcher [PathRule]

-- | An optional description of this resource. Provide this property when
--   you create the resource.
pmDescription :: Lens' PathMatcher (Maybe Text)
