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


-- | Google Cloud Storage JSON SDK.
--   
--   Stores and retrieves potentially large, immutable data objects.
--   
--   <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.
--   
--   Labels:
--   
--   <ul>
--   <li>Labs</li>
--   </ul>
@package gogol-storage
@version 0.3.0


module Network.Google.Storage.Types

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

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

-- | 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"]

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

-- | The owner of the object. This will always be the uploader of the
--   object.
--   
--   <i>See:</i> <a>objectOwner</a> smart constructor.
data ObjectOwner

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

-- | The entity, in the form user-userId.
ooEntity :: Lens' ObjectOwner (Maybe Text)

-- | The ID for the entity.
ooEntityId :: Lens' ObjectOwner (Maybe Text)

-- | Set of properties to return. Defaults to noAcl, unless the object
--   resource specifies the acl property, when it defaults to full.
data ObjectsInsertProjection

-- | <tt>full</tt> Include all properties.
Full :: ObjectsInsertProjection

-- | <tt>noAcl</tt> Omit the owner, acl property.
NoACL :: ObjectsInsertProjection

-- | The bucket's versioning configuration.
--   
--   <i>See:</i> <a>bucketVersioning</a> smart constructor.
data BucketVersioning

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

-- | While set to true, versioning is fully enabled for this bucket.
bvEnabled :: Lens' BucketVersioning (Maybe Bool)

-- | Apply a predefined set of default object access controls to this
--   bucket.
data BucketsUpdatePredefinedDefaultObjectACL

-- | <tt>authenticatedRead</tt> Object owner gets OWNER access, and
--   allAuthenticatedUsers get READER access.
AuthenticatedRead :: BucketsUpdatePredefinedDefaultObjectACL

-- | <tt>bucketOwnerFullControl</tt> Object owner gets OWNER access, and
--   project team owners get OWNER access.
BucketOwnerFullControl :: BucketsUpdatePredefinedDefaultObjectACL

-- | <tt>bucketOwnerRead</tt> Object owner gets OWNER access, and project
--   team owners get READER access.
BucketOwnerRead :: BucketsUpdatePredefinedDefaultObjectACL

-- | <tt>private</tt> Object owner gets OWNER access.
Private :: BucketsUpdatePredefinedDefaultObjectACL

-- | <tt>projectPrivate</tt> Object owner gets OWNER access, and project
--   team members get access according to their roles.
ProjectPrivate :: BucketsUpdatePredefinedDefaultObjectACL

-- | <tt>publicRead</tt> Object owner gets OWNER access, and allUsers get
--   READER access.
PublicRead :: BucketsUpdatePredefinedDefaultObjectACL

-- | Apply a predefined set of access controls to the destination object.
data ObjectsComposeDestinationPredefinedACL

-- | <tt>authenticatedRead</tt> Object owner gets OWNER access, and
--   allAuthenticatedUsers get READER access.
OCDPAAuthenticatedRead :: ObjectsComposeDestinationPredefinedACL

-- | <tt>bucketOwnerFullControl</tt> Object owner gets OWNER access, and
--   project team owners get OWNER access.
OCDPABucketOwnerFullControl :: ObjectsComposeDestinationPredefinedACL

-- | <tt>bucketOwnerRead</tt> Object owner gets OWNER access, and project
--   team owners get READER access.
OCDPABucketOwnerRead :: ObjectsComposeDestinationPredefinedACL

-- | <tt>private</tt> Object owner gets OWNER access.
OCDPAPrivate :: ObjectsComposeDestinationPredefinedACL

-- | <tt>projectPrivate</tt> Object owner gets OWNER access, and project
--   team members get access according to their roles.
OCDPAProjectPrivate :: ObjectsComposeDestinationPredefinedACL

-- | <tt>publicRead</tt> Object owner gets OWNER access, and allUsers get
--   READER access.
OCDPAPublicRead :: ObjectsComposeDestinationPredefinedACL

-- | Apply a predefined set of access controls to this bucket.
data BucketsInsertPredefinedACL

-- | <tt>authenticatedRead</tt> Project team owners get OWNER access, and
--   allAuthenticatedUsers get READER access.
BIPAAuthenticatedRead :: BucketsInsertPredefinedACL

-- | <tt>private</tt> Project team owners get OWNER access.
BIPAPrivate :: BucketsInsertPredefinedACL

-- | <tt>projectPrivate</tt> Project team members get access according to
--   their roles.
BIPAProjectPrivate :: BucketsInsertPredefinedACL

-- | <tt>publicRead</tt> Project team owners get OWNER access, and allUsers
--   get READER access.
BIPAPublicRead :: BucketsInsertPredefinedACL

-- | <tt>publicReadWrite</tt> Project team owners get OWNER access, and
--   allUsers get WRITER access.
BIPAPublicReadWrite :: BucketsInsertPredefinedACL

-- | A list of buckets.
--   
--   <i>See:</i> <a>buckets</a> smart constructor.
data Buckets

-- | Creates a value of <a>Buckets</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bNextPageToken</a></li>
--   <li><a>bKind</a></li>
--   <li><a>bItems</a></li>
--   </ul>
buckets :: Buckets

-- | The continuation token, used to page through large result sets.
--   Provide this value in a subsequent request to return the next page of
--   results.
bNextPageToken :: Lens' Buckets (Maybe Text)

-- | The kind of item this is. For lists of buckets, this is always
--   storage#buckets.
bKind :: Lens' Buckets Text

-- | The list of items.
bItems :: Lens' Buckets [Bucket]

-- | The bucket's logging configuration, which defines the destination
--   bucket and optional name prefix for the current bucket's logs.
--   
--   <i>See:</i> <a>bucketLogging</a> smart constructor.
data BucketLogging

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

-- | The destination bucket where the current bucket's logs should be
--   placed.
blLogBucket :: Lens' BucketLogging (Maybe Text)

-- | A prefix for log object names.
blLogObjectPrefix :: Lens' BucketLogging (Maybe Text)

-- | User-provided metadata, in key/value pairs.
--   
--   <i>See:</i> <a>objectMetadata</a> smart constructor.
data ObjectMetadata

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

-- | An individual metadata entry.
omAddtional :: Lens' ObjectMetadata (HashMap Text Text)

-- | Apply a predefined set of access controls to this object.
data ObjectsPatchPredefinedACL

-- | <tt>authenticatedRead</tt> Object owner gets OWNER access, and
--   allAuthenticatedUsers get READER access.
OPPAAuthenticatedRead :: ObjectsPatchPredefinedACL

-- | <tt>bucketOwnerFullControl</tt> Object owner gets OWNER access, and
--   project team owners get OWNER access.
OPPABucketOwnerFullControl :: ObjectsPatchPredefinedACL

-- | <tt>bucketOwnerRead</tt> Object owner gets OWNER access, and project
--   team owners get READER access.
OPPABucketOwnerRead :: ObjectsPatchPredefinedACL

-- | <tt>private</tt> Object owner gets OWNER access.
OPPAPrivate :: ObjectsPatchPredefinedACL

-- | <tt>projectPrivate</tt> Object owner gets OWNER access, and project
--   team members get access according to their roles.
OPPAProjectPrivate :: ObjectsPatchPredefinedACL

-- | <tt>publicRead</tt> Object owner gets OWNER access, and allUsers get
--   READER access.
OPPAPublicRead :: ObjectsPatchPredefinedACL

-- | The condition(s) under which the action will be taken.
--   
--   <i>See:</i> <a>bucketLifecycleRuleItemCondition</a> smart constructor.
data BucketLifecycleRuleItemCondition

-- | Creates a value of <a>BucketLifecycleRuleItemCondition</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>blricAge</a></li>
--   <li><a>blricIsLive</a></li>
--   <li><a>blricNumNewerVersions</a></li>
--   <li><a>blricMatchesStorageClass</a></li>
--   <li><a>blricCreatedBefore</a></li>
--   </ul>
bucketLifecycleRuleItemCondition :: BucketLifecycleRuleItemCondition

-- | Age of an object (in days). This condition is satisfied when an object
--   reaches the specified age.
blricAge :: Lens' BucketLifecycleRuleItemCondition (Maybe Int32)

-- | Relevant only for versioned objects. If the value is true, this
--   condition matches live objects; if the value is false, it matches
--   archived objects.
blricIsLive :: Lens' BucketLifecycleRuleItemCondition (Maybe Bool)

-- | Relevant only for versioned objects. If the value is N, this condition
--   is satisfied when there are at least N versions (including the live
--   version) newer than this version of the object.
blricNumNewerVersions :: Lens' BucketLifecycleRuleItemCondition (Maybe Int32)

-- | Objects having any of the storage classes specified by this condition
--   will be matched. Values include MULTI_REGIONAL, REGIONAL, NEARLINE,
--   COLDLINE, STANDARD, and DURABLE_REDUCED_AVAILABILITY.
blricMatchesStorageClass :: Lens' BucketLifecycleRuleItemCondition [Text]

-- | A date in RFC 3339 format with only the date part (for instance,
--   "2013-01-15"). This condition is satisfied when an object is created
--   before midnight of the specified date in UTC.
blricCreatedBefore :: Lens' BucketLifecycleRuleItemCondition (Maybe Day)

-- | Apply a predefined set of access controls to the destination object.
data ObjectsRewriteDestinationPredefinedACL

-- | <tt>authenticatedRead</tt> Object owner gets OWNER access, and
--   allAuthenticatedUsers get READER access.
ORDPAAuthenticatedRead :: ObjectsRewriteDestinationPredefinedACL

-- | <tt>bucketOwnerFullControl</tt> Object owner gets OWNER access, and
--   project team owners get OWNER access.
ORDPABucketOwnerFullControl :: ObjectsRewriteDestinationPredefinedACL

-- | <tt>bucketOwnerRead</tt> Object owner gets OWNER access, and project
--   team owners get READER access.
ORDPABucketOwnerRead :: ObjectsRewriteDestinationPredefinedACL

-- | <tt>private</tt> Object owner gets OWNER access.
ORDPAPrivate :: ObjectsRewriteDestinationPredefinedACL

-- | <tt>projectPrivate</tt> Object owner gets OWNER access, and project
--   team members get access according to their roles.
ORDPAProjectPrivate :: ObjectsRewriteDestinationPredefinedACL

-- | <tt>publicRead</tt> Object owner gets OWNER access, and allUsers get
--   READER access.
ORDPAPublicRead :: ObjectsRewriteDestinationPredefinedACL

-- | The bucket's lifecycle configuration. See lifecycle management for
--   more information.
--   
--   <i>See:</i> <a>bucketLifecycle</a> smart constructor.
data BucketLifecycle

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

-- | A lifecycle management rule, which is made of an action to take and
--   the condition(s) under which the action will be taken.
blRule :: Lens' BucketLifecycle [BucketLifecycleRuleItem]

-- | An notification channel used to watch for resource changes.
--   
--   <i>See:</i> <a>channel</a> smart constructor.
data Channel

-- | Creates a value of <a>Channel</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cResourceURI</a></li>
--   <li><a>cResourceId</a></li>
--   <li><a>cKind</a></li>
--   <li><a>cExpiration</a></li>
--   <li><a>cToken</a></li>
--   <li><a>cAddress</a></li>
--   <li><a>cPayload</a></li>
--   <li><a>cParams</a></li>
--   <li><a>cId</a></li>
--   <li><a>cType</a></li>
--   </ul>
channel :: Channel

-- | A version-specific identifier for the watched resource.
cResourceURI :: Lens' Channel (Maybe Text)

-- | An opaque ID that identifies the resource being watched on this
--   channel. Stable across different API versions.
cResourceId :: Lens' Channel (Maybe Text)

-- | Identifies this as a notification channel used to watch for changes to
--   a resource. Value: the fixed string "api#channel".
cKind :: Lens' Channel Text

-- | Date and time of notification channel expiration, expressed as a Unix
--   timestamp, in milliseconds. Optional.
cExpiration :: Lens' Channel (Maybe Int64)

-- | An arbitrary string delivered to the target address with each
--   notification delivered over this channel. Optional.
cToken :: Lens' Channel (Maybe Text)

-- | The address where notifications are delivered for this channel.
cAddress :: Lens' Channel (Maybe Text)

-- | A Boolean value to indicate whether payload is wanted. Optional.
cPayload :: Lens' Channel (Maybe Bool)

-- | Additional parameters controlling delivery channel behavior. Optional.
cParams :: Lens' Channel (Maybe ChannelParams)

-- | A UUID or similar unique string that identifies this channel.
cId :: Lens' Channel (Maybe Text)

-- | The type of delivery mechanism used for this channel.
cType :: Lens' Channel (Maybe Text)
data BucketLifecycleRuleItem

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

-- | The action to take.
blriAction :: Lens' BucketLifecycleRuleItem (Maybe BucketLifecycleRuleItemAction)

-- | The condition(s) under which the action will be taken.
blriCondition :: Lens' BucketLifecycleRuleItem (Maybe BucketLifecycleRuleItemCondition)

-- | Set of properties to return. Defaults to noAcl.
data ObjectsWatchAllProjection

-- | <tt>full</tt> Include all properties.
OWAPFull :: ObjectsWatchAllProjection

-- | <tt>noAcl</tt> Omit the owner, acl property.
OWAPNoACL :: ObjectsWatchAllProjection
data BucketCORSItem

-- | Creates a value of <a>BucketCORSItem</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bciMaxAgeSeconds</a></li>
--   <li><a>bciOrigin</a></li>
--   <li><a>bciResponseHeader</a></li>
--   <li><a>bciMethod</a></li>
--   </ul>
bucketCORSItem :: BucketCORSItem

-- | The value, in seconds, to return in the Access-Control-Max-Age header
--   used in preflight responses.
bciMaxAgeSeconds :: Lens' BucketCORSItem (Maybe Int32)

-- | The list of Origins eligible to receive CORS response headers. Note:
--   "*" is permitted in the list of origins, and means "any Origin".
bciOrigin :: Lens' BucketCORSItem [Text]

-- | The list of HTTP headers other than the simple response headers to
--   give permission for the user-agent to share across domains.
bciResponseHeader :: Lens' BucketCORSItem [Text]

-- | The list of HTTP methods on which to include CORS response headers,
--   (GET, OPTIONS, POST, etc) Note: "*" is permitted in the list of
--   methods, and means "any method".
bciMethod :: Lens' BucketCORSItem [Text]

-- | The project team associated with the entity, if any.
--   
--   <i>See:</i> <a>objectAccessControlProjectTeam</a> smart constructor.
data ObjectAccessControlProjectTeam

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

-- | The project number.
oacptProjectNumber :: Lens' ObjectAccessControlProjectTeam (Maybe Text)

-- | The team.
oacptTeam :: Lens' ObjectAccessControlProjectTeam (Maybe Text)

-- | Metadata of customer-supplied encryption key, if the object is
--   encrypted by such a key.
--   
--   <i>See:</i> <a>objectCustomerEncryption</a> smart constructor.
data ObjectCustomerEncryption

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

-- | SHA256 hash value of the encryption key.
oceKeySha256 :: Lens' ObjectCustomerEncryption (Maybe Text)

-- | The encryption algorithm.
oceEncryptionAlgorithm :: Lens' ObjectCustomerEncryption (Maybe Text)

-- | A bucket.
--   
--   <i>See:</i> <a>bucket</a> smart constructor.
data Bucket

-- | Creates a value of <a>Bucket</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bucEtag</a></li>
--   <li><a>bucLocation</a></li>
--   <li><a>bucKind</a></li>
--   <li><a>bucWebsite</a></li>
--   <li><a>bucProjectNumber</a></li>
--   <li><a>bucLifecycle</a></li>
--   <li><a>bucOwner</a></li>
--   <li><a>bucSelfLink</a></li>
--   <li><a>bucName</a></li>
--   <li><a>bucStorageClass</a></li>
--   <li><a>bucVersioning</a></li>
--   <li><a>bucCORS</a></li>
--   <li><a>bucTimeCreated</a></li>
--   <li><a>bucId</a></li>
--   <li><a>bucUpdated</a></li>
--   <li><a>bucDefaultObjectACL</a></li>
--   <li><a>bucMetageneration</a></li>
--   <li><a>bucLogging</a></li>
--   <li><a>bucACL</a></li>
--   </ul>
bucket :: Bucket

-- | HTTP 1.1 Entity tag for the bucket.
bucEtag :: Lens' Bucket (Maybe Text)

-- | The location of the bucket. Object data for objects in the bucket
--   resides in physical storage within this region. Defaults to US. See
--   the developer's guide for the authoritative list.
bucLocation :: Lens' Bucket (Maybe Text)

-- | The kind of item this is. For buckets, this is always storage#bucket.
bucKind :: Lens' Bucket Text

-- | The bucket's website configuration, controlling how the service
--   behaves when accessing bucket contents as a web site. See the Static
--   Website Examples for more information.
bucWebsite :: Lens' Bucket (Maybe BucketWebsite)

-- | The project number of the project the bucket belongs to.
bucProjectNumber :: Lens' Bucket (Maybe Word64)

-- | The bucket's lifecycle configuration. See lifecycle management for
--   more information.
bucLifecycle :: Lens' Bucket (Maybe BucketLifecycle)

-- | The owner of the bucket. This is always the project team's owner
--   group.
bucOwner :: Lens' Bucket (Maybe BucketOwner)

-- | The URI of this bucket.
bucSelfLink :: Lens' Bucket (Maybe Text)

-- | The name of the bucket.
bucName :: Lens' Bucket (Maybe Text)

-- | The bucket's default storage class, used whenever no storageClass is
--   specified for a newly-created object. This defines how objects in the
--   bucket are stored and determines the SLA and the cost of storage.
--   Values include MULTI_REGIONAL, REGIONAL, STANDARD, NEARLINE, COLDLINE,
--   and DURABLE_REDUCED_AVAILABILITY. If this value is not specified when
--   the bucket is created, it will default to STANDARD. For more
--   information, see storage classes.
bucStorageClass :: Lens' Bucket (Maybe Text)

-- | The bucket's versioning configuration.
bucVersioning :: Lens' Bucket (Maybe BucketVersioning)

-- | The bucket's Cross-Origin Resource Sharing (CORS) configuration.
bucCORS :: Lens' Bucket [BucketCORSItem]

-- | The creation time of the bucket in RFC 3339 format.
bucTimeCreated :: Lens' Bucket (Maybe UTCTime)

-- | The ID of the bucket.
bucId :: Lens' Bucket (Maybe Text)

-- | The modification time of the bucket in RFC 3339 format.
bucUpdated :: Lens' Bucket (Maybe UTCTime)

-- | Default access controls to apply to new objects when no ACL is
--   provided.
bucDefaultObjectACL :: Lens' Bucket [ObjectAccessControl]

-- | The metadata generation of this bucket.
bucMetageneration :: Lens' Bucket (Maybe Int64)

-- | The bucket's logging configuration, which defines the destination
--   bucket and optional name prefix for the current bucket's logs.
bucLogging :: Lens' Bucket (Maybe BucketLogging)

-- | Access controls on the bucket.
bucACL :: Lens' Bucket [BucketAccessControl]

-- | Set of properties to return. Defaults to noAcl.
data BucketsGetProjection

-- | <tt>full</tt> Include all properties.
BGPFull :: BucketsGetProjection

-- | <tt>noAcl</tt> Omit owner, acl and defaultObjectAcl properties.
BGPNoACL :: BucketsGetProjection

-- | A list of objects.
--   
--   <i>See:</i> <a>objects</a> smart constructor.
data Objects

-- | Creates a value of <a>Objects</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oNextPageToken</a></li>
--   <li><a>oKind</a></li>
--   <li><a>oItems</a></li>
--   <li><a>oPrefixes</a></li>
--   </ul>
objects :: Objects

-- | The continuation token, used to page through large result sets.
--   Provide this value in a subsequent request to return the next page of
--   results.
oNextPageToken :: Lens' Objects (Maybe Text)

-- | The kind of item this is. For lists of objects, this is always
--   storage#objects.
oKind :: Lens' Objects Text

-- | The list of items.
oItems :: Lens' Objects [Object]

-- | The list of prefixes of objects matching-but-not-listed up to and
--   including the requested delimiter.
oPrefixes :: Lens' Objects [Text]

-- | Set of properties to return. Defaults to full.
data BucketsPatchProjection

-- | <tt>full</tt> Include all properties.
BPPFull :: BucketsPatchProjection

-- | <tt>noAcl</tt> Omit owner, acl and defaultObjectAcl properties.
BPPNoACL :: BucketsPatchProjection

-- | An access-control list.
--   
--   <i>See:</i> <a>bucketAccessControls</a> smart constructor.
data BucketAccessControls

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

-- | The kind of item this is. For lists of bucket access control entries,
--   this is always storage#bucketAccessControls.
bacKind :: Lens' BucketAccessControls Text

-- | The list of items.
bacItems :: Lens' BucketAccessControls [BucketAccessControl]

-- | Set of properties to return. Defaults to full.
data BucketsUpdateProjection

-- | <tt>full</tt> Include all properties.
BUPFull :: BucketsUpdateProjection

-- | <tt>noAcl</tt> Omit owner, acl and defaultObjectAcl properties.
BUPNoACL :: BucketsUpdateProjection

-- | A Compose request.
--   
--   <i>See:</i> <a>composeRequest</a> smart constructor.
data ComposeRequest

-- | Creates a value of <a>ComposeRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crDestination</a></li>
--   <li><a>crKind</a></li>
--   <li><a>crSourceObjects</a></li>
--   </ul>
composeRequest :: ComposeRequest

-- | Properties of the resulting object.
crDestination :: Lens' ComposeRequest (Maybe Object)

-- | The kind of item this is.
crKind :: Lens' ComposeRequest Text

-- | The list of source objects that will be concatenated into a single
--   object.
crSourceObjects :: Lens' ComposeRequest [ComposeRequestSourceObjectsItem]

-- | Apply a predefined set of access controls to this object.
data ObjectsInsertPredefinedACL

-- | <tt>authenticatedRead</tt> Object owner gets OWNER access, and
--   allAuthenticatedUsers get READER access.
OIPAAuthenticatedRead :: ObjectsInsertPredefinedACL

-- | <tt>bucketOwnerFullControl</tt> Object owner gets OWNER access, and
--   project team owners get OWNER access.
OIPABucketOwnerFullControl :: ObjectsInsertPredefinedACL

-- | <tt>bucketOwnerRead</tt> Object owner gets OWNER access, and project
--   team owners get READER access.
OIPABucketOwnerRead :: ObjectsInsertPredefinedACL

-- | <tt>private</tt> Object owner gets OWNER access.
OIPAPrivate :: ObjectsInsertPredefinedACL

-- | <tt>projectPrivate</tt> Object owner gets OWNER access, and project
--   team members get access according to their roles.
OIPAProjectPrivate :: ObjectsInsertPredefinedACL

-- | <tt>publicRead</tt> Object owner gets OWNER access, and allUsers get
--   READER access.
OIPAPublicRead :: ObjectsInsertPredefinedACL

-- | Set of properties to return. Defaults to noAcl.
data ObjectsListProjection

-- | <tt>full</tt> Include all properties.
OLPFull :: ObjectsListProjection

-- | <tt>noAcl</tt> Omit the owner, acl property.
OLPNoACL :: ObjectsListProjection

-- | Apply a predefined set of default object access controls to this
--   bucket.
data BucketsInsertPredefinedDefaultObjectACL

-- | <tt>authenticatedRead</tt> Object owner gets OWNER access, and
--   allAuthenticatedUsers get READER access.
BIPDOAAuthenticatedRead :: BucketsInsertPredefinedDefaultObjectACL

-- | <tt>bucketOwnerFullControl</tt> Object owner gets OWNER access, and
--   project team owners get OWNER access.
BIPDOABucketOwnerFullControl :: BucketsInsertPredefinedDefaultObjectACL

-- | <tt>bucketOwnerRead</tt> Object owner gets OWNER access, and project
--   team owners get READER access.
BIPDOABucketOwnerRead :: BucketsInsertPredefinedDefaultObjectACL

-- | <tt>private</tt> Object owner gets OWNER access.
BIPDOAPrivate :: BucketsInsertPredefinedDefaultObjectACL

-- | <tt>projectPrivate</tt> Object owner gets OWNER access, and project
--   team members get access according to their roles.
BIPDOAProjectPrivate :: BucketsInsertPredefinedDefaultObjectACL

-- | <tt>publicRead</tt> Object owner gets OWNER access, and allUsers get
--   READER access.
BIPDOAPublicRead :: BucketsInsertPredefinedDefaultObjectACL

-- | Apply a predefined set of access controls to this bucket.
data BucketsUpdatePredefinedACL

-- | <tt>authenticatedRead</tt> Project team owners get OWNER access, and
--   allAuthenticatedUsers get READER access.
BUPAAuthenticatedRead :: BucketsUpdatePredefinedACL

-- | <tt>private</tt> Project team owners get OWNER access.
BUPAPrivate :: BucketsUpdatePredefinedACL

-- | <tt>projectPrivate</tt> Project team members get access according to
--   their roles.
BUPAProjectPrivate :: BucketsUpdatePredefinedACL

-- | <tt>publicRead</tt> Project team owners get OWNER access, and allUsers
--   get READER access.
BUPAPublicRead :: BucketsUpdatePredefinedACL

-- | <tt>publicReadWrite</tt> Project team owners get OWNER access, and
--   allUsers get WRITER access.
BUPAPublicReadWrite :: BucketsUpdatePredefinedACL

-- | Apply a predefined set of access controls to the destination object.
data ObjectsCopyDestinationPredefinedACL

-- | <tt>authenticatedRead</tt> Object owner gets OWNER access, and
--   allAuthenticatedUsers get READER access.
OCDPACLAuthenticatedRead :: ObjectsCopyDestinationPredefinedACL

-- | <tt>bucketOwnerFullControl</tt> Object owner gets OWNER access, and
--   project team owners get OWNER access.
OCDPACLBucketOwnerFullControl :: ObjectsCopyDestinationPredefinedACL

-- | <tt>bucketOwnerRead</tt> Object owner gets OWNER access, and project
--   team owners get READER access.
OCDPACLBucketOwnerRead :: ObjectsCopyDestinationPredefinedACL

-- | <tt>private</tt> Object owner gets OWNER access.
OCDPACLPrivate :: ObjectsCopyDestinationPredefinedACL

-- | <tt>projectPrivate</tt> Object owner gets OWNER access, and project
--   team members get access according to their roles.
OCDPACLProjectPrivate :: ObjectsCopyDestinationPredefinedACL

-- | <tt>publicRead</tt> Object owner gets OWNER access, and allUsers get
--   READER access.
OCDPACLPublicRead :: ObjectsCopyDestinationPredefinedACL

-- | Apply a predefined set of access controls to this object.
data ObjectsUpdatePredefinedACL

-- | <tt>authenticatedRead</tt> Object owner gets OWNER access, and
--   allAuthenticatedUsers get READER access.
OUPAAuthenticatedRead :: ObjectsUpdatePredefinedACL

-- | <tt>bucketOwnerFullControl</tt> Object owner gets OWNER access, and
--   project team owners get OWNER access.
OUPABucketOwnerFullControl :: ObjectsUpdatePredefinedACL

-- | <tt>bucketOwnerRead</tt> Object owner gets OWNER access, and project
--   team owners get READER access.
OUPABucketOwnerRead :: ObjectsUpdatePredefinedACL

-- | <tt>private</tt> Object owner gets OWNER access.
OUPAPrivate :: ObjectsUpdatePredefinedACL

-- | <tt>projectPrivate</tt> Object owner gets OWNER access, and project
--   team members get access according to their roles.
OUPAProjectPrivate :: ObjectsUpdatePredefinedACL

-- | <tt>publicRead</tt> Object owner gets OWNER access, and allUsers get
--   READER access.
OUPAPublicRead :: ObjectsUpdatePredefinedACL

-- | The owner of the bucket. This is always the project team's owner
--   group.
--   
--   <i>See:</i> <a>bucketOwner</a> smart constructor.
data BucketOwner

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

-- | The entity, in the form project-owner-projectId.
boEntity :: Lens' BucketOwner (Maybe Text)

-- | The ID for the entity.
boEntityId :: Lens' BucketOwner (Maybe Text)
data ComposeRequestSourceObjectsItem

-- | Creates a value of <a>ComposeRequestSourceObjectsItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crsoiName</a></li>
--   <li><a>crsoiObjectPreconditions</a></li>
--   <li><a>crsoiGeneration</a></li>
--   </ul>
composeRequestSourceObjectsItem :: ComposeRequestSourceObjectsItem

-- | The source object's name. The source object's bucket is implicitly the
--   destination bucket.
crsoiName :: Lens' ComposeRequestSourceObjectsItem (Maybe Text)

-- | Conditions that must be met for this operation to execute.
crsoiObjectPreconditions :: Lens' ComposeRequestSourceObjectsItem (Maybe ComposeRequestSourceObjectsItemObjectPreconditions)

-- | The generation of this object to use as the source.
crsoiGeneration :: Lens' ComposeRequestSourceObjectsItem (Maybe Int64)

-- | Set of properties to return. Defaults to noAcl, unless the bucket
--   resource specifies acl or defaultObjectAcl properties, when it
--   defaults to full.
data BucketsInsertProjection

-- | <tt>full</tt> Include all properties.
BIPFull :: BucketsInsertProjection

-- | <tt>noAcl</tt> Omit owner, acl and defaultObjectAcl properties.
BIPNoACL :: BucketsInsertProjection

-- | Additional parameters controlling delivery channel behavior. Optional.
--   
--   <i>See:</i> <a>channelParams</a> smart constructor.
data ChannelParams

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

-- | Declares a new parameter by name.
cpAddtional :: Lens' ChannelParams (HashMap Text Text)

-- | Set of properties to return. Defaults to noAcl.
data BucketsListProjection

-- | <tt>full</tt> Include all properties.
BLPFull :: BucketsListProjection

-- | <tt>noAcl</tt> Omit owner, acl and defaultObjectAcl properties.
BLPNoACL :: BucketsListProjection

-- | Set of properties to return. Defaults to full.
data ObjectsUpdateProjection

-- | <tt>full</tt> Include all properties.
OUPFull :: ObjectsUpdateProjection

-- | <tt>noAcl</tt> Omit the owner, acl property.
OUPNoACL :: ObjectsUpdateProjection

-- | An object.
--   
--   <i>See:</i> <a>object'</a> smart constructor.
data Object

-- | Creates a value of <a>Object</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>objEtag</a></li>
--   <li><a>objTimeStorageClassUpdated</a></li>
--   <li><a>objSize</a></li>
--   <li><a>objKind</a></li>
--   <li><a>objTimeDeleted</a></li>
--   <li><a>objCrc32c</a></li>
--   <li><a>objCustomerEncryption</a></li>
--   <li><a>objBucket</a></li>
--   <li><a>objOwner</a></li>
--   <li><a>objSelfLink</a></li>
--   <li><a>objMediaLink</a></li>
--   <li><a>objComponentCount</a></li>
--   <li><a>objName</a></li>
--   <li><a>objStorageClass</a></li>
--   <li><a>objContentEncoding</a></li>
--   <li><a>objMetadata</a></li>
--   <li><a>objTimeCreated</a></li>
--   <li><a>objId</a></li>
--   <li><a>objUpdated</a></li>
--   <li><a>objContentLanguage</a></li>
--   <li><a>objCacheControl</a></li>
--   <li><a>objMetageneration</a></li>
--   <li><a>objGeneration</a></li>
--   <li><a>objACL</a></li>
--   <li><a>objContentDisPosition</a></li>
--   <li><a>objMD5Hash</a></li>
--   <li><a>objContentType</a></li>
--   </ul>
object' :: Object

-- | HTTP 1.1 Entity tag for the object.
objEtag :: Lens' Object (Maybe Text)

-- | The time at which the object's storage class was last changed. When
--   the object is initially created, it will be set to timeCreated.
objTimeStorageClassUpdated :: Lens' Object (Maybe UTCTime)

-- | Content-Length of the data in bytes.
objSize :: Lens' Object (Maybe Word64)

-- | The kind of item this is. For objects, this is always storage#object.
objKind :: Lens' Object Text

-- | The deletion time of the object in RFC 3339 format. Will be returned
--   if and only if this version of the object has been deleted.
objTimeDeleted :: Lens' Object (Maybe UTCTime)

-- | CRC32c checksum, as described in RFC 4960, Appendix B; encoded using
--   base64 in big-endian byte order. For more information about using the
--   CRC32c checksum, see Hashes and ETags: Best Practices.
objCrc32c :: Lens' Object (Maybe Text)

-- | Metadata of customer-supplied encryption key, if the object is
--   encrypted by such a key.
objCustomerEncryption :: Lens' Object (Maybe ObjectCustomerEncryption)

-- | The name of the bucket containing this object.
objBucket :: Lens' Object (Maybe Text)

-- | The owner of the object. This will always be the uploader of the
--   object.
objOwner :: Lens' Object (Maybe ObjectOwner)

-- | The link to this object.
objSelfLink :: Lens' Object (Maybe Text)

-- | Media download link.
objMediaLink :: Lens' Object (Maybe Text)

-- | Number of underlying components that make up this object. Components
--   are accumulated by compose operations.
objComponentCount :: Lens' Object (Maybe Int32)

-- | The name of this object. Required if not specified by URL parameter.
objName :: Lens' Object (Maybe Text)

-- | Storage class of the object.
objStorageClass :: Lens' Object (Maybe Text)

-- | Content-Encoding of the object data.
objContentEncoding :: Lens' Object (Maybe Text)

-- | User-provided metadata, in key/value pairs.
objMetadata :: Lens' Object (Maybe ObjectMetadata)

-- | The creation time of the object in RFC 3339 format.
objTimeCreated :: Lens' Object (Maybe UTCTime)

-- | The ID of the object.
objId :: Lens' Object (Maybe Text)

-- | The modification time of the object metadata in RFC 3339 format.
objUpdated :: Lens' Object (Maybe UTCTime)

-- | Content-Language of the object data.
objContentLanguage :: Lens' Object (Maybe Text)

-- | Cache-Control directive for the object data. If omitted, and the
--   object is accessible to all anonymous users, the default will be
--   public, max-age=3600.
objCacheControl :: Lens' Object (Maybe Text)

-- | The version of the metadata for this object at this generation. Used
--   for preconditions and for detecting changes in metadata. A
--   metageneration number is only meaningful in the context of a
--   particular generation of a particular object.
objMetageneration :: Lens' Object (Maybe Int64)

-- | The content generation of this object. Used for object versioning.
objGeneration :: Lens' Object (Maybe Int64)

-- | Access controls on the object.
objACL :: Lens' Object [ObjectAccessControl]

-- | Content-Disposition of the object data.
objContentDisPosition :: Lens' Object (Maybe Text)

-- | MD5 hash of the data; encoded using base64. For more information about
--   using the MD5 hash, see Hashes and ETags: Best Practices.
objMD5Hash :: Lens' Object (Maybe Text)

-- | Content-Type of the object data. If contentType is not specified,
--   object downloads will be served as application/octet-stream.
objContentType :: Lens' Object (Maybe Text)

-- | Set of properties to return. Defaults to full.
data ObjectsPatchProjection

-- | <tt>full</tt> Include all properties.
OPPFull :: ObjectsPatchProjection

-- | <tt>noAcl</tt> Omit the owner, acl property.
OPPNoACL :: ObjectsPatchProjection

-- | Conditions that must be met for this operation to execute.
--   
--   <i>See:</i> <a>composeRequestSourceObjectsItemObjectPreconditions</a>
--   smart constructor.
data ComposeRequestSourceObjectsItemObjectPreconditions

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

-- | Only perform the composition if the generation of the source object
--   that would be used matches this value. If this value and a generation
--   are both specified, they must be the same value or the call will fail.
crsoiopIfGenerationMatch :: Lens' ComposeRequestSourceObjectsItemObjectPreconditions (Maybe Int64)

-- | The project team associated with the entity, if any.
--   
--   <i>See:</i> <a>bucketAccessControlProjectTeam</a> smart constructor.
data BucketAccessControlProjectTeam

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

-- | The project number.
bacptProjectNumber :: Lens' BucketAccessControlProjectTeam (Maybe Text)

-- | The team.
bacptTeam :: Lens' BucketAccessControlProjectTeam (Maybe Text)

-- | An access-control list.
--   
--   <i>See:</i> <a>objectAccessControls</a> smart constructor.
data ObjectAccessControls

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

-- | The kind of item this is. For lists of object access control entries,
--   this is always storage#objectAccessControls.
oacKind :: Lens' ObjectAccessControls Text

-- | The list of items.
oacItems :: Lens' ObjectAccessControls [ObjectAccessControl]

-- | The bucket's website configuration, controlling how the service
--   behaves when accessing bucket contents as a web site. See the Static
--   Website Examples for more information.
--   
--   <i>See:</i> <a>bucketWebsite</a> smart constructor.
data BucketWebsite

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

-- | If the requested object path is missing, the service will ensure the
--   path has a trailing '/', append this suffix, and attempt to retrieve
--   the resulting object. This allows the creation of index.html objects
--   to represent directory pages.
bwMainPageSuffix :: Lens' BucketWebsite (Maybe Text)

-- | If the requested object path is missing, and any mainPageSuffix object
--   is missing, if applicable, the service will return the named object
--   from this bucket as the content for a 404 Not Found result.
bwNotFoundPage :: Lens' BucketWebsite (Maybe Text)

-- | An access-control entry.
--   
--   <i>See:</i> <a>bucketAccessControl</a> smart constructor.
data BucketAccessControl

-- | Creates a value of <a>BucketAccessControl</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bacaEmail</a></li>
--   <li><a>bacaEtag</a></li>
--   <li><a>bacaKind</a></li>
--   <li><a>bacaDomain</a></li>
--   <li><a>bacaBucket</a></li>
--   <li><a>bacaRole</a></li>
--   <li><a>bacaSelfLink</a></li>
--   <li><a>bacaId</a></li>
--   <li><a>bacaProjectTeam</a></li>
--   <li><a>bacaEntity</a></li>
--   <li><a>bacaEntityId</a></li>
--   </ul>
bucketAccessControl :: BucketAccessControl

-- | The email address associated with the entity, if any.
bacaEmail :: Lens' BucketAccessControl (Maybe Text)

-- | HTTP 1.1 Entity tag for the access-control entry.
bacaEtag :: Lens' BucketAccessControl (Maybe Text)

-- | The kind of item this is. For bucket access control entries, this is
--   always storage#bucketAccessControl.
bacaKind :: Lens' BucketAccessControl Text

-- | The domain associated with the entity, if any.
bacaDomain :: Lens' BucketAccessControl (Maybe Text)

-- | The name of the bucket.
bacaBucket :: Lens' BucketAccessControl (Maybe Text)

-- | The access permission for the entity.
bacaRole :: Lens' BucketAccessControl (Maybe Text)

-- | The link to this access-control entry.
bacaSelfLink :: Lens' BucketAccessControl (Maybe Text)

-- | The ID of the access-control entry.
bacaId :: Lens' BucketAccessControl (Maybe Text)

-- | The project team associated with the entity, if any.
bacaProjectTeam :: Lens' BucketAccessControl (Maybe BucketAccessControlProjectTeam)

-- | The entity holding the permission, in one of the following forms: -
--   user-userId - user-email - group-groupId - group-email - domain-domain
--   - project-team-projectId - allUsers - allAuthenticatedUsers Examples:
--   - The user liz'example.com would be user-liz'example.com. - The group
--   example'googlegroups.com would be group-example'googlegroups.com. - To
--   refer to all members of the Google Apps for Business domain
--   example.com, the entity would be domain-example.com.
bacaEntity :: Lens' BucketAccessControl (Maybe Text)

-- | The ID for the entity, if any.
bacaEntityId :: Lens' BucketAccessControl (Maybe Text)

-- | The action to take.
--   
--   <i>See:</i> <a>bucketLifecycleRuleItemAction</a> smart constructor.
data BucketLifecycleRuleItemAction

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

-- | Target storage class. Required iff the type of the action is
--   SetStorageClass.
blriaStorageClass :: Lens' BucketLifecycleRuleItemAction (Maybe Text)

-- | Type of the action. Currently, only Delete and SetStorageClass are
--   supported.
blriaType :: Lens' BucketLifecycleRuleItemAction (Maybe Text)

-- | Set of properties to return. Defaults to noAcl.
data ObjectsGetProjection

-- | <tt>full</tt> Include all properties.
OGPFull :: ObjectsGetProjection

-- | <tt>noAcl</tt> Omit the owner, acl property.
OGPNoACL :: ObjectsGetProjection

-- | Apply a predefined set of default object access controls to this
--   bucket.
data BucketsPatchPredefinedDefaultObjectACL

-- | <tt>authenticatedRead</tt> Object owner gets OWNER access, and
--   allAuthenticatedUsers get READER access.
BPPDOAAuthenticatedRead :: BucketsPatchPredefinedDefaultObjectACL

-- | <tt>bucketOwnerFullControl</tt> Object owner gets OWNER access, and
--   project team owners get OWNER access.
BPPDOABucketOwnerFullControl :: BucketsPatchPredefinedDefaultObjectACL

-- | <tt>bucketOwnerRead</tt> Object owner gets OWNER access, and project
--   team owners get READER access.
BPPDOABucketOwnerRead :: BucketsPatchPredefinedDefaultObjectACL

-- | <tt>private</tt> Object owner gets OWNER access.
BPPDOAPrivate :: BucketsPatchPredefinedDefaultObjectACL

-- | <tt>projectPrivate</tt> Object owner gets OWNER access, and project
--   team members get access according to their roles.
BPPDOAProjectPrivate :: BucketsPatchPredefinedDefaultObjectACL

-- | <tt>publicRead</tt> Object owner gets OWNER access, and allUsers get
--   READER access.
BPPDOAPublicRead :: BucketsPatchPredefinedDefaultObjectACL

-- | Apply a predefined set of access controls to this bucket.
data BucketsPatchPredefinedACL

-- | <tt>authenticatedRead</tt> Project team owners get OWNER access, and
--   allAuthenticatedUsers get READER access.
BPPAAuthenticatedRead :: BucketsPatchPredefinedACL

-- | <tt>private</tt> Project team owners get OWNER access.
BPPAPrivate :: BucketsPatchPredefinedACL

-- | <tt>projectPrivate</tt> Project team members get access according to
--   their roles.
BPPAProjectPrivate :: BucketsPatchPredefinedACL

-- | <tt>publicRead</tt> Project team owners get OWNER access, and allUsers
--   get READER access.
BPPAPublicRead :: BucketsPatchPredefinedACL

-- | <tt>publicReadWrite</tt> Project team owners get OWNER access, and
--   allUsers get WRITER access.
BPPAPublicReadWrite :: BucketsPatchPredefinedACL

-- | An access-control entry.
--   
--   <i>See:</i> <a>objectAccessControl</a> smart constructor.
data ObjectAccessControl

-- | Creates a value of <a>ObjectAccessControl</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oacaEmail</a></li>
--   <li><a>oacaEtag</a></li>
--   <li><a>oacaKind</a></li>
--   <li><a>oacaDomain</a></li>
--   <li><a>oacaBucket</a></li>
--   <li><a>oacaRole</a></li>
--   <li><a>oacaSelfLink</a></li>
--   <li><a>oacaObject</a></li>
--   <li><a>oacaId</a></li>
--   <li><a>oacaProjectTeam</a></li>
--   <li><a>oacaEntity</a></li>
--   <li><a>oacaGeneration</a></li>
--   <li><a>oacaEntityId</a></li>
--   </ul>
objectAccessControl :: ObjectAccessControl

-- | The email address associated with the entity, if any.
oacaEmail :: Lens' ObjectAccessControl (Maybe Text)

-- | HTTP 1.1 Entity tag for the access-control entry.
oacaEtag :: Lens' ObjectAccessControl (Maybe Text)

-- | The kind of item this is. For object access control entries, this is
--   always storage#objectAccessControl.
oacaKind :: Lens' ObjectAccessControl Text

-- | The domain associated with the entity, if any.
oacaDomain :: Lens' ObjectAccessControl (Maybe Text)

-- | The name of the bucket.
oacaBucket :: Lens' ObjectAccessControl (Maybe Text)

-- | The access permission for the entity.
oacaRole :: Lens' ObjectAccessControl (Maybe Text)

-- | The link to this access-control entry.
oacaSelfLink :: Lens' ObjectAccessControl (Maybe Text)

-- | The name of the object, if applied to an object.
oacaObject :: Lens' ObjectAccessControl (Maybe Text)

-- | The ID of the access-control entry.
oacaId :: Lens' ObjectAccessControl (Maybe Text)

-- | The project team associated with the entity, if any.
oacaProjectTeam :: Lens' ObjectAccessControl (Maybe ObjectAccessControlProjectTeam)

-- | The entity holding the permission, in one of the following forms: -
--   user-userId - user-email - group-groupId - group-email - domain-domain
--   - project-team-projectId - allUsers - allAuthenticatedUsers Examples:
--   - The user liz'example.com would be user-liz'example.com. - The group
--   example'googlegroups.com would be group-example'googlegroups.com. - To
--   refer to all members of the Google Apps for Business domain
--   example.com, the entity would be domain-example.com.
oacaEntity :: Lens' ObjectAccessControl (Maybe Text)

-- | The content generation of the object, if applied to an object.
oacaGeneration :: Lens' ObjectAccessControl (Maybe Int64)

-- | The ID for the entity, if any.
oacaEntityId :: Lens' ObjectAccessControl (Maybe Text)

-- | Set of properties to return. Defaults to noAcl, unless the object
--   resource specifies the acl property, when it defaults to full.
data ObjectsCopyProjection

-- | <tt>full</tt> Include all properties.
OCPFull :: ObjectsCopyProjection

-- | <tt>noAcl</tt> Omit the owner, acl property.
OCPNoACL :: ObjectsCopyProjection

-- | A rewrite response.
--   
--   <i>See:</i> <a>rewriteResponse</a> smart constructor.
data RewriteResponse

-- | Creates a value of <a>RewriteResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rrKind</a></li>
--   <li><a>rrDone</a></li>
--   <li><a>rrResource</a></li>
--   <li><a>rrObjectSize</a></li>
--   <li><a>rrTotalBytesRewritten</a></li>
--   <li><a>rrRewriteToken</a></li>
--   </ul>
rewriteResponse :: RewriteResponse

-- | The kind of item this is.
rrKind :: Lens' RewriteResponse Text

-- | true if the copy is finished; otherwise, false if the copy is in
--   progress. This property is always present in the response.
rrDone :: Lens' RewriteResponse (Maybe Bool)

-- | A resource containing the metadata for the copied-to object. This
--   property is present in the response only when copying completes.
rrResource :: Lens' RewriteResponse (Maybe Object)

-- | The total size of the object being copied in bytes. This property is
--   always present in the response.
rrObjectSize :: Lens' RewriteResponse (Maybe Word64)

-- | The total bytes written so far, which can be used to provide a waiting
--   user with a progress indicator. This property is always present in the
--   response.
rrTotalBytesRewritten :: Lens' RewriteResponse (Maybe Word64)

-- | A token to use in subsequent requests to continue copying data. This
--   token is present in the response only when there is more data to copy.
rrRewriteToken :: Lens' RewriteResponse (Maybe Text)

-- | Set of properties to return. Defaults to noAcl, unless the object
--   resource specifies the acl property, when it defaults to full.
data ObjectsRewriteProjection

-- | <tt>full</tt> Include all properties.
ORPFull :: ObjectsRewriteProjection

-- | <tt>noAcl</tt> Omit the owner, acl property.
ORPNoACL :: ObjectsRewriteProjection


-- | Watch for changes on all objects in a bucket.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.objects.watchAll</tt>.
module Network.Google.Resource.Storage.Objects.WatchAll

-- | A resource alias for <tt>storage.objects.watchAll</tt> method which
--   the <a>ObjectsWatchAll</a> request conforms to.
type ObjectsWatchAllResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("o" :> ("watch" :> (QueryParam "prefix" Text :> (QueryParam "versions" Bool :> (QueryParam "projection" ObjectsWatchAllProjection :> (QueryParam "pageToken" Text :> (QueryParam "delimiter" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Channel :> Post '[JSON] Channel)))))))))))))

-- | Creates a value of <a>ObjectsWatchAll</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>owaPrefix</a></li>
--   <li><a>owaBucket</a></li>
--   <li><a>owaPayload</a></li>
--   <li><a>owaVersions</a></li>
--   <li><a>owaProjection</a></li>
--   <li><a>owaPageToken</a></li>
--   <li><a>owaDelimiter</a></li>
--   <li><a>owaMaxResults</a></li>
--   </ul>
objectsWatchAll :: Text -> Channel -> ObjectsWatchAll

-- | Watch for changes on all objects in a bucket.
--   
--   <i>See:</i> <a>objectsWatchAll</a> smart constructor.
data ObjectsWatchAll

-- | Filter results to objects whose names begin with this prefix.
owaPrefix :: Lens' ObjectsWatchAll (Maybe Text)

-- | Name of the bucket in which to look for objects.
owaBucket :: Lens' ObjectsWatchAll Text

-- | Multipart request metadata.
owaPayload :: Lens' ObjectsWatchAll Channel

-- | If true, lists all versions of an object as distinct results. The
--   default is false. For more information, see Object Versioning.
owaVersions :: Lens' ObjectsWatchAll (Maybe Bool)

-- | Set of properties to return. Defaults to noAcl.
owaProjection :: Lens' ObjectsWatchAll (Maybe ObjectsWatchAllProjection)

-- | A previously-returned page token representing part of the larger set
--   of results to view.
owaPageToken :: Lens' ObjectsWatchAll (Maybe Text)

-- | Returns results in a directory-like mode. items will contain only
--   objects whose names, aside from the prefix, do not contain delimiter.
--   Objects whose names, aside from the prefix, contain delimiter will
--   have their name, truncated after the delimiter, returned in prefixes.
--   Duplicate prefixes are omitted.
owaDelimiter :: Lens' ObjectsWatchAll (Maybe Text)

-- | Maximum number of items plus prefixes to return. As duplicate prefixes
--   are omitted, fewer total results may be returned than requested. The
--   default value of this parameter is 1,000 items.
owaMaxResults :: Lens' ObjectsWatchAll (Maybe Word32)
instance GHC.Generics.Generic Network.Google.Resource.Storage.Objects.WatchAll.ObjectsWatchAll
instance Data.Data.Data Network.Google.Resource.Storage.Objects.WatchAll.ObjectsWatchAll
instance GHC.Show.Show Network.Google.Resource.Storage.Objects.WatchAll.ObjectsWatchAll
instance GHC.Classes.Eq Network.Google.Resource.Storage.Objects.WatchAll.ObjectsWatchAll
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.Objects.WatchAll.ObjectsWatchAll


-- | Updates an object's metadata.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.objects.update</tt>.
module Network.Google.Resource.Storage.Objects.Update

-- | A resource alias for <tt>storage.objects.update</tt> method which the
--   <a>ObjectsUpdate</a> request conforms to.
type ObjectsUpdateResource = ("storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("o" :> (Capture "object" Text :> (QueryParam "ifMetagenerationMatch" (Textual Int64) :> (QueryParam "ifGenerationNotMatch" (Textual Int64) :> (QueryParam "ifGenerationMatch" (Textual Int64) :> (QueryParam "predefinedAcl" ObjectsUpdatePredefinedACL :> (QueryParam "ifMetagenerationNotMatch" (Textual Int64) :> (QueryParam "projection" ObjectsUpdateProjection :> (QueryParam "generation" (Textual Int64) :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Object :> Put '[JSON] Object))))))))))))))) :<|> ("storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("o" :> (Capture "object" Text :> (QueryParam "ifMetagenerationMatch" (Textual Int64) :> (QueryParam "ifGenerationNotMatch" (Textual Int64) :> (QueryParam "ifGenerationMatch" (Textual Int64) :> (QueryParam "predefinedAcl" ObjectsUpdatePredefinedACL :> (QueryParam "ifMetagenerationNotMatch" (Textual Int64) :> (QueryParam "projection" ObjectsUpdateProjection :> (QueryParam "generation" (Textual Int64) :> (QueryParam "alt" AltMedia :> Put '[OctetStream] Stream))))))))))))))

-- | Creates a value of <a>ObjectsUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ouIfMetagenerationMatch</a></li>
--   <li><a>ouIfGenerationNotMatch</a></li>
--   <li><a>ouIfGenerationMatch</a></li>
--   <li><a>ouPredefinedACL</a></li>
--   <li><a>ouBucket</a></li>
--   <li><a>ouPayload</a></li>
--   <li><a>ouIfMetagenerationNotMatch</a></li>
--   <li><a>ouObject</a></li>
--   <li><a>ouProjection</a></li>
--   <li><a>ouGeneration</a></li>
--   </ul>
objectsUpdate :: Text -> Object -> Text -> ObjectsUpdate

-- | Updates an object's metadata.
--   
--   <i>See:</i> <a>objectsUpdate</a> smart constructor.
data ObjectsUpdate

-- | Makes the operation conditional on whether the object's current
--   metageneration matches the given value.
ouIfMetagenerationMatch :: Lens' ObjectsUpdate (Maybe Int64)

-- | Makes the operation conditional on whether the object's current
--   generation does not match the given value.
ouIfGenerationNotMatch :: Lens' ObjectsUpdate (Maybe Int64)

-- | Makes the operation conditional on whether the object's current
--   generation matches the given value.
ouIfGenerationMatch :: Lens' ObjectsUpdate (Maybe Int64)

-- | Apply a predefined set of access controls to this object.
ouPredefinedACL :: Lens' ObjectsUpdate (Maybe ObjectsUpdatePredefinedACL)

-- | Name of the bucket in which the object resides.
ouBucket :: Lens' ObjectsUpdate Text

-- | Multipart request metadata.
ouPayload :: Lens' ObjectsUpdate Object

-- | Makes the operation conditional on whether the object's current
--   metageneration does not match the given value.
ouIfMetagenerationNotMatch :: Lens' ObjectsUpdate (Maybe Int64)

-- | Name of the object. For information about how to URL encode object
--   names to be path safe, see Encoding URI Path Parts.
ouObject :: Lens' ObjectsUpdate Text

-- | Set of properties to return. Defaults to full.
ouProjection :: Lens' ObjectsUpdate (Maybe ObjectsUpdateProjection)

-- | If present, selects a specific revision of this object (as opposed to
--   the latest version, the default).
ouGeneration :: Lens' ObjectsUpdate (Maybe Int64)
instance GHC.Generics.Generic Network.Google.Resource.Storage.Objects.Update.ObjectsUpdate
instance Data.Data.Data Network.Google.Resource.Storage.Objects.Update.ObjectsUpdate
instance GHC.Show.Show Network.Google.Resource.Storage.Objects.Update.ObjectsUpdate
instance GHC.Classes.Eq Network.Google.Resource.Storage.Objects.Update.ObjectsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.Objects.Update.ObjectsUpdate
instance Network.Google.Types.GoogleRequest (Network.Google.Types.MediaDownload Network.Google.Resource.Storage.Objects.Update.ObjectsUpdate)


-- | Rewrites a source object to a destination object. Optionally overrides
--   metadata.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.objects.rewrite</tt>.
module Network.Google.Resource.Storage.Objects.Rewrite

-- | A resource alias for <tt>storage.objects.rewrite</tt> method which the
--   <a>ObjectsRewrite</a> request conforms to.
type ObjectsRewriteResource = "storage" :> ("v1" :> ("b" :> (Capture "sourceBucket" Text :> ("o" :> (Capture "sourceObject" Text :> ("rewriteTo" :> ("b" :> (Capture "destinationBucket" Text :> ("o" :> (Capture "destinationObject" Text :> (QueryParam "destinationPredefinedAcl" ObjectsRewriteDestinationPredefinedACL :> (QueryParam "ifSourceGenerationMatch" (Textual Int64) :> (QueryParam "ifMetagenerationMatch" (Textual Int64) :> (QueryParam "ifGenerationNotMatch" (Textual Int64) :> (QueryParam "ifSourceMetagenerationNotMatch" (Textual Int64) :> (QueryParam "ifSourceMetagenerationMatch" (Textual Int64) :> (QueryParam "ifGenerationMatch" (Textual Int64) :> (QueryParam "maxBytesRewrittenPerCall" (Textual Int64) :> (QueryParam "ifMetagenerationNotMatch" (Textual Int64) :> (QueryParam "ifSourceGenerationNotMatch" (Textual Int64) :> (QueryParam "projection" ObjectsRewriteProjection :> (QueryParam "sourceGeneration" (Textual Int64) :> (QueryParam "rewriteToken" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Object :> Post '[JSON] RewriteResponse)))))))))))))))))))))))))

-- | Creates a value of <a>ObjectsRewrite</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>orDestinationPredefinedACL</a></li>
--   <li><a>orIfSourceGenerationMatch</a></li>
--   <li><a>orIfMetagenerationMatch</a></li>
--   <li><a>orIfGenerationNotMatch</a></li>
--   <li><a>orIfSourceMetagenerationNotMatch</a></li>
--   <li><a>orIfSourceMetagenerationMatch</a></li>
--   <li><a>orIfGenerationMatch</a></li>
--   <li><a>orSourceObject</a></li>
--   <li><a>orMaxBytesRewrittenPerCall</a></li>
--   <li><a>orSourceBucket</a></li>
--   <li><a>orPayload</a></li>
--   <li><a>orDestinationBucket</a></li>
--   <li><a>orIfMetagenerationNotMatch</a></li>
--   <li><a>orIfSourceGenerationNotMatch</a></li>
--   <li><a>orProjection</a></li>
--   <li><a>orSourceGeneration</a></li>
--   <li><a>orRewriteToken</a></li>
--   <li><a>orDestinationObject</a></li>
--   </ul>
objectsRewrite :: Text -> Text -> Object -> Text -> Text -> ObjectsRewrite

-- | Rewrites a source object to a destination object. Optionally overrides
--   metadata.
--   
--   <i>See:</i> <a>objectsRewrite</a> smart constructor.
data ObjectsRewrite

-- | Apply a predefined set of access controls to the destination object.
orDestinationPredefinedACL :: Lens' ObjectsRewrite (Maybe ObjectsRewriteDestinationPredefinedACL)

-- | Makes the operation conditional on whether the source object's
--   generation matches the given value.
orIfSourceGenerationMatch :: Lens' ObjectsRewrite (Maybe Int64)

-- | Makes the operation conditional on whether the destination object's
--   current metageneration matches the given value.
orIfMetagenerationMatch :: Lens' ObjectsRewrite (Maybe Int64)

-- | Makes the operation conditional on whether the destination object's
--   current generation does not match the given value.
orIfGenerationNotMatch :: Lens' ObjectsRewrite (Maybe Int64)

-- | Makes the operation conditional on whether the source object's current
--   metageneration does not match the given value.
orIfSourceMetagenerationNotMatch :: Lens' ObjectsRewrite (Maybe Int64)

-- | Makes the operation conditional on whether the source object's current
--   metageneration matches the given value.
orIfSourceMetagenerationMatch :: Lens' ObjectsRewrite (Maybe Int64)

-- | Makes the operation conditional on whether the destination object's
--   current generation matches the given value.
orIfGenerationMatch :: Lens' ObjectsRewrite (Maybe Int64)

-- | Name of the source object. For information about how to URL encode
--   object names to be path safe, see Encoding URI Path Parts.
orSourceObject :: Lens' ObjectsRewrite Text

-- | The maximum number of bytes that will be rewritten per rewrite
--   request. Most callers shouldn't need to specify this parameter - it is
--   primarily in place to support testing. If specified the value must be
--   an integral multiple of 1 MiB (1048576). Also, this only applies to
--   requests where the source and destination span locations and/or
--   storage classes. Finally, this value must not change across rewrite
--   calls else you'll get an error that the rewriteToken is invalid.
orMaxBytesRewrittenPerCall :: Lens' ObjectsRewrite (Maybe Int64)

-- | Name of the bucket in which to find the source object.
orSourceBucket :: Lens' ObjectsRewrite Text

-- | Multipart request metadata.
orPayload :: Lens' ObjectsRewrite Object

-- | Name of the bucket in which to store the new object. Overrides the
--   provided object metadata's bucket value, if any.
orDestinationBucket :: Lens' ObjectsRewrite Text

-- | Makes the operation conditional on whether the destination object's
--   current metageneration does not match the given value.
orIfMetagenerationNotMatch :: Lens' ObjectsRewrite (Maybe Int64)

-- | Makes the operation conditional on whether the source object's
--   generation does not match the given value.
orIfSourceGenerationNotMatch :: Lens' ObjectsRewrite (Maybe Int64)

-- | Set of properties to return. Defaults to noAcl, unless the object
--   resource specifies the acl property, when it defaults to full.
orProjection :: Lens' ObjectsRewrite (Maybe ObjectsRewriteProjection)

-- | If present, selects a specific revision of the source object (as
--   opposed to the latest version, the default).
orSourceGeneration :: Lens' ObjectsRewrite (Maybe Int64)

-- | Include this field (from the previous rewrite response) on each
--   rewrite request after the first one, until the rewrite response 'done'
--   flag is true. Calls that provide a rewriteToken can omit all other
--   request fields, but if included those fields must match the values
--   provided in the first rewrite request.
orRewriteToken :: Lens' ObjectsRewrite (Maybe Text)

-- | Name of the new object. Required when the object metadata is not
--   otherwise provided. Overrides the object metadata's name value, if
--   any. For information about how to URL encode object names to be path
--   safe, see Encoding URI Path Parts.
orDestinationObject :: Lens' ObjectsRewrite Text
instance GHC.Generics.Generic Network.Google.Resource.Storage.Objects.Rewrite.ObjectsRewrite
instance Data.Data.Data Network.Google.Resource.Storage.Objects.Rewrite.ObjectsRewrite
instance GHC.Show.Show Network.Google.Resource.Storage.Objects.Rewrite.ObjectsRewrite
instance GHC.Classes.Eq Network.Google.Resource.Storage.Objects.Rewrite.ObjectsRewrite
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.Objects.Rewrite.ObjectsRewrite


-- | Updates an object's metadata. This method supports patch semantics.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.objects.patch</tt>.
module Network.Google.Resource.Storage.Objects.Patch

-- | A resource alias for <tt>storage.objects.patch</tt> method which the
--   <a>ObjectsPatch</a> request conforms to.
type ObjectsPatchResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("o" :> (Capture "object" Text :> (QueryParam "ifMetagenerationMatch" (Textual Int64) :> (QueryParam "ifGenerationNotMatch" (Textual Int64) :> (QueryParam "ifGenerationMatch" (Textual Int64) :> (QueryParam "predefinedAcl" ObjectsPatchPredefinedACL :> (QueryParam "ifMetagenerationNotMatch" (Textual Int64) :> (QueryParam "projection" ObjectsPatchProjection :> (QueryParam "generation" (Textual Int64) :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Object :> Patch '[JSON] Object))))))))))))))

-- | Creates a value of <a>ObjectsPatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>opIfMetagenerationMatch</a></li>
--   <li><a>opIfGenerationNotMatch</a></li>
--   <li><a>opIfGenerationMatch</a></li>
--   <li><a>opPredefinedACL</a></li>
--   <li><a>opBucket</a></li>
--   <li><a>opPayload</a></li>
--   <li><a>opIfMetagenerationNotMatch</a></li>
--   <li><a>opObject</a></li>
--   <li><a>opProjection</a></li>
--   <li><a>opGeneration</a></li>
--   </ul>
objectsPatch :: Text -> Object -> Text -> ObjectsPatch

-- | Updates an object's metadata. This method supports patch semantics.
--   
--   <i>See:</i> <a>objectsPatch</a> smart constructor.
data ObjectsPatch

-- | Makes the operation conditional on whether the object's current
--   metageneration matches the given value.
opIfMetagenerationMatch :: Lens' ObjectsPatch (Maybe Int64)

-- | Makes the operation conditional on whether the object's current
--   generation does not match the given value.
opIfGenerationNotMatch :: Lens' ObjectsPatch (Maybe Int64)

-- | Makes the operation conditional on whether the object's current
--   generation matches the given value.
opIfGenerationMatch :: Lens' ObjectsPatch (Maybe Int64)

-- | Apply a predefined set of access controls to this object.
opPredefinedACL :: Lens' ObjectsPatch (Maybe ObjectsPatchPredefinedACL)

-- | Name of the bucket in which the object resides.
opBucket :: Lens' ObjectsPatch Text

-- | Multipart request metadata.
opPayload :: Lens' ObjectsPatch Object

-- | Makes the operation conditional on whether the object's current
--   metageneration does not match the given value.
opIfMetagenerationNotMatch :: Lens' ObjectsPatch (Maybe Int64)

-- | Name of the object. For information about how to URL encode object
--   names to be path safe, see Encoding URI Path Parts.
opObject :: Lens' ObjectsPatch Text

-- | Set of properties to return. Defaults to full.
opProjection :: Lens' ObjectsPatch (Maybe ObjectsPatchProjection)

-- | If present, selects a specific revision of this object (as opposed to
--   the latest version, the default).
opGeneration :: Lens' ObjectsPatch (Maybe Int64)
instance GHC.Generics.Generic Network.Google.Resource.Storage.Objects.Patch.ObjectsPatch
instance Data.Data.Data Network.Google.Resource.Storage.Objects.Patch.ObjectsPatch
instance GHC.Show.Show Network.Google.Resource.Storage.Objects.Patch.ObjectsPatch
instance GHC.Classes.Eq Network.Google.Resource.Storage.Objects.Patch.ObjectsPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.Objects.Patch.ObjectsPatch


-- | Retrieves a list of objects matching the criteria.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.objects.list</tt>.
module Network.Google.Resource.Storage.Objects.List

-- | A resource alias for <tt>storage.objects.list</tt> method which the
--   <a>ObjectsList</a> request conforms to.
type ObjectsListResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("o" :> (QueryParam "prefix" Text :> (QueryParam "versions" Bool :> (QueryParam "projection" ObjectsListProjection :> (QueryParam "pageToken" Text :> (QueryParam "delimiter" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] Objects)))))))))))

-- | Creates a value of <a>ObjectsList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>olPrefix</a></li>
--   <li><a>olBucket</a></li>
--   <li><a>olVersions</a></li>
--   <li><a>olProjection</a></li>
--   <li><a>olPageToken</a></li>
--   <li><a>olDelimiter</a></li>
--   <li><a>olMaxResults</a></li>
--   </ul>
objectsList :: Text -> ObjectsList

-- | Retrieves a list of objects matching the criteria.
--   
--   <i>See:</i> <a>objectsList</a> smart constructor.
data ObjectsList

-- | Filter results to objects whose names begin with this prefix.
olPrefix :: Lens' ObjectsList (Maybe Text)

-- | Name of the bucket in which to look for objects.
olBucket :: Lens' ObjectsList Text

-- | If true, lists all versions of an object as distinct results. The
--   default is false. For more information, see Object Versioning.
olVersions :: Lens' ObjectsList (Maybe Bool)

-- | Set of properties to return. Defaults to noAcl.
olProjection :: Lens' ObjectsList (Maybe ObjectsListProjection)

-- | A previously-returned page token representing part of the larger set
--   of results to view.
olPageToken :: Lens' ObjectsList (Maybe Text)

-- | Returns results in a directory-like mode. items will contain only
--   objects whose names, aside from the prefix, do not contain delimiter.
--   Objects whose names, aside from the prefix, contain delimiter will
--   have their name, truncated after the delimiter, returned in prefixes.
--   Duplicate prefixes are omitted.
olDelimiter :: Lens' ObjectsList (Maybe Text)

-- | Maximum number of items plus prefixes to return. As duplicate prefixes
--   are omitted, fewer total results may be returned than requested. The
--   default value of this parameter is 1,000 items.
olMaxResults :: Lens' ObjectsList (Maybe Word32)
instance GHC.Generics.Generic Network.Google.Resource.Storage.Objects.List.ObjectsList
instance Data.Data.Data Network.Google.Resource.Storage.Objects.List.ObjectsList
instance GHC.Show.Show Network.Google.Resource.Storage.Objects.List.ObjectsList
instance GHC.Classes.Eq Network.Google.Resource.Storage.Objects.List.ObjectsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.Objects.List.ObjectsList


-- | Stores a new object and metadata.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.objects.insert</tt>.
module Network.Google.Resource.Storage.Objects.Insert

-- | A resource alias for <tt>storage.objects.insert</tt> method which the
--   <a>ObjectsInsert</a> request conforms to.
type ObjectsInsertResource = ("storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("o" :> (QueryParam "ifMetagenerationMatch" (Textual Int64) :> (QueryParam "ifGenerationNotMatch" (Textual Int64) :> (QueryParam "ifGenerationMatch" (Textual Int64) :> (QueryParam "predefinedAcl" ObjectsInsertPredefinedACL :> (QueryParam "name" Text :> (QueryParam "ifMetagenerationNotMatch" (Textual Int64) :> (QueryParam "contentEncoding" Text :> (QueryParam "projection" ObjectsInsertProjection :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Object :> Post '[JSON] Object))))))))))))))) :<|> (("storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("o" :> (QueryParam "ifMetagenerationMatch" (Textual Int64) :> (QueryParam "ifGenerationNotMatch" (Textual Int64) :> (QueryParam "ifGenerationMatch" (Textual Int64) :> (QueryParam "predefinedAcl" ObjectsInsertPredefinedACL :> (QueryParam "name" Text :> (QueryParam "ifMetagenerationNotMatch" (Textual Int64) :> (QueryParam "contentEncoding" Text :> (QueryParam "projection" ObjectsInsertProjection :> (QueryParam "alt" AltMedia :> Post '[OctetStream] Stream)))))))))))))) :<|> ("upload" :> ("storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("o" :> (QueryParam "ifMetagenerationMatch" (Textual Int64) :> (QueryParam "ifGenerationNotMatch" (Textual Int64) :> (QueryParam "ifGenerationMatch" (Textual Int64) :> (QueryParam "predefinedAcl" ObjectsInsertPredefinedACL :> (QueryParam "name" Text :> (QueryParam "ifMetagenerationNotMatch" (Textual Int64) :> (QueryParam "contentEncoding" Text :> (QueryParam "projection" ObjectsInsertProjection :> (QueryParam "alt" AltJSON :> (QueryParam "uploadType" Multipart :> (MultipartRelated '[JSON] Object :> Post '[JSON] Object))))))))))))))))))

-- | Creates a value of <a>ObjectsInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oiIfMetagenerationMatch</a></li>
--   <li><a>oiIfGenerationNotMatch</a></li>
--   <li><a>oiIfGenerationMatch</a></li>
--   <li><a>oiPredefinedACL</a></li>
--   <li><a>oiBucket</a></li>
--   <li><a>oiPayload</a></li>
--   <li><a>oiName</a></li>
--   <li><a>oiIfMetagenerationNotMatch</a></li>
--   <li><a>oiContentEncoding</a></li>
--   <li><a>oiProjection</a></li>
--   </ul>
objectsInsert :: Text -> Object -> ObjectsInsert

-- | Stores a new object and metadata.
--   
--   <i>See:</i> <a>objectsInsert</a> smart constructor.
data ObjectsInsert

-- | Makes the operation conditional on whether the object's current
--   metageneration matches the given value.
oiIfMetagenerationMatch :: Lens' ObjectsInsert (Maybe Int64)

-- | Makes the operation conditional on whether the object's current
--   generation does not match the given value.
oiIfGenerationNotMatch :: Lens' ObjectsInsert (Maybe Int64)

-- | Makes the operation conditional on whether the object's current
--   generation matches the given value.
oiIfGenerationMatch :: Lens' ObjectsInsert (Maybe Int64)

-- | Apply a predefined set of access controls to this object.
oiPredefinedACL :: Lens' ObjectsInsert (Maybe ObjectsInsertPredefinedACL)

-- | Name of the bucket in which to store the new object. Overrides the
--   provided object metadata's bucket value, if any.
oiBucket :: Lens' ObjectsInsert Text

-- | Multipart request metadata.
oiPayload :: Lens' ObjectsInsert Object

-- | Name of the object. Required when the object metadata is not otherwise
--   provided. Overrides the object metadata's name value, if any. For
--   information about how to URL encode object names to be path safe, see
--   Encoding URI Path Parts.
oiName :: Lens' ObjectsInsert (Maybe Text)

-- | Makes the operation conditional on whether the object's current
--   metageneration does not match the given value.
oiIfMetagenerationNotMatch :: Lens' ObjectsInsert (Maybe Int64)

-- | If set, sets the contentEncoding property of the final object to this
--   value. Setting this parameter is equivalent to setting the
--   contentEncoding metadata property. This can be useful when uploading
--   an object with uploadType=media to indicate the encoding of the
--   content being uploaded.
oiContentEncoding :: Lens' ObjectsInsert (Maybe Text)

-- | Set of properties to return. Defaults to noAcl, unless the object
--   resource specifies the acl property, when it defaults to full.
oiProjection :: Lens' ObjectsInsert (Maybe ObjectsInsertProjection)
instance GHC.Generics.Generic Network.Google.Resource.Storage.Objects.Insert.ObjectsInsert
instance Data.Data.Data Network.Google.Resource.Storage.Objects.Insert.ObjectsInsert
instance GHC.Show.Show Network.Google.Resource.Storage.Objects.Insert.ObjectsInsert
instance GHC.Classes.Eq Network.Google.Resource.Storage.Objects.Insert.ObjectsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.Objects.Insert.ObjectsInsert
instance Network.Google.Types.GoogleRequest (Network.Google.Types.MediaUpload Network.Google.Resource.Storage.Objects.Insert.ObjectsInsert)


-- | Retrieves an object or its metadata.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.objects.get</tt>.
module Network.Google.Resource.Storage.Objects.Get

-- | A resource alias for <tt>storage.objects.get</tt> method which the
--   <a>ObjectsGet</a> request conforms to.
type ObjectsGetResource = ("storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("o" :> (Capture "object" Text :> (QueryParam "ifMetagenerationMatch" (Textual Int64) :> (QueryParam "ifGenerationNotMatch" (Textual Int64) :> (QueryParam "ifGenerationMatch" (Textual Int64) :> (QueryParam "ifMetagenerationNotMatch" (Textual Int64) :> (QueryParam "projection" ObjectsGetProjection :> (QueryParam "generation" (Textual Int64) :> (QueryParam "alt" AltJSON :> Get '[JSON] Object))))))))))))) :<|> ("storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("o" :> (Capture "object" Text :> (QueryParam "ifMetagenerationMatch" (Textual Int64) :> (QueryParam "ifGenerationNotMatch" (Textual Int64) :> (QueryParam "ifGenerationMatch" (Textual Int64) :> (QueryParam "ifMetagenerationNotMatch" (Textual Int64) :> (QueryParam "projection" ObjectsGetProjection :> (QueryParam "generation" (Textual Int64) :> (QueryParam "alt" AltMedia :> Get '[OctetStream] Stream)))))))))))))

-- | Creates a value of <a>ObjectsGet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ogIfMetagenerationMatch</a></li>
--   <li><a>ogIfGenerationNotMatch</a></li>
--   <li><a>ogIfGenerationMatch</a></li>
--   <li><a>ogBucket</a></li>
--   <li><a>ogIfMetagenerationNotMatch</a></li>
--   <li><a>ogObject</a></li>
--   <li><a>ogProjection</a></li>
--   <li><a>ogGeneration</a></li>
--   </ul>
objectsGet :: Text -> Text -> ObjectsGet

-- | Retrieves an object or its metadata.
--   
--   <i>See:</i> <a>objectsGet</a> smart constructor.
data ObjectsGet

-- | Makes the operation conditional on whether the object's current
--   metageneration matches the given value.
ogIfMetagenerationMatch :: Lens' ObjectsGet (Maybe Int64)

-- | Makes the operation conditional on whether the object's generation
--   does not match the given value.
ogIfGenerationNotMatch :: Lens' ObjectsGet (Maybe Int64)

-- | Makes the operation conditional on whether the object's generation
--   matches the given value.
ogIfGenerationMatch :: Lens' ObjectsGet (Maybe Int64)

-- | Name of the bucket in which the object resides.
ogBucket :: Lens' ObjectsGet Text

-- | Makes the operation conditional on whether the object's current
--   metageneration does not match the given value.
ogIfMetagenerationNotMatch :: Lens' ObjectsGet (Maybe Int64)

-- | Name of the object. For information about how to URL encode object
--   names to be path safe, see Encoding URI Path Parts.
ogObject :: Lens' ObjectsGet Text

-- | Set of properties to return. Defaults to noAcl.
ogProjection :: Lens' ObjectsGet (Maybe ObjectsGetProjection)

-- | If present, selects a specific revision of this object (as opposed to
--   the latest version, the default).
ogGeneration :: Lens' ObjectsGet (Maybe Int64)
instance GHC.Generics.Generic Network.Google.Resource.Storage.Objects.Get.ObjectsGet
instance Data.Data.Data Network.Google.Resource.Storage.Objects.Get.ObjectsGet
instance GHC.Show.Show Network.Google.Resource.Storage.Objects.Get.ObjectsGet
instance GHC.Classes.Eq Network.Google.Resource.Storage.Objects.Get.ObjectsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.Objects.Get.ObjectsGet
instance Network.Google.Types.GoogleRequest (Network.Google.Types.MediaDownload Network.Google.Resource.Storage.Objects.Get.ObjectsGet)


-- | Deletes an object and its metadata. Deletions are permanent if
--   versioning is not enabled for the bucket, or if the generation
--   parameter is used.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.objects.delete</tt>.
module Network.Google.Resource.Storage.Objects.Delete

-- | A resource alias for <tt>storage.objects.delete</tt> method which the
--   <a>ObjectsDelete</a> request conforms to.
type ObjectsDeleteResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("o" :> (Capture "object" Text :> (QueryParam "ifMetagenerationMatch" (Textual Int64) :> (QueryParam "ifGenerationNotMatch" (Textual Int64) :> (QueryParam "ifGenerationMatch" (Textual Int64) :> (QueryParam "ifMetagenerationNotMatch" (Textual Int64) :> (QueryParam "generation" (Textual Int64) :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))))))))

-- | Creates a value of <a>ObjectsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>odIfMetagenerationMatch</a></li>
--   <li><a>odIfGenerationNotMatch</a></li>
--   <li><a>odIfGenerationMatch</a></li>
--   <li><a>odBucket</a></li>
--   <li><a>odIfMetagenerationNotMatch</a></li>
--   <li><a>odObject</a></li>
--   <li><a>odGeneration</a></li>
--   </ul>
objectsDelete :: Text -> Text -> ObjectsDelete

-- | Deletes an object and its metadata. Deletions are permanent if
--   versioning is not enabled for the bucket, or if the generation
--   parameter is used.
--   
--   <i>See:</i> <a>objectsDelete</a> smart constructor.
data ObjectsDelete

-- | Makes the operation conditional on whether the object's current
--   metageneration matches the given value.
odIfMetagenerationMatch :: Lens' ObjectsDelete (Maybe Int64)

-- | Makes the operation conditional on whether the object's current
--   generation does not match the given value.
odIfGenerationNotMatch :: Lens' ObjectsDelete (Maybe Int64)

-- | Makes the operation conditional on whether the object's current
--   generation matches the given value.
odIfGenerationMatch :: Lens' ObjectsDelete (Maybe Int64)

-- | Name of the bucket in which the object resides.
odBucket :: Lens' ObjectsDelete Text

-- | Makes the operation conditional on whether the object's current
--   metageneration does not match the given value.
odIfMetagenerationNotMatch :: Lens' ObjectsDelete (Maybe Int64)

-- | Name of the object. For information about how to URL encode object
--   names to be path safe, see Encoding URI Path Parts.
odObject :: Lens' ObjectsDelete Text

-- | If present, permanently deletes a specific revision of this object (as
--   opposed to the latest version, the default).
odGeneration :: Lens' ObjectsDelete (Maybe Int64)
instance GHC.Generics.Generic Network.Google.Resource.Storage.Objects.Delete.ObjectsDelete
instance Data.Data.Data Network.Google.Resource.Storage.Objects.Delete.ObjectsDelete
instance GHC.Show.Show Network.Google.Resource.Storage.Objects.Delete.ObjectsDelete
instance GHC.Classes.Eq Network.Google.Resource.Storage.Objects.Delete.ObjectsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.Objects.Delete.ObjectsDelete


-- | Copies a source object to a destination object. Optionally overrides
--   metadata.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.objects.copy</tt>.
module Network.Google.Resource.Storage.Objects.Copy

-- | A resource alias for <tt>storage.objects.copy</tt> method which the
--   <a>ObjectsCopy</a> request conforms to.
type ObjectsCopyResource = ("storage" :> ("v1" :> ("b" :> (Capture "sourceBucket" Text :> ("o" :> (Capture "sourceObject" Text :> ("copyTo" :> ("b" :> (Capture "destinationBucket" Text :> ("o" :> (Capture "destinationObject" Text :> (QueryParam "destinationPredefinedAcl" ObjectsCopyDestinationPredefinedACL :> (QueryParam "ifSourceGenerationMatch" (Textual Int64) :> (QueryParam "ifMetagenerationMatch" (Textual Int64) :> (QueryParam "ifGenerationNotMatch" (Textual Int64) :> (QueryParam "ifSourceMetagenerationNotMatch" (Textual Int64) :> (QueryParam "ifSourceMetagenerationMatch" (Textual Int64) :> (QueryParam "ifGenerationMatch" (Textual Int64) :> (QueryParam "ifMetagenerationNotMatch" (Textual Int64) :> (QueryParam "ifSourceGenerationNotMatch" (Textual Int64) :> (QueryParam "projection" ObjectsCopyProjection :> (QueryParam "sourceGeneration" (Textual Int64) :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Object :> Post '[JSON] Object)))))))))))))))))))))))) :<|> ("storage" :> ("v1" :> ("b" :> (Capture "sourceBucket" Text :> ("o" :> (Capture "sourceObject" Text :> ("copyTo" :> ("b" :> (Capture "destinationBucket" Text :> ("o" :> (Capture "destinationObject" Text :> (QueryParam "destinationPredefinedAcl" ObjectsCopyDestinationPredefinedACL :> (QueryParam "ifSourceGenerationMatch" (Textual Int64) :> (QueryParam "ifMetagenerationMatch" (Textual Int64) :> (QueryParam "ifGenerationNotMatch" (Textual Int64) :> (QueryParam "ifSourceMetagenerationNotMatch" (Textual Int64) :> (QueryParam "ifSourceMetagenerationMatch" (Textual Int64) :> (QueryParam "ifGenerationMatch" (Textual Int64) :> (QueryParam "ifMetagenerationNotMatch" (Textual Int64) :> (QueryParam "ifSourceGenerationNotMatch" (Textual Int64) :> (QueryParam "projection" ObjectsCopyProjection :> (QueryParam "sourceGeneration" (Textual Int64) :> (QueryParam "alt" AltMedia :> Post '[OctetStream] Stream)))))))))))))))))))))))

-- | Creates a value of <a>ObjectsCopy</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ocDestinationPredefinedACL</a></li>
--   <li><a>ocIfSourceGenerationMatch</a></li>
--   <li><a>ocIfMetagenerationMatch</a></li>
--   <li><a>ocIfGenerationNotMatch</a></li>
--   <li><a>ocIfSourceMetagenerationNotMatch</a></li>
--   <li><a>ocIfSourceMetagenerationMatch</a></li>
--   <li><a>ocIfGenerationMatch</a></li>
--   <li><a>ocSourceObject</a></li>
--   <li><a>ocSourceBucket</a></li>
--   <li><a>ocPayload</a></li>
--   <li><a>ocDestinationBucket</a></li>
--   <li><a>ocIfMetagenerationNotMatch</a></li>
--   <li><a>ocIfSourceGenerationNotMatch</a></li>
--   <li><a>ocProjection</a></li>
--   <li><a>ocSourceGeneration</a></li>
--   <li><a>ocDestinationObject</a></li>
--   </ul>
objectsCopy :: Text -> Text -> Object -> Text -> Text -> ObjectsCopy

-- | Copies a source object to a destination object. Optionally overrides
--   metadata.
--   
--   <i>See:</i> <a>objectsCopy</a> smart constructor.
data ObjectsCopy

-- | Apply a predefined set of access controls to the destination object.
ocDestinationPredefinedACL :: Lens' ObjectsCopy (Maybe ObjectsCopyDestinationPredefinedACL)

-- | Makes the operation conditional on whether the source object's
--   generation matches the given value.
ocIfSourceGenerationMatch :: Lens' ObjectsCopy (Maybe Int64)

-- | Makes the operation conditional on whether the destination object's
--   current metageneration matches the given value.
ocIfMetagenerationMatch :: Lens' ObjectsCopy (Maybe Int64)

-- | Makes the operation conditional on whether the destination object's
--   current generation does not match the given value.
ocIfGenerationNotMatch :: Lens' ObjectsCopy (Maybe Int64)

-- | Makes the operation conditional on whether the source object's current
--   metageneration does not match the given value.
ocIfSourceMetagenerationNotMatch :: Lens' ObjectsCopy (Maybe Int64)

-- | Makes the operation conditional on whether the source object's current
--   metageneration matches the given value.
ocIfSourceMetagenerationMatch :: Lens' ObjectsCopy (Maybe Int64)

-- | Makes the operation conditional on whether the destination object's
--   current generation matches the given value.
ocIfGenerationMatch :: Lens' ObjectsCopy (Maybe Int64)

-- | Name of the source object. For information about how to URL encode
--   object names to be path safe, see Encoding URI Path Parts.
ocSourceObject :: Lens' ObjectsCopy Text

-- | Name of the bucket in which to find the source object.
ocSourceBucket :: Lens' ObjectsCopy Text

-- | Multipart request metadata.
ocPayload :: Lens' ObjectsCopy Object

-- | Name of the bucket in which to store the new object. Overrides the
--   provided object metadata's bucket value, if any.For information about
--   how to URL encode object names to be path safe, see Encoding URI Path
--   Parts.
ocDestinationBucket :: Lens' ObjectsCopy Text

-- | Makes the operation conditional on whether the destination object's
--   current metageneration does not match the given value.
ocIfMetagenerationNotMatch :: Lens' ObjectsCopy (Maybe Int64)

-- | Makes the operation conditional on whether the source object's
--   generation does not match the given value.
ocIfSourceGenerationNotMatch :: Lens' ObjectsCopy (Maybe Int64)

-- | Set of properties to return. Defaults to noAcl, unless the object
--   resource specifies the acl property, when it defaults to full.
ocProjection :: Lens' ObjectsCopy (Maybe ObjectsCopyProjection)

-- | If present, selects a specific revision of the source object (as
--   opposed to the latest version, the default).
ocSourceGeneration :: Lens' ObjectsCopy (Maybe Int64)

-- | Name of the new object. Required when the object metadata is not
--   otherwise provided. Overrides the object metadata's name value, if
--   any.
ocDestinationObject :: Lens' ObjectsCopy Text
instance GHC.Generics.Generic Network.Google.Resource.Storage.Objects.Copy.ObjectsCopy
instance Data.Data.Data Network.Google.Resource.Storage.Objects.Copy.ObjectsCopy
instance GHC.Show.Show Network.Google.Resource.Storage.Objects.Copy.ObjectsCopy
instance GHC.Classes.Eq Network.Google.Resource.Storage.Objects.Copy.ObjectsCopy
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.Objects.Copy.ObjectsCopy
instance Network.Google.Types.GoogleRequest (Network.Google.Types.MediaDownload Network.Google.Resource.Storage.Objects.Copy.ObjectsCopy)


-- | Concatenates a list of existing objects into a new object in the same
--   bucket.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.objects.compose</tt>.
module Network.Google.Resource.Storage.Objects.Compose

-- | A resource alias for <tt>storage.objects.compose</tt> method which the
--   <a>ObjectsCompose</a> request conforms to.
type ObjectsComposeResource = ("storage" :> ("v1" :> ("b" :> (Capture "destinationBucket" Text :> ("o" :> (Capture "destinationObject" Text :> ("compose" :> (QueryParam "destinationPredefinedAcl" ObjectsComposeDestinationPredefinedACL :> (QueryParam "ifMetagenerationMatch" (Textual Int64) :> (QueryParam "ifGenerationMatch" (Textual Int64) :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ComposeRequest :> Post '[JSON] Object)))))))))))) :<|> ("storage" :> ("v1" :> ("b" :> (Capture "destinationBucket" Text :> ("o" :> (Capture "destinationObject" Text :> ("compose" :> (QueryParam "destinationPredefinedAcl" ObjectsComposeDestinationPredefinedACL :> (QueryParam "ifMetagenerationMatch" (Textual Int64) :> (QueryParam "ifGenerationMatch" (Textual Int64) :> (QueryParam "alt" AltMedia :> Post '[OctetStream] Stream)))))))))))

-- | Creates a value of <a>ObjectsCompose</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oDestinationPredefinedACL</a></li>
--   <li><a>oIfMetagenerationMatch</a></li>
--   <li><a>oIfGenerationMatch</a></li>
--   <li><a>oPayload</a></li>
--   <li><a>oDestinationBucket</a></li>
--   <li><a>oDestinationObject</a></li>
--   </ul>
objectsCompose :: ComposeRequest -> Text -> Text -> ObjectsCompose

-- | Concatenates a list of existing objects into a new object in the same
--   bucket.
--   
--   <i>See:</i> <a>objectsCompose</a> smart constructor.
data ObjectsCompose

-- | Apply a predefined set of access controls to the destination object.
oDestinationPredefinedACL :: Lens' ObjectsCompose (Maybe ObjectsComposeDestinationPredefinedACL)

-- | Makes the operation conditional on whether the object's current
--   metageneration matches the given value.
oIfMetagenerationMatch :: Lens' ObjectsCompose (Maybe Int64)

-- | Makes the operation conditional on whether the object's current
--   generation matches the given value.
oIfGenerationMatch :: Lens' ObjectsCompose (Maybe Int64)

-- | Multipart request metadata.
oPayload :: Lens' ObjectsCompose ComposeRequest

-- | Name of the bucket in which to store the new object.
oDestinationBucket :: Lens' ObjectsCompose Text

-- | Name of the new object. For information about how to URL encode object
--   names to be path safe, see Encoding URI Path Parts.
oDestinationObject :: Lens' ObjectsCompose Text
instance GHC.Generics.Generic Network.Google.Resource.Storage.Objects.Compose.ObjectsCompose
instance Data.Data.Data Network.Google.Resource.Storage.Objects.Compose.ObjectsCompose
instance GHC.Show.Show Network.Google.Resource.Storage.Objects.Compose.ObjectsCompose
instance GHC.Classes.Eq Network.Google.Resource.Storage.Objects.Compose.ObjectsCompose
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.Objects.Compose.ObjectsCompose
instance Network.Google.Types.GoogleRequest (Network.Google.Types.MediaDownload Network.Google.Resource.Storage.Objects.Compose.ObjectsCompose)


-- | Updates an ACL entry on the specified object.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.objectAccessControls.update</tt>.
module Network.Google.Resource.Storage.ObjectAccessControls.Update

-- | A resource alias for <tt>storage.objectAccessControls.update</tt>
--   method which the <a>ObjectAccessControlsUpdate</a> request conforms
--   to.
type ObjectAccessControlsUpdateResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("o" :> (Capture "object" Text :> ("acl" :> (Capture "entity" Text :> (QueryParam "generation" (Textual Int64) :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ObjectAccessControl :> Put '[JSON] ObjectAccessControl))))))))))

-- | Creates a value of <a>ObjectAccessControlsUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oacuBucket</a></li>
--   <li><a>oacuPayload</a></li>
--   <li><a>oacuObject</a></li>
--   <li><a>oacuEntity</a></li>
--   <li><a>oacuGeneration</a></li>
--   </ul>
objectAccessControlsUpdate :: Text -> ObjectAccessControl -> Text -> Text -> ObjectAccessControlsUpdate

-- | Updates an ACL entry on the specified object.
--   
--   <i>See:</i> <a>objectAccessControlsUpdate</a> smart constructor.
data ObjectAccessControlsUpdate

-- | Name of a bucket.
oacuBucket :: Lens' ObjectAccessControlsUpdate Text

-- | Multipart request metadata.
oacuPayload :: Lens' ObjectAccessControlsUpdate ObjectAccessControl

-- | Name of the object. For information about how to URL encode object
--   names to be path safe, see Encoding URI Path Parts.
oacuObject :: Lens' ObjectAccessControlsUpdate Text

-- | The entity holding the permission. Can be user-userId,
--   user-emailAddress, group-groupId, group-emailAddress, allUsers, or
--   allAuthenticatedUsers.
oacuEntity :: Lens' ObjectAccessControlsUpdate Text

-- | If present, selects a specific revision of this object (as opposed to
--   the latest version, the default).
oacuGeneration :: Lens' ObjectAccessControlsUpdate (Maybe Int64)
instance GHC.Generics.Generic Network.Google.Resource.Storage.ObjectAccessControls.Update.ObjectAccessControlsUpdate
instance Data.Data.Data Network.Google.Resource.Storage.ObjectAccessControls.Update.ObjectAccessControlsUpdate
instance GHC.Show.Show Network.Google.Resource.Storage.ObjectAccessControls.Update.ObjectAccessControlsUpdate
instance GHC.Classes.Eq Network.Google.Resource.Storage.ObjectAccessControls.Update.ObjectAccessControlsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.ObjectAccessControls.Update.ObjectAccessControlsUpdate


-- | Updates an ACL entry on the specified object. This method supports
--   patch semantics.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.objectAccessControls.patch</tt>.
module Network.Google.Resource.Storage.ObjectAccessControls.Patch

-- | A resource alias for <tt>storage.objectAccessControls.patch</tt>
--   method which the <a>ObjectAccessControlsPatch</a> request conforms to.
type ObjectAccessControlsPatchResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("o" :> (Capture "object" Text :> ("acl" :> (Capture "entity" Text :> (QueryParam "generation" (Textual Int64) :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ObjectAccessControl :> Patch '[JSON] ObjectAccessControl))))))))))

-- | Creates a value of <a>ObjectAccessControlsPatch</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oacpBucket</a></li>
--   <li><a>oacpPayload</a></li>
--   <li><a>oacpObject</a></li>
--   <li><a>oacpEntity</a></li>
--   <li><a>oacpGeneration</a></li>
--   </ul>
objectAccessControlsPatch :: Text -> ObjectAccessControl -> Text -> Text -> ObjectAccessControlsPatch

-- | Updates an ACL entry on the specified object. This method supports
--   patch semantics.
--   
--   <i>See:</i> <a>objectAccessControlsPatch</a> smart constructor.
data ObjectAccessControlsPatch

-- | Name of a bucket.
oacpBucket :: Lens' ObjectAccessControlsPatch Text

-- | Multipart request metadata.
oacpPayload :: Lens' ObjectAccessControlsPatch ObjectAccessControl

-- | Name of the object. For information about how to URL encode object
--   names to be path safe, see Encoding URI Path Parts.
oacpObject :: Lens' ObjectAccessControlsPatch Text

-- | The entity holding the permission. Can be user-userId,
--   user-emailAddress, group-groupId, group-emailAddress, allUsers, or
--   allAuthenticatedUsers.
oacpEntity :: Lens' ObjectAccessControlsPatch Text

-- | If present, selects a specific revision of this object (as opposed to
--   the latest version, the default).
oacpGeneration :: Lens' ObjectAccessControlsPatch (Maybe Int64)
instance GHC.Generics.Generic Network.Google.Resource.Storage.ObjectAccessControls.Patch.ObjectAccessControlsPatch
instance Data.Data.Data Network.Google.Resource.Storage.ObjectAccessControls.Patch.ObjectAccessControlsPatch
instance GHC.Show.Show Network.Google.Resource.Storage.ObjectAccessControls.Patch.ObjectAccessControlsPatch
instance GHC.Classes.Eq Network.Google.Resource.Storage.ObjectAccessControls.Patch.ObjectAccessControlsPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.ObjectAccessControls.Patch.ObjectAccessControlsPatch


-- | Retrieves ACL entries on the specified object.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.objectAccessControls.list</tt>.
module Network.Google.Resource.Storage.ObjectAccessControls.List

-- | A resource alias for <tt>storage.objectAccessControls.list</tt> method
--   which the <a>ObjectAccessControlsList</a> request conforms to.
type ObjectAccessControlsListResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("o" :> (Capture "object" Text :> ("acl" :> (QueryParam "generation" (Textual Int64) :> (QueryParam "alt" AltJSON :> Get '[JSON] ObjectAccessControls))))))))

-- | Creates a value of <a>ObjectAccessControlsList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oaclBucket</a></li>
--   <li><a>oaclObject</a></li>
--   <li><a>oaclGeneration</a></li>
--   </ul>
objectAccessControlsList :: Text -> Text -> ObjectAccessControlsList

-- | Retrieves ACL entries on the specified object.
--   
--   <i>See:</i> <a>objectAccessControlsList</a> smart constructor.
data ObjectAccessControlsList

-- | Name of a bucket.
oaclBucket :: Lens' ObjectAccessControlsList Text

-- | Name of the object. For information about how to URL encode object
--   names to be path safe, see Encoding URI Path Parts.
oaclObject :: Lens' ObjectAccessControlsList Text

-- | If present, selects a specific revision of this object (as opposed to
--   the latest version, the default).
oaclGeneration :: Lens' ObjectAccessControlsList (Maybe Int64)
instance GHC.Generics.Generic Network.Google.Resource.Storage.ObjectAccessControls.List.ObjectAccessControlsList
instance Data.Data.Data Network.Google.Resource.Storage.ObjectAccessControls.List.ObjectAccessControlsList
instance GHC.Show.Show Network.Google.Resource.Storage.ObjectAccessControls.List.ObjectAccessControlsList
instance GHC.Classes.Eq Network.Google.Resource.Storage.ObjectAccessControls.List.ObjectAccessControlsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.ObjectAccessControls.List.ObjectAccessControlsList


-- | Creates a new ACL entry on the specified object.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.objectAccessControls.insert</tt>.
module Network.Google.Resource.Storage.ObjectAccessControls.Insert

-- | A resource alias for <tt>storage.objectAccessControls.insert</tt>
--   method which the <a>ObjectAccessControlsInsert</a> request conforms
--   to.
type ObjectAccessControlsInsertResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("o" :> (Capture "object" Text :> ("acl" :> (QueryParam "generation" (Textual Int64) :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ObjectAccessControl :> Post '[JSON] ObjectAccessControl)))))))))

-- | Creates a value of <a>ObjectAccessControlsInsert</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oaciBucket</a></li>
--   <li><a>oaciPayload</a></li>
--   <li><a>oaciObject</a></li>
--   <li><a>oaciGeneration</a></li>
--   </ul>
objectAccessControlsInsert :: Text -> ObjectAccessControl -> Text -> ObjectAccessControlsInsert

-- | Creates a new ACL entry on the specified object.
--   
--   <i>See:</i> <a>objectAccessControlsInsert</a> smart constructor.
data ObjectAccessControlsInsert

-- | Name of a bucket.
oaciBucket :: Lens' ObjectAccessControlsInsert Text

-- | Multipart request metadata.
oaciPayload :: Lens' ObjectAccessControlsInsert ObjectAccessControl

-- | Name of the object. For information about how to URL encode object
--   names to be path safe, see Encoding URI Path Parts.
oaciObject :: Lens' ObjectAccessControlsInsert Text

-- | If present, selects a specific revision of this object (as opposed to
--   the latest version, the default).
oaciGeneration :: Lens' ObjectAccessControlsInsert (Maybe Int64)
instance GHC.Generics.Generic Network.Google.Resource.Storage.ObjectAccessControls.Insert.ObjectAccessControlsInsert
instance Data.Data.Data Network.Google.Resource.Storage.ObjectAccessControls.Insert.ObjectAccessControlsInsert
instance GHC.Show.Show Network.Google.Resource.Storage.ObjectAccessControls.Insert.ObjectAccessControlsInsert
instance GHC.Classes.Eq Network.Google.Resource.Storage.ObjectAccessControls.Insert.ObjectAccessControlsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.ObjectAccessControls.Insert.ObjectAccessControlsInsert


-- | Returns the ACL entry for the specified entity on the specified
--   object.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.objectAccessControls.get</tt>.
module Network.Google.Resource.Storage.ObjectAccessControls.Get

-- | A resource alias for <tt>storage.objectAccessControls.get</tt> method
--   which the <a>ObjectAccessControlsGet</a> request conforms to.
type ObjectAccessControlsGetResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("o" :> (Capture "object" Text :> ("acl" :> (Capture "entity" Text :> (QueryParam "generation" (Textual Int64) :> (QueryParam "alt" AltJSON :> Get '[JSON] ObjectAccessControl)))))))))

-- | Creates a value of <a>ObjectAccessControlsGet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oacgBucket</a></li>
--   <li><a>oacgObject</a></li>
--   <li><a>oacgEntity</a></li>
--   <li><a>oacgGeneration</a></li>
--   </ul>
objectAccessControlsGet :: Text -> Text -> Text -> ObjectAccessControlsGet

-- | Returns the ACL entry for the specified entity on the specified
--   object.
--   
--   <i>See:</i> <a>objectAccessControlsGet</a> smart constructor.
data ObjectAccessControlsGet

-- | Name of a bucket.
oacgBucket :: Lens' ObjectAccessControlsGet Text

-- | Name of the object. For information about how to URL encode object
--   names to be path safe, see Encoding URI Path Parts.
oacgObject :: Lens' ObjectAccessControlsGet Text

-- | The entity holding the permission. Can be user-userId,
--   user-emailAddress, group-groupId, group-emailAddress, allUsers, or
--   allAuthenticatedUsers.
oacgEntity :: Lens' ObjectAccessControlsGet Text

-- | If present, selects a specific revision of this object (as opposed to
--   the latest version, the default).
oacgGeneration :: Lens' ObjectAccessControlsGet (Maybe Int64)
instance GHC.Generics.Generic Network.Google.Resource.Storage.ObjectAccessControls.Get.ObjectAccessControlsGet
instance Data.Data.Data Network.Google.Resource.Storage.ObjectAccessControls.Get.ObjectAccessControlsGet
instance GHC.Show.Show Network.Google.Resource.Storage.ObjectAccessControls.Get.ObjectAccessControlsGet
instance GHC.Classes.Eq Network.Google.Resource.Storage.ObjectAccessControls.Get.ObjectAccessControlsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.ObjectAccessControls.Get.ObjectAccessControlsGet


-- | Permanently deletes the ACL entry for the specified entity on the
--   specified object.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.objectAccessControls.delete</tt>.
module Network.Google.Resource.Storage.ObjectAccessControls.Delete

-- | A resource alias for <tt>storage.objectAccessControls.delete</tt>
--   method which the <a>ObjectAccessControlsDelete</a> request conforms
--   to.
type ObjectAccessControlsDeleteResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("o" :> (Capture "object" Text :> ("acl" :> (Capture "entity" Text :> (QueryParam "generation" (Textual Int64) :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))))))

-- | Creates a value of <a>ObjectAccessControlsDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oacdBucket</a></li>
--   <li><a>oacdObject</a></li>
--   <li><a>oacdEntity</a></li>
--   <li><a>oacdGeneration</a></li>
--   </ul>
objectAccessControlsDelete :: Text -> Text -> Text -> ObjectAccessControlsDelete

-- | Permanently deletes the ACL entry for the specified entity on the
--   specified object.
--   
--   <i>See:</i> <a>objectAccessControlsDelete</a> smart constructor.
data ObjectAccessControlsDelete

-- | Name of a bucket.
oacdBucket :: Lens' ObjectAccessControlsDelete Text

-- | Name of the object. For information about how to URL encode object
--   names to be path safe, see Encoding URI Path Parts.
oacdObject :: Lens' ObjectAccessControlsDelete Text

-- | The entity holding the permission. Can be user-userId,
--   user-emailAddress, group-groupId, group-emailAddress, allUsers, or
--   allAuthenticatedUsers.
oacdEntity :: Lens' ObjectAccessControlsDelete Text

-- | If present, selects a specific revision of this object (as opposed to
--   the latest version, the default).
oacdGeneration :: Lens' ObjectAccessControlsDelete (Maybe Int64)
instance GHC.Generics.Generic Network.Google.Resource.Storage.ObjectAccessControls.Delete.ObjectAccessControlsDelete
instance Data.Data.Data Network.Google.Resource.Storage.ObjectAccessControls.Delete.ObjectAccessControlsDelete
instance GHC.Show.Show Network.Google.Resource.Storage.ObjectAccessControls.Delete.ObjectAccessControlsDelete
instance GHC.Classes.Eq Network.Google.Resource.Storage.ObjectAccessControls.Delete.ObjectAccessControlsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.ObjectAccessControls.Delete.ObjectAccessControlsDelete


-- | Updates a default object ACL entry on the specified bucket.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.defaultObjectAccessControls.update</tt>.
module Network.Google.Resource.Storage.DefaultObjectAccessControls.Update

-- | A resource alias for
--   <tt>storage.defaultObjectAccessControls.update</tt> method which the
--   <a>DefaultObjectAccessControlsUpdate</a> request conforms to.
type DefaultObjectAccessControlsUpdateResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("defaultObjectAcl" :> (Capture "entity" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ObjectAccessControl :> Put '[JSON] ObjectAccessControl)))))))

-- | Creates a value of <a>DefaultObjectAccessControlsUpdate</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>doacuBucket</a></li>
--   <li><a>doacuPayload</a></li>
--   <li><a>doacuEntity</a></li>
--   </ul>
defaultObjectAccessControlsUpdate :: Text -> ObjectAccessControl -> Text -> DefaultObjectAccessControlsUpdate

-- | Updates a default object ACL entry on the specified bucket.
--   
--   <i>See:</i> <a>defaultObjectAccessControlsUpdate</a> smart
--   constructor.
data DefaultObjectAccessControlsUpdate

-- | Name of a bucket.
doacuBucket :: Lens' DefaultObjectAccessControlsUpdate Text

-- | Multipart request metadata.
doacuPayload :: Lens' DefaultObjectAccessControlsUpdate ObjectAccessControl

-- | The entity holding the permission. Can be user-userId,
--   user-emailAddress, group-groupId, group-emailAddress, allUsers, or
--   allAuthenticatedUsers.
doacuEntity :: Lens' DefaultObjectAccessControlsUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Storage.DefaultObjectAccessControls.Update.DefaultObjectAccessControlsUpdate
instance Data.Data.Data Network.Google.Resource.Storage.DefaultObjectAccessControls.Update.DefaultObjectAccessControlsUpdate
instance GHC.Show.Show Network.Google.Resource.Storage.DefaultObjectAccessControls.Update.DefaultObjectAccessControlsUpdate
instance GHC.Classes.Eq Network.Google.Resource.Storage.DefaultObjectAccessControls.Update.DefaultObjectAccessControlsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.DefaultObjectAccessControls.Update.DefaultObjectAccessControlsUpdate


-- | Updates a default object ACL entry on the specified bucket. This
--   method supports patch semantics.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.defaultObjectAccessControls.patch</tt>.
module Network.Google.Resource.Storage.DefaultObjectAccessControls.Patch

-- | A resource alias for
--   <tt>storage.defaultObjectAccessControls.patch</tt> method which the
--   <a>DefaultObjectAccessControlsPatch</a> request conforms to.
type DefaultObjectAccessControlsPatchResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("defaultObjectAcl" :> (Capture "entity" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ObjectAccessControl :> Patch '[JSON] ObjectAccessControl)))))))

-- | Creates a value of <a>DefaultObjectAccessControlsPatch</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>doacpBucket</a></li>
--   <li><a>doacpPayload</a></li>
--   <li><a>doacpEntity</a></li>
--   </ul>
defaultObjectAccessControlsPatch :: Text -> ObjectAccessControl -> Text -> DefaultObjectAccessControlsPatch

-- | Updates a default object ACL entry on the specified bucket. This
--   method supports patch semantics.
--   
--   <i>See:</i> <a>defaultObjectAccessControlsPatch</a> smart constructor.
data DefaultObjectAccessControlsPatch

-- | Name of a bucket.
doacpBucket :: Lens' DefaultObjectAccessControlsPatch Text

-- | Multipart request metadata.
doacpPayload :: Lens' DefaultObjectAccessControlsPatch ObjectAccessControl

-- | The entity holding the permission. Can be user-userId,
--   user-emailAddress, group-groupId, group-emailAddress, allUsers, or
--   allAuthenticatedUsers.
doacpEntity :: Lens' DefaultObjectAccessControlsPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Storage.DefaultObjectAccessControls.Patch.DefaultObjectAccessControlsPatch
instance Data.Data.Data Network.Google.Resource.Storage.DefaultObjectAccessControls.Patch.DefaultObjectAccessControlsPatch
instance GHC.Show.Show Network.Google.Resource.Storage.DefaultObjectAccessControls.Patch.DefaultObjectAccessControlsPatch
instance GHC.Classes.Eq Network.Google.Resource.Storage.DefaultObjectAccessControls.Patch.DefaultObjectAccessControlsPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.DefaultObjectAccessControls.Patch.DefaultObjectAccessControlsPatch


-- | Retrieves default object ACL entries on the specified bucket.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.defaultObjectAccessControls.list</tt>.
module Network.Google.Resource.Storage.DefaultObjectAccessControls.List

-- | A resource alias for <tt>storage.defaultObjectAccessControls.list</tt>
--   method which the <a>DefaultObjectAccessControlsList</a> request
--   conforms to.
type DefaultObjectAccessControlsListResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("defaultObjectAcl" :> (QueryParam "ifMetagenerationMatch" (Textual Int64) :> (QueryParam "ifMetagenerationNotMatch" (Textual Int64) :> (QueryParam "alt" AltJSON :> Get '[JSON] ObjectAccessControls)))))))

-- | Creates a value of <a>DefaultObjectAccessControlsList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>doaclIfMetagenerationMatch</a></li>
--   <li><a>doaclBucket</a></li>
--   <li><a>doaclIfMetagenerationNotMatch</a></li>
--   </ul>
defaultObjectAccessControlsList :: Text -> DefaultObjectAccessControlsList

-- | Retrieves default object ACL entries on the specified bucket.
--   
--   <i>See:</i> <a>defaultObjectAccessControlsList</a> smart constructor.
data DefaultObjectAccessControlsList

-- | If present, only return default ACL listing if the bucket's current
--   metageneration matches this value.
doaclIfMetagenerationMatch :: Lens' DefaultObjectAccessControlsList (Maybe Int64)

-- | Name of a bucket.
doaclBucket :: Lens' DefaultObjectAccessControlsList Text

-- | If present, only return default ACL listing if the bucket's current
--   metageneration does not match the given value.
doaclIfMetagenerationNotMatch :: Lens' DefaultObjectAccessControlsList (Maybe Int64)
instance GHC.Generics.Generic Network.Google.Resource.Storage.DefaultObjectAccessControls.List.DefaultObjectAccessControlsList
instance Data.Data.Data Network.Google.Resource.Storage.DefaultObjectAccessControls.List.DefaultObjectAccessControlsList
instance GHC.Show.Show Network.Google.Resource.Storage.DefaultObjectAccessControls.List.DefaultObjectAccessControlsList
instance GHC.Classes.Eq Network.Google.Resource.Storage.DefaultObjectAccessControls.List.DefaultObjectAccessControlsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.DefaultObjectAccessControls.List.DefaultObjectAccessControlsList


-- | Creates a new default object ACL entry on the specified bucket.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.defaultObjectAccessControls.insert</tt>.
module Network.Google.Resource.Storage.DefaultObjectAccessControls.Insert

-- | A resource alias for
--   <tt>storage.defaultObjectAccessControls.insert</tt> method which the
--   <a>DefaultObjectAccessControlsInsert</a> request conforms to.
type DefaultObjectAccessControlsInsertResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("defaultObjectAcl" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ObjectAccessControl :> Post '[JSON] ObjectAccessControl))))))

-- | Creates a value of <a>DefaultObjectAccessControlsInsert</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>doaciBucket</a></li>
--   <li><a>doaciPayload</a></li>
--   </ul>
defaultObjectAccessControlsInsert :: Text -> ObjectAccessControl -> DefaultObjectAccessControlsInsert

-- | Creates a new default object ACL entry on the specified bucket.
--   
--   <i>See:</i> <a>defaultObjectAccessControlsInsert</a> smart
--   constructor.
data DefaultObjectAccessControlsInsert

-- | Name of a bucket.
doaciBucket :: Lens' DefaultObjectAccessControlsInsert Text

-- | Multipart request metadata.
doaciPayload :: Lens' DefaultObjectAccessControlsInsert ObjectAccessControl
instance GHC.Generics.Generic Network.Google.Resource.Storage.DefaultObjectAccessControls.Insert.DefaultObjectAccessControlsInsert
instance Data.Data.Data Network.Google.Resource.Storage.DefaultObjectAccessControls.Insert.DefaultObjectAccessControlsInsert
instance GHC.Show.Show Network.Google.Resource.Storage.DefaultObjectAccessControls.Insert.DefaultObjectAccessControlsInsert
instance GHC.Classes.Eq Network.Google.Resource.Storage.DefaultObjectAccessControls.Insert.DefaultObjectAccessControlsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.DefaultObjectAccessControls.Insert.DefaultObjectAccessControlsInsert


-- | Returns the default object ACL entry for the specified entity on the
--   specified bucket.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.defaultObjectAccessControls.get</tt>.
module Network.Google.Resource.Storage.DefaultObjectAccessControls.Get

-- | A resource alias for <tt>storage.defaultObjectAccessControls.get</tt>
--   method which the <a>DefaultObjectAccessControlsGet</a> request
--   conforms to.
type DefaultObjectAccessControlsGetResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("defaultObjectAcl" :> (Capture "entity" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] ObjectAccessControl))))))

-- | Creates a value of <a>DefaultObjectAccessControlsGet</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>doacgBucket</a></li>
--   <li><a>doacgEntity</a></li>
--   </ul>
defaultObjectAccessControlsGet :: Text -> Text -> DefaultObjectAccessControlsGet

-- | Returns the default object ACL entry for the specified entity on the
--   specified bucket.
--   
--   <i>See:</i> <a>defaultObjectAccessControlsGet</a> smart constructor.
data DefaultObjectAccessControlsGet

-- | Name of a bucket.
doacgBucket :: Lens' DefaultObjectAccessControlsGet Text

-- | The entity holding the permission. Can be user-userId,
--   user-emailAddress, group-groupId, group-emailAddress, allUsers, or
--   allAuthenticatedUsers.
doacgEntity :: Lens' DefaultObjectAccessControlsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Storage.DefaultObjectAccessControls.Get.DefaultObjectAccessControlsGet
instance Data.Data.Data Network.Google.Resource.Storage.DefaultObjectAccessControls.Get.DefaultObjectAccessControlsGet
instance GHC.Show.Show Network.Google.Resource.Storage.DefaultObjectAccessControls.Get.DefaultObjectAccessControlsGet
instance GHC.Classes.Eq Network.Google.Resource.Storage.DefaultObjectAccessControls.Get.DefaultObjectAccessControlsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.DefaultObjectAccessControls.Get.DefaultObjectAccessControlsGet


-- | Permanently deletes the default object ACL entry for the specified
--   entity on the specified bucket.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.defaultObjectAccessControls.delete</tt>.
module Network.Google.Resource.Storage.DefaultObjectAccessControls.Delete

-- | A resource alias for
--   <tt>storage.defaultObjectAccessControls.delete</tt> method which the
--   <a>DefaultObjectAccessControlsDelete</a> request conforms to.
type DefaultObjectAccessControlsDeleteResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("defaultObjectAcl" :> (Capture "entity" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))))

-- | Creates a value of <a>DefaultObjectAccessControlsDelete</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>doacdBucket</a></li>
--   <li><a>doacdEntity</a></li>
--   </ul>
defaultObjectAccessControlsDelete :: Text -> Text -> DefaultObjectAccessControlsDelete

-- | Permanently deletes the default object ACL entry for the specified
--   entity on the specified bucket.
--   
--   <i>See:</i> <a>defaultObjectAccessControlsDelete</a> smart
--   constructor.
data DefaultObjectAccessControlsDelete

-- | Name of a bucket.
doacdBucket :: Lens' DefaultObjectAccessControlsDelete Text

-- | The entity holding the permission. Can be user-userId,
--   user-emailAddress, group-groupId, group-emailAddress, allUsers, or
--   allAuthenticatedUsers.
doacdEntity :: Lens' DefaultObjectAccessControlsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Storage.DefaultObjectAccessControls.Delete.DefaultObjectAccessControlsDelete
instance Data.Data.Data Network.Google.Resource.Storage.DefaultObjectAccessControls.Delete.DefaultObjectAccessControlsDelete
instance GHC.Show.Show Network.Google.Resource.Storage.DefaultObjectAccessControls.Delete.DefaultObjectAccessControlsDelete
instance GHC.Classes.Eq Network.Google.Resource.Storage.DefaultObjectAccessControls.Delete.DefaultObjectAccessControlsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.DefaultObjectAccessControls.Delete.DefaultObjectAccessControlsDelete


-- | Stop watching resources through this channel
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.channels.stop</tt>.
module Network.Google.Resource.Storage.Channels.Stop

-- | A resource alias for <tt>storage.channels.stop</tt> method which the
--   <a>ChannelsStop</a> request conforms to.
type ChannelsStopResource = "storage" :> ("v1" :> ("channels" :> ("stop" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Channel :> Post '[JSON] ())))))

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

-- | Stop watching resources through this channel
--   
--   <i>See:</i> <a>channelsStop</a> smart constructor.
data ChannelsStop

-- | Multipart request metadata.
csPayload :: Lens' ChannelsStop Channel
instance GHC.Generics.Generic Network.Google.Resource.Storage.Channels.Stop.ChannelsStop
instance Data.Data.Data Network.Google.Resource.Storage.Channels.Stop.ChannelsStop
instance GHC.Show.Show Network.Google.Resource.Storage.Channels.Stop.ChannelsStop
instance GHC.Classes.Eq Network.Google.Resource.Storage.Channels.Stop.ChannelsStop
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.Channels.Stop.ChannelsStop


-- | Updates a bucket. Changes to the bucket will be readable immediately
--   after writing, but configuration changes may take time to propagate.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.buckets.update</tt>.
module Network.Google.Resource.Storage.Buckets.Update

-- | A resource alias for <tt>storage.buckets.update</tt> method which the
--   <a>BucketsUpdate</a> request conforms to.
type BucketsUpdateResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> (QueryParam "ifMetagenerationMatch" (Textual Int64) :> (QueryParam "predefinedAcl" BucketsUpdatePredefinedACL :> (QueryParam "predefinedDefaultObjectAcl" BucketsUpdatePredefinedDefaultObjectACL :> (QueryParam "ifMetagenerationNotMatch" (Textual Int64) :> (QueryParam "projection" BucketsUpdateProjection :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Bucket :> Put '[JSON] Bucket))))))))))

-- | Creates a value of <a>BucketsUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>buIfMetagenerationMatch</a></li>
--   <li><a>buPredefinedACL</a></li>
--   <li><a>buBucket</a></li>
--   <li><a>buPayload</a></li>
--   <li><a>buPredefinedDefaultObjectACL</a></li>
--   <li><a>buIfMetagenerationNotMatch</a></li>
--   <li><a>buProjection</a></li>
--   </ul>
bucketsUpdate :: Text -> Bucket -> BucketsUpdate

-- | Updates a bucket. Changes to the bucket will be readable immediately
--   after writing, but configuration changes may take time to propagate.
--   
--   <i>See:</i> <a>bucketsUpdate</a> smart constructor.
data BucketsUpdate

-- | Makes the return of the bucket metadata conditional on whether the
--   bucket's current metageneration matches the given value.
buIfMetagenerationMatch :: Lens' BucketsUpdate (Maybe Int64)

-- | Apply a predefined set of access controls to this bucket.
buPredefinedACL :: Lens' BucketsUpdate (Maybe BucketsUpdatePredefinedACL)

-- | Name of a bucket.
buBucket :: Lens' BucketsUpdate Text

-- | Multipart request metadata.
buPayload :: Lens' BucketsUpdate Bucket

-- | Apply a predefined set of default object access controls to this
--   bucket.
buPredefinedDefaultObjectACL :: Lens' BucketsUpdate (Maybe BucketsUpdatePredefinedDefaultObjectACL)

-- | Makes the return of the bucket metadata conditional on whether the
--   bucket's current metageneration does not match the given value.
buIfMetagenerationNotMatch :: Lens' BucketsUpdate (Maybe Int64)

-- | Set of properties to return. Defaults to full.
buProjection :: Lens' BucketsUpdate (Maybe BucketsUpdateProjection)
instance GHC.Generics.Generic Network.Google.Resource.Storage.Buckets.Update.BucketsUpdate
instance Data.Data.Data Network.Google.Resource.Storage.Buckets.Update.BucketsUpdate
instance GHC.Show.Show Network.Google.Resource.Storage.Buckets.Update.BucketsUpdate
instance GHC.Classes.Eq Network.Google.Resource.Storage.Buckets.Update.BucketsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.Buckets.Update.BucketsUpdate


-- | Updates a bucket. Changes to the bucket will be readable immediately
--   after writing, but configuration changes may take time to propagate.
--   This method supports patch semantics.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.buckets.patch</tt>.
module Network.Google.Resource.Storage.Buckets.Patch

-- | A resource alias for <tt>storage.buckets.patch</tt> method which the
--   <a>BucketsPatch</a> request conforms to.
type BucketsPatchResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> (QueryParam "ifMetagenerationMatch" (Textual Int64) :> (QueryParam "predefinedAcl" BucketsPatchPredefinedACL :> (QueryParam "predefinedDefaultObjectAcl" BucketsPatchPredefinedDefaultObjectACL :> (QueryParam "ifMetagenerationNotMatch" (Textual Int64) :> (QueryParam "projection" BucketsPatchProjection :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Bucket :> Patch '[JSON] Bucket))))))))))

-- | Creates a value of <a>BucketsPatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bpIfMetagenerationMatch</a></li>
--   <li><a>bpPredefinedACL</a></li>
--   <li><a>bpBucket</a></li>
--   <li><a>bpPayload</a></li>
--   <li><a>bpPredefinedDefaultObjectACL</a></li>
--   <li><a>bpIfMetagenerationNotMatch</a></li>
--   <li><a>bpProjection</a></li>
--   </ul>
bucketsPatch :: Text -> Bucket -> BucketsPatch

-- | Updates a bucket. Changes to the bucket will be readable immediately
--   after writing, but configuration changes may take time to propagate.
--   This method supports patch semantics.
--   
--   <i>See:</i> <a>bucketsPatch</a> smart constructor.
data BucketsPatch

-- | Makes the return of the bucket metadata conditional on whether the
--   bucket's current metageneration matches the given value.
bpIfMetagenerationMatch :: Lens' BucketsPatch (Maybe Int64)

-- | Apply a predefined set of access controls to this bucket.
bpPredefinedACL :: Lens' BucketsPatch (Maybe BucketsPatchPredefinedACL)

-- | Name of a bucket.
bpBucket :: Lens' BucketsPatch Text

-- | Multipart request metadata.
bpPayload :: Lens' BucketsPatch Bucket

-- | Apply a predefined set of default object access controls to this
--   bucket.
bpPredefinedDefaultObjectACL :: Lens' BucketsPatch (Maybe BucketsPatchPredefinedDefaultObjectACL)

-- | Makes the return of the bucket metadata conditional on whether the
--   bucket's current metageneration does not match the given value.
bpIfMetagenerationNotMatch :: Lens' BucketsPatch (Maybe Int64)

-- | Set of properties to return. Defaults to full.
bpProjection :: Lens' BucketsPatch (Maybe BucketsPatchProjection)
instance GHC.Generics.Generic Network.Google.Resource.Storage.Buckets.Patch.BucketsPatch
instance Data.Data.Data Network.Google.Resource.Storage.Buckets.Patch.BucketsPatch
instance GHC.Show.Show Network.Google.Resource.Storage.Buckets.Patch.BucketsPatch
instance GHC.Classes.Eq Network.Google.Resource.Storage.Buckets.Patch.BucketsPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.Buckets.Patch.BucketsPatch


-- | Retrieves a list of buckets for a given project.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.buckets.list</tt>.
module Network.Google.Resource.Storage.Buckets.List

-- | A resource alias for <tt>storage.buckets.list</tt> method which the
--   <a>BucketsList</a> request conforms to.
type BucketsListResource = "storage" :> ("v1" :> ("b" :> (QueryParam "project" Text :> (QueryParam "prefix" Text :> (QueryParam "projection" BucketsListProjection :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Word32) :> (QueryParam "alt" AltJSON :> Get '[JSON] Buckets))))))))

-- | Creates a value of <a>BucketsList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>blProject</a></li>
--   <li><a>blPrefix</a></li>
--   <li><a>blProjection</a></li>
--   <li><a>blPageToken</a></li>
--   <li><a>blMaxResults</a></li>
--   </ul>
bucketsList :: Text -> BucketsList

-- | Retrieves a list of buckets for a given project.
--   
--   <i>See:</i> <a>bucketsList</a> smart constructor.
data BucketsList

-- | A valid API project identifier.
blProject :: Lens' BucketsList Text

-- | Filter results to buckets whose names begin with this prefix.
blPrefix :: Lens' BucketsList (Maybe Text)

-- | Set of properties to return. Defaults to noAcl.
blProjection :: Lens' BucketsList (Maybe BucketsListProjection)

-- | A previously-returned page token representing part of the larger set
--   of results to view.
blPageToken :: Lens' BucketsList (Maybe Text)

-- | Maximum number of buckets to return.
blMaxResults :: Lens' BucketsList (Maybe Word32)
instance GHC.Generics.Generic Network.Google.Resource.Storage.Buckets.List.BucketsList
instance Data.Data.Data Network.Google.Resource.Storage.Buckets.List.BucketsList
instance GHC.Show.Show Network.Google.Resource.Storage.Buckets.List.BucketsList
instance GHC.Classes.Eq Network.Google.Resource.Storage.Buckets.List.BucketsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.Buckets.List.BucketsList


-- | Creates a new bucket.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.buckets.insert</tt>.
module Network.Google.Resource.Storage.Buckets.Insert

-- | A resource alias for <tt>storage.buckets.insert</tt> method which the
--   <a>BucketsInsert</a> request conforms to.
type BucketsInsertResource = "storage" :> ("v1" :> ("b" :> (QueryParam "project" Text :> (QueryParam "predefinedAcl" BucketsInsertPredefinedACL :> (QueryParam "predefinedDefaultObjectAcl" BucketsInsertPredefinedDefaultObjectACL :> (QueryParam "projection" BucketsInsertProjection :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Bucket :> Post '[JSON] Bucket))))))))

-- | Creates a value of <a>BucketsInsert</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>biProject</a></li>
--   <li><a>biPredefinedACL</a></li>
--   <li><a>biPayload</a></li>
--   <li><a>biPredefinedDefaultObjectACL</a></li>
--   <li><a>biProjection</a></li>
--   </ul>
bucketsInsert :: Text -> Bucket -> BucketsInsert

-- | Creates a new bucket.
--   
--   <i>See:</i> <a>bucketsInsert</a> smart constructor.
data BucketsInsert

-- | A valid API project identifier.
biProject :: Lens' BucketsInsert Text

-- | Apply a predefined set of access controls to this bucket.
biPredefinedACL :: Lens' BucketsInsert (Maybe BucketsInsertPredefinedACL)

-- | Multipart request metadata.
biPayload :: Lens' BucketsInsert Bucket

-- | Apply a predefined set of default object access controls to this
--   bucket.
biPredefinedDefaultObjectACL :: Lens' BucketsInsert (Maybe BucketsInsertPredefinedDefaultObjectACL)

-- | Set of properties to return. Defaults to noAcl, unless the bucket
--   resource specifies acl or defaultObjectAcl properties, when it
--   defaults to full.
biProjection :: Lens' BucketsInsert (Maybe BucketsInsertProjection)
instance GHC.Generics.Generic Network.Google.Resource.Storage.Buckets.Insert.BucketsInsert
instance Data.Data.Data Network.Google.Resource.Storage.Buckets.Insert.BucketsInsert
instance GHC.Show.Show Network.Google.Resource.Storage.Buckets.Insert.BucketsInsert
instance GHC.Classes.Eq Network.Google.Resource.Storage.Buckets.Insert.BucketsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.Buckets.Insert.BucketsInsert


-- | Returns metadata for the specified bucket.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.buckets.get</tt>.
module Network.Google.Resource.Storage.Buckets.Get

-- | A resource alias for <tt>storage.buckets.get</tt> method which the
--   <a>BucketsGet</a> request conforms to.
type BucketsGetResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> (QueryParam "ifMetagenerationMatch" (Textual Int64) :> (QueryParam "ifMetagenerationNotMatch" (Textual Int64) :> (QueryParam "projection" BucketsGetProjection :> (QueryParam "alt" AltJSON :> Get '[JSON] Bucket)))))))

-- | Creates a value of <a>BucketsGet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bgIfMetagenerationMatch</a></li>
--   <li><a>bgBucket</a></li>
--   <li><a>bgIfMetagenerationNotMatch</a></li>
--   <li><a>bgProjection</a></li>
--   </ul>
bucketsGet :: Text -> BucketsGet

-- | Returns metadata for the specified bucket.
--   
--   <i>See:</i> <a>bucketsGet</a> smart constructor.
data BucketsGet

-- | Makes the return of the bucket metadata conditional on whether the
--   bucket's current metageneration matches the given value.
bgIfMetagenerationMatch :: Lens' BucketsGet (Maybe Int64)

-- | Name of a bucket.
bgBucket :: Lens' BucketsGet Text

-- | Makes the return of the bucket metadata conditional on whether the
--   bucket's current metageneration does not match the given value.
bgIfMetagenerationNotMatch :: Lens' BucketsGet (Maybe Int64)

-- | Set of properties to return. Defaults to noAcl.
bgProjection :: Lens' BucketsGet (Maybe BucketsGetProjection)
instance GHC.Generics.Generic Network.Google.Resource.Storage.Buckets.Get.BucketsGet
instance Data.Data.Data Network.Google.Resource.Storage.Buckets.Get.BucketsGet
instance GHC.Show.Show Network.Google.Resource.Storage.Buckets.Get.BucketsGet
instance GHC.Classes.Eq Network.Google.Resource.Storage.Buckets.Get.BucketsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.Buckets.Get.BucketsGet


-- | Permanently deletes an empty bucket.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.buckets.delete</tt>.
module Network.Google.Resource.Storage.Buckets.Delete

-- | A resource alias for <tt>storage.buckets.delete</tt> method which the
--   <a>BucketsDelete</a> request conforms to.
type BucketsDeleteResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> (QueryParam "ifMetagenerationMatch" (Textual Int64) :> (QueryParam "ifMetagenerationNotMatch" (Textual Int64) :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))))

-- | Creates a value of <a>BucketsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bdIfMetagenerationMatch</a></li>
--   <li><a>bdBucket</a></li>
--   <li><a>bdIfMetagenerationNotMatch</a></li>
--   </ul>
bucketsDelete :: Text -> BucketsDelete

-- | Permanently deletes an empty bucket.
--   
--   <i>See:</i> <a>bucketsDelete</a> smart constructor.
data BucketsDelete

-- | If set, only deletes the bucket if its metageneration matches this
--   value.
bdIfMetagenerationMatch :: Lens' BucketsDelete (Maybe Int64)

-- | Name of a bucket.
bdBucket :: Lens' BucketsDelete Text

-- | If set, only deletes the bucket if its metageneration does not match
--   this value.
bdIfMetagenerationNotMatch :: Lens' BucketsDelete (Maybe Int64)
instance GHC.Generics.Generic Network.Google.Resource.Storage.Buckets.Delete.BucketsDelete
instance Data.Data.Data Network.Google.Resource.Storage.Buckets.Delete.BucketsDelete
instance GHC.Show.Show Network.Google.Resource.Storage.Buckets.Delete.BucketsDelete
instance GHC.Classes.Eq Network.Google.Resource.Storage.Buckets.Delete.BucketsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.Buckets.Delete.BucketsDelete


-- | Updates an ACL entry on the specified bucket.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.bucketAccessControls.update</tt>.
module Network.Google.Resource.Storage.BucketAccessControls.Update

-- | A resource alias for <tt>storage.bucketAccessControls.update</tt>
--   method which the <a>BucketAccessControlsUpdate</a> request conforms
--   to.
type BucketAccessControlsUpdateResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("acl" :> (Capture "entity" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] BucketAccessControl :> Put '[JSON] BucketAccessControl)))))))

-- | Creates a value of <a>BucketAccessControlsUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bacuBucket</a></li>
--   <li><a>bacuPayload</a></li>
--   <li><a>bacuEntity</a></li>
--   </ul>
bucketAccessControlsUpdate :: Text -> BucketAccessControl -> Text -> BucketAccessControlsUpdate

-- | Updates an ACL entry on the specified bucket.
--   
--   <i>See:</i> <a>bucketAccessControlsUpdate</a> smart constructor.
data BucketAccessControlsUpdate

-- | Name of a bucket.
bacuBucket :: Lens' BucketAccessControlsUpdate Text

-- | Multipart request metadata.
bacuPayload :: Lens' BucketAccessControlsUpdate BucketAccessControl

-- | The entity holding the permission. Can be user-userId,
--   user-emailAddress, group-groupId, group-emailAddress, allUsers, or
--   allAuthenticatedUsers.
bacuEntity :: Lens' BucketAccessControlsUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Storage.BucketAccessControls.Update.BucketAccessControlsUpdate
instance Data.Data.Data Network.Google.Resource.Storage.BucketAccessControls.Update.BucketAccessControlsUpdate
instance GHC.Show.Show Network.Google.Resource.Storage.BucketAccessControls.Update.BucketAccessControlsUpdate
instance GHC.Classes.Eq Network.Google.Resource.Storage.BucketAccessControls.Update.BucketAccessControlsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.BucketAccessControls.Update.BucketAccessControlsUpdate


-- | Updates an ACL entry on the specified bucket. This method supports
--   patch semantics.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.bucketAccessControls.patch</tt>.
module Network.Google.Resource.Storage.BucketAccessControls.Patch

-- | A resource alias for <tt>storage.bucketAccessControls.patch</tt>
--   method which the <a>BucketAccessControlsPatch</a> request conforms to.
type BucketAccessControlsPatchResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("acl" :> (Capture "entity" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] BucketAccessControl :> Patch '[JSON] BucketAccessControl)))))))

-- | Creates a value of <a>BucketAccessControlsPatch</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bacpBucket</a></li>
--   <li><a>bacpPayload</a></li>
--   <li><a>bacpEntity</a></li>
--   </ul>
bucketAccessControlsPatch :: Text -> BucketAccessControl -> Text -> BucketAccessControlsPatch

-- | Updates an ACL entry on the specified bucket. This method supports
--   patch semantics.
--   
--   <i>See:</i> <a>bucketAccessControlsPatch</a> smart constructor.
data BucketAccessControlsPatch

-- | Name of a bucket.
bacpBucket :: Lens' BucketAccessControlsPatch Text

-- | Multipart request metadata.
bacpPayload :: Lens' BucketAccessControlsPatch BucketAccessControl

-- | The entity holding the permission. Can be user-userId,
--   user-emailAddress, group-groupId, group-emailAddress, allUsers, or
--   allAuthenticatedUsers.
bacpEntity :: Lens' BucketAccessControlsPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Storage.BucketAccessControls.Patch.BucketAccessControlsPatch
instance Data.Data.Data Network.Google.Resource.Storage.BucketAccessControls.Patch.BucketAccessControlsPatch
instance GHC.Show.Show Network.Google.Resource.Storage.BucketAccessControls.Patch.BucketAccessControlsPatch
instance GHC.Classes.Eq Network.Google.Resource.Storage.BucketAccessControls.Patch.BucketAccessControlsPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.BucketAccessControls.Patch.BucketAccessControlsPatch


-- | Retrieves ACL entries on the specified bucket.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.bucketAccessControls.list</tt>.
module Network.Google.Resource.Storage.BucketAccessControls.List

-- | A resource alias for <tt>storage.bucketAccessControls.list</tt> method
--   which the <a>BucketAccessControlsList</a> request conforms to.
type BucketAccessControlsListResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("acl" :> (QueryParam "alt" AltJSON :> Get '[JSON] BucketAccessControls)))))

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

-- | Retrieves ACL entries on the specified bucket.
--   
--   <i>See:</i> <a>bucketAccessControlsList</a> smart constructor.
data BucketAccessControlsList

-- | Name of a bucket.
baclBucket :: Lens' BucketAccessControlsList Text
instance GHC.Generics.Generic Network.Google.Resource.Storage.BucketAccessControls.List.BucketAccessControlsList
instance Data.Data.Data Network.Google.Resource.Storage.BucketAccessControls.List.BucketAccessControlsList
instance GHC.Show.Show Network.Google.Resource.Storage.BucketAccessControls.List.BucketAccessControlsList
instance GHC.Classes.Eq Network.Google.Resource.Storage.BucketAccessControls.List.BucketAccessControlsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.BucketAccessControls.List.BucketAccessControlsList


-- | Creates a new ACL entry on the specified bucket.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.bucketAccessControls.insert</tt>.
module Network.Google.Resource.Storage.BucketAccessControls.Insert

-- | A resource alias for <tt>storage.bucketAccessControls.insert</tt>
--   method which the <a>BucketAccessControlsInsert</a> request conforms
--   to.
type BucketAccessControlsInsertResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("acl" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] BucketAccessControl :> Post '[JSON] BucketAccessControl))))))

-- | Creates a value of <a>BucketAccessControlsInsert</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>baciBucket</a></li>
--   <li><a>baciPayload</a></li>
--   </ul>
bucketAccessControlsInsert :: Text -> BucketAccessControl -> BucketAccessControlsInsert

-- | Creates a new ACL entry on the specified bucket.
--   
--   <i>See:</i> <a>bucketAccessControlsInsert</a> smart constructor.
data BucketAccessControlsInsert

-- | Name of a bucket.
baciBucket :: Lens' BucketAccessControlsInsert Text

-- | Multipart request metadata.
baciPayload :: Lens' BucketAccessControlsInsert BucketAccessControl
instance GHC.Generics.Generic Network.Google.Resource.Storage.BucketAccessControls.Insert.BucketAccessControlsInsert
instance Data.Data.Data Network.Google.Resource.Storage.BucketAccessControls.Insert.BucketAccessControlsInsert
instance GHC.Show.Show Network.Google.Resource.Storage.BucketAccessControls.Insert.BucketAccessControlsInsert
instance GHC.Classes.Eq Network.Google.Resource.Storage.BucketAccessControls.Insert.BucketAccessControlsInsert
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.BucketAccessControls.Insert.BucketAccessControlsInsert


-- | Returns the ACL entry for the specified entity on the specified
--   bucket.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.bucketAccessControls.get</tt>.
module Network.Google.Resource.Storage.BucketAccessControls.Get

-- | A resource alias for <tt>storage.bucketAccessControls.get</tt> method
--   which the <a>BucketAccessControlsGet</a> request conforms to.
type BucketAccessControlsGetResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("acl" :> (Capture "entity" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] BucketAccessControl))))))

-- | Creates a value of <a>BucketAccessControlsGet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bacgBucket</a></li>
--   <li><a>bacgEntity</a></li>
--   </ul>
bucketAccessControlsGet :: Text -> Text -> BucketAccessControlsGet

-- | Returns the ACL entry for the specified entity on the specified
--   bucket.
--   
--   <i>See:</i> <a>bucketAccessControlsGet</a> smart constructor.
data BucketAccessControlsGet

-- | Name of a bucket.
bacgBucket :: Lens' BucketAccessControlsGet Text

-- | The entity holding the permission. Can be user-userId,
--   user-emailAddress, group-groupId, group-emailAddress, allUsers, or
--   allAuthenticatedUsers.
bacgEntity :: Lens' BucketAccessControlsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Storage.BucketAccessControls.Get.BucketAccessControlsGet
instance Data.Data.Data Network.Google.Resource.Storage.BucketAccessControls.Get.BucketAccessControlsGet
instance GHC.Show.Show Network.Google.Resource.Storage.BucketAccessControls.Get.BucketAccessControlsGet
instance GHC.Classes.Eq Network.Google.Resource.Storage.BucketAccessControls.Get.BucketAccessControlsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.BucketAccessControls.Get.BucketAccessControlsGet


-- | Permanently deletes the ACL entry for the specified entity on the
--   specified bucket.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a> for
--   <tt>storage.bucketAccessControls.delete</tt>.
module Network.Google.Resource.Storage.BucketAccessControls.Delete

-- | A resource alias for <tt>storage.bucketAccessControls.delete</tt>
--   method which the <a>BucketAccessControlsDelete</a> request conforms
--   to.
type BucketAccessControlsDeleteResource = "storage" :> ("v1" :> ("b" :> (Capture "bucket" Text :> ("acl" :> (Capture "entity" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))))

-- | Creates a value of <a>BucketAccessControlsDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bacdBucket</a></li>
--   <li><a>bacdEntity</a></li>
--   </ul>
bucketAccessControlsDelete :: Text -> Text -> BucketAccessControlsDelete

-- | Permanently deletes the ACL entry for the specified entity on the
--   specified bucket.
--   
--   <i>See:</i> <a>bucketAccessControlsDelete</a> smart constructor.
data BucketAccessControlsDelete

-- | Name of a bucket.
bacdBucket :: Lens' BucketAccessControlsDelete Text

-- | The entity holding the permission. Can be user-userId,
--   user-emailAddress, group-groupId, group-emailAddress, allUsers, or
--   allAuthenticatedUsers.
bacdEntity :: Lens' BucketAccessControlsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Storage.BucketAccessControls.Delete.BucketAccessControlsDelete
instance Data.Data.Data Network.Google.Resource.Storage.BucketAccessControls.Delete.BucketAccessControlsDelete
instance GHC.Show.Show Network.Google.Resource.Storage.BucketAccessControls.Delete.BucketAccessControlsDelete
instance GHC.Classes.Eq Network.Google.Resource.Storage.BucketAccessControls.Delete.BucketAccessControlsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Storage.BucketAccessControls.Delete.BucketAccessControlsDelete


-- | Stores and retrieves potentially large, immutable data objects.
--   
--   <i>See:</i> <a>Cloud Storage JSON API Reference</a>
module Network.Google.Storage

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

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

-- | 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"]

-- | 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
--   Cloud Storage JSON API service.
type StorageAPI = BucketsInsertResource :<|> (BucketsListResource :<|> (BucketsPatchResource :<|> (BucketsGetResource :<|> (BucketsDeleteResource :<|> (BucketsUpdateResource :<|> (ChannelsStopResource :<|> (DefaultObjectAccessControlsInsertResource :<|> (DefaultObjectAccessControlsListResource :<|> (DefaultObjectAccessControlsPatchResource :<|> (DefaultObjectAccessControlsGetResource :<|> (DefaultObjectAccessControlsDeleteResource :<|> (DefaultObjectAccessControlsUpdateResource :<|> (ObjectsInsertResource :<|> (ObjectsListResource :<|> (ObjectsCopyResource :<|> (ObjectsWatchAllResource :<|> (ObjectsPatchResource :<|> (ObjectsGetResource :<|> (ObjectsRewriteResource :<|> (ObjectsComposeResource :<|> (ObjectsDeleteResource :<|> (ObjectsUpdateResource :<|> (BucketAccessControlsInsertResource :<|> (BucketAccessControlsListResource :<|> (BucketAccessControlsPatchResource :<|> (BucketAccessControlsGetResource :<|> (BucketAccessControlsDeleteResource :<|> (BucketAccessControlsUpdateResource :<|> (ObjectAccessControlsInsertResource :<|> (ObjectAccessControlsListResource :<|> (ObjectAccessControlsPatchResource :<|> (ObjectAccessControlsGetResource :<|> (ObjectAccessControlsDeleteResource :<|> ObjectAccessControlsUpdateResource)))))))))))))))))))))))))))))))))

-- | The owner of the object. This will always be the uploader of the
--   object.
--   
--   <i>See:</i> <a>objectOwner</a> smart constructor.
data ObjectOwner

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

-- | The entity, in the form user-userId.
ooEntity :: Lens' ObjectOwner (Maybe Text)

-- | The ID for the entity.
ooEntityId :: Lens' ObjectOwner (Maybe Text)

-- | Set of properties to return. Defaults to noAcl, unless the object
--   resource specifies the acl property, when it defaults to full.
data ObjectsInsertProjection

-- | <tt>full</tt> Include all properties.
Full :: ObjectsInsertProjection

-- | <tt>noAcl</tt> Omit the owner, acl property.
NoACL :: ObjectsInsertProjection

-- | The bucket's versioning configuration.
--   
--   <i>See:</i> <a>bucketVersioning</a> smart constructor.
data BucketVersioning

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

-- | While set to true, versioning is fully enabled for this bucket.
bvEnabled :: Lens' BucketVersioning (Maybe Bool)

-- | Apply a predefined set of default object access controls to this
--   bucket.
data BucketsUpdatePredefinedDefaultObjectACL

-- | <tt>authenticatedRead</tt> Object owner gets OWNER access, and
--   allAuthenticatedUsers get READER access.
AuthenticatedRead :: BucketsUpdatePredefinedDefaultObjectACL

-- | <tt>bucketOwnerFullControl</tt> Object owner gets OWNER access, and
--   project team owners get OWNER access.
BucketOwnerFullControl :: BucketsUpdatePredefinedDefaultObjectACL

-- | <tt>bucketOwnerRead</tt> Object owner gets OWNER access, and project
--   team owners get READER access.
BucketOwnerRead :: BucketsUpdatePredefinedDefaultObjectACL

-- | <tt>private</tt> Object owner gets OWNER access.
Private :: BucketsUpdatePredefinedDefaultObjectACL

-- | <tt>projectPrivate</tt> Object owner gets OWNER access, and project
--   team members get access according to their roles.
ProjectPrivate :: BucketsUpdatePredefinedDefaultObjectACL

-- | <tt>publicRead</tt> Object owner gets OWNER access, and allUsers get
--   READER access.
PublicRead :: BucketsUpdatePredefinedDefaultObjectACL

-- | Apply a predefined set of access controls to the destination object.
data ObjectsComposeDestinationPredefinedACL

-- | <tt>authenticatedRead</tt> Object owner gets OWNER access, and
--   allAuthenticatedUsers get READER access.
OCDPAAuthenticatedRead :: ObjectsComposeDestinationPredefinedACL

-- | <tt>bucketOwnerFullControl</tt> Object owner gets OWNER access, and
--   project team owners get OWNER access.
OCDPABucketOwnerFullControl :: ObjectsComposeDestinationPredefinedACL

-- | <tt>bucketOwnerRead</tt> Object owner gets OWNER access, and project
--   team owners get READER access.
OCDPABucketOwnerRead :: ObjectsComposeDestinationPredefinedACL

-- | <tt>private</tt> Object owner gets OWNER access.
OCDPAPrivate :: ObjectsComposeDestinationPredefinedACL

-- | <tt>projectPrivate</tt> Object owner gets OWNER access, and project
--   team members get access according to their roles.
OCDPAProjectPrivate :: ObjectsComposeDestinationPredefinedACL

-- | <tt>publicRead</tt> Object owner gets OWNER access, and allUsers get
--   READER access.
OCDPAPublicRead :: ObjectsComposeDestinationPredefinedACL

-- | Apply a predefined set of access controls to this bucket.
data BucketsInsertPredefinedACL

-- | <tt>authenticatedRead</tt> Project team owners get OWNER access, and
--   allAuthenticatedUsers get READER access.
BIPAAuthenticatedRead :: BucketsInsertPredefinedACL

-- | <tt>private</tt> Project team owners get OWNER access.
BIPAPrivate :: BucketsInsertPredefinedACL

-- | <tt>projectPrivate</tt> Project team members get access according to
--   their roles.
BIPAProjectPrivate :: BucketsInsertPredefinedACL

-- | <tt>publicRead</tt> Project team owners get OWNER access, and allUsers
--   get READER access.
BIPAPublicRead :: BucketsInsertPredefinedACL

-- | <tt>publicReadWrite</tt> Project team owners get OWNER access, and
--   allUsers get WRITER access.
BIPAPublicReadWrite :: BucketsInsertPredefinedACL

-- | A list of buckets.
--   
--   <i>See:</i> <a>buckets</a> smart constructor.
data Buckets

-- | Creates a value of <a>Buckets</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bNextPageToken</a></li>
--   <li><a>bKind</a></li>
--   <li><a>bItems</a></li>
--   </ul>
buckets :: Buckets

-- | The continuation token, used to page through large result sets.
--   Provide this value in a subsequent request to return the next page of
--   results.
bNextPageToken :: Lens' Buckets (Maybe Text)

-- | The kind of item this is. For lists of buckets, this is always
--   storage#buckets.
bKind :: Lens' Buckets Text

-- | The list of items.
bItems :: Lens' Buckets [Bucket]

-- | The bucket's logging configuration, which defines the destination
--   bucket and optional name prefix for the current bucket's logs.
--   
--   <i>See:</i> <a>bucketLogging</a> smart constructor.
data BucketLogging

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

-- | The destination bucket where the current bucket's logs should be
--   placed.
blLogBucket :: Lens' BucketLogging (Maybe Text)

-- | A prefix for log object names.
blLogObjectPrefix :: Lens' BucketLogging (Maybe Text)

-- | User-provided metadata, in key/value pairs.
--   
--   <i>See:</i> <a>objectMetadata</a> smart constructor.
data ObjectMetadata

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

-- | An individual metadata entry.
omAddtional :: Lens' ObjectMetadata (HashMap Text Text)

-- | Apply a predefined set of access controls to this object.
data ObjectsPatchPredefinedACL

-- | <tt>authenticatedRead</tt> Object owner gets OWNER access, and
--   allAuthenticatedUsers get READER access.
OPPAAuthenticatedRead :: ObjectsPatchPredefinedACL

-- | <tt>bucketOwnerFullControl</tt> Object owner gets OWNER access, and
--   project team owners get OWNER access.
OPPABucketOwnerFullControl :: ObjectsPatchPredefinedACL

-- | <tt>bucketOwnerRead</tt> Object owner gets OWNER access, and project
--   team owners get READER access.
OPPABucketOwnerRead :: ObjectsPatchPredefinedACL

-- | <tt>private</tt> Object owner gets OWNER access.
OPPAPrivate :: ObjectsPatchPredefinedACL

-- | <tt>projectPrivate</tt> Object owner gets OWNER access, and project
--   team members get access according to their roles.
OPPAProjectPrivate :: ObjectsPatchPredefinedACL

-- | <tt>publicRead</tt> Object owner gets OWNER access, and allUsers get
--   READER access.
OPPAPublicRead :: ObjectsPatchPredefinedACL

-- | The condition(s) under which the action will be taken.
--   
--   <i>See:</i> <a>bucketLifecycleRuleItemCondition</a> smart constructor.
data BucketLifecycleRuleItemCondition

-- | Creates a value of <a>BucketLifecycleRuleItemCondition</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>blricAge</a></li>
--   <li><a>blricIsLive</a></li>
--   <li><a>blricNumNewerVersions</a></li>
--   <li><a>blricMatchesStorageClass</a></li>
--   <li><a>blricCreatedBefore</a></li>
--   </ul>
bucketLifecycleRuleItemCondition :: BucketLifecycleRuleItemCondition

-- | Age of an object (in days). This condition is satisfied when an object
--   reaches the specified age.
blricAge :: Lens' BucketLifecycleRuleItemCondition (Maybe Int32)

-- | Relevant only for versioned objects. If the value is true, this
--   condition matches live objects; if the value is false, it matches
--   archived objects.
blricIsLive :: Lens' BucketLifecycleRuleItemCondition (Maybe Bool)

-- | Relevant only for versioned objects. If the value is N, this condition
--   is satisfied when there are at least N versions (including the live
--   version) newer than this version of the object.
blricNumNewerVersions :: Lens' BucketLifecycleRuleItemCondition (Maybe Int32)

-- | Objects having any of the storage classes specified by this condition
--   will be matched. Values include MULTI_REGIONAL, REGIONAL, NEARLINE,
--   COLDLINE, STANDARD, and DURABLE_REDUCED_AVAILABILITY.
blricMatchesStorageClass :: Lens' BucketLifecycleRuleItemCondition [Text]

-- | A date in RFC 3339 format with only the date part (for instance,
--   "2013-01-15"). This condition is satisfied when an object is created
--   before midnight of the specified date in UTC.
blricCreatedBefore :: Lens' BucketLifecycleRuleItemCondition (Maybe Day)

-- | Apply a predefined set of access controls to the destination object.
data ObjectsRewriteDestinationPredefinedACL

-- | <tt>authenticatedRead</tt> Object owner gets OWNER access, and
--   allAuthenticatedUsers get READER access.
ORDPAAuthenticatedRead :: ObjectsRewriteDestinationPredefinedACL

-- | <tt>bucketOwnerFullControl</tt> Object owner gets OWNER access, and
--   project team owners get OWNER access.
ORDPABucketOwnerFullControl :: ObjectsRewriteDestinationPredefinedACL

-- | <tt>bucketOwnerRead</tt> Object owner gets OWNER access, and project
--   team owners get READER access.
ORDPABucketOwnerRead :: ObjectsRewriteDestinationPredefinedACL

-- | <tt>private</tt> Object owner gets OWNER access.
ORDPAPrivate :: ObjectsRewriteDestinationPredefinedACL

-- | <tt>projectPrivate</tt> Object owner gets OWNER access, and project
--   team members get access according to their roles.
ORDPAProjectPrivate :: ObjectsRewriteDestinationPredefinedACL

-- | <tt>publicRead</tt> Object owner gets OWNER access, and allUsers get
--   READER access.
ORDPAPublicRead :: ObjectsRewriteDestinationPredefinedACL

-- | The bucket's lifecycle configuration. See lifecycle management for
--   more information.
--   
--   <i>See:</i> <a>bucketLifecycle</a> smart constructor.
data BucketLifecycle

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

-- | A lifecycle management rule, which is made of an action to take and
--   the condition(s) under which the action will be taken.
blRule :: Lens' BucketLifecycle [BucketLifecycleRuleItem]

-- | An notification channel used to watch for resource changes.
--   
--   <i>See:</i> <a>channel</a> smart constructor.
data Channel

-- | Creates a value of <a>Channel</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cResourceURI</a></li>
--   <li><a>cResourceId</a></li>
--   <li><a>cKind</a></li>
--   <li><a>cExpiration</a></li>
--   <li><a>cToken</a></li>
--   <li><a>cAddress</a></li>
--   <li><a>cPayload</a></li>
--   <li><a>cParams</a></li>
--   <li><a>cId</a></li>
--   <li><a>cType</a></li>
--   </ul>
channel :: Channel

-- | A version-specific identifier for the watched resource.
cResourceURI :: Lens' Channel (Maybe Text)

-- | An opaque ID that identifies the resource being watched on this
--   channel. Stable across different API versions.
cResourceId :: Lens' Channel (Maybe Text)

-- | Identifies this as a notification channel used to watch for changes to
--   a resource. Value: the fixed string "api#channel".
cKind :: Lens' Channel Text

-- | Date and time of notification channel expiration, expressed as a Unix
--   timestamp, in milliseconds. Optional.
cExpiration :: Lens' Channel (Maybe Int64)

-- | An arbitrary string delivered to the target address with each
--   notification delivered over this channel. Optional.
cToken :: Lens' Channel (Maybe Text)

-- | The address where notifications are delivered for this channel.
cAddress :: Lens' Channel (Maybe Text)

-- | A Boolean value to indicate whether payload is wanted. Optional.
cPayload :: Lens' Channel (Maybe Bool)

-- | Additional parameters controlling delivery channel behavior. Optional.
cParams :: Lens' Channel (Maybe ChannelParams)

-- | A UUID or similar unique string that identifies this channel.
cId :: Lens' Channel (Maybe Text)

-- | The type of delivery mechanism used for this channel.
cType :: Lens' Channel (Maybe Text)
data BucketLifecycleRuleItem

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

-- | The action to take.
blriAction :: Lens' BucketLifecycleRuleItem (Maybe BucketLifecycleRuleItemAction)

-- | The condition(s) under which the action will be taken.
blriCondition :: Lens' BucketLifecycleRuleItem (Maybe BucketLifecycleRuleItemCondition)

-- | Set of properties to return. Defaults to noAcl.
data ObjectsWatchAllProjection

-- | <tt>full</tt> Include all properties.
OWAPFull :: ObjectsWatchAllProjection

-- | <tt>noAcl</tt> Omit the owner, acl property.
OWAPNoACL :: ObjectsWatchAllProjection
data BucketCORSItem

-- | Creates a value of <a>BucketCORSItem</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bciMaxAgeSeconds</a></li>
--   <li><a>bciOrigin</a></li>
--   <li><a>bciResponseHeader</a></li>
--   <li><a>bciMethod</a></li>
--   </ul>
bucketCORSItem :: BucketCORSItem

-- | The value, in seconds, to return in the Access-Control-Max-Age header
--   used in preflight responses.
bciMaxAgeSeconds :: Lens' BucketCORSItem (Maybe Int32)

-- | The list of Origins eligible to receive CORS response headers. Note:
--   "*" is permitted in the list of origins, and means "any Origin".
bciOrigin :: Lens' BucketCORSItem [Text]

-- | The list of HTTP headers other than the simple response headers to
--   give permission for the user-agent to share across domains.
bciResponseHeader :: Lens' BucketCORSItem [Text]

-- | The list of HTTP methods on which to include CORS response headers,
--   (GET, OPTIONS, POST, etc) Note: "*" is permitted in the list of
--   methods, and means "any method".
bciMethod :: Lens' BucketCORSItem [Text]

-- | The project team associated with the entity, if any.
--   
--   <i>See:</i> <a>objectAccessControlProjectTeam</a> smart constructor.
data ObjectAccessControlProjectTeam

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

-- | The project number.
oacptProjectNumber :: Lens' ObjectAccessControlProjectTeam (Maybe Text)

-- | The team.
oacptTeam :: Lens' ObjectAccessControlProjectTeam (Maybe Text)

-- | Metadata of customer-supplied encryption key, if the object is
--   encrypted by such a key.
--   
--   <i>See:</i> <a>objectCustomerEncryption</a> smart constructor.
data ObjectCustomerEncryption

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

-- | SHA256 hash value of the encryption key.
oceKeySha256 :: Lens' ObjectCustomerEncryption (Maybe Text)

-- | The encryption algorithm.
oceEncryptionAlgorithm :: Lens' ObjectCustomerEncryption (Maybe Text)

-- | A bucket.
--   
--   <i>See:</i> <a>bucket</a> smart constructor.
data Bucket

-- | Creates a value of <a>Bucket</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bucEtag</a></li>
--   <li><a>bucLocation</a></li>
--   <li><a>bucKind</a></li>
--   <li><a>bucWebsite</a></li>
--   <li><a>bucProjectNumber</a></li>
--   <li><a>bucLifecycle</a></li>
--   <li><a>bucOwner</a></li>
--   <li><a>bucSelfLink</a></li>
--   <li><a>bucName</a></li>
--   <li><a>bucStorageClass</a></li>
--   <li><a>bucVersioning</a></li>
--   <li><a>bucCORS</a></li>
--   <li><a>bucTimeCreated</a></li>
--   <li><a>bucId</a></li>
--   <li><a>bucUpdated</a></li>
--   <li><a>bucDefaultObjectACL</a></li>
--   <li><a>bucMetageneration</a></li>
--   <li><a>bucLogging</a></li>
--   <li><a>bucACL</a></li>
--   </ul>
bucket :: Bucket

-- | HTTP 1.1 Entity tag for the bucket.
bucEtag :: Lens' Bucket (Maybe Text)

-- | The location of the bucket. Object data for objects in the bucket
--   resides in physical storage within this region. Defaults to US. See
--   the developer's guide for the authoritative list.
bucLocation :: Lens' Bucket (Maybe Text)

-- | The kind of item this is. For buckets, this is always storage#bucket.
bucKind :: Lens' Bucket Text

-- | The bucket's website configuration, controlling how the service
--   behaves when accessing bucket contents as a web site. See the Static
--   Website Examples for more information.
bucWebsite :: Lens' Bucket (Maybe BucketWebsite)

-- | The project number of the project the bucket belongs to.
bucProjectNumber :: Lens' Bucket (Maybe Word64)

-- | The bucket's lifecycle configuration. See lifecycle management for
--   more information.
bucLifecycle :: Lens' Bucket (Maybe BucketLifecycle)

-- | The owner of the bucket. This is always the project team's owner
--   group.
bucOwner :: Lens' Bucket (Maybe BucketOwner)

-- | The URI of this bucket.
bucSelfLink :: Lens' Bucket (Maybe Text)

-- | The name of the bucket.
bucName :: Lens' Bucket (Maybe Text)

-- | The bucket's default storage class, used whenever no storageClass is
--   specified for a newly-created object. This defines how objects in the
--   bucket are stored and determines the SLA and the cost of storage.
--   Values include MULTI_REGIONAL, REGIONAL, STANDARD, NEARLINE, COLDLINE,
--   and DURABLE_REDUCED_AVAILABILITY. If this value is not specified when
--   the bucket is created, it will default to STANDARD. For more
--   information, see storage classes.
bucStorageClass :: Lens' Bucket (Maybe Text)

-- | The bucket's versioning configuration.
bucVersioning :: Lens' Bucket (Maybe BucketVersioning)

-- | The bucket's Cross-Origin Resource Sharing (CORS) configuration.
bucCORS :: Lens' Bucket [BucketCORSItem]

-- | The creation time of the bucket in RFC 3339 format.
bucTimeCreated :: Lens' Bucket (Maybe UTCTime)

-- | The ID of the bucket.
bucId :: Lens' Bucket (Maybe Text)

-- | The modification time of the bucket in RFC 3339 format.
bucUpdated :: Lens' Bucket (Maybe UTCTime)

-- | Default access controls to apply to new objects when no ACL is
--   provided.
bucDefaultObjectACL :: Lens' Bucket [ObjectAccessControl]

-- | The metadata generation of this bucket.
bucMetageneration :: Lens' Bucket (Maybe Int64)

-- | The bucket's logging configuration, which defines the destination
--   bucket and optional name prefix for the current bucket's logs.
bucLogging :: Lens' Bucket (Maybe BucketLogging)

-- | Access controls on the bucket.
bucACL :: Lens' Bucket [BucketAccessControl]

-- | Set of properties to return. Defaults to noAcl.
data BucketsGetProjection

-- | <tt>full</tt> Include all properties.
BGPFull :: BucketsGetProjection

-- | <tt>noAcl</tt> Omit owner, acl and defaultObjectAcl properties.
BGPNoACL :: BucketsGetProjection

-- | A list of objects.
--   
--   <i>See:</i> <a>objects</a> smart constructor.
data Objects

-- | Creates a value of <a>Objects</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oNextPageToken</a></li>
--   <li><a>oKind</a></li>
--   <li><a>oItems</a></li>
--   <li><a>oPrefixes</a></li>
--   </ul>
objects :: Objects

-- | The continuation token, used to page through large result sets.
--   Provide this value in a subsequent request to return the next page of
--   results.
oNextPageToken :: Lens' Objects (Maybe Text)

-- | The kind of item this is. For lists of objects, this is always
--   storage#objects.
oKind :: Lens' Objects Text

-- | The list of items.
oItems :: Lens' Objects [Object]

-- | The list of prefixes of objects matching-but-not-listed up to and
--   including the requested delimiter.
oPrefixes :: Lens' Objects [Text]

-- | Set of properties to return. Defaults to full.
data BucketsPatchProjection

-- | <tt>full</tt> Include all properties.
BPPFull :: BucketsPatchProjection

-- | <tt>noAcl</tt> Omit owner, acl and defaultObjectAcl properties.
BPPNoACL :: BucketsPatchProjection

-- | An access-control list.
--   
--   <i>See:</i> <a>bucketAccessControls</a> smart constructor.
data BucketAccessControls

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

-- | The kind of item this is. For lists of bucket access control entries,
--   this is always storage#bucketAccessControls.
bacKind :: Lens' BucketAccessControls Text

-- | The list of items.
bacItems :: Lens' BucketAccessControls [BucketAccessControl]

-- | Set of properties to return. Defaults to full.
data BucketsUpdateProjection

-- | <tt>full</tt> Include all properties.
BUPFull :: BucketsUpdateProjection

-- | <tt>noAcl</tt> Omit owner, acl and defaultObjectAcl properties.
BUPNoACL :: BucketsUpdateProjection

-- | A Compose request.
--   
--   <i>See:</i> <a>composeRequest</a> smart constructor.
data ComposeRequest

-- | Creates a value of <a>ComposeRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crDestination</a></li>
--   <li><a>crKind</a></li>
--   <li><a>crSourceObjects</a></li>
--   </ul>
composeRequest :: ComposeRequest

-- | Properties of the resulting object.
crDestination :: Lens' ComposeRequest (Maybe Object)

-- | The kind of item this is.
crKind :: Lens' ComposeRequest Text

-- | The list of source objects that will be concatenated into a single
--   object.
crSourceObjects :: Lens' ComposeRequest [ComposeRequestSourceObjectsItem]

-- | Apply a predefined set of access controls to this object.
data ObjectsInsertPredefinedACL

-- | <tt>authenticatedRead</tt> Object owner gets OWNER access, and
--   allAuthenticatedUsers get READER access.
OIPAAuthenticatedRead :: ObjectsInsertPredefinedACL

-- | <tt>bucketOwnerFullControl</tt> Object owner gets OWNER access, and
--   project team owners get OWNER access.
OIPABucketOwnerFullControl :: ObjectsInsertPredefinedACL

-- | <tt>bucketOwnerRead</tt> Object owner gets OWNER access, and project
--   team owners get READER access.
OIPABucketOwnerRead :: ObjectsInsertPredefinedACL

-- | <tt>private</tt> Object owner gets OWNER access.
OIPAPrivate :: ObjectsInsertPredefinedACL

-- | <tt>projectPrivate</tt> Object owner gets OWNER access, and project
--   team members get access according to their roles.
OIPAProjectPrivate :: ObjectsInsertPredefinedACL

-- | <tt>publicRead</tt> Object owner gets OWNER access, and allUsers get
--   READER access.
OIPAPublicRead :: ObjectsInsertPredefinedACL

-- | Set of properties to return. Defaults to noAcl.
data ObjectsListProjection

-- | <tt>full</tt> Include all properties.
OLPFull :: ObjectsListProjection

-- | <tt>noAcl</tt> Omit the owner, acl property.
OLPNoACL :: ObjectsListProjection

-- | Apply a predefined set of default object access controls to this
--   bucket.
data BucketsInsertPredefinedDefaultObjectACL

-- | <tt>authenticatedRead</tt> Object owner gets OWNER access, and
--   allAuthenticatedUsers get READER access.
BIPDOAAuthenticatedRead :: BucketsInsertPredefinedDefaultObjectACL

-- | <tt>bucketOwnerFullControl</tt> Object owner gets OWNER access, and
--   project team owners get OWNER access.
BIPDOABucketOwnerFullControl :: BucketsInsertPredefinedDefaultObjectACL

-- | <tt>bucketOwnerRead</tt> Object owner gets OWNER access, and project
--   team owners get READER access.
BIPDOABucketOwnerRead :: BucketsInsertPredefinedDefaultObjectACL

-- | <tt>private</tt> Object owner gets OWNER access.
BIPDOAPrivate :: BucketsInsertPredefinedDefaultObjectACL

-- | <tt>projectPrivate</tt> Object owner gets OWNER access, and project
--   team members get access according to their roles.
BIPDOAProjectPrivate :: BucketsInsertPredefinedDefaultObjectACL

-- | <tt>publicRead</tt> Object owner gets OWNER access, and allUsers get
--   READER access.
BIPDOAPublicRead :: BucketsInsertPredefinedDefaultObjectACL

-- | Apply a predefined set of access controls to this bucket.
data BucketsUpdatePredefinedACL

-- | <tt>authenticatedRead</tt> Project team owners get OWNER access, and
--   allAuthenticatedUsers get READER access.
BUPAAuthenticatedRead :: BucketsUpdatePredefinedACL

-- | <tt>private</tt> Project team owners get OWNER access.
BUPAPrivate :: BucketsUpdatePredefinedACL

-- | <tt>projectPrivate</tt> Project team members get access according to
--   their roles.
BUPAProjectPrivate :: BucketsUpdatePredefinedACL

-- | <tt>publicRead</tt> Project team owners get OWNER access, and allUsers
--   get READER access.
BUPAPublicRead :: BucketsUpdatePredefinedACL

-- | <tt>publicReadWrite</tt> Project team owners get OWNER access, and
--   allUsers get WRITER access.
BUPAPublicReadWrite :: BucketsUpdatePredefinedACL

-- | Apply a predefined set of access controls to the destination object.
data ObjectsCopyDestinationPredefinedACL

-- | <tt>authenticatedRead</tt> Object owner gets OWNER access, and
--   allAuthenticatedUsers get READER access.
OCDPACLAuthenticatedRead :: ObjectsCopyDestinationPredefinedACL

-- | <tt>bucketOwnerFullControl</tt> Object owner gets OWNER access, and
--   project team owners get OWNER access.
OCDPACLBucketOwnerFullControl :: ObjectsCopyDestinationPredefinedACL

-- | <tt>bucketOwnerRead</tt> Object owner gets OWNER access, and project
--   team owners get READER access.
OCDPACLBucketOwnerRead :: ObjectsCopyDestinationPredefinedACL

-- | <tt>private</tt> Object owner gets OWNER access.
OCDPACLPrivate :: ObjectsCopyDestinationPredefinedACL

-- | <tt>projectPrivate</tt> Object owner gets OWNER access, and project
--   team members get access according to their roles.
OCDPACLProjectPrivate :: ObjectsCopyDestinationPredefinedACL

-- | <tt>publicRead</tt> Object owner gets OWNER access, and allUsers get
--   READER access.
OCDPACLPublicRead :: ObjectsCopyDestinationPredefinedACL

-- | Apply a predefined set of access controls to this object.
data ObjectsUpdatePredefinedACL

-- | <tt>authenticatedRead</tt> Object owner gets OWNER access, and
--   allAuthenticatedUsers get READER access.
OUPAAuthenticatedRead :: ObjectsUpdatePredefinedACL

-- | <tt>bucketOwnerFullControl</tt> Object owner gets OWNER access, and
--   project team owners get OWNER access.
OUPABucketOwnerFullControl :: ObjectsUpdatePredefinedACL

-- | <tt>bucketOwnerRead</tt> Object owner gets OWNER access, and project
--   team owners get READER access.
OUPABucketOwnerRead :: ObjectsUpdatePredefinedACL

-- | <tt>private</tt> Object owner gets OWNER access.
OUPAPrivate :: ObjectsUpdatePredefinedACL

-- | <tt>projectPrivate</tt> Object owner gets OWNER access, and project
--   team members get access according to their roles.
OUPAProjectPrivate :: ObjectsUpdatePredefinedACL

-- | <tt>publicRead</tt> Object owner gets OWNER access, and allUsers get
--   READER access.
OUPAPublicRead :: ObjectsUpdatePredefinedACL

-- | The owner of the bucket. This is always the project team's owner
--   group.
--   
--   <i>See:</i> <a>bucketOwner</a> smart constructor.
data BucketOwner

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

-- | The entity, in the form project-owner-projectId.
boEntity :: Lens' BucketOwner (Maybe Text)

-- | The ID for the entity.
boEntityId :: Lens' BucketOwner (Maybe Text)
data ComposeRequestSourceObjectsItem

-- | Creates a value of <a>ComposeRequestSourceObjectsItem</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>crsoiName</a></li>
--   <li><a>crsoiObjectPreconditions</a></li>
--   <li><a>crsoiGeneration</a></li>
--   </ul>
composeRequestSourceObjectsItem :: ComposeRequestSourceObjectsItem

-- | The source object's name. The source object's bucket is implicitly the
--   destination bucket.
crsoiName :: Lens' ComposeRequestSourceObjectsItem (Maybe Text)

-- | Conditions that must be met for this operation to execute.
crsoiObjectPreconditions :: Lens' ComposeRequestSourceObjectsItem (Maybe ComposeRequestSourceObjectsItemObjectPreconditions)

-- | The generation of this object to use as the source.
crsoiGeneration :: Lens' ComposeRequestSourceObjectsItem (Maybe Int64)

-- | Set of properties to return. Defaults to noAcl, unless the bucket
--   resource specifies acl or defaultObjectAcl properties, when it
--   defaults to full.
data BucketsInsertProjection

-- | <tt>full</tt> Include all properties.
BIPFull :: BucketsInsertProjection

-- | <tt>noAcl</tt> Omit owner, acl and defaultObjectAcl properties.
BIPNoACL :: BucketsInsertProjection

-- | Additional parameters controlling delivery channel behavior. Optional.
--   
--   <i>See:</i> <a>channelParams</a> smart constructor.
data ChannelParams

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

-- | Declares a new parameter by name.
cpAddtional :: Lens' ChannelParams (HashMap Text Text)

-- | Set of properties to return. Defaults to noAcl.
data BucketsListProjection

-- | <tt>full</tt> Include all properties.
BLPFull :: BucketsListProjection

-- | <tt>noAcl</tt> Omit owner, acl and defaultObjectAcl properties.
BLPNoACL :: BucketsListProjection

-- | Set of properties to return. Defaults to full.
data ObjectsUpdateProjection

-- | <tt>full</tt> Include all properties.
OUPFull :: ObjectsUpdateProjection

-- | <tt>noAcl</tt> Omit the owner, acl property.
OUPNoACL :: ObjectsUpdateProjection

-- | An object.
--   
--   <i>See:</i> <a>object'</a> smart constructor.
data Object

-- | Creates a value of <a>Object</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>objEtag</a></li>
--   <li><a>objTimeStorageClassUpdated</a></li>
--   <li><a>objSize</a></li>
--   <li><a>objKind</a></li>
--   <li><a>objTimeDeleted</a></li>
--   <li><a>objCrc32c</a></li>
--   <li><a>objCustomerEncryption</a></li>
--   <li><a>objBucket</a></li>
--   <li><a>objOwner</a></li>
--   <li><a>objSelfLink</a></li>
--   <li><a>objMediaLink</a></li>
--   <li><a>objComponentCount</a></li>
--   <li><a>objName</a></li>
--   <li><a>objStorageClass</a></li>
--   <li><a>objContentEncoding</a></li>
--   <li><a>objMetadata</a></li>
--   <li><a>objTimeCreated</a></li>
--   <li><a>objId</a></li>
--   <li><a>objUpdated</a></li>
--   <li><a>objContentLanguage</a></li>
--   <li><a>objCacheControl</a></li>
--   <li><a>objMetageneration</a></li>
--   <li><a>objGeneration</a></li>
--   <li><a>objACL</a></li>
--   <li><a>objContentDisPosition</a></li>
--   <li><a>objMD5Hash</a></li>
--   <li><a>objContentType</a></li>
--   </ul>
object' :: Object

-- | HTTP 1.1 Entity tag for the object.
objEtag :: Lens' Object (Maybe Text)

-- | The time at which the object's storage class was last changed. When
--   the object is initially created, it will be set to timeCreated.
objTimeStorageClassUpdated :: Lens' Object (Maybe UTCTime)

-- | Content-Length of the data in bytes.
objSize :: Lens' Object (Maybe Word64)

-- | The kind of item this is. For objects, this is always storage#object.
objKind :: Lens' Object Text

-- | The deletion time of the object in RFC 3339 format. Will be returned
--   if and only if this version of the object has been deleted.
objTimeDeleted :: Lens' Object (Maybe UTCTime)

-- | CRC32c checksum, as described in RFC 4960, Appendix B; encoded using
--   base64 in big-endian byte order. For more information about using the
--   CRC32c checksum, see Hashes and ETags: Best Practices.
objCrc32c :: Lens' Object (Maybe Text)

-- | Metadata of customer-supplied encryption key, if the object is
--   encrypted by such a key.
objCustomerEncryption :: Lens' Object (Maybe ObjectCustomerEncryption)

-- | The name of the bucket containing this object.
objBucket :: Lens' Object (Maybe Text)

-- | The owner of the object. This will always be the uploader of the
--   object.
objOwner :: Lens' Object (Maybe ObjectOwner)

-- | The link to this object.
objSelfLink :: Lens' Object (Maybe Text)

-- | Media download link.
objMediaLink :: Lens' Object (Maybe Text)

-- | Number of underlying components that make up this object. Components
--   are accumulated by compose operations.
objComponentCount :: Lens' Object (Maybe Int32)

-- | The name of this object. Required if not specified by URL parameter.
objName :: Lens' Object (Maybe Text)

-- | Storage class of the object.
objStorageClass :: Lens' Object (Maybe Text)

-- | Content-Encoding of the object data.
objContentEncoding :: Lens' Object (Maybe Text)

-- | User-provided metadata, in key/value pairs.
objMetadata :: Lens' Object (Maybe ObjectMetadata)

-- | The creation time of the object in RFC 3339 format.
objTimeCreated :: Lens' Object (Maybe UTCTime)

-- | The ID of the object.
objId :: Lens' Object (Maybe Text)

-- | The modification time of the object metadata in RFC 3339 format.
objUpdated :: Lens' Object (Maybe UTCTime)

-- | Content-Language of the object data.
objContentLanguage :: Lens' Object (Maybe Text)

-- | Cache-Control directive for the object data. If omitted, and the
--   object is accessible to all anonymous users, the default will be
--   public, max-age=3600.
objCacheControl :: Lens' Object (Maybe Text)

-- | The version of the metadata for this object at this generation. Used
--   for preconditions and for detecting changes in metadata. A
--   metageneration number is only meaningful in the context of a
--   particular generation of a particular object.
objMetageneration :: Lens' Object (Maybe Int64)

-- | The content generation of this object. Used for object versioning.
objGeneration :: Lens' Object (Maybe Int64)

-- | Access controls on the object.
objACL :: Lens' Object [ObjectAccessControl]

-- | Content-Disposition of the object data.
objContentDisPosition :: Lens' Object (Maybe Text)

-- | MD5 hash of the data; encoded using base64. For more information about
--   using the MD5 hash, see Hashes and ETags: Best Practices.
objMD5Hash :: Lens' Object (Maybe Text)

-- | Content-Type of the object data. If contentType is not specified,
--   object downloads will be served as application/octet-stream.
objContentType :: Lens' Object (Maybe Text)

-- | Set of properties to return. Defaults to full.
data ObjectsPatchProjection

-- | <tt>full</tt> Include all properties.
OPPFull :: ObjectsPatchProjection

-- | <tt>noAcl</tt> Omit the owner, acl property.
OPPNoACL :: ObjectsPatchProjection

-- | Conditions that must be met for this operation to execute.
--   
--   <i>See:</i> <a>composeRequestSourceObjectsItemObjectPreconditions</a>
--   smart constructor.
data ComposeRequestSourceObjectsItemObjectPreconditions

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

-- | Only perform the composition if the generation of the source object
--   that would be used matches this value. If this value and a generation
--   are both specified, they must be the same value or the call will fail.
crsoiopIfGenerationMatch :: Lens' ComposeRequestSourceObjectsItemObjectPreconditions (Maybe Int64)

-- | The project team associated with the entity, if any.
--   
--   <i>See:</i> <a>bucketAccessControlProjectTeam</a> smart constructor.
data BucketAccessControlProjectTeam

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

-- | The project number.
bacptProjectNumber :: Lens' BucketAccessControlProjectTeam (Maybe Text)

-- | The team.
bacptTeam :: Lens' BucketAccessControlProjectTeam (Maybe Text)

-- | An access-control list.
--   
--   <i>See:</i> <a>objectAccessControls</a> smart constructor.
data ObjectAccessControls

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

-- | The kind of item this is. For lists of object access control entries,
--   this is always storage#objectAccessControls.
oacKind :: Lens' ObjectAccessControls Text

-- | The list of items.
oacItems :: Lens' ObjectAccessControls [ObjectAccessControl]

-- | The bucket's website configuration, controlling how the service
--   behaves when accessing bucket contents as a web site. See the Static
--   Website Examples for more information.
--   
--   <i>See:</i> <a>bucketWebsite</a> smart constructor.
data BucketWebsite

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

-- | If the requested object path is missing, the service will ensure the
--   path has a trailing '/', append this suffix, and attempt to retrieve
--   the resulting object. This allows the creation of index.html objects
--   to represent directory pages.
bwMainPageSuffix :: Lens' BucketWebsite (Maybe Text)

-- | If the requested object path is missing, and any mainPageSuffix object
--   is missing, if applicable, the service will return the named object
--   from this bucket as the content for a 404 Not Found result.
bwNotFoundPage :: Lens' BucketWebsite (Maybe Text)

-- | An access-control entry.
--   
--   <i>See:</i> <a>bucketAccessControl</a> smart constructor.
data BucketAccessControl

-- | Creates a value of <a>BucketAccessControl</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bacaEmail</a></li>
--   <li><a>bacaEtag</a></li>
--   <li><a>bacaKind</a></li>
--   <li><a>bacaDomain</a></li>
--   <li><a>bacaBucket</a></li>
--   <li><a>bacaRole</a></li>
--   <li><a>bacaSelfLink</a></li>
--   <li><a>bacaId</a></li>
--   <li><a>bacaProjectTeam</a></li>
--   <li><a>bacaEntity</a></li>
--   <li><a>bacaEntityId</a></li>
--   </ul>
bucketAccessControl :: BucketAccessControl

-- | The email address associated with the entity, if any.
bacaEmail :: Lens' BucketAccessControl (Maybe Text)

-- | HTTP 1.1 Entity tag for the access-control entry.
bacaEtag :: Lens' BucketAccessControl (Maybe Text)

-- | The kind of item this is. For bucket access control entries, this is
--   always storage#bucketAccessControl.
bacaKind :: Lens' BucketAccessControl Text

-- | The domain associated with the entity, if any.
bacaDomain :: Lens' BucketAccessControl (Maybe Text)

-- | The name of the bucket.
bacaBucket :: Lens' BucketAccessControl (Maybe Text)

-- | The access permission for the entity.
bacaRole :: Lens' BucketAccessControl (Maybe Text)

-- | The link to this access-control entry.
bacaSelfLink :: Lens' BucketAccessControl (Maybe Text)

-- | The ID of the access-control entry.
bacaId :: Lens' BucketAccessControl (Maybe Text)

-- | The project team associated with the entity, if any.
bacaProjectTeam :: Lens' BucketAccessControl (Maybe BucketAccessControlProjectTeam)

-- | The entity holding the permission, in one of the following forms: -
--   user-userId - user-email - group-groupId - group-email - domain-domain
--   - project-team-projectId - allUsers - allAuthenticatedUsers Examples:
--   - The user liz'example.com would be user-liz'example.com. - The group
--   example'googlegroups.com would be group-example'googlegroups.com. - To
--   refer to all members of the Google Apps for Business domain
--   example.com, the entity would be domain-example.com.
bacaEntity :: Lens' BucketAccessControl (Maybe Text)

-- | The ID for the entity, if any.
bacaEntityId :: Lens' BucketAccessControl (Maybe Text)

-- | The action to take.
--   
--   <i>See:</i> <a>bucketLifecycleRuleItemAction</a> smart constructor.
data BucketLifecycleRuleItemAction

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

-- | Target storage class. Required iff the type of the action is
--   SetStorageClass.
blriaStorageClass :: Lens' BucketLifecycleRuleItemAction (Maybe Text)

-- | Type of the action. Currently, only Delete and SetStorageClass are
--   supported.
blriaType :: Lens' BucketLifecycleRuleItemAction (Maybe Text)

-- | Set of properties to return. Defaults to noAcl.
data ObjectsGetProjection

-- | <tt>full</tt> Include all properties.
OGPFull :: ObjectsGetProjection

-- | <tt>noAcl</tt> Omit the owner, acl property.
OGPNoACL :: ObjectsGetProjection

-- | Apply a predefined set of default object access controls to this
--   bucket.
data BucketsPatchPredefinedDefaultObjectACL

-- | <tt>authenticatedRead</tt> Object owner gets OWNER access, and
--   allAuthenticatedUsers get READER access.
BPPDOAAuthenticatedRead :: BucketsPatchPredefinedDefaultObjectACL

-- | <tt>bucketOwnerFullControl</tt> Object owner gets OWNER access, and
--   project team owners get OWNER access.
BPPDOABucketOwnerFullControl :: BucketsPatchPredefinedDefaultObjectACL

-- | <tt>bucketOwnerRead</tt> Object owner gets OWNER access, and project
--   team owners get READER access.
BPPDOABucketOwnerRead :: BucketsPatchPredefinedDefaultObjectACL

-- | <tt>private</tt> Object owner gets OWNER access.
BPPDOAPrivate :: BucketsPatchPredefinedDefaultObjectACL

-- | <tt>projectPrivate</tt> Object owner gets OWNER access, and project
--   team members get access according to their roles.
BPPDOAProjectPrivate :: BucketsPatchPredefinedDefaultObjectACL

-- | <tt>publicRead</tt> Object owner gets OWNER access, and allUsers get
--   READER access.
BPPDOAPublicRead :: BucketsPatchPredefinedDefaultObjectACL

-- | Apply a predefined set of access controls to this bucket.
data BucketsPatchPredefinedACL

-- | <tt>authenticatedRead</tt> Project team owners get OWNER access, and
--   allAuthenticatedUsers get READER access.
BPPAAuthenticatedRead :: BucketsPatchPredefinedACL

-- | <tt>private</tt> Project team owners get OWNER access.
BPPAPrivate :: BucketsPatchPredefinedACL

-- | <tt>projectPrivate</tt> Project team members get access according to
--   their roles.
BPPAProjectPrivate :: BucketsPatchPredefinedACL

-- | <tt>publicRead</tt> Project team owners get OWNER access, and allUsers
--   get READER access.
BPPAPublicRead :: BucketsPatchPredefinedACL

-- | <tt>publicReadWrite</tt> Project team owners get OWNER access, and
--   allUsers get WRITER access.
BPPAPublicReadWrite :: BucketsPatchPredefinedACL

-- | An access-control entry.
--   
--   <i>See:</i> <a>objectAccessControl</a> smart constructor.
data ObjectAccessControl

-- | Creates a value of <a>ObjectAccessControl</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>oacaEmail</a></li>
--   <li><a>oacaEtag</a></li>
--   <li><a>oacaKind</a></li>
--   <li><a>oacaDomain</a></li>
--   <li><a>oacaBucket</a></li>
--   <li><a>oacaRole</a></li>
--   <li><a>oacaSelfLink</a></li>
--   <li><a>oacaObject</a></li>
--   <li><a>oacaId</a></li>
--   <li><a>oacaProjectTeam</a></li>
--   <li><a>oacaEntity</a></li>
--   <li><a>oacaGeneration</a></li>
--   <li><a>oacaEntityId</a></li>
--   </ul>
objectAccessControl :: ObjectAccessControl

-- | The email address associated with the entity, if any.
oacaEmail :: Lens' ObjectAccessControl (Maybe Text)

-- | HTTP 1.1 Entity tag for the access-control entry.
oacaEtag :: Lens' ObjectAccessControl (Maybe Text)

-- | The kind of item this is. For object access control entries, this is
--   always storage#objectAccessControl.
oacaKind :: Lens' ObjectAccessControl Text

-- | The domain associated with the entity, if any.
oacaDomain :: Lens' ObjectAccessControl (Maybe Text)

-- | The name of the bucket.
oacaBucket :: Lens' ObjectAccessControl (Maybe Text)

-- | The access permission for the entity.
oacaRole :: Lens' ObjectAccessControl (Maybe Text)

-- | The link to this access-control entry.
oacaSelfLink :: Lens' ObjectAccessControl (Maybe Text)

-- | The name of the object, if applied to an object.
oacaObject :: Lens' ObjectAccessControl (Maybe Text)

-- | The ID of the access-control entry.
oacaId :: Lens' ObjectAccessControl (Maybe Text)

-- | The project team associated with the entity, if any.
oacaProjectTeam :: Lens' ObjectAccessControl (Maybe ObjectAccessControlProjectTeam)

-- | The entity holding the permission, in one of the following forms: -
--   user-userId - user-email - group-groupId - group-email - domain-domain
--   - project-team-projectId - allUsers - allAuthenticatedUsers Examples:
--   - The user liz'example.com would be user-liz'example.com. - The group
--   example'googlegroups.com would be group-example'googlegroups.com. - To
--   refer to all members of the Google Apps for Business domain
--   example.com, the entity would be domain-example.com.
oacaEntity :: Lens' ObjectAccessControl (Maybe Text)

-- | The content generation of the object, if applied to an object.
oacaGeneration :: Lens' ObjectAccessControl (Maybe Int64)

-- | The ID for the entity, if any.
oacaEntityId :: Lens' ObjectAccessControl (Maybe Text)

-- | Set of properties to return. Defaults to noAcl, unless the object
--   resource specifies the acl property, when it defaults to full.
data ObjectsCopyProjection

-- | <tt>full</tt> Include all properties.
OCPFull :: ObjectsCopyProjection

-- | <tt>noAcl</tt> Omit the owner, acl property.
OCPNoACL :: ObjectsCopyProjection

-- | A rewrite response.
--   
--   <i>See:</i> <a>rewriteResponse</a> smart constructor.
data RewriteResponse

-- | Creates a value of <a>RewriteResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rrKind</a></li>
--   <li><a>rrDone</a></li>
--   <li><a>rrResource</a></li>
--   <li><a>rrObjectSize</a></li>
--   <li><a>rrTotalBytesRewritten</a></li>
--   <li><a>rrRewriteToken</a></li>
--   </ul>
rewriteResponse :: RewriteResponse

-- | The kind of item this is.
rrKind :: Lens' RewriteResponse Text

-- | true if the copy is finished; otherwise, false if the copy is in
--   progress. This property is always present in the response.
rrDone :: Lens' RewriteResponse (Maybe Bool)

-- | A resource containing the metadata for the copied-to object. This
--   property is present in the response only when copying completes.
rrResource :: Lens' RewriteResponse (Maybe Object)

-- | The total size of the object being copied in bytes. This property is
--   always present in the response.
rrObjectSize :: Lens' RewriteResponse (Maybe Word64)

-- | The total bytes written so far, which can be used to provide a waiting
--   user with a progress indicator. This property is always present in the
--   response.
rrTotalBytesRewritten :: Lens' RewriteResponse (Maybe Word64)

-- | A token to use in subsequent requests to continue copying data. This
--   token is present in the response only when there is more data to copy.
rrRewriteToken :: Lens' RewriteResponse (Maybe Text)

-- | Set of properties to return. Defaults to noAcl, unless the object
--   resource specifies the acl property, when it defaults to full.
data ObjectsRewriteProjection

-- | <tt>full</tt> Include all properties.
ORPFull :: ObjectsRewriteProjection

-- | <tt>noAcl</tt> Omit the owner, acl property.
ORPNoACL :: ObjectsRewriteProjection
