diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`0.3.0`
+`0.5.0`
 
 
 ## Description
diff --git a/gen/Network/Google/Directory.hs b/gen/Network/Google/Directory.hs
--- a/gen/Network/Google/Directory.hs
+++ b/gen/Network/Google/Directory.hs
@@ -679,6 +679,17 @@
     -- ** UsersListOrderBy
     , UsersListOrderBy (..)
 
+    -- ** BuildingAddress
+    , BuildingAddress
+    , buildingAddress
+    , baLanguageCode
+    , baRegionCode
+    , baSublocality
+    , baPostalCode
+    , baLocality
+    , baAdministrativeArea
+    , baAddressLines
+
     -- ** Tokens
     , Tokens
     , tokens
@@ -781,6 +792,9 @@
     , tokAnonymous
     , tokUserKey
 
+    -- ** ResourcesBuildingsPatchCoordinatesSource
+    , ResourcesBuildingsPatchCoordinatesSource (..)
+
     -- ** UserName
     , UserName
     , userName
@@ -797,6 +811,7 @@
     , buiEtags
     , buiKind
     , buiBuildingId
+    , buiAddress
     , buiCoordinates
     , buiBuildingName
     , buiFloorNames
@@ -852,6 +867,9 @@
     , chromeOSMoveDevicesToOu
     , comdtoDeviceIds
 
+    -- ** ResourcesBuildingsUpdateCoordinatesSource
+    , ResourcesBuildingsUpdateCoordinatesSource (..)
+
     -- ** User
     , User
     , user
@@ -960,6 +978,9 @@
 
     -- ** UsersListSortOrder
     , UsersListSortOrder (..)
+
+    -- ** ResourcesBuildingsInsertCoordinatesSource
+    , ResourcesBuildingsInsertCoordinatesSource (..)
 
     -- ** OrgUnits
     , OrgUnits
diff --git a/gen/Network/Google/Directory/Types.hs b/gen/Network/Google/Directory/Types.hs
--- a/gen/Network/Google/Directory/Types.hs
+++ b/gen/Network/Google/Directory/Types.hs
@@ -330,6 +330,17 @@
     -- * UsersListOrderBy
     , UsersListOrderBy (..)
 
+    -- * BuildingAddress
+    , BuildingAddress
+    , buildingAddress
+    , baLanguageCode
+    , baRegionCode
+    , baSublocality
+    , baPostalCode
+    , baLocality
+    , baAdministrativeArea
+    , baAddressLines
+
     -- * Tokens
     , Tokens
     , tokens
@@ -432,6 +443,9 @@
     , tokAnonymous
     , tokUserKey
 
+    -- * ResourcesBuildingsPatchCoordinatesSource
+    , ResourcesBuildingsPatchCoordinatesSource (..)
+
     -- * UserName
     , UserName
     , userName
@@ -448,6 +462,7 @@
     , buiEtags
     , buiKind
     , buiBuildingId
+    , buiAddress
     , buiCoordinates
     , buiBuildingName
     , buiFloorNames
@@ -503,6 +518,9 @@
     , chromeOSMoveDevicesToOu
     , comdtoDeviceIds
 
+    -- * ResourcesBuildingsUpdateCoordinatesSource
+    , ResourcesBuildingsUpdateCoordinatesSource (..)
+
     -- * User
     , User
     , user
@@ -612,6 +630,9 @@
     -- * UsersListSortOrder
     , UsersListSortOrder (..)
 
+    -- * ResourcesBuildingsInsertCoordinatesSource
+    , ResourcesBuildingsInsertCoordinatesSource (..)
+
     -- * OrgUnits
     , OrgUnits
     , orgUnits
@@ -1000,108 +1021,108 @@
 
 -- | View delegated admin roles for your domain
 adminDirectoryRoleManagementReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.rolemanagement.readonly"]
-adminDirectoryRoleManagementReadOnlyScope = Proxy;
+adminDirectoryRoleManagementReadOnlyScope = Proxy
 
 -- | View groups on your domain
 adminDirectoryGroupReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.group.readonly"]
-adminDirectoryGroupReadOnlyScope = Proxy;
+adminDirectoryGroupReadOnlyScope = Proxy
 
 -- | View your Chrome OS devices\' metadata
 adminDirectoryDeviceChromeosReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.device.chromeos.readonly"]
-adminDirectoryDeviceChromeosReadOnlyScope = Proxy;
+adminDirectoryDeviceChromeosReadOnlyScope = Proxy
 
 -- | View and manage your Chrome OS devices\' metadata
 adminDirectoryDeviceChromeosScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.device.chromeos"]
-adminDirectoryDeviceChromeosScope = Proxy;
+adminDirectoryDeviceChromeosScope = Proxy
 
 -- | View and manage the provisioning of users on your domain
 adminDirectoryUserScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.user"]
-adminDirectoryUserScope = Proxy;
+adminDirectoryUserScope = Proxy
 
 -- | View group subscriptions on your domain
 adminDirectoryGroupMemberReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.group.member.readonly"]
-adminDirectoryGroupMemberReadOnlyScope = Proxy;
+adminDirectoryGroupMemberReadOnlyScope = Proxy
 
 -- | View and manage user aliases on your domain
 adminDirectoryUserAliasScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.user.alias"]
-adminDirectoryUserAliasScope = Proxy;
+adminDirectoryUserAliasScope = Proxy
 
 -- | View and manage the provisioning of calendar resources on your domain
 adminDirectoryResourceCalendarScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.resource.calendar"]
-adminDirectoryResourceCalendarScope = Proxy;
+adminDirectoryResourceCalendarScope = Proxy
 
 -- | Manage your mobile devices by performing administrative tasks
 adminDirectoryDeviceMobileActionScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.device.mobile.action"]
-adminDirectoryDeviceMobileActionScope = Proxy;
+adminDirectoryDeviceMobileActionScope = Proxy
 
 -- | View calendar resources on your domain
 adminDirectoryResourceCalendarReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.resource.calendar.readonly"]
-adminDirectoryResourceCalendarReadOnlyScope = Proxy;
+adminDirectoryResourceCalendarReadOnlyScope = Proxy
 
 -- | View domains related to your customers
 adminDirectoryDomainReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.domain.readonly"]
-adminDirectoryDomainReadOnlyScope = Proxy;
+adminDirectoryDomainReadOnlyScope = Proxy
 
 -- | View and manage the provisioning of user schemas on your domain
 adminDirectoryUserschemaScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.userschema"]
-adminDirectoryUserschemaScope = Proxy;
+adminDirectoryUserschemaScope = Proxy
 
 -- | View user schemas on your domain
 adminDirectoryUserschemaReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.userschema.readonly"]
-adminDirectoryUserschemaReadOnlyScope = Proxy;
+adminDirectoryUserschemaReadOnlyScope = Proxy
 
 -- | View and manage the provisioning of domains for your customers
 adminDirectoryDomainScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.domain"]
-adminDirectoryDomainScope = Proxy;
+adminDirectoryDomainScope = Proxy
 
 -- | Manage delegated admin roles for your domain
 adminDirectoryRoleManagementScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.rolemanagement"]
-adminDirectoryRoleManagementScope = Proxy;
+adminDirectoryRoleManagementScope = Proxy
 
 -- | View and manage the provisioning of groups on your domain
 adminDirectoryGroupScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.group"]
-adminDirectoryGroupScope = Proxy;
+adminDirectoryGroupScope = Proxy
 
 -- | View organization units on your domain
 adminDirectoryOrgUnitReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.orgunit.readonly"]
-adminDirectoryOrgUnitReadOnlyScope = Proxy;
+adminDirectoryOrgUnitReadOnlyScope = Proxy
 
 -- | View and manage customer related information
 adminDirectoryCustomerScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.customer"]
-adminDirectoryCustomerScope = Proxy;
+adminDirectoryCustomerScope = Proxy
 
 -- | View customer related information
 adminDirectoryCustomerReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.customer.readonly"]
-adminDirectoryCustomerReadOnlyScope = Proxy;
+adminDirectoryCustomerReadOnlyScope = Proxy
 
 -- | View and manage organization units on your domain
 adminDirectoryOrgUnitScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.orgunit"]
-adminDirectoryOrgUnitScope = Proxy;
+adminDirectoryOrgUnitScope = Proxy
 
 -- | View users on your domain
 adminDirectoryUserReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.user.readonly"]
-adminDirectoryUserReadOnlyScope = Proxy;
+adminDirectoryUserReadOnlyScope = Proxy
 
 -- | View user aliases on your domain
 adminDirectoryUserAliasReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.user.alias.readonly"]
-adminDirectoryUserAliasReadOnlyScope = Proxy;
+adminDirectoryUserAliasReadOnlyScope = Proxy
 
 -- | Manage data access permissions for users on your domain
 adminDirectoryUserSecurityScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.user.security"]
-adminDirectoryUserSecurityScope = Proxy;
+adminDirectoryUserSecurityScope = Proxy
 
 -- | View and manage group subscriptions on your domain
 adminDirectoryGroupMemberScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.group.member"]
-adminDirectoryGroupMemberScope = Proxy;
+adminDirectoryGroupMemberScope = Proxy
 
 -- | View and manage notifications received on your domain
 adminDirectoryNotificationsScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.notifications"]
-adminDirectoryNotificationsScope = Proxy;
+adminDirectoryNotificationsScope = Proxy
 
 -- | View and manage your mobile devices\' metadata
 adminDirectoryDeviceMobileScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.device.mobile"]
-adminDirectoryDeviceMobileScope = Proxy;
+adminDirectoryDeviceMobileScope = Proxy
 
 -- | View your mobile devices\' metadata
 adminDirectoryDeviceMobileReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/admin.directory.device.mobile.readonly"]
-adminDirectoryDeviceMobileReadOnlyScope = Proxy;
+adminDirectoryDeviceMobileReadOnlyScope = Proxy
diff --git a/gen/Network/Google/Directory/Types/Product.hs b/gen/Network/Google/Directory/Types/Product.hs
--- a/gen/Network/Google/Directory/Types/Product.hs
+++ b/gen/Network/Google/Directory/Types/Product.hs
@@ -23,8030 +23,8433 @@
 -- | JSON template for a location entry.
 --
 -- /See:/ 'userLocation' smart constructor.
-data UserLocation = UserLocation'
-    { _ulArea         :: !(Maybe Text)
-    , _ulBuildingId   :: !(Maybe Text)
-    , _ulDeskCode     :: !(Maybe Text)
-    , _ulFloorName    :: !(Maybe Text)
-    , _ulType         :: !(Maybe Text)
-    , _ulCustomType   :: !(Maybe Text)
-    , _ulFloorSection :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserLocation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ulArea'
---
--- * 'ulBuildingId'
---
--- * 'ulDeskCode'
---
--- * 'ulFloorName'
---
--- * 'ulType'
---
--- * 'ulCustomType'
---
--- * 'ulFloorSection'
-userLocation
-    :: UserLocation
-userLocation =
-    UserLocation'
-    { _ulArea = Nothing
-    , _ulBuildingId = Nothing
-    , _ulDeskCode = Nothing
-    , _ulFloorName = Nothing
-    , _ulType = Nothing
-    , _ulCustomType = Nothing
-    , _ulFloorSection = Nothing
-    }
-
--- | Textual location. This is most useful for display purposes to concisely
--- describe the location. For example, \"Mountain View, CA\", \"Near
--- Seattle\", \"US-NYC-9TH 9A209A\".
-ulArea :: Lens' UserLocation (Maybe Text)
-ulArea = lens _ulArea (\ s a -> s{_ulArea = a})
-
--- | Building Identifier.
-ulBuildingId :: Lens' UserLocation (Maybe Text)
-ulBuildingId
-  = lens _ulBuildingId (\ s a -> s{_ulBuildingId = a})
-
--- | Most specific textual code of individual desk location.
-ulDeskCode :: Lens' UserLocation (Maybe Text)
-ulDeskCode
-  = lens _ulDeskCode (\ s a -> s{_ulDeskCode = a})
-
--- | Floor name\/number.
-ulFloorName :: Lens' UserLocation (Maybe Text)
-ulFloorName
-  = lens _ulFloorName (\ s a -> s{_ulFloorName = a})
-
--- | Each entry can have a type which indicates standard types of that entry.
--- For example location could be of types default and desk. In addition to
--- standard type, an entry can have a custom type and can give it any name.
--- Such types should have \"custom\" as type and also have a customType
--- value.
-ulType :: Lens' UserLocation (Maybe Text)
-ulType = lens _ulType (\ s a -> s{_ulType = a})
-
--- | Custom Type.
-ulCustomType :: Lens' UserLocation (Maybe Text)
-ulCustomType
-  = lens _ulCustomType (\ s a -> s{_ulCustomType = a})
-
--- | Floor section. More specific location within the floor. For example, if
--- a floor is divided into sections \"A\", \"B\", and \"C\", this field
--- would identify one of those values.
-ulFloorSection :: Lens' UserLocation (Maybe Text)
-ulFloorSection
-  = lens _ulFloorSection
-      (\ s a -> s{_ulFloorSection = a})
-
-instance FromJSON UserLocation where
-        parseJSON
-          = withObject "UserLocation"
-              (\ o ->
-                 UserLocation' <$>
-                   (o .:? "area") <*> (o .:? "buildingId") <*>
-                     (o .:? "deskCode")
-                     <*> (o .:? "floorName")
-                     <*> (o .:? "type")
-                     <*> (o .:? "customType")
-                     <*> (o .:? "floorSection"))
-
-instance ToJSON UserLocation where
-        toJSON UserLocation'{..}
-          = object
-              (catMaybes
-                 [("area" .=) <$> _ulArea,
-                  ("buildingId" .=) <$> _ulBuildingId,
-                  ("deskCode" .=) <$> _ulDeskCode,
-                  ("floorName" .=) <$> _ulFloorName,
-                  ("type" .=) <$> _ulType,
-                  ("customType" .=) <$> _ulCustomType,
-                  ("floorSection" .=) <$> _ulFloorSection])
-
--- | JSON template for verification codes in Directory API.
---
--- /See:/ 'verificationCode' smart constructor.
-data VerificationCode = VerificationCode'
-    { _vcVerificationCode :: !(Maybe Text)
-    , _vcEtag             :: !(Maybe Text)
-    , _vcKind             :: !Text
-    , _vcUserId           :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VerificationCode' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vcVerificationCode'
---
--- * 'vcEtag'
---
--- * 'vcKind'
---
--- * 'vcUserId'
-verificationCode
-    :: VerificationCode
-verificationCode =
-    VerificationCode'
-    { _vcVerificationCode = Nothing
-    , _vcEtag = Nothing
-    , _vcKind = "admin#directory#verificationCode"
-    , _vcUserId = Nothing
-    }
-
--- | A current verification code for the user. Invalidated or used
--- verification codes are not returned as part of the result.
-vcVerificationCode :: Lens' VerificationCode (Maybe Text)
-vcVerificationCode
-  = lens _vcVerificationCode
-      (\ s a -> s{_vcVerificationCode = a})
-
--- | ETag of the resource.
-vcEtag :: Lens' VerificationCode (Maybe Text)
-vcEtag = lens _vcEtag (\ s a -> s{_vcEtag = a})
-
--- | The type of the resource. This is always
--- admin#directory#verificationCode.
-vcKind :: Lens' VerificationCode Text
-vcKind = lens _vcKind (\ s a -> s{_vcKind = a})
-
--- | The obfuscated unique ID of the user.
-vcUserId :: Lens' VerificationCode (Maybe Text)
-vcUserId = lens _vcUserId (\ s a -> s{_vcUserId = a})
-
-instance FromJSON VerificationCode where
-        parseJSON
-          = withObject "VerificationCode"
-              (\ o ->
-                 VerificationCode' <$>
-                   (o .:? "verificationCode") <*> (o .:? "etag") <*>
-                     (o .:? "kind" .!= "admin#directory#verificationCode")
-                     <*> (o .:? "userId"))
-
-instance ToJSON VerificationCode where
-        toJSON VerificationCode'{..}
-          = object
-              (catMaybes
-                 [("verificationCode" .=) <$> _vcVerificationCode,
-                  ("etag" .=) <$> _vcEtag, Just ("kind" .= _vcKind),
-                  ("userId" .=) <$> _vcUserId])
-
--- | JSON template for Feature object in Directory API.
---
--- /See:/ 'feature' smart constructor.
-data Feature = Feature'
-    { _fEtags :: !(Maybe Text)
-    , _fKind  :: !Text
-    , _fName  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Feature' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fEtags'
---
--- * 'fKind'
---
--- * 'fName'
-feature
-    :: Feature
-feature =
-    Feature'
-    { _fEtags = Nothing
-    , _fKind = "admin#directory#resources#features#Feature"
-    , _fName = Nothing
-    }
-
--- | ETag of the resource.
-fEtags :: Lens' Feature (Maybe Text)
-fEtags = lens _fEtags (\ s a -> s{_fEtags = a})
-
--- | Kind of resource this is.
-fKind :: Lens' Feature Text
-fKind = lens _fKind (\ s a -> s{_fKind = a})
-
--- | The name of the feature.
-fName :: Lens' Feature (Maybe Text)
-fName = lens _fName (\ s a -> s{_fName = a})
-
-instance FromJSON Feature where
-        parseJSON
-          = withObject "Feature"
-              (\ o ->
-                 Feature' <$>
-                   (o .:? "etags") <*>
-                     (o .:? "kind" .!=
-                        "admin#directory#resources#features#Feature")
-                     <*> (o .:? "name"))
-
-instance ToJSON Feature where
-        toJSON Feature'{..}
-          = object
-              (catMaybes
-                 [("etags" .=) <$> _fEtags, Just ("kind" .= _fKind),
-                  ("name" .=) <$> _fName])
-
--- | JSON template for Org Unit resource in Directory API.
---
--- /See:/ 'orgUnit' smart constructor.
-data OrgUnit = OrgUnit'
-    { _ouEtag              :: !(Maybe Text)
-    , _ouParentOrgUnitPath :: !(Maybe Text)
-    , _ouKind              :: !Text
-    , _ouOrgUnitPath       :: !(Maybe Text)
-    , _ouName              :: !(Maybe Text)
-    , _ouBlockInheritance  :: !(Maybe Bool)
-    , _ouParentOrgUnitId   :: !(Maybe Text)
-    , _ouDescription       :: !(Maybe Text)
-    , _ouOrgUnitId         :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OrgUnit' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ouEtag'
---
--- * 'ouParentOrgUnitPath'
---
--- * 'ouKind'
---
--- * 'ouOrgUnitPath'
---
--- * 'ouName'
---
--- * 'ouBlockInheritance'
---
--- * 'ouParentOrgUnitId'
---
--- * 'ouDescription'
---
--- * 'ouOrgUnitId'
-orgUnit
-    :: OrgUnit
-orgUnit =
-    OrgUnit'
-    { _ouEtag = Nothing
-    , _ouParentOrgUnitPath = Nothing
-    , _ouKind = "admin#directory#orgUnit"
-    , _ouOrgUnitPath = Nothing
-    , _ouName = Nothing
-    , _ouBlockInheritance = Nothing
-    , _ouParentOrgUnitId = Nothing
-    , _ouDescription = Nothing
-    , _ouOrgUnitId = Nothing
-    }
-
--- | ETag of the resource.
-ouEtag :: Lens' OrgUnit (Maybe Text)
-ouEtag = lens _ouEtag (\ s a -> s{_ouEtag = a})
-
--- | Path of parent OrgUnit
-ouParentOrgUnitPath :: Lens' OrgUnit (Maybe Text)
-ouParentOrgUnitPath
-  = lens _ouParentOrgUnitPath
-      (\ s a -> s{_ouParentOrgUnitPath = a})
-
--- | Kind of resource this is.
-ouKind :: Lens' OrgUnit Text
-ouKind = lens _ouKind (\ s a -> s{_ouKind = a})
-
--- | Path of OrgUnit
-ouOrgUnitPath :: Lens' OrgUnit (Maybe Text)
-ouOrgUnitPath
-  = lens _ouOrgUnitPath
-      (\ s a -> s{_ouOrgUnitPath = a})
-
--- | Name of OrgUnit
-ouName :: Lens' OrgUnit (Maybe Text)
-ouName = lens _ouName (\ s a -> s{_ouName = a})
-
--- | Should block inheritance
-ouBlockInheritance :: Lens' OrgUnit (Maybe Bool)
-ouBlockInheritance
-  = lens _ouBlockInheritance
-      (\ s a -> s{_ouBlockInheritance = a})
-
--- | Id of parent OrgUnit
-ouParentOrgUnitId :: Lens' OrgUnit (Maybe Text)
-ouParentOrgUnitId
-  = lens _ouParentOrgUnitId
-      (\ s a -> s{_ouParentOrgUnitId = a})
-
--- | Description of OrgUnit
-ouDescription :: Lens' OrgUnit (Maybe Text)
-ouDescription
-  = lens _ouDescription
-      (\ s a -> s{_ouDescription = a})
-
--- | Id of OrgUnit
-ouOrgUnitId :: Lens' OrgUnit (Maybe Text)
-ouOrgUnitId
-  = lens _ouOrgUnitId (\ s a -> s{_ouOrgUnitId = a})
-
-instance FromJSON OrgUnit where
-        parseJSON
-          = withObject "OrgUnit"
-              (\ o ->
-                 OrgUnit' <$>
-                   (o .:? "etag") <*> (o .:? "parentOrgUnitPath") <*>
-                     (o .:? "kind" .!= "admin#directory#orgUnit")
-                     <*> (o .:? "orgUnitPath")
-                     <*> (o .:? "name")
-                     <*> (o .:? "blockInheritance")
-                     <*> (o .:? "parentOrgUnitId")
-                     <*> (o .:? "description")
-                     <*> (o .:? "orgUnitId"))
-
-instance ToJSON OrgUnit where
-        toJSON OrgUnit'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _ouEtag,
-                  ("parentOrgUnitPath" .=) <$> _ouParentOrgUnitPath,
-                  Just ("kind" .= _ouKind),
-                  ("orgUnitPath" .=) <$> _ouOrgUnitPath,
-                  ("name" .=) <$> _ouName,
-                  ("blockInheritance" .=) <$> _ouBlockInheritance,
-                  ("parentOrgUnitId" .=) <$> _ouParentOrgUnitId,
-                  ("description" .=) <$> _ouDescription,
-                  ("orgUnitId" .=) <$> _ouOrgUnitId])
-
--- | JSON request template for setting\/revoking admin status of a user in
--- Directory API.
---
--- /See:/ 'userMakeAdmin' smart constructor.
-newtype UserMakeAdmin = UserMakeAdmin'
-    { _umaStatus :: Maybe Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserMakeAdmin' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'umaStatus'
-userMakeAdmin
-    :: UserMakeAdmin
-userMakeAdmin =
-    UserMakeAdmin'
-    { _umaStatus = Nothing
-    }
-
--- | Boolean indicating new admin status of the user
-umaStatus :: Lens' UserMakeAdmin (Maybe Bool)
-umaStatus
-  = lens _umaStatus (\ s a -> s{_umaStatus = a})
-
-instance FromJSON UserMakeAdmin where
-        parseJSON
-          = withObject "UserMakeAdmin"
-              (\ o -> UserMakeAdmin' <$> (o .:? "status"))
-
-instance ToJSON UserMakeAdmin where
-        toJSON UserMakeAdmin'{..}
-          = object (catMaybes [("status" .=) <$> _umaStatus])
-
--- | JSON template for About (notes) of a user in Directory API.
---
--- /See:/ 'userAbout' smart constructor.
-data UserAbout = UserAbout'
-    { _uaValue       :: !(Maybe Text)
-    , _uaContentType :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserAbout' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uaValue'
---
--- * 'uaContentType'
-userAbout
-    :: UserAbout
-userAbout =
-    UserAbout'
-    { _uaValue = Nothing
-    , _uaContentType = Nothing
-    }
-
--- | Actual value of notes.
-uaValue :: Lens' UserAbout (Maybe Text)
-uaValue = lens _uaValue (\ s a -> s{_uaValue = a})
-
--- | About entry can have a type which indicates the content type. It can
--- either be plain or html. By default, notes contents are assumed to
--- contain plain text.
-uaContentType :: Lens' UserAbout (Maybe Text)
-uaContentType
-  = lens _uaContentType
-      (\ s a -> s{_uaContentType = a})
-
-instance FromJSON UserAbout where
-        parseJSON
-          = withObject "UserAbout"
-              (\ o ->
-                 UserAbout' <$>
-                   (o .:? "value") <*> (o .:? "contentType"))
-
-instance ToJSON UserAbout where
-        toJSON UserAbout'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _uaValue,
-                  ("contentType" .=) <$> _uaContentType])
-
--- | JSON response template for List privileges operation in Directory API.
---
--- /See:/ 'privileges' smart constructor.
-data Privileges = Privileges'
-    { _pEtag  :: !(Maybe Text)
-    , _pKind  :: !Text
-    , _pItems :: !(Maybe [Privilege])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Privileges' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pEtag'
---
--- * 'pKind'
---
--- * 'pItems'
-privileges
-    :: Privileges
-privileges =
-    Privileges'
-    { _pEtag = Nothing
-    , _pKind = "admin#directory#privileges"
-    , _pItems = Nothing
-    }
-
--- | ETag of the resource.
-pEtag :: Lens' Privileges (Maybe Text)
-pEtag = lens _pEtag (\ s a -> s{_pEtag = a})
-
--- | The type of the API resource. This is always admin#directory#privileges.
-pKind :: Lens' Privileges Text
-pKind = lens _pKind (\ s a -> s{_pKind = a})
-
--- | A list of Privilege resources.
-pItems :: Lens' Privileges [Privilege]
-pItems
-  = lens _pItems (\ s a -> s{_pItems = a}) . _Default .
-      _Coerce
-
-instance FromJSON Privileges where
-        parseJSON
-          = withObject "Privileges"
-              (\ o ->
-                 Privileges' <$>
-                   (o .:? "etag") <*>
-                     (o .:? "kind" .!= "admin#directory#privileges")
-                     <*> (o .:? "items" .!= mempty))
-
-instance ToJSON Privileges where
-        toJSON Privileges'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _pEtag, Just ("kind" .= _pKind),
-                  ("items" .=) <$> _pItems])
-
--- | JSON response template for List Groups operation in Directory API.
---
--- /See:/ 'groups' smart constructor.
-data Groups = Groups'
-    { _gGroups        :: !(Maybe [Group])
-    , _gEtag          :: !(Maybe Text)
-    , _gNextPageToken :: !(Maybe Text)
-    , _gKind          :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Groups' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gGroups'
---
--- * 'gEtag'
---
--- * 'gNextPageToken'
---
--- * 'gKind'
-groups
-    :: Groups
-groups =
-    Groups'
-    { _gGroups = Nothing
-    , _gEtag = Nothing
-    , _gNextPageToken = Nothing
-    , _gKind = "admin#directory#groups"
-    }
-
--- | List of group objects.
-gGroups :: Lens' Groups [Group]
-gGroups
-  = lens _gGroups (\ s a -> s{_gGroups = a}) . _Default
-      . _Coerce
-
--- | ETag of the resource.
-gEtag :: Lens' Groups (Maybe Text)
-gEtag = lens _gEtag (\ s a -> s{_gEtag = a})
-
--- | Token used to access next page of this result.
-gNextPageToken :: Lens' Groups (Maybe Text)
-gNextPageToken
-  = lens _gNextPageToken
-      (\ s a -> s{_gNextPageToken = a})
-
--- | Kind of resource this is.
-gKind :: Lens' Groups Text
-gKind = lens _gKind (\ s a -> s{_gKind = a})
-
-instance FromJSON Groups where
-        parseJSON
-          = withObject "Groups"
-              (\ o ->
-                 Groups' <$>
-                   (o .:? "groups" .!= mempty) <*> (o .:? "etag") <*>
-                     (o .:? "nextPageToken")
-                     <*> (o .:? "kind" .!= "admin#directory#groups"))
-
-instance ToJSON Groups where
-        toJSON Groups'{..}
-          = object
-              (catMaybes
-                 [("groups" .=) <$> _gGroups, ("etag" .=) <$> _gEtag,
-                  ("nextPageToken" .=) <$> _gNextPageToken,
-                  Just ("kind" .= _gKind)])
-
--- | JSON response template for List roleAssignments operation in Directory
--- API.
---
--- /See:/ 'roleAssignments' smart constructor.
-data RoleAssignments = RoleAssignments'
-    { _raEtag          :: !(Maybe Text)
-    , _raNextPageToken :: !(Maybe Text)
-    , _raKind          :: !Text
-    , _raItems         :: !(Maybe [RoleAssignment])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RoleAssignments' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'raEtag'
---
--- * 'raNextPageToken'
---
--- * 'raKind'
---
--- * 'raItems'
-roleAssignments
-    :: RoleAssignments
-roleAssignments =
-    RoleAssignments'
-    { _raEtag = Nothing
-    , _raNextPageToken = Nothing
-    , _raKind = "admin#directory#roleAssignments"
-    , _raItems = Nothing
-    }
-
--- | ETag of the resource.
-raEtag :: Lens' RoleAssignments (Maybe Text)
-raEtag = lens _raEtag (\ s a -> s{_raEtag = a})
-
-raNextPageToken :: Lens' RoleAssignments (Maybe Text)
-raNextPageToken
-  = lens _raNextPageToken
-      (\ s a -> s{_raNextPageToken = a})
-
--- | The type of the API resource. This is always
--- admin#directory#roleAssignments.
-raKind :: Lens' RoleAssignments Text
-raKind = lens _raKind (\ s a -> s{_raKind = a})
-
--- | A list of RoleAssignment resources.
-raItems :: Lens' RoleAssignments [RoleAssignment]
-raItems
-  = lens _raItems (\ s a -> s{_raItems = a}) . _Default
-      . _Coerce
-
-instance FromJSON RoleAssignments where
-        parseJSON
-          = withObject "RoleAssignments"
-              (\ o ->
-                 RoleAssignments' <$>
-                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "admin#directory#roleAssignments")
-                     <*> (o .:? "items" .!= mempty))
-
-instance ToJSON RoleAssignments where
-        toJSON RoleAssignments'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _raEtag,
-                  ("nextPageToken" .=) <$> _raNextPageToken,
-                  Just ("kind" .= _raKind), ("items" .=) <$> _raItems])
-
--- | JSON template for privilege resource in Directory API.
---
--- /See:/ 'privilege' smart constructor.
-data Privilege = Privilege'
-    { _priEtag            :: !(Maybe Text)
-    , _priIsOuScopable    :: !(Maybe Bool)
-    , _priKind            :: !Text
-    , _priServiceName     :: !(Maybe Text)
-    , _priServiceId       :: !(Maybe Text)
-    , _priPrivilegeName   :: !(Maybe Text)
-    , _priChildPrivileges :: !(Maybe [Privilege])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Privilege' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'priEtag'
---
--- * 'priIsOuScopable'
---
--- * 'priKind'
---
--- * 'priServiceName'
---
--- * 'priServiceId'
---
--- * 'priPrivilegeName'
---
--- * 'priChildPrivileges'
-privilege
-    :: Privilege
-privilege =
-    Privilege'
-    { _priEtag = Nothing
-    , _priIsOuScopable = Nothing
-    , _priKind = "admin#directory#privilege"
-    , _priServiceName = Nothing
-    , _priServiceId = Nothing
-    , _priPrivilegeName = Nothing
-    , _priChildPrivileges = Nothing
-    }
-
--- | ETag of the resource.
-priEtag :: Lens' Privilege (Maybe Text)
-priEtag = lens _priEtag (\ s a -> s{_priEtag = a})
-
--- | If the privilege can be restricted to an organization unit.
-priIsOuScopable :: Lens' Privilege (Maybe Bool)
-priIsOuScopable
-  = lens _priIsOuScopable
-      (\ s a -> s{_priIsOuScopable = a})
-
--- | The type of the API resource. This is always admin#directory#privilege.
-priKind :: Lens' Privilege Text
-priKind = lens _priKind (\ s a -> s{_priKind = a})
-
--- | The name of the service this privilege is for.
-priServiceName :: Lens' Privilege (Maybe Text)
-priServiceName
-  = lens _priServiceName
-      (\ s a -> s{_priServiceName = a})
-
--- | The obfuscated ID of the service this privilege is for.
-priServiceId :: Lens' Privilege (Maybe Text)
-priServiceId
-  = lens _priServiceId (\ s a -> s{_priServiceId = a})
-
--- | The name of the privilege.
-priPrivilegeName :: Lens' Privilege (Maybe Text)
-priPrivilegeName
-  = lens _priPrivilegeName
-      (\ s a -> s{_priPrivilegeName = a})
-
--- | A list of child privileges. Privileges for a service form a tree. Each
--- privilege can have a list of child privileges; this list is empty for a
--- leaf privilege.
-priChildPrivileges :: Lens' Privilege [Privilege]
-priChildPrivileges
-  = lens _priChildPrivileges
-      (\ s a -> s{_priChildPrivileges = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON Privilege where
-        parseJSON
-          = withObject "Privilege"
-              (\ o ->
-                 Privilege' <$>
-                   (o .:? "etag") <*> (o .:? "isOuScopable") <*>
-                     (o .:? "kind" .!= "admin#directory#privilege")
-                     <*> (o .:? "serviceName")
-                     <*> (o .:? "serviceId")
-                     <*> (o .:? "privilegeName")
-                     <*> (o .:? "childPrivileges" .!= mempty))
-
-instance ToJSON Privilege where
-        toJSON Privilege'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _priEtag,
-                  ("isOuScopable" .=) <$> _priIsOuScopable,
-                  Just ("kind" .= _priKind),
-                  ("serviceName" .=) <$> _priServiceName,
-                  ("serviceId" .=) <$> _priServiceId,
-                  ("privilegeName" .=) <$> _priPrivilegeName,
-                  ("childPrivileges" .=) <$> _priChildPrivileges])
-
--- | JSON response template for List roles operation in Directory API.
---
--- /See:/ 'roles' smart constructor.
-data Roles = Roles'
-    { _rEtag          :: !(Maybe Text)
-    , _rNextPageToken :: !(Maybe Text)
-    , _rKind          :: !Text
-    , _rItems         :: !(Maybe [Role])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Roles' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rEtag'
---
--- * 'rNextPageToken'
---
--- * 'rKind'
---
--- * 'rItems'
-roles
-    :: Roles
-roles =
-    Roles'
-    { _rEtag = Nothing
-    , _rNextPageToken = Nothing
-    , _rKind = "admin#directory#roles"
-    , _rItems = Nothing
-    }
-
--- | ETag of the resource.
-rEtag :: Lens' Roles (Maybe Text)
-rEtag = lens _rEtag (\ s a -> s{_rEtag = a})
-
-rNextPageToken :: Lens' Roles (Maybe Text)
-rNextPageToken
-  = lens _rNextPageToken
-      (\ s a -> s{_rNextPageToken = a})
-
--- | The type of the API resource. This is always admin#directory#roles.
-rKind :: Lens' Roles Text
-rKind = lens _rKind (\ s a -> s{_rKind = a})
-
--- | A list of Role resources.
-rItems :: Lens' Roles [Role]
-rItems
-  = lens _rItems (\ s a -> s{_rItems = a}) . _Default .
-      _Coerce
-
-instance FromJSON Roles where
-        parseJSON
-          = withObject "Roles"
-              (\ o ->
-                 Roles' <$>
-                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "admin#directory#roles")
-                     <*> (o .:? "items" .!= mempty))
-
-instance ToJSON Roles where
-        toJSON Roles'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _rEtag,
-                  ("nextPageToken" .=) <$> _rNextPageToken,
-                  Just ("kind" .= _rKind), ("items" .=) <$> _rItems])
-
---
--- /See:/ 'chromeOSDeviceDiskVolumeReportsItem' smart constructor.
-newtype ChromeOSDeviceDiskVolumeReportsItem = ChromeOSDeviceDiskVolumeReportsItem'
-    { _coddvriVolumeInfo :: Maybe [ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChromeOSDeviceDiskVolumeReportsItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'coddvriVolumeInfo'
-chromeOSDeviceDiskVolumeReportsItem
-    :: ChromeOSDeviceDiskVolumeReportsItem
-chromeOSDeviceDiskVolumeReportsItem =
-    ChromeOSDeviceDiskVolumeReportsItem'
-    { _coddvriVolumeInfo = Nothing
-    }
-
--- | Disk volumes
-coddvriVolumeInfo :: Lens' ChromeOSDeviceDiskVolumeReportsItem [ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem]
-coddvriVolumeInfo
-  = lens _coddvriVolumeInfo
-      (\ s a -> s{_coddvriVolumeInfo = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ChromeOSDeviceDiskVolumeReportsItem
-         where
-        parseJSON
-          = withObject "ChromeOSDeviceDiskVolumeReportsItem"
-              (\ o ->
-                 ChromeOSDeviceDiskVolumeReportsItem' <$>
-                   (o .:? "volumeInfo" .!= mempty))
-
-instance ToJSON ChromeOSDeviceDiskVolumeReportsItem
-         where
-        toJSON ChromeOSDeviceDiskVolumeReportsItem'{..}
-          = object
-              (catMaybes
-                 [("volumeInfo" .=) <$> _coddvriVolumeInfo])
-
--- | JSON template for address.
---
--- /See:/ 'userAddress' smart constructor.
-data UserAddress = UserAddress'
-    { _uaStreetAddress      :: !(Maybe Text)
-    , _uaPoBox              :: !(Maybe Text)
-    , _uaCountry            :: !(Maybe Text)
-    , _uaPostalCode         :: !(Maybe Text)
-    , _uaFormatted          :: !(Maybe Text)
-    , _uaExtendedAddress    :: !(Maybe Text)
-    , _uaLocality           :: !(Maybe Text)
-    , _uaPrimary            :: !(Maybe Bool)
-    , _uaCountryCode        :: !(Maybe Text)
-    , _uaRegion             :: !(Maybe Text)
-    , _uaType               :: !(Maybe Text)
-    , _uaCustomType         :: !(Maybe Text)
-    , _uaSourceIsStructured :: !(Maybe Bool)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserAddress' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uaStreetAddress'
---
--- * 'uaPoBox'
---
--- * 'uaCountry'
---
--- * 'uaPostalCode'
---
--- * 'uaFormatted'
---
--- * 'uaExtendedAddress'
---
--- * 'uaLocality'
---
--- * 'uaPrimary'
---
--- * 'uaCountryCode'
---
--- * 'uaRegion'
---
--- * 'uaType'
---
--- * 'uaCustomType'
---
--- * 'uaSourceIsStructured'
-userAddress
-    :: UserAddress
-userAddress =
-    UserAddress'
-    { _uaStreetAddress = Nothing
-    , _uaPoBox = Nothing
-    , _uaCountry = Nothing
-    , _uaPostalCode = Nothing
-    , _uaFormatted = Nothing
-    , _uaExtendedAddress = Nothing
-    , _uaLocality = Nothing
-    , _uaPrimary = Nothing
-    , _uaCountryCode = Nothing
-    , _uaRegion = Nothing
-    , _uaType = Nothing
-    , _uaCustomType = Nothing
-    , _uaSourceIsStructured = Nothing
-    }
-
--- | Street.
-uaStreetAddress :: Lens' UserAddress (Maybe Text)
-uaStreetAddress
-  = lens _uaStreetAddress
-      (\ s a -> s{_uaStreetAddress = a})
-
--- | Other parts of address.
-uaPoBox :: Lens' UserAddress (Maybe Text)
-uaPoBox = lens _uaPoBox (\ s a -> s{_uaPoBox = a})
-
--- | Country.
-uaCountry :: Lens' UserAddress (Maybe Text)
-uaCountry
-  = lens _uaCountry (\ s a -> s{_uaCountry = a})
-
--- | Postal code.
-uaPostalCode :: Lens' UserAddress (Maybe Text)
-uaPostalCode
-  = lens _uaPostalCode (\ s a -> s{_uaPostalCode = a})
-
--- | Formatted address.
-uaFormatted :: Lens' UserAddress (Maybe Text)
-uaFormatted
-  = lens _uaFormatted (\ s a -> s{_uaFormatted = a})
-
--- | Extended Address.
-uaExtendedAddress :: Lens' UserAddress (Maybe Text)
-uaExtendedAddress
-  = lens _uaExtendedAddress
-      (\ s a -> s{_uaExtendedAddress = a})
-
--- | Locality.
-uaLocality :: Lens' UserAddress (Maybe Text)
-uaLocality
-  = lens _uaLocality (\ s a -> s{_uaLocality = a})
-
--- | If this is user\'s primary address. Only one entry could be marked as
--- primary.
-uaPrimary :: Lens' UserAddress (Maybe Bool)
-uaPrimary
-  = lens _uaPrimary (\ s a -> s{_uaPrimary = a})
-
--- | Country code.
-uaCountryCode :: Lens' UserAddress (Maybe Text)
-uaCountryCode
-  = lens _uaCountryCode
-      (\ s a -> s{_uaCountryCode = a})
-
--- | Region.
-uaRegion :: Lens' UserAddress (Maybe Text)
-uaRegion = lens _uaRegion (\ s a -> s{_uaRegion = a})
-
--- | Each entry can have a type which indicates standard values of that
--- entry. For example address could be of home, work etc. In addition to
--- the standard type, an entry can have a custom type and can take any
--- value. Such type should have the CUSTOM value as type and also have a
--- customType value.
-uaType :: Lens' UserAddress (Maybe Text)
-uaType = lens _uaType (\ s a -> s{_uaType = a})
-
--- | Custom type.
-uaCustomType :: Lens' UserAddress (Maybe Text)
-uaCustomType
-  = lens _uaCustomType (\ s a -> s{_uaCustomType = a})
-
--- | User supplied address was structured. Structured addresses are NOT
--- supported at this time. You might be able to write structured addresses,
--- but any values will eventually be clobbered.
-uaSourceIsStructured :: Lens' UserAddress (Maybe Bool)
-uaSourceIsStructured
-  = lens _uaSourceIsStructured
-      (\ s a -> s{_uaSourceIsStructured = a})
-
-instance FromJSON UserAddress where
-        parseJSON
-          = withObject "UserAddress"
-              (\ o ->
-                 UserAddress' <$>
-                   (o .:? "streetAddress") <*> (o .:? "poBox") <*>
-                     (o .:? "country")
-                     <*> (o .:? "postalCode")
-                     <*> (o .:? "formatted")
-                     <*> (o .:? "extendedAddress")
-                     <*> (o .:? "locality")
-                     <*> (o .:? "primary")
-                     <*> (o .:? "countryCode")
-                     <*> (o .:? "region")
-                     <*> (o .:? "type")
-                     <*> (o .:? "customType")
-                     <*> (o .:? "sourceIsStructured"))
-
-instance ToJSON UserAddress where
-        toJSON UserAddress'{..}
-          = object
-              (catMaybes
-                 [("streetAddress" .=) <$> _uaStreetAddress,
-                  ("poBox" .=) <$> _uaPoBox,
-                  ("country" .=) <$> _uaCountry,
-                  ("postalCode" .=) <$> _uaPostalCode,
-                  ("formatted" .=) <$> _uaFormatted,
-                  ("extendedAddress" .=) <$> _uaExtendedAddress,
-                  ("locality" .=) <$> _uaLocality,
-                  ("primary" .=) <$> _uaPrimary,
-                  ("countryCode" .=) <$> _uaCountryCode,
-                  ("region" .=) <$> _uaRegion, ("type" .=) <$> _uaType,
-                  ("customType" .=) <$> _uaCustomType,
-                  ("sourceIsStructured" .=) <$> _uaSourceIsStructured])
-
--- | JSON template for postal address of a customer.
---
--- /See:/ 'customerPostalAddress' smart constructor.
-data CustomerPostalAddress = CustomerPostalAddress'
-    { _cpaOrganizationName :: !(Maybe Text)
-    , _cpaPostalCode       :: !(Maybe Text)
-    , _cpaAddressLine1     :: !(Maybe Text)
-    , _cpaLocality         :: !(Maybe Text)
-    , _cpaContactName      :: !(Maybe Text)
-    , _cpaAddressLine2     :: !(Maybe Text)
-    , _cpaCountryCode      :: !(Maybe Text)
-    , _cpaRegion           :: !(Maybe Text)
-    , _cpaAddressLine3     :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CustomerPostalAddress' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cpaOrganizationName'
---
--- * 'cpaPostalCode'
---
--- * 'cpaAddressLine1'
---
--- * 'cpaLocality'
---
--- * 'cpaContactName'
---
--- * 'cpaAddressLine2'
---
--- * 'cpaCountryCode'
---
--- * 'cpaRegion'
---
--- * 'cpaAddressLine3'
-customerPostalAddress
-    :: CustomerPostalAddress
-customerPostalAddress =
-    CustomerPostalAddress'
-    { _cpaOrganizationName = Nothing
-    , _cpaPostalCode = Nothing
-    , _cpaAddressLine1 = Nothing
-    , _cpaLocality = Nothing
-    , _cpaContactName = Nothing
-    , _cpaAddressLine2 = Nothing
-    , _cpaCountryCode = Nothing
-    , _cpaRegion = Nothing
-    , _cpaAddressLine3 = Nothing
-    }
-
--- | The company or company division name.
-cpaOrganizationName :: Lens' CustomerPostalAddress (Maybe Text)
-cpaOrganizationName
-  = lens _cpaOrganizationName
-      (\ s a -> s{_cpaOrganizationName = a})
-
--- | The postal code. A postalCode example is a postal zip code such as
--- 10009. This is in accordance with -
--- http:\/\/portablecontacts.net\/draft-spec.html#address_element.
-cpaPostalCode :: Lens' CustomerPostalAddress (Maybe Text)
-cpaPostalCode
-  = lens _cpaPostalCode
-      (\ s a -> s{_cpaPostalCode = a})
-
--- | A customer\'s physical address. The address can be composed of one to
--- three lines.
-cpaAddressLine1 :: Lens' CustomerPostalAddress (Maybe Text)
-cpaAddressLine1
-  = lens _cpaAddressLine1
-      (\ s a -> s{_cpaAddressLine1 = a})
-
--- | Name of the locality. An example of a locality value is the city of San
--- Francisco.
-cpaLocality :: Lens' CustomerPostalAddress (Maybe Text)
-cpaLocality
-  = lens _cpaLocality (\ s a -> s{_cpaLocality = a})
-
--- | The customer contact\'s name.
-cpaContactName :: Lens' CustomerPostalAddress (Maybe Text)
-cpaContactName
-  = lens _cpaContactName
-      (\ s a -> s{_cpaContactName = a})
-
--- | Address line 2 of the address.
-cpaAddressLine2 :: Lens' CustomerPostalAddress (Maybe Text)
-cpaAddressLine2
-  = lens _cpaAddressLine2
-      (\ s a -> s{_cpaAddressLine2 = a})
-
--- | This is a required property. For countryCode information see the ISO
--- 3166 country code elements.
-cpaCountryCode :: Lens' CustomerPostalAddress (Maybe Text)
-cpaCountryCode
-  = lens _cpaCountryCode
-      (\ s a -> s{_cpaCountryCode = a})
-
--- | Name of the region. An example of a region value is NY for the state of
--- New York.
-cpaRegion :: Lens' CustomerPostalAddress (Maybe Text)
-cpaRegion
-  = lens _cpaRegion (\ s a -> s{_cpaRegion = a})
-
--- | Address line 3 of the address.
-cpaAddressLine3 :: Lens' CustomerPostalAddress (Maybe Text)
-cpaAddressLine3
-  = lens _cpaAddressLine3
-      (\ s a -> s{_cpaAddressLine3 = a})
-
-instance FromJSON CustomerPostalAddress where
-        parseJSON
-          = withObject "CustomerPostalAddress"
-              (\ o ->
-                 CustomerPostalAddress' <$>
-                   (o .:? "organizationName") <*> (o .:? "postalCode")
-                     <*> (o .:? "addressLine1")
-                     <*> (o .:? "locality")
-                     <*> (o .:? "contactName")
-                     <*> (o .:? "addressLine2")
-                     <*> (o .:? "countryCode")
-                     <*> (o .:? "region")
-                     <*> (o .:? "addressLine3"))
-
-instance ToJSON CustomerPostalAddress where
-        toJSON CustomerPostalAddress'{..}
-          = object
-              (catMaybes
-                 [("organizationName" .=) <$> _cpaOrganizationName,
-                  ("postalCode" .=) <$> _cpaPostalCode,
-                  ("addressLine1" .=) <$> _cpaAddressLine1,
-                  ("locality" .=) <$> _cpaLocality,
-                  ("contactName" .=) <$> _cpaContactName,
-                  ("addressLine2" .=) <$> _cpaAddressLine2,
-                  ("countryCode" .=) <$> _cpaCountryCode,
-                  ("region" .=) <$> _cpaRegion,
-                  ("addressLine3" .=) <$> _cpaAddressLine3])
-
--- | JSON template for roleAssignment resource in Directory API.
---
--- /See:/ 'roleAssignment' smart constructor.
-data RoleAssignment = RoleAssignment'
-    { _rolEtag             :: !(Maybe Text)
-    , _rolScopeType        :: !(Maybe Text)
-    , _rolKind             :: !Text
-    , _rolAssignedTo       :: !(Maybe Text)
-    , _rolRoleId           :: !(Maybe (Textual Int64))
-    , _rolRoleAssignmentId :: !(Maybe (Textual Int64))
-    , _rolOrgUnitId        :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RoleAssignment' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rolEtag'
---
--- * 'rolScopeType'
---
--- * 'rolKind'
---
--- * 'rolAssignedTo'
---
--- * 'rolRoleId'
---
--- * 'rolRoleAssignmentId'
---
--- * 'rolOrgUnitId'
-roleAssignment
-    :: RoleAssignment
-roleAssignment =
-    RoleAssignment'
-    { _rolEtag = Nothing
-    , _rolScopeType = Nothing
-    , _rolKind = "admin#directory#roleAssignment"
-    , _rolAssignedTo = Nothing
-    , _rolRoleId = Nothing
-    , _rolRoleAssignmentId = Nothing
-    , _rolOrgUnitId = Nothing
-    }
-
--- | ETag of the resource.
-rolEtag :: Lens' RoleAssignment (Maybe Text)
-rolEtag = lens _rolEtag (\ s a -> s{_rolEtag = a})
-
--- | The scope in which this role is assigned. Possible values are: -
--- CUSTOMER - ORG_UNIT
-rolScopeType :: Lens' RoleAssignment (Maybe Text)
-rolScopeType
-  = lens _rolScopeType (\ s a -> s{_rolScopeType = a})
-
--- | The type of the API resource. This is always
--- admin#directory#roleAssignment.
-rolKind :: Lens' RoleAssignment Text
-rolKind = lens _rolKind (\ s a -> s{_rolKind = a})
-
--- | The unique ID of the user this role is assigned to.
-rolAssignedTo :: Lens' RoleAssignment (Maybe Text)
-rolAssignedTo
-  = lens _rolAssignedTo
-      (\ s a -> s{_rolAssignedTo = a})
-
--- | The ID of the role that is assigned.
-rolRoleId :: Lens' RoleAssignment (Maybe Int64)
-rolRoleId
-  = lens _rolRoleId (\ s a -> s{_rolRoleId = a}) .
-      mapping _Coerce
-
--- | ID of this roleAssignment.
-rolRoleAssignmentId :: Lens' RoleAssignment (Maybe Int64)
-rolRoleAssignmentId
-  = lens _rolRoleAssignmentId
-      (\ s a -> s{_rolRoleAssignmentId = a})
-      . mapping _Coerce
-
--- | If the role is restricted to an organization unit, this contains the ID
--- for the organization unit the exercise of this role is restricted to.
-rolOrgUnitId :: Lens' RoleAssignment (Maybe Text)
-rolOrgUnitId
-  = lens _rolOrgUnitId (\ s a -> s{_rolOrgUnitId = a})
-
-instance FromJSON RoleAssignment where
-        parseJSON
-          = withObject "RoleAssignment"
-              (\ o ->
-                 RoleAssignment' <$>
-                   (o .:? "etag") <*> (o .:? "scopeType") <*>
-                     (o .:? "kind" .!= "admin#directory#roleAssignment")
-                     <*> (o .:? "assignedTo")
-                     <*> (o .:? "roleId")
-                     <*> (o .:? "roleAssignmentId")
-                     <*> (o .:? "orgUnitId"))
-
-instance ToJSON RoleAssignment where
-        toJSON RoleAssignment'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _rolEtag,
-                  ("scopeType" .=) <$> _rolScopeType,
-                  Just ("kind" .= _rolKind),
-                  ("assignedTo" .=) <$> _rolAssignedTo,
-                  ("roleId" .=) <$> _rolRoleId,
-                  ("roleAssignmentId" .=) <$> _rolRoleAssignmentId,
-                  ("orgUnitId" .=) <$> _rolOrgUnitId])
-
--- | JSON template for Group resource in Directory API.
---
--- /See:/ 'group'' smart constructor.
-data Group = Group'
-    { _groEmail              :: !(Maybe Text)
-    , _groEtag               :: !(Maybe Text)
-    , _groDirectMembersCount :: !(Maybe (Textual Int64))
-    , _groKind               :: !Text
-    , _groAliases            :: !(Maybe [Text])
-    , _groNonEditableAliases :: !(Maybe [Text])
-    , _groName               :: !(Maybe Text)
-    , _groAdminCreated       :: !(Maybe Bool)
-    , _groId                 :: !(Maybe Text)
-    , _groDescription        :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Group' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'groEmail'
---
--- * 'groEtag'
---
--- * 'groDirectMembersCount'
---
--- * 'groKind'
---
--- * 'groAliases'
---
--- * 'groNonEditableAliases'
---
--- * 'groName'
---
--- * 'groAdminCreated'
---
--- * 'groId'
---
--- * 'groDescription'
-group'
-    :: Group
-group' =
-    Group'
-    { _groEmail = Nothing
-    , _groEtag = Nothing
-    , _groDirectMembersCount = Nothing
-    , _groKind = "admin#directory#group"
-    , _groAliases = Nothing
-    , _groNonEditableAliases = Nothing
-    , _groName = Nothing
-    , _groAdminCreated = Nothing
-    , _groId = Nothing
-    , _groDescription = Nothing
-    }
-
--- | Email of Group
-groEmail :: Lens' Group (Maybe Text)
-groEmail = lens _groEmail (\ s a -> s{_groEmail = a})
-
--- | ETag of the resource.
-groEtag :: Lens' Group (Maybe Text)
-groEtag = lens _groEtag (\ s a -> s{_groEtag = a})
-
--- | Group direct members count
-groDirectMembersCount :: Lens' Group (Maybe Int64)
-groDirectMembersCount
-  = lens _groDirectMembersCount
-      (\ s a -> s{_groDirectMembersCount = a})
-      . mapping _Coerce
-
--- | Kind of resource this is.
-groKind :: Lens' Group Text
-groKind = lens _groKind (\ s a -> s{_groKind = a})
-
--- | List of aliases (Read-only)
-groAliases :: Lens' Group [Text]
-groAliases
-  = lens _groAliases (\ s a -> s{_groAliases = a}) .
-      _Default
-      . _Coerce
-
--- | List of non editable aliases (Read-only)
-groNonEditableAliases :: Lens' Group [Text]
-groNonEditableAliases
-  = lens _groNonEditableAliases
-      (\ s a -> s{_groNonEditableAliases = a})
-      . _Default
-      . _Coerce
-
--- | Group name
-groName :: Lens' Group (Maybe Text)
-groName = lens _groName (\ s a -> s{_groName = a})
-
--- | Is the group created by admin (Read-only) *
-groAdminCreated :: Lens' Group (Maybe Bool)
-groAdminCreated
-  = lens _groAdminCreated
-      (\ s a -> s{_groAdminCreated = a})
-
--- | Unique identifier of Group (Read-only)
-groId :: Lens' Group (Maybe Text)
-groId = lens _groId (\ s a -> s{_groId = a})
-
--- | Description of the group
-groDescription :: Lens' Group (Maybe Text)
-groDescription
-  = lens _groDescription
-      (\ s a -> s{_groDescription = a})
-
-instance FromJSON Group where
-        parseJSON
-          = withObject "Group"
-              (\ o ->
-                 Group' <$>
-                   (o .:? "email") <*> (o .:? "etag") <*>
-                     (o .:? "directMembersCount")
-                     <*> (o .:? "kind" .!= "admin#directory#group")
-                     <*> (o .:? "aliases" .!= mempty)
-                     <*> (o .:? "nonEditableAliases" .!= mempty)
-                     <*> (o .:? "name")
-                     <*> (o .:? "adminCreated")
-                     <*> (o .:? "id")
-                     <*> (o .:? "description"))
-
-instance ToJSON Group where
-        toJSON Group'{..}
-          = object
-              (catMaybes
-                 [("email" .=) <$> _groEmail,
-                  ("etag" .=) <$> _groEtag,
-                  ("directMembersCount" .=) <$> _groDirectMembersCount,
-                  Just ("kind" .= _groKind),
-                  ("aliases" .=) <$> _groAliases,
-                  ("nonEditableAliases" .=) <$> _groNonEditableAliases,
-                  ("name" .=) <$> _groName,
-                  ("adminCreated" .=) <$> _groAdminCreated,
-                  ("id" .=) <$> _groId,
-                  ("description" .=) <$> _groDescription])
-
--- | JSON template for Chrome Os Device resource in Directory API.
---
--- /See:/ 'chromeOSDevice' smart constructor.
-data ChromeOSDevice = ChromeOSDevice'
-    { _codStatus               :: !(Maybe Text)
-    , _codEtag                 :: !(Maybe Text)
-    , _codCPUStatusReports     :: !(Maybe [ChromeOSDeviceCPUStatusReportsItem])
-    , _codAnnotatedUser        :: !(Maybe Text)
-    , _codSystemRamFreeReports :: !(Maybe [ChromeOSDeviceSystemRamFreeReportsItem])
-    , _codPlatformVersion      :: !(Maybe Text)
-    , _codLastSync             :: !(Maybe DateTime')
-    , _codActiveTimeRanges     :: !(Maybe [ChromeOSDeviceActiveTimeRangesItem])
-    , _codKind                 :: !Text
-    , _codEthernetMACAddress   :: !(Maybe Text)
-    , _codLastEnrollmentTime   :: !(Maybe DateTime')
-    , _codAnnotatedLocation    :: !(Maybe Text)
-    , _codMACAddress           :: !(Maybe Text)
-    , _codOrgUnitPath          :: !(Maybe Text)
-    , _codRecentUsers          :: !(Maybe [ChromeOSDeviceRecentUsersItem])
-    , _codSupportEndDate       :: !(Maybe DateTime')
-    , _codModel                :: !(Maybe Text)
-    , _codWillAutoRenew        :: !(Maybe Bool)
-    , _codMeid                 :: !(Maybe Text)
-    , _codDeviceFiles          :: !(Maybe [ChromeOSDeviceDeviceFilesItem])
-    , _codDeviceId             :: !(Maybe Text)
-    , _codBootMode             :: !(Maybe Text)
-    , _codTpmVersionInfo       :: !(Maybe ChromeOSDeviceTpmVersionInfo)
-    , _codOrderNumber          :: !(Maybe Text)
-    , _codDiskVolumeReports    :: !(Maybe [ChromeOSDeviceDiskVolumeReportsItem])
-    , _codAnnotatedAssetId     :: !(Maybe Text)
-    , _codNotes                :: !(Maybe Text)
-    , _codSerialNumber         :: !(Maybe Text)
-    , _codFirmwareVersion      :: !(Maybe Text)
-    , _codOSVersion            :: !(Maybe Text)
-    , _codSystemRamTotal       :: !(Maybe (Textual Int64))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChromeOSDevice' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'codStatus'
---
--- * 'codEtag'
---
--- * 'codCPUStatusReports'
---
--- * 'codAnnotatedUser'
---
--- * 'codSystemRamFreeReports'
---
--- * 'codPlatformVersion'
---
--- * 'codLastSync'
---
--- * 'codActiveTimeRanges'
---
--- * 'codKind'
---
--- * 'codEthernetMACAddress'
---
--- * 'codLastEnrollmentTime'
---
--- * 'codAnnotatedLocation'
---
--- * 'codMACAddress'
---
--- * 'codOrgUnitPath'
---
--- * 'codRecentUsers'
---
--- * 'codSupportEndDate'
---
--- * 'codModel'
---
--- * 'codWillAutoRenew'
---
--- * 'codMeid'
---
--- * 'codDeviceFiles'
---
--- * 'codDeviceId'
---
--- * 'codBootMode'
---
--- * 'codTpmVersionInfo'
---
--- * 'codOrderNumber'
---
--- * 'codDiskVolumeReports'
---
--- * 'codAnnotatedAssetId'
---
--- * 'codNotes'
---
--- * 'codSerialNumber'
---
--- * 'codFirmwareVersion'
---
--- * 'codOSVersion'
---
--- * 'codSystemRamTotal'
-chromeOSDevice
-    :: ChromeOSDevice
-chromeOSDevice =
-    ChromeOSDevice'
-    { _codStatus = Nothing
-    , _codEtag = Nothing
-    , _codCPUStatusReports = Nothing
-    , _codAnnotatedUser = Nothing
-    , _codSystemRamFreeReports = Nothing
-    , _codPlatformVersion = Nothing
-    , _codLastSync = Nothing
-    , _codActiveTimeRanges = Nothing
-    , _codKind = "admin#directory#chromeosdevice"
-    , _codEthernetMACAddress = Nothing
-    , _codLastEnrollmentTime = Nothing
-    , _codAnnotatedLocation = Nothing
-    , _codMACAddress = Nothing
-    , _codOrgUnitPath = Nothing
-    , _codRecentUsers = Nothing
-    , _codSupportEndDate = Nothing
-    , _codModel = Nothing
-    , _codWillAutoRenew = Nothing
-    , _codMeid = Nothing
-    , _codDeviceFiles = Nothing
-    , _codDeviceId = Nothing
-    , _codBootMode = Nothing
-    , _codTpmVersionInfo = Nothing
-    , _codOrderNumber = Nothing
-    , _codDiskVolumeReports = Nothing
-    , _codAnnotatedAssetId = Nothing
-    , _codNotes = Nothing
-    , _codSerialNumber = Nothing
-    , _codFirmwareVersion = Nothing
-    , _codOSVersion = Nothing
-    , _codSystemRamTotal = Nothing
-    }
-
--- | status of the device (Read-only)
-codStatus :: Lens' ChromeOSDevice (Maybe Text)
-codStatus
-  = lens _codStatus (\ s a -> s{_codStatus = a})
-
--- | ETag of the resource.
-codEtag :: Lens' ChromeOSDevice (Maybe Text)
-codEtag = lens _codEtag (\ s a -> s{_codEtag = a})
-
--- | Reports of CPU utilization and temperature (Read-only)
-codCPUStatusReports :: Lens' ChromeOSDevice [ChromeOSDeviceCPUStatusReportsItem]
-codCPUStatusReports
-  = lens _codCPUStatusReports
-      (\ s a -> s{_codCPUStatusReports = a})
-      . _Default
-      . _Coerce
-
--- | User of the device
-codAnnotatedUser :: Lens' ChromeOSDevice (Maybe Text)
-codAnnotatedUser
-  = lens _codAnnotatedUser
-      (\ s a -> s{_codAnnotatedUser = a})
-
--- | Reports of amounts of available RAM memory (Read-only)
-codSystemRamFreeReports :: Lens' ChromeOSDevice [ChromeOSDeviceSystemRamFreeReportsItem]
-codSystemRamFreeReports
-  = lens _codSystemRamFreeReports
-      (\ s a -> s{_codSystemRamFreeReports = a})
-      . _Default
-      . _Coerce
-
--- | Chromebook platform version (Read-only)
-codPlatformVersion :: Lens' ChromeOSDevice (Maybe Text)
-codPlatformVersion
-  = lens _codPlatformVersion
-      (\ s a -> s{_codPlatformVersion = a})
-
--- | Date and time the device was last synchronized with the policy settings
--- in the G Suite administrator control panel (Read-only)
-codLastSync :: Lens' ChromeOSDevice (Maybe UTCTime)
-codLastSync
-  = lens _codLastSync (\ s a -> s{_codLastSync = a}) .
-      mapping _DateTime
-
--- | List of active time ranges (Read-only)
-codActiveTimeRanges :: Lens' ChromeOSDevice [ChromeOSDeviceActiveTimeRangesItem]
-codActiveTimeRanges
-  = lens _codActiveTimeRanges
-      (\ s a -> s{_codActiveTimeRanges = a})
-      . _Default
-      . _Coerce
-
--- | Kind of resource this is.
-codKind :: Lens' ChromeOSDevice Text
-codKind = lens _codKind (\ s a -> s{_codKind = a})
-
--- | Chromebook Mac Address on ethernet network interface (Read-only)
-codEthernetMACAddress :: Lens' ChromeOSDevice (Maybe Text)
-codEthernetMACAddress
-  = lens _codEthernetMACAddress
-      (\ s a -> s{_codEthernetMACAddress = a})
-
--- | Date and time the device was last enrolled (Read-only)
-codLastEnrollmentTime :: Lens' ChromeOSDevice (Maybe UTCTime)
-codLastEnrollmentTime
-  = lens _codLastEnrollmentTime
-      (\ s a -> s{_codLastEnrollmentTime = a})
-      . mapping _DateTime
-
--- | Address or location of the device as noted by the administrator
-codAnnotatedLocation :: Lens' ChromeOSDevice (Maybe Text)
-codAnnotatedLocation
-  = lens _codAnnotatedLocation
-      (\ s a -> s{_codAnnotatedLocation = a})
-
--- | Chromebook Mac Address on wifi network interface (Read-only)
-codMACAddress :: Lens' ChromeOSDevice (Maybe Text)
-codMACAddress
-  = lens _codMACAddress
-      (\ s a -> s{_codMACAddress = a})
-
--- | OrgUnit of the device
-codOrgUnitPath :: Lens' ChromeOSDevice (Maybe Text)
-codOrgUnitPath
-  = lens _codOrgUnitPath
-      (\ s a -> s{_codOrgUnitPath = a})
-
--- | List of recent device users, in descending order by last login time
--- (Read-only)
-codRecentUsers :: Lens' ChromeOSDevice [ChromeOSDeviceRecentUsersItem]
-codRecentUsers
-  = lens _codRecentUsers
-      (\ s a -> s{_codRecentUsers = a})
-      . _Default
-      . _Coerce
-
--- | Final date the device will be supported (Read-only)
-codSupportEndDate :: Lens' ChromeOSDevice (Maybe UTCTime)
-codSupportEndDate
-  = lens _codSupportEndDate
-      (\ s a -> s{_codSupportEndDate = a})
-      . mapping _DateTime
-
--- | Chromebook Model (Read-only)
-codModel :: Lens' ChromeOSDevice (Maybe Text)
-codModel = lens _codModel (\ s a -> s{_codModel = a})
-
--- | Will Chromebook auto renew after support end date (Read-only)
-codWillAutoRenew :: Lens' ChromeOSDevice (Maybe Bool)
-codWillAutoRenew
-  = lens _codWillAutoRenew
-      (\ s a -> s{_codWillAutoRenew = a})
-
--- | Mobile Equipment identifier for the 3G mobile card in the Chromebook
--- (Read-only)
-codMeid :: Lens' ChromeOSDevice (Maybe Text)
-codMeid = lens _codMeid (\ s a -> s{_codMeid = a})
-
--- | List of device files to download (Read-only)
-codDeviceFiles :: Lens' ChromeOSDevice [ChromeOSDeviceDeviceFilesItem]
-codDeviceFiles
-  = lens _codDeviceFiles
-      (\ s a -> s{_codDeviceFiles = a})
-      . _Default
-      . _Coerce
-
--- | Unique identifier of Chrome OS Device (Read-only)
-codDeviceId :: Lens' ChromeOSDevice (Maybe Text)
-codDeviceId
-  = lens _codDeviceId (\ s a -> s{_codDeviceId = a})
-
--- | Chromebook boot mode (Read-only)
-codBootMode :: Lens' ChromeOSDevice (Maybe Text)
-codBootMode
-  = lens _codBootMode (\ s a -> s{_codBootMode = a})
-
--- | Trusted Platform Module (TPM) (Read-only)
-codTpmVersionInfo :: Lens' ChromeOSDevice (Maybe ChromeOSDeviceTpmVersionInfo)
-codTpmVersionInfo
-  = lens _codTpmVersionInfo
-      (\ s a -> s{_codTpmVersionInfo = a})
-
--- | Chromebook order number (Read-only)
-codOrderNumber :: Lens' ChromeOSDevice (Maybe Text)
-codOrderNumber
-  = lens _codOrderNumber
-      (\ s a -> s{_codOrderNumber = a})
-
--- | Reports of disk space and other info about mounted\/connected volumes.
-codDiskVolumeReports :: Lens' ChromeOSDevice [ChromeOSDeviceDiskVolumeReportsItem]
-codDiskVolumeReports
-  = lens _codDiskVolumeReports
-      (\ s a -> s{_codDiskVolumeReports = a})
-      . _Default
-      . _Coerce
-
--- | AssetId specified during enrollment or through later annotation
-codAnnotatedAssetId :: Lens' ChromeOSDevice (Maybe Text)
-codAnnotatedAssetId
-  = lens _codAnnotatedAssetId
-      (\ s a -> s{_codAnnotatedAssetId = a})
-
--- | Notes added by the administrator
-codNotes :: Lens' ChromeOSDevice (Maybe Text)
-codNotes = lens _codNotes (\ s a -> s{_codNotes = a})
-
--- | Chromebook serial number (Read-only)
-codSerialNumber :: Lens' ChromeOSDevice (Maybe Text)
-codSerialNumber
-  = lens _codSerialNumber
-      (\ s a -> s{_codSerialNumber = a})
-
--- | Chromebook firmware version (Read-only)
-codFirmwareVersion :: Lens' ChromeOSDevice (Maybe Text)
-codFirmwareVersion
-  = lens _codFirmwareVersion
-      (\ s a -> s{_codFirmwareVersion = a})
-
--- | Chromebook Os Version (Read-only)
-codOSVersion :: Lens' ChromeOSDevice (Maybe Text)
-codOSVersion
-  = lens _codOSVersion (\ s a -> s{_codOSVersion = a})
-
--- | Total RAM on the device [in bytes] (Read-only)
-codSystemRamTotal :: Lens' ChromeOSDevice (Maybe Int64)
-codSystemRamTotal
-  = lens _codSystemRamTotal
-      (\ s a -> s{_codSystemRamTotal = a})
-      . mapping _Coerce
-
-instance FromJSON ChromeOSDevice where
-        parseJSON
-          = withObject "ChromeOSDevice"
-              (\ o ->
-                 ChromeOSDevice' <$>
-                   (o .:? "status") <*> (o .:? "etag") <*>
-                     (o .:? "cpuStatusReports" .!= mempty)
-                     <*> (o .:? "annotatedUser")
-                     <*> (o .:? "systemRamFreeReports" .!= mempty)
-                     <*> (o .:? "platformVersion")
-                     <*> (o .:? "lastSync")
-                     <*> (o .:? "activeTimeRanges" .!= mempty)
-                     <*>
-                     (o .:? "kind" .!= "admin#directory#chromeosdevice")
-                     <*> (o .:? "ethernetMacAddress")
-                     <*> (o .:? "lastEnrollmentTime")
-                     <*> (o .:? "annotatedLocation")
-                     <*> (o .:? "macAddress")
-                     <*> (o .:? "orgUnitPath")
-                     <*> (o .:? "recentUsers" .!= mempty)
-                     <*> (o .:? "supportEndDate")
-                     <*> (o .:? "model")
-                     <*> (o .:? "willAutoRenew")
-                     <*> (o .:? "meid")
-                     <*> (o .:? "deviceFiles" .!= mempty)
-                     <*> (o .:? "deviceId")
-                     <*> (o .:? "bootMode")
-                     <*> (o .:? "tpmVersionInfo")
-                     <*> (o .:? "orderNumber")
-                     <*> (o .:? "diskVolumeReports" .!= mempty)
-                     <*> (o .:? "annotatedAssetId")
-                     <*> (o .:? "notes")
-                     <*> (o .:? "serialNumber")
-                     <*> (o .:? "firmwareVersion")
-                     <*> (o .:? "osVersion")
-                     <*> (o .:? "systemRamTotal"))
-
-instance ToJSON ChromeOSDevice where
-        toJSON ChromeOSDevice'{..}
-          = object
-              (catMaybes
-                 [("status" .=) <$> _codStatus,
-                  ("etag" .=) <$> _codEtag,
-                  ("cpuStatusReports" .=) <$> _codCPUStatusReports,
-                  ("annotatedUser" .=) <$> _codAnnotatedUser,
-                  ("systemRamFreeReports" .=) <$>
-                    _codSystemRamFreeReports,
-                  ("platformVersion" .=) <$> _codPlatformVersion,
-                  ("lastSync" .=) <$> _codLastSync,
-                  ("activeTimeRanges" .=) <$> _codActiveTimeRanges,
-                  Just ("kind" .= _codKind),
-                  ("ethernetMacAddress" .=) <$> _codEthernetMACAddress,
-                  ("lastEnrollmentTime" .=) <$> _codLastEnrollmentTime,
-                  ("annotatedLocation" .=) <$> _codAnnotatedLocation,
-                  ("macAddress" .=) <$> _codMACAddress,
-                  ("orgUnitPath" .=) <$> _codOrgUnitPath,
-                  ("recentUsers" .=) <$> _codRecentUsers,
-                  ("supportEndDate" .=) <$> _codSupportEndDate,
-                  ("model" .=) <$> _codModel,
-                  ("willAutoRenew" .=) <$> _codWillAutoRenew,
-                  ("meid" .=) <$> _codMeid,
-                  ("deviceFiles" .=) <$> _codDeviceFiles,
-                  ("deviceId" .=) <$> _codDeviceId,
-                  ("bootMode" .=) <$> _codBootMode,
-                  ("tpmVersionInfo" .=) <$> _codTpmVersionInfo,
-                  ("orderNumber" .=) <$> _codOrderNumber,
-                  ("diskVolumeReports" .=) <$> _codDiskVolumeReports,
-                  ("annotatedAssetId" .=) <$> _codAnnotatedAssetId,
-                  ("notes" .=) <$> _codNotes,
-                  ("serialNumber" .=) <$> _codSerialNumber,
-                  ("firmwareVersion" .=) <$> _codFirmwareVersion,
-                  ("osVersion" .=) <$> _codOSVersion,
-                  ("systemRamTotal" .=) <$> _codSystemRamTotal])
-
--- | JSON response template for List Users operation in Apps Directory API.
---
--- /See:/ 'users' smart constructor.
-data Users = Users'
-    { _uEtag          :: !(Maybe Text)
-    , _uNextPageToken :: !(Maybe Text)
-    , _uUsers         :: !(Maybe [User])
-    , _uKind          :: !Text
-    , _uTriggerEvent  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Users' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uEtag'
---
--- * 'uNextPageToken'
---
--- * 'uUsers'
---
--- * 'uKind'
---
--- * 'uTriggerEvent'
-users
-    :: Users
-users =
-    Users'
-    { _uEtag = Nothing
-    , _uNextPageToken = Nothing
-    , _uUsers = Nothing
-    , _uKind = "admin#directory#users"
-    , _uTriggerEvent = Nothing
-    }
-
--- | ETag of the resource.
-uEtag :: Lens' Users (Maybe Text)
-uEtag = lens _uEtag (\ s a -> s{_uEtag = a})
-
--- | Token used to access next page of this result.
-uNextPageToken :: Lens' Users (Maybe Text)
-uNextPageToken
-  = lens _uNextPageToken
-      (\ s a -> s{_uNextPageToken = a})
-
--- | List of user objects.
-uUsers :: Lens' Users [User]
-uUsers
-  = lens _uUsers (\ s a -> s{_uUsers = a}) . _Default .
-      _Coerce
-
--- | Kind of resource this is.
-uKind :: Lens' Users Text
-uKind = lens _uKind (\ s a -> s{_uKind = a})
-
--- | Event that triggered this response (only used in case of Push Response)
-uTriggerEvent :: Lens' Users (Maybe Text)
-uTriggerEvent
-  = lens _uTriggerEvent
-      (\ s a -> s{_uTriggerEvent = a})
-
-instance FromJSON Users where
-        parseJSON
-          = withObject "Users"
-              (\ o ->
-                 Users' <$>
-                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
-                     (o .:? "users" .!= mempty)
-                     <*> (o .:? "kind" .!= "admin#directory#users")
-                     <*> (o .:? "trigger_event"))
-
-instance ToJSON Users where
-        toJSON Users'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _uEtag,
-                  ("nextPageToken" .=) <$> _uNextPageToken,
-                  ("users" .=) <$> _uUsers, Just ("kind" .= _uKind),
-                  ("trigger_event" .=) <$> _uTriggerEvent])
-
--- | The template that returns individual ASP (Access Code) data.
---
--- /See:/ 'asp' smart constructor.
-data Asp = Asp'
-    { _aCreationTime :: !(Maybe (Textual Int64))
-    , _aEtag         :: !(Maybe Text)
-    , _aCodeId       :: !(Maybe (Textual Int32))
-    , _aKind         :: !Text
-    , _aName         :: !(Maybe Text)
-    , _aLastTimeUsed :: !(Maybe (Textual Int64))
-    , _aUserKey      :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Asp' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aCreationTime'
---
--- * 'aEtag'
---
--- * 'aCodeId'
---
--- * 'aKind'
---
--- * 'aName'
---
--- * 'aLastTimeUsed'
---
--- * 'aUserKey'
-asp
-    :: Asp
-asp =
-    Asp'
-    { _aCreationTime = Nothing
-    , _aEtag = Nothing
-    , _aCodeId = Nothing
-    , _aKind = "admin#directory#asp"
-    , _aName = Nothing
-    , _aLastTimeUsed = Nothing
-    , _aUserKey = Nothing
-    }
-
--- | The time when the ASP was created. Expressed in Unix time format.
-aCreationTime :: Lens' Asp (Maybe Int64)
-aCreationTime
-  = lens _aCreationTime
-      (\ s a -> s{_aCreationTime = a})
-      . mapping _Coerce
-
--- | ETag of the ASP.
-aEtag :: Lens' Asp (Maybe Text)
-aEtag = lens _aEtag (\ s a -> s{_aEtag = a})
-
--- | The unique ID of the ASP.
-aCodeId :: Lens' Asp (Maybe Int32)
-aCodeId
-  = lens _aCodeId (\ s a -> s{_aCodeId = a}) .
-      mapping _Coerce
-
--- | The type of the API resource. This is always admin#directory#asp.
-aKind :: Lens' Asp Text
-aKind = lens _aKind (\ s a -> s{_aKind = a})
-
--- | The name of the application that the user, represented by their userId,
--- entered when the ASP was created.
-aName :: Lens' Asp (Maybe Text)
-aName = lens _aName (\ s a -> s{_aName = a})
-
--- | The time when the ASP was last used. Expressed in Unix time format.
-aLastTimeUsed :: Lens' Asp (Maybe Int64)
-aLastTimeUsed
-  = lens _aLastTimeUsed
-      (\ s a -> s{_aLastTimeUsed = a})
-      . mapping _Coerce
-
--- | The unique ID of the user who issued the ASP.
-aUserKey :: Lens' Asp (Maybe Text)
-aUserKey = lens _aUserKey (\ s a -> s{_aUserKey = a})
-
-instance FromJSON Asp where
-        parseJSON
-          = withObject "Asp"
-              (\ o ->
-                 Asp' <$>
-                   (o .:? "creationTime") <*> (o .:? "etag") <*>
-                     (o .:? "codeId")
-                     <*> (o .:? "kind" .!= "admin#directory#asp")
-                     <*> (o .:? "name")
-                     <*> (o .:? "lastTimeUsed")
-                     <*> (o .:? "userKey"))
-
-instance ToJSON Asp where
-        toJSON Asp'{..}
-          = object
-              (catMaybes
-                 [("creationTime" .=) <$> _aCreationTime,
-                  ("etag" .=) <$> _aEtag, ("codeId" .=) <$> _aCodeId,
-                  Just ("kind" .= _aKind), ("name" .=) <$> _aName,
-                  ("lastTimeUsed" .=) <$> _aLastTimeUsed,
-                  ("userKey" .=) <$> _aUserKey])
-
--- | JSON response template for List Schema operation in Directory API.
---
--- /See:/ 'schemas' smart constructor.
-data Schemas = Schemas'
-    { _sEtag    :: !(Maybe Text)
-    , _sSchemas :: !(Maybe [Schema])
-    , _sKind    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Schemas' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sEtag'
---
--- * 'sSchemas'
---
--- * 'sKind'
-schemas
-    :: Schemas
-schemas =
-    Schemas'
-    { _sEtag = Nothing
-    , _sSchemas = Nothing
-    , _sKind = "admin#directory#schemas"
-    }
-
--- | ETag of the resource.
-sEtag :: Lens' Schemas (Maybe Text)
-sEtag = lens _sEtag (\ s a -> s{_sEtag = a})
-
--- | List of UserSchema objects.
-sSchemas :: Lens' Schemas [Schema]
-sSchemas
-  = lens _sSchemas (\ s a -> s{_sSchemas = a}) .
-      _Default
-      . _Coerce
-
--- | Kind of resource this is.
-sKind :: Lens' Schemas Text
-sKind = lens _sKind (\ s a -> s{_sKind = a})
-
-instance FromJSON Schemas where
-        parseJSON
-          = withObject "Schemas"
-              (\ o ->
-                 Schemas' <$>
-                   (o .:? "etag") <*> (o .:? "schemas" .!= mempty) <*>
-                     (o .:? "kind" .!= "admin#directory#schemas"))
-
-instance ToJSON Schemas where
-        toJSON Schemas'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _sEtag,
-                  ("schemas" .=) <$> _sSchemas,
-                  Just ("kind" .= _sKind)])
-
---
--- /See:/ 'chromeOSDeviceDeviceFilesItem' smart constructor.
-data ChromeOSDeviceDeviceFilesItem = ChromeOSDeviceDeviceFilesItem'
-    { _coddfiName        :: !(Maybe Text)
-    , _coddfiDownloadURL :: !(Maybe Text)
-    , _coddfiType        :: !(Maybe Text)
-    , _coddfiCreateTime  :: !(Maybe DateTime')
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChromeOSDeviceDeviceFilesItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'coddfiName'
---
--- * 'coddfiDownloadURL'
---
--- * 'coddfiType'
---
--- * 'coddfiCreateTime'
-chromeOSDeviceDeviceFilesItem
-    :: ChromeOSDeviceDeviceFilesItem
-chromeOSDeviceDeviceFilesItem =
-    ChromeOSDeviceDeviceFilesItem'
-    { _coddfiName = Nothing
-    , _coddfiDownloadURL = Nothing
-    , _coddfiType = Nothing
-    , _coddfiCreateTime = Nothing
-    }
-
--- | File name
-coddfiName :: Lens' ChromeOSDeviceDeviceFilesItem (Maybe Text)
-coddfiName
-  = lens _coddfiName (\ s a -> s{_coddfiName = a})
-
--- | File download URL
-coddfiDownloadURL :: Lens' ChromeOSDeviceDeviceFilesItem (Maybe Text)
-coddfiDownloadURL
-  = lens _coddfiDownloadURL
-      (\ s a -> s{_coddfiDownloadURL = a})
-
--- | File type
-coddfiType :: Lens' ChromeOSDeviceDeviceFilesItem (Maybe Text)
-coddfiType
-  = lens _coddfiType (\ s a -> s{_coddfiType = a})
-
--- | Date and time the file was created
-coddfiCreateTime :: Lens' ChromeOSDeviceDeviceFilesItem (Maybe UTCTime)
-coddfiCreateTime
-  = lens _coddfiCreateTime
-      (\ s a -> s{_coddfiCreateTime = a})
-      . mapping _DateTime
-
-instance FromJSON ChromeOSDeviceDeviceFilesItem where
-        parseJSON
-          = withObject "ChromeOSDeviceDeviceFilesItem"
-              (\ o ->
-                 ChromeOSDeviceDeviceFilesItem' <$>
-                   (o .:? "name") <*> (o .:? "downloadUrl") <*>
-                     (o .:? "type")
-                     <*> (o .:? "createTime"))
-
-instance ToJSON ChromeOSDeviceDeviceFilesItem where
-        toJSON ChromeOSDeviceDeviceFilesItem'{..}
-          = object
-              (catMaybes
-                 [("name" .=) <$> _coddfiName,
-                  ("downloadUrl" .=) <$> _coddfiDownloadURL,
-                  ("type" .=) <$> _coddfiType,
-                  ("createTime" .=) <$> _coddfiCreateTime])
-
--- | JSON template for Building List Response object in Directory API.
---
--- /See:/ 'buildings' smart constructor.
-data Buildings = Buildings'
-    { _bEtag          :: !(Maybe Text)
-    , _bNextPageToken :: !(Maybe Text)
-    , _bBuildings     :: !(Maybe [Building])
-    , _bKind          :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Buildings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bEtag'
---
--- * 'bNextPageToken'
---
--- * 'bBuildings'
---
--- * 'bKind'
-buildings
-    :: Buildings
-buildings =
-    Buildings'
-    { _bEtag = Nothing
-    , _bNextPageToken = Nothing
-    , _bBuildings = Nothing
-    , _bKind = "admin#directory#resources#buildings#buildingsList"
-    }
-
--- | ETag of the resource.
-bEtag :: Lens' Buildings (Maybe Text)
-bEtag = lens _bEtag (\ s a -> s{_bEtag = a})
-
--- | 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' Buildings (Maybe Text)
-bNextPageToken
-  = lens _bNextPageToken
-      (\ s a -> s{_bNextPageToken = a})
-
--- | The Buildings in this page of results.
-bBuildings :: Lens' Buildings [Building]
-bBuildings
-  = lens _bBuildings (\ s a -> s{_bBuildings = a}) .
-      _Default
-      . _Coerce
-
--- | Kind of resource this is.
-bKind :: Lens' Buildings Text
-bKind = lens _bKind (\ s a -> s{_bKind = a})
-
-instance FromJSON Buildings where
-        parseJSON
-          = withObject "Buildings"
-              (\ o ->
-                 Buildings' <$>
-                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
-                     (o .:? "buildings" .!= mempty)
-                     <*>
-                     (o .:? "kind" .!=
-                        "admin#directory#resources#buildings#buildingsList"))
-
-instance ToJSON Buildings where
-        toJSON Buildings'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _bEtag,
-                  ("nextPageToken" .=) <$> _bNextPageToken,
-                  ("buildings" .=) <$> _bBuildings,
-                  Just ("kind" .= _bKind)])
-
--- | Template for a notification resource.
---
--- /See:/ 'notification' smart constructor.
-data Notification = Notification'
-    { _nSubject        :: !(Maybe Text)
-    , _nEtag           :: !(Maybe Text)
-    , _nKind           :: !Text
-    , _nBody           :: !(Maybe Text)
-    , _nFromAddress    :: !(Maybe Text)
-    , _nIsUnread       :: !(Maybe Bool)
-    , _nNotificationId :: !(Maybe Text)
-    , _nSendTime       :: !(Maybe DateTime')
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Notification' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'nSubject'
---
--- * 'nEtag'
---
--- * 'nKind'
---
--- * 'nBody'
---
--- * 'nFromAddress'
---
--- * 'nIsUnread'
---
--- * 'nNotificationId'
---
--- * 'nSendTime'
-notification
-    :: Notification
-notification =
-    Notification'
-    { _nSubject = Nothing
-    , _nEtag = Nothing
-    , _nKind = "admin#directory#notification"
-    , _nBody = Nothing
-    , _nFromAddress = Nothing
-    , _nIsUnread = Nothing
-    , _nNotificationId = Nothing
-    , _nSendTime = Nothing
-    }
-
--- | Subject of the notification (Read-only)
-nSubject :: Lens' Notification (Maybe Text)
-nSubject = lens _nSubject (\ s a -> s{_nSubject = a})
-
--- | ETag of the resource.
-nEtag :: Lens' Notification (Maybe Text)
-nEtag = lens _nEtag (\ s a -> s{_nEtag = a})
-
--- | The type of the resource.
-nKind :: Lens' Notification Text
-nKind = lens _nKind (\ s a -> s{_nKind = a})
-
--- | Body of the notification (Read-only)
-nBody :: Lens' Notification (Maybe Text)
-nBody = lens _nBody (\ s a -> s{_nBody = a})
-
--- | Address from which the notification is received (Read-only)
-nFromAddress :: Lens' Notification (Maybe Text)
-nFromAddress
-  = lens _nFromAddress (\ s a -> s{_nFromAddress = a})
-
--- | Boolean indicating whether the notification is unread or not.
-nIsUnread :: Lens' Notification (Maybe Bool)
-nIsUnread
-  = lens _nIsUnread (\ s a -> s{_nIsUnread = a})
-
-nNotificationId :: Lens' Notification (Maybe Text)
-nNotificationId
-  = lens _nNotificationId
-      (\ s a -> s{_nNotificationId = a})
-
--- | Time at which notification was sent (Read-only)
-nSendTime :: Lens' Notification (Maybe UTCTime)
-nSendTime
-  = lens _nSendTime (\ s a -> s{_nSendTime = a}) .
-      mapping _DateTime
-
-instance FromJSON Notification where
-        parseJSON
-          = withObject "Notification"
-              (\ o ->
-                 Notification' <$>
-                   (o .:? "subject") <*> (o .:? "etag") <*>
-                     (o .:? "kind" .!= "admin#directory#notification")
-                     <*> (o .:? "body")
-                     <*> (o .:? "fromAddress")
-                     <*> (o .:? "isUnread")
-                     <*> (o .:? "notificationId")
-                     <*> (o .:? "sendTime"))
-
-instance ToJSON Notification where
-        toJSON Notification'{..}
-          = object
-              (catMaybes
-                 [("subject" .=) <$> _nSubject,
-                  ("etag" .=) <$> _nEtag, Just ("kind" .= _nKind),
-                  ("body" .=) <$> _nBody,
-                  ("fromAddress" .=) <$> _nFromAddress,
-                  ("isUnread" .=) <$> _nIsUnread,
-                  ("notificationId" .=) <$> _nNotificationId,
-                  ("sendTime" .=) <$> _nSendTime])
-
--- | JSON template for instant messenger of an user.
---
--- /See:/ 'userIm' smart constructor.
-data UserIm = UserIm'
-    { _uiIm             :: !(Maybe Text)
-    , _uiProtocol       :: !(Maybe Text)
-    , _uiPrimary        :: !(Maybe Bool)
-    , _uiCustomProtocol :: !(Maybe Text)
-    , _uiType           :: !(Maybe Text)
-    , _uiCustomType     :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserIm' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uiIm'
---
--- * 'uiProtocol'
---
--- * 'uiPrimary'
---
--- * 'uiCustomProtocol'
---
--- * 'uiType'
---
--- * 'uiCustomType'
-userIm
-    :: UserIm
-userIm =
-    UserIm'
-    { _uiIm = Nothing
-    , _uiProtocol = Nothing
-    , _uiPrimary = Nothing
-    , _uiCustomProtocol = Nothing
-    , _uiType = Nothing
-    , _uiCustomType = Nothing
-    }
-
--- | Instant messenger id.
-uiIm :: Lens' UserIm (Maybe Text)
-uiIm = lens _uiIm (\ s a -> s{_uiIm = a})
-
--- | Protocol used in the instant messenger. It should be one of the values
--- from ImProtocolTypes map. Similar to type, it can take a CUSTOM value
--- and specify the custom name in customProtocol field.
-uiProtocol :: Lens' UserIm (Maybe Text)
-uiProtocol
-  = lens _uiProtocol (\ s a -> s{_uiProtocol = a})
-
--- | If this is user\'s primary im. Only one entry could be marked as
--- primary.
-uiPrimary :: Lens' UserIm (Maybe Bool)
-uiPrimary
-  = lens _uiPrimary (\ s a -> s{_uiPrimary = a})
-
--- | Custom protocol.
-uiCustomProtocol :: Lens' UserIm (Maybe Text)
-uiCustomProtocol
-  = lens _uiCustomProtocol
-      (\ s a -> s{_uiCustomProtocol = a})
-
--- | Each entry can have a type which indicates standard types of that entry.
--- For example instant messengers could be of home, work etc. In addition
--- to the standard type, an entry can have a custom type and can take any
--- value. Such types should have the CUSTOM value as type and also have a
--- customType value.
-uiType :: Lens' UserIm (Maybe Text)
-uiType = lens _uiType (\ s a -> s{_uiType = a})
-
--- | Custom type.
-uiCustomType :: Lens' UserIm (Maybe Text)
-uiCustomType
-  = lens _uiCustomType (\ s a -> s{_uiCustomType = a})
-
-instance FromJSON UserIm where
-        parseJSON
-          = withObject "UserIm"
-              (\ o ->
-                 UserIm' <$>
-                   (o .:? "im") <*> (o .:? "protocol") <*>
-                     (o .:? "primary")
-                     <*> (o .:? "customProtocol")
-                     <*> (o .:? "type")
-                     <*> (o .:? "customType"))
-
-instance ToJSON UserIm where
-        toJSON UserIm'{..}
-          = object
-              (catMaybes
-                 [("im" .=) <$> _uiIm,
-                  ("protocol" .=) <$> _uiProtocol,
-                  ("primary" .=) <$> _uiPrimary,
-                  ("customProtocol" .=) <$> _uiCustomProtocol,
-                  ("type" .=) <$> _uiType,
-                  ("customType" .=) <$> _uiCustomType])
-
--- | JSON response template for List tokens operation in Directory API.
---
--- /See:/ 'tokens' smart constructor.
-data Tokens = Tokens'
-    { _tEtag  :: !(Maybe Text)
-    , _tKind  :: !Text
-    , _tItems :: !(Maybe [Token])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Tokens' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tEtag'
---
--- * 'tKind'
---
--- * 'tItems'
-tokens
-    :: Tokens
-tokens =
-    Tokens'
-    { _tEtag = Nothing
-    , _tKind = "admin#directory#tokenList"
-    , _tItems = Nothing
-    }
-
--- | ETag of the resource.
-tEtag :: Lens' Tokens (Maybe Text)
-tEtag = lens _tEtag (\ s a -> s{_tEtag = a})
-
--- | The type of the API resource. This is always admin#directory#tokenList.
-tKind :: Lens' Tokens Text
-tKind = lens _tKind (\ s a -> s{_tKind = a})
-
--- | A list of Token resources.
-tItems :: Lens' Tokens [Token]
-tItems
-  = lens _tItems (\ s a -> s{_tItems = a}) . _Default .
-      _Coerce
-
-instance FromJSON Tokens where
-        parseJSON
-          = withObject "Tokens"
-              (\ o ->
-                 Tokens' <$>
-                   (o .:? "etag") <*>
-                     (o .:? "kind" .!= "admin#directory#tokenList")
-                     <*> (o .:? "items" .!= mempty))
-
-instance ToJSON Tokens where
-        toJSON Tokens'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _tEtag, Just ("kind" .= _tKind),
-                  ("items" .=) <$> _tItems])
-
--- | Custom fields of the user.
---
--- /See:/ 'userCustomSchemas' smart constructor.
-newtype UserCustomSchemas = UserCustomSchemas'
-    { _ucsAddtional :: HashMap Text UserCustomProperties
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserCustomSchemas' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ucsAddtional'
-userCustomSchemas
-    :: HashMap Text UserCustomProperties -- ^ 'ucsAddtional'
-    -> UserCustomSchemas
-userCustomSchemas pUcsAddtional_ =
-    UserCustomSchemas'
-    { _ucsAddtional = _Coerce # pUcsAddtional_
-    }
-
-ucsAddtional :: Lens' UserCustomSchemas (HashMap Text UserCustomProperties)
-ucsAddtional
-  = lens _ucsAddtional (\ s a -> s{_ucsAddtional = a})
-      . _Coerce
-
-instance FromJSON UserCustomSchemas where
-        parseJSON
-          = withObject "UserCustomSchemas"
-              (\ o -> UserCustomSchemas' <$> (parseJSONObject o))
-
-instance ToJSON UserCustomSchemas where
-        toJSON = toJSON . _ucsAddtional
-
--- | JSON template for a keyword entry.
---
--- /See:/ 'userKeyword' smart constructor.
-data UserKeyword = UserKeyword'
-    { _ukValue      :: !(Maybe Text)
-    , _ukType       :: !(Maybe Text)
-    , _ukCustomType :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserKeyword' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ukValue'
---
--- * 'ukType'
---
--- * 'ukCustomType'
-userKeyword
-    :: UserKeyword
-userKeyword =
-    UserKeyword'
-    { _ukValue = Nothing
-    , _ukType = Nothing
-    , _ukCustomType = Nothing
-    }
-
--- | Keyword.
-ukValue :: Lens' UserKeyword (Maybe Text)
-ukValue = lens _ukValue (\ s a -> s{_ukValue = a})
-
--- | Each entry can have a type which indicates standard type of that entry.
--- For example, keyword could be of type occupation or outlook. In addition
--- to the standard type, an entry can have a custom type and can give it
--- any name. Such types should have the CUSTOM value as type and also have
--- a customType value.
-ukType :: Lens' UserKeyword (Maybe Text)
-ukType = lens _ukType (\ s a -> s{_ukType = a})
-
--- | Custom Type.
-ukCustomType :: Lens' UserKeyword (Maybe Text)
-ukCustomType
-  = lens _ukCustomType (\ s a -> s{_ukCustomType = a})
-
-instance FromJSON UserKeyword where
-        parseJSON
-          = withObject "UserKeyword"
-              (\ o ->
-                 UserKeyword' <$>
-                   (o .:? "value") <*> (o .:? "type") <*>
-                     (o .:? "customType"))
-
-instance ToJSON UserKeyword where
-        toJSON UserKeyword'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _ukValue, ("type" .=) <$> _ukType,
-                  ("customType" .=) <$> _ukCustomType])
-
--- | JSON response template to list domain aliases in Directory API.
---
--- /See:/ 'domainAliases' smart constructor.
-data DomainAliases = DomainAliases'
-    { _daEtag          :: !(Maybe Text)
-    , _daKind          :: !Text
-    , _daDomainAliases :: !(Maybe [DomainAlias])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DomainAliases' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'daEtag'
---
--- * 'daKind'
---
--- * 'daDomainAliases'
-domainAliases
-    :: DomainAliases
-domainAliases =
-    DomainAliases'
-    { _daEtag = Nothing
-    , _daKind = "admin#directory#domainAliases"
-    , _daDomainAliases = Nothing
-    }
-
--- | ETag of the resource.
-daEtag :: Lens' DomainAliases (Maybe Text)
-daEtag = lens _daEtag (\ s a -> s{_daEtag = a})
-
--- | Kind of resource this is.
-daKind :: Lens' DomainAliases Text
-daKind = lens _daKind (\ s a -> s{_daKind = a})
-
--- | List of domain alias objects.
-daDomainAliases :: Lens' DomainAliases [DomainAlias]
-daDomainAliases
-  = lens _daDomainAliases
-      (\ s a -> s{_daDomainAliases = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON DomainAliases where
-        parseJSON
-          = withObject "DomainAliases"
-              (\ o ->
-                 DomainAliases' <$>
-                   (o .:? "etag") <*>
-                     (o .:? "kind" .!= "admin#directory#domainAliases")
-                     <*> (o .:? "domainAliases" .!= mempty))
-
-instance ToJSON DomainAliases where
-        toJSON DomainAliases'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _daEtag, Just ("kind" .= _daKind),
-                  ("domainAliases" .=) <$> _daDomainAliases])
-
--- | JSON response template to list aliases in Directory API.
---
--- /See:/ 'aliases' smart constructor.
-data Aliases = Aliases'
-    { _aliEtag    :: !(Maybe Text)
-    , _aliKind    :: !Text
-    , _aliAliases :: !(Maybe [JSONValue])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Aliases' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aliEtag'
---
--- * 'aliKind'
---
--- * 'aliAliases'
-aliases
-    :: Aliases
-aliases =
-    Aliases'
-    { _aliEtag = Nothing
-    , _aliKind = "admin#directory#aliases"
-    , _aliAliases = Nothing
-    }
-
--- | ETag of the resource.
-aliEtag :: Lens' Aliases (Maybe Text)
-aliEtag = lens _aliEtag (\ s a -> s{_aliEtag = a})
-
--- | Kind of resource this is.
-aliKind :: Lens' Aliases Text
-aliKind = lens _aliKind (\ s a -> s{_aliKind = a})
-
--- | List of alias objects.
-aliAliases :: Lens' Aliases [JSONValue]
-aliAliases
-  = lens _aliAliases (\ s a -> s{_aliAliases = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON Aliases where
-        parseJSON
-          = withObject "Aliases"
-              (\ o ->
-                 Aliases' <$>
-                   (o .:? "etag") <*>
-                     (o .:? "kind" .!= "admin#directory#aliases")
-                     <*> (o .:? "aliases" .!= mempty))
-
-instance ToJSON Aliases where
-        toJSON Aliases'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _aliEtag, Just ("kind" .= _aliKind),
-                  ("aliases" .=) <$> _aliAliases])
-
--- | JSON template for Calendar Resource object in Directory API.
---
--- /See:/ 'calendarResource' smart constructor.
-data CalendarResource = CalendarResource'
-    { _crEtags                  :: !(Maybe Text)
-    , _crResourceId             :: !(Maybe Text)
-    , _crResourceType           :: !(Maybe Text)
-    , _crResourceName           :: !(Maybe Text)
-    , _crKind                   :: !Text
-    , _crBuildingId             :: !(Maybe Text)
-    , _crFeatureInstances       :: !(Maybe JSONValue)
-    , _crResourceEmail          :: !(Maybe Text)
-    , _crCapacity               :: !(Maybe (Textual Int32))
-    , _crResourceDescription    :: !(Maybe Text)
-    , _crFloorName              :: !(Maybe Text)
-    , _crGeneratedResourceName  :: !(Maybe Text)
-    , _crResourceCategory       :: !(Maybe Text)
-    , _crFloorSection           :: !(Maybe Text)
-    , _crUserVisibleDescription :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CalendarResource' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'crEtags'
---
--- * 'crResourceId'
---
--- * 'crResourceType'
---
--- * 'crResourceName'
---
--- * 'crKind'
---
--- * 'crBuildingId'
---
--- * 'crFeatureInstances'
---
--- * 'crResourceEmail'
---
--- * 'crCapacity'
---
--- * 'crResourceDescription'
---
--- * 'crFloorName'
---
--- * 'crGeneratedResourceName'
---
--- * 'crResourceCategory'
---
--- * 'crFloorSection'
---
--- * 'crUserVisibleDescription'
-calendarResource
-    :: CalendarResource
-calendarResource =
-    CalendarResource'
-    { _crEtags = Nothing
-    , _crResourceId = Nothing
-    , _crResourceType = Nothing
-    , _crResourceName = Nothing
-    , _crKind = "admin#directory#resources#calendars#CalendarResource"
-    , _crBuildingId = Nothing
-    , _crFeatureInstances = Nothing
-    , _crResourceEmail = Nothing
-    , _crCapacity = Nothing
-    , _crResourceDescription = Nothing
-    , _crFloorName = Nothing
-    , _crGeneratedResourceName = Nothing
-    , _crResourceCategory = Nothing
-    , _crFloorSection = Nothing
-    , _crUserVisibleDescription = Nothing
-    }
-
--- | ETag of the resource.
-crEtags :: Lens' CalendarResource (Maybe Text)
-crEtags = lens _crEtags (\ s a -> s{_crEtags = a})
-
--- | The unique ID for the calendar resource.
-crResourceId :: Lens' CalendarResource (Maybe Text)
-crResourceId
-  = lens _crResourceId (\ s a -> s{_crResourceId = a})
-
--- | The type of the calendar resource, intended for non-room resources.
-crResourceType :: Lens' CalendarResource (Maybe Text)
-crResourceType
-  = lens _crResourceType
-      (\ s a -> s{_crResourceType = a})
-
--- | The name of the calendar resource. For example, \"Training Room 1A\".
-crResourceName :: Lens' CalendarResource (Maybe Text)
-crResourceName
-  = lens _crResourceName
-      (\ s a -> s{_crResourceName = a})
-
--- | The type of the resource. For calendar resources, the value is
--- admin#directory#resources#calendars#CalendarResource.
-crKind :: Lens' CalendarResource Text
-crKind = lens _crKind (\ s a -> s{_crKind = a})
-
--- | Unique ID for the building a resource is located in.
-crBuildingId :: Lens' CalendarResource (Maybe Text)
-crBuildingId
-  = lens _crBuildingId (\ s a -> s{_crBuildingId = a})
-
-crFeatureInstances :: Lens' CalendarResource (Maybe JSONValue)
-crFeatureInstances
-  = lens _crFeatureInstances
-      (\ s a -> s{_crFeatureInstances = a})
-
--- | The read-only email for the calendar resource. Generated as part of
--- creating a new calendar resource.
-crResourceEmail :: Lens' CalendarResource (Maybe Text)
-crResourceEmail
-  = lens _crResourceEmail
-      (\ s a -> s{_crResourceEmail = a})
-
--- | Capacity of a resource, number of seats in a room.
-crCapacity :: Lens' CalendarResource (Maybe Int32)
-crCapacity
-  = lens _crCapacity (\ s a -> s{_crCapacity = a}) .
-      mapping _Coerce
-
--- | Description of the resource, visible only to admins.
-crResourceDescription :: Lens' CalendarResource (Maybe Text)
-crResourceDescription
-  = lens _crResourceDescription
-      (\ s a -> s{_crResourceDescription = a})
-
--- | Name of the floor a resource is located on.
-crFloorName :: Lens' CalendarResource (Maybe Text)
-crFloorName
-  = lens _crFloorName (\ s a -> s{_crFloorName = a})
-
--- | The read-only auto-generated name of the calendar resource which
--- includes metadata about the resource such as building name, floor,
--- capacity, etc. For example, \"NYC-2-Training Room 1A (16)\".
-crGeneratedResourceName :: Lens' CalendarResource (Maybe Text)
-crGeneratedResourceName
-  = lens _crGeneratedResourceName
-      (\ s a -> s{_crGeneratedResourceName = a})
-
--- | The category of the calendar resource. Either CONFERENCE_ROOM or OTHER.
--- Legacy data is set to CATEGORY_UNKNOWN.
-crResourceCategory :: Lens' CalendarResource (Maybe Text)
-crResourceCategory
-  = lens _crResourceCategory
-      (\ s a -> s{_crResourceCategory = a})
-
--- | Name of the section within a floor a resource is located in.
-crFloorSection :: Lens' CalendarResource (Maybe Text)
-crFloorSection
-  = lens _crFloorSection
-      (\ s a -> s{_crFloorSection = a})
-
--- | Description of the resource, visible to users and admins.
-crUserVisibleDescription :: Lens' CalendarResource (Maybe Text)
-crUserVisibleDescription
-  = lens _crUserVisibleDescription
-      (\ s a -> s{_crUserVisibleDescription = a})
-
-instance FromJSON CalendarResource where
-        parseJSON
-          = withObject "CalendarResource"
-              (\ o ->
-                 CalendarResource' <$>
-                   (o .:? "etags") <*> (o .:? "resourceId") <*>
-                     (o .:? "resourceType")
-                     <*> (o .:? "resourceName")
-                     <*>
-                     (o .:? "kind" .!=
-                        "admin#directory#resources#calendars#CalendarResource")
-                     <*> (o .:? "buildingId")
-                     <*> (o .:? "featureInstances")
-                     <*> (o .:? "resourceEmail")
-                     <*> (o .:? "capacity")
-                     <*> (o .:? "resourceDescription")
-                     <*> (o .:? "floorName")
-                     <*> (o .:? "generatedResourceName")
-                     <*> (o .:? "resourceCategory")
-                     <*> (o .:? "floorSection")
-                     <*> (o .:? "userVisibleDescription"))
-
-instance ToJSON CalendarResource where
-        toJSON CalendarResource'{..}
-          = object
-              (catMaybes
-                 [("etags" .=) <$> _crEtags,
-                  ("resourceId" .=) <$> _crResourceId,
-                  ("resourceType" .=) <$> _crResourceType,
-                  ("resourceName" .=) <$> _crResourceName,
-                  Just ("kind" .= _crKind),
-                  ("buildingId" .=) <$> _crBuildingId,
-                  ("featureInstances" .=) <$> _crFeatureInstances,
-                  ("resourceEmail" .=) <$> _crResourceEmail,
-                  ("capacity" .=) <$> _crCapacity,
-                  ("resourceDescription" .=) <$>
-                    _crResourceDescription,
-                  ("floorName" .=) <$> _crFloorName,
-                  ("generatedResourceName" .=) <$>
-                    _crGeneratedResourceName,
-                  ("resourceCategory" .=) <$> _crResourceCategory,
-                  ("floorSection" .=) <$> _crFloorSection,
-                  ("userVisibleDescription" .=) <$>
-                    _crUserVisibleDescription])
-
--- | JSON request template to undelete a user in Directory API.
---
--- /See:/ 'userUndelete' smart constructor.
-newtype UserUndelete = UserUndelete'
-    { _uuOrgUnitPath :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserUndelete' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uuOrgUnitPath'
-userUndelete
-    :: UserUndelete
-userUndelete =
-    UserUndelete'
-    { _uuOrgUnitPath = Nothing
-    }
-
--- | OrgUnit of User
-uuOrgUnitPath :: Lens' UserUndelete (Maybe Text)
-uuOrgUnitPath
-  = lens _uuOrgUnitPath
-      (\ s a -> s{_uuOrgUnitPath = a})
-
-instance FromJSON UserUndelete where
-        parseJSON
-          = withObject "UserUndelete"
-              (\ o -> UserUndelete' <$> (o .:? "orgUnitPath"))
-
-instance ToJSON UserUndelete where
-        toJSON UserUndelete'{..}
-          = object
-              (catMaybes [("orgUnitPath" .=) <$> _uuOrgUnitPath])
-
--- | JSON response template for List Members operation in Directory API.
---
--- /See:/ 'members' smart constructor.
-data Members = Members'
-    { _mEtag          :: !(Maybe Text)
-    , _mNextPageToken :: !(Maybe Text)
-    , _mKind          :: !Text
-    , _mMembers       :: !(Maybe [Member])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Members' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mEtag'
---
--- * 'mNextPageToken'
---
--- * 'mKind'
---
--- * 'mMembers'
-members
-    :: Members
-members =
-    Members'
-    { _mEtag = Nothing
-    , _mNextPageToken = Nothing
-    , _mKind = "admin#directory#members"
-    , _mMembers = Nothing
-    }
-
--- | ETag of the resource.
-mEtag :: Lens' Members (Maybe Text)
-mEtag = lens _mEtag (\ s a -> s{_mEtag = a})
-
--- | Token used to access next page of this result.
-mNextPageToken :: Lens' Members (Maybe Text)
-mNextPageToken
-  = lens _mNextPageToken
-      (\ s a -> s{_mNextPageToken = a})
-
--- | Kind of resource this is.
-mKind :: Lens' Members Text
-mKind = lens _mKind (\ s a -> s{_mKind = a})
-
--- | List of member objects.
-mMembers :: Lens' Members [Member]
-mMembers
-  = lens _mMembers (\ s a -> s{_mMembers = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON Members where
-        parseJSON
-          = withObject "Members"
-              (\ o ->
-                 Members' <$>
-                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "admin#directory#members")
-                     <*> (o .:? "members" .!= mempty))
-
-instance ToJSON Members where
-        toJSON Members'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _mEtag,
-                  ("nextPageToken" .=) <$> _mNextPageToken,
-                  Just ("kind" .= _mKind),
-                  ("members" .=) <$> _mMembers])
-
--- | An notification channel used to watch for resource changes.
---
--- /See:/ 'channel' smart constructor.
-data Channel = Channel'
-    { _cResourceURI :: !(Maybe Text)
-    , _cResourceId  :: !(Maybe Text)
-    , _cKind        :: !Text
-    , _cExpiration  :: !(Maybe (Textual Int64))
-    , _cToken       :: !(Maybe Text)
-    , _cAddress     :: !(Maybe Text)
-    , _cPayload     :: !(Maybe Bool)
-    , _cParams      :: !(Maybe ChannelParams)
-    , _cId          :: !(Maybe Text)
-    , _cType        :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Channel' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cResourceURI'
---
--- * 'cResourceId'
---
--- * 'cKind'
---
--- * 'cExpiration'
---
--- * 'cToken'
---
--- * 'cAddress'
---
--- * 'cPayload'
---
--- * 'cParams'
---
--- * 'cId'
---
--- * 'cType'
-channel
-    :: Channel
-channel =
-    Channel'
-    { _cResourceURI = Nothing
-    , _cResourceId = Nothing
-    , _cKind = "api#channel"
-    , _cExpiration = Nothing
-    , _cToken = Nothing
-    , _cAddress = Nothing
-    , _cPayload = Nothing
-    , _cParams = Nothing
-    , _cId = Nothing
-    , _cType = Nothing
-    }
-
--- | A version-specific identifier for the watched resource.
-cResourceURI :: Lens' Channel (Maybe Text)
-cResourceURI
-  = lens _cResourceURI (\ s a -> s{_cResourceURI = a})
-
--- | An opaque ID that identifies the resource being watched on this channel.
--- Stable across different API versions.
-cResourceId :: Lens' Channel (Maybe Text)
-cResourceId
-  = lens _cResourceId (\ s a -> s{_cResourceId = a})
-
--- | Identifies this as a notification channel used to watch for changes to a
--- resource. Value: the fixed string \"api#channel\".
-cKind :: Lens' Channel Text
-cKind = lens _cKind (\ s a -> s{_cKind = a})
-
--- | Date and time of notification channel expiration, expressed as a Unix
--- timestamp, in milliseconds. Optional.
-cExpiration :: Lens' Channel (Maybe Int64)
-cExpiration
-  = lens _cExpiration (\ s a -> s{_cExpiration = a}) .
-      mapping _Coerce
-
--- | An arbitrary string delivered to the target address with each
--- notification delivered over this channel. Optional.
-cToken :: Lens' Channel (Maybe Text)
-cToken = lens _cToken (\ s a -> s{_cToken = a})
-
--- | The address where notifications are delivered for this channel.
-cAddress :: Lens' Channel (Maybe Text)
-cAddress = lens _cAddress (\ s a -> s{_cAddress = a})
-
--- | A Boolean value to indicate whether payload is wanted. Optional.
-cPayload :: Lens' Channel (Maybe Bool)
-cPayload = lens _cPayload (\ s a -> s{_cPayload = a})
-
--- | Additional parameters controlling delivery channel behavior. Optional.
-cParams :: Lens' Channel (Maybe ChannelParams)
-cParams = lens _cParams (\ s a -> s{_cParams = a})
-
--- | A UUID or similar unique string that identifies this channel.
-cId :: Lens' Channel (Maybe Text)
-cId = lens _cId (\ s a -> s{_cId = a})
-
--- | The type of delivery mechanism used for this channel.
-cType :: Lens' Channel (Maybe Text)
-cType = lens _cType (\ s a -> s{_cType = a})
-
-instance FromJSON Channel where
-        parseJSON
-          = withObject "Channel"
-              (\ o ->
-                 Channel' <$>
-                   (o .:? "resourceUri") <*> (o .:? "resourceId") <*>
-                     (o .:? "kind" .!= "api#channel")
-                     <*> (o .:? "expiration")
-                     <*> (o .:? "token")
-                     <*> (o .:? "address")
-                     <*> (o .:? "payload")
-                     <*> (o .:? "params")
-                     <*> (o .:? "id")
-                     <*> (o .:? "type"))
-
-instance ToJSON Channel where
-        toJSON Channel'{..}
-          = object
-              (catMaybes
-                 [("resourceUri" .=) <$> _cResourceURI,
-                  ("resourceId" .=) <$> _cResourceId,
-                  Just ("kind" .= _cKind),
-                  ("expiration" .=) <$> _cExpiration,
-                  ("token" .=) <$> _cToken,
-                  ("address" .=) <$> _cAddress,
-                  ("payload" .=) <$> _cPayload,
-                  ("params" .=) <$> _cParams, ("id" .=) <$> _cId,
-                  ("type" .=) <$> _cType])
-
--- | JSON response template for List Mobile Devices operation in Directory
--- API.
---
--- /See:/ 'mobileDevices' smart constructor.
-data MobileDevices = MobileDevices'
-    { _mdEtag          :: !(Maybe Text)
-    , _mdNextPageToken :: !(Maybe Text)
-    , _mdKind          :: !Text
-    , _mdMobileDevices :: !(Maybe [MobileDevice])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MobileDevices' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mdEtag'
---
--- * 'mdNextPageToken'
---
--- * 'mdKind'
---
--- * 'mdMobileDevices'
-mobileDevices
-    :: MobileDevices
-mobileDevices =
-    MobileDevices'
-    { _mdEtag = Nothing
-    , _mdNextPageToken = Nothing
-    , _mdKind = "admin#directory#mobiledevices"
-    , _mdMobileDevices = Nothing
-    }
-
--- | ETag of the resource.
-mdEtag :: Lens' MobileDevices (Maybe Text)
-mdEtag = lens _mdEtag (\ s a -> s{_mdEtag = a})
-
--- | Token used to access next page of this result.
-mdNextPageToken :: Lens' MobileDevices (Maybe Text)
-mdNextPageToken
-  = lens _mdNextPageToken
-      (\ s a -> s{_mdNextPageToken = a})
-
--- | Kind of resource this is.
-mdKind :: Lens' MobileDevices Text
-mdKind = lens _mdKind (\ s a -> s{_mdKind = a})
-
--- | List of Mobile Device objects.
-mdMobileDevices :: Lens' MobileDevices [MobileDevice]
-mdMobileDevices
-  = lens _mdMobileDevices
-      (\ s a -> s{_mdMobileDevices = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON MobileDevices where
-        parseJSON
-          = withObject "MobileDevices"
-              (\ o ->
-                 MobileDevices' <$>
-                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "admin#directory#mobiledevices")
-                     <*> (o .:? "mobiledevices" .!= mempty))
-
-instance ToJSON MobileDevices where
-        toJSON MobileDevices'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _mdEtag,
-                  ("nextPageToken" .=) <$> _mdNextPageToken,
-                  Just ("kind" .= _mdKind),
-                  ("mobiledevices" .=) <$> _mdMobileDevices])
-
--- | JSON template for token resource in Directory API.
---
--- /See:/ 'token' smart constructor.
-data Token = Token'
-    { _tokClientId    :: !(Maybe Text)
-    , _tokEtag        :: !(Maybe Text)
-    , _tokDisplayText :: !(Maybe Text)
-    , _tokKind        :: !Text
-    , _tokScopes      :: !(Maybe [Text])
-    , _tokNATiveApp   :: !(Maybe Bool)
-    , _tokAnonymous   :: !(Maybe Bool)
-    , _tokUserKey     :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Token' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tokClientId'
---
--- * 'tokEtag'
---
--- * 'tokDisplayText'
---
--- * 'tokKind'
---
--- * 'tokScopes'
---
--- * 'tokNATiveApp'
---
--- * 'tokAnonymous'
---
--- * 'tokUserKey'
-token
-    :: Token
-token =
-    Token'
-    { _tokClientId = Nothing
-    , _tokEtag = Nothing
-    , _tokDisplayText = Nothing
-    , _tokKind = "admin#directory#token"
-    , _tokScopes = Nothing
-    , _tokNATiveApp = Nothing
-    , _tokAnonymous = Nothing
-    , _tokUserKey = Nothing
-    }
-
--- | The Client ID of the application the token is issued to.
-tokClientId :: Lens' Token (Maybe Text)
-tokClientId
-  = lens _tokClientId (\ s a -> s{_tokClientId = a})
-
--- | ETag of the resource.
-tokEtag :: Lens' Token (Maybe Text)
-tokEtag = lens _tokEtag (\ s a -> s{_tokEtag = a})
-
--- | The displayable name of the application the token is issued to.
-tokDisplayText :: Lens' Token (Maybe Text)
-tokDisplayText
-  = lens _tokDisplayText
-      (\ s a -> s{_tokDisplayText = a})
-
--- | The type of the API resource. This is always admin#directory#token.
-tokKind :: Lens' Token Text
-tokKind = lens _tokKind (\ s a -> s{_tokKind = a})
-
--- | A list of authorization scopes the application is granted.
-tokScopes :: Lens' Token [Text]
-tokScopes
-  = lens _tokScopes (\ s a -> s{_tokScopes = a}) .
-      _Default
-      . _Coerce
-
--- | Whether the token is issued to an installed application. The value is
--- true if the application is installed to a desktop or mobile device.
-tokNATiveApp :: Lens' Token (Maybe Bool)
-tokNATiveApp
-  = lens _tokNATiveApp (\ s a -> s{_tokNATiveApp = a})
-
--- | Whether the application is registered with Google. The value is true if
--- the application has an anonymous Client ID.
-tokAnonymous :: Lens' Token (Maybe Bool)
-tokAnonymous
-  = lens _tokAnonymous (\ s a -> s{_tokAnonymous = a})
-
--- | The unique ID of the user that issued the token.
-tokUserKey :: Lens' Token (Maybe Text)
-tokUserKey
-  = lens _tokUserKey (\ s a -> s{_tokUserKey = a})
-
-instance FromJSON Token where
-        parseJSON
-          = withObject "Token"
-              (\ o ->
-                 Token' <$>
-                   (o .:? "clientId") <*> (o .:? "etag") <*>
-                     (o .:? "displayText")
-                     <*> (o .:? "kind" .!= "admin#directory#token")
-                     <*> (o .:? "scopes" .!= mempty)
-                     <*> (o .:? "nativeApp")
-                     <*> (o .:? "anonymous")
-                     <*> (o .:? "userKey"))
-
-instance ToJSON Token where
-        toJSON Token'{..}
-          = object
-              (catMaybes
-                 [("clientId" .=) <$> _tokClientId,
-                  ("etag" .=) <$> _tokEtag,
-                  ("displayText" .=) <$> _tokDisplayText,
-                  Just ("kind" .= _tokKind),
-                  ("scopes" .=) <$> _tokScopes,
-                  ("nativeApp" .=) <$> _tokNATiveApp,
-                  ("anonymous" .=) <$> _tokAnonymous,
-                  ("userKey" .=) <$> _tokUserKey])
-
--- | JSON template for name of a user in Directory API.
---
--- /See:/ 'userName' smart constructor.
-data UserName = UserName'
-    { _unGivenName  :: !(Maybe Text)
-    , _unFullName   :: !(Maybe Text)
-    , _unFamilyName :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserName' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'unGivenName'
---
--- * 'unFullName'
---
--- * 'unFamilyName'
-userName
-    :: UserName
-userName =
-    UserName'
-    { _unGivenName = Nothing
-    , _unFullName = Nothing
-    , _unFamilyName = Nothing
-    }
-
--- | First Name
-unGivenName :: Lens' UserName (Maybe Text)
-unGivenName
-  = lens _unGivenName (\ s a -> s{_unGivenName = a})
-
--- | Full Name
-unFullName :: Lens' UserName (Maybe Text)
-unFullName
-  = lens _unFullName (\ s a -> s{_unFullName = a})
-
--- | Last Name
-unFamilyName :: Lens' UserName (Maybe Text)
-unFamilyName
-  = lens _unFamilyName (\ s a -> s{_unFamilyName = a})
-
-instance FromJSON UserName where
-        parseJSON
-          = withObject "UserName"
-              (\ o ->
-                 UserName' <$>
-                   (o .:? "givenName") <*> (o .:? "fullName") <*>
-                     (o .:? "familyName"))
-
-instance ToJSON UserName where
-        toJSON UserName'{..}
-          = object
-              (catMaybes
-                 [("givenName" .=) <$> _unGivenName,
-                  ("fullName" .=) <$> _unFullName,
-                  ("familyName" .=) <$> _unFamilyName])
-
--- | JSON template for Building object in Directory API.
---
--- /See:/ 'building' smart constructor.
-data Building = Building'
-    { _buiEtags        :: !(Maybe Text)
-    , _buiKind         :: !Text
-    , _buiBuildingId   :: !(Maybe Text)
-    , _buiCoordinates  :: !(Maybe BuildingCoordinates)
-    , _buiBuildingName :: !(Maybe Text)
-    , _buiFloorNames   :: !(Maybe [Text])
-    , _buiDescription  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Building' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'buiEtags'
---
--- * 'buiKind'
---
--- * 'buiBuildingId'
---
--- * 'buiCoordinates'
---
--- * 'buiBuildingName'
---
--- * 'buiFloorNames'
---
--- * 'buiDescription'
-building
-    :: Building
-building =
-    Building'
-    { _buiEtags = Nothing
-    , _buiKind = "admin#directory#resources#buildings#Building"
-    , _buiBuildingId = Nothing
-    , _buiCoordinates = Nothing
-    , _buiBuildingName = Nothing
-    , _buiFloorNames = Nothing
-    , _buiDescription = Nothing
-    }
-
--- | ETag of the resource.
-buiEtags :: Lens' Building (Maybe Text)
-buiEtags = lens _buiEtags (\ s a -> s{_buiEtags = a})
-
--- | Kind of resource this is.
-buiKind :: Lens' Building Text
-buiKind = lens _buiKind (\ s a -> s{_buiKind = a})
-
--- | Unique identifier for the building. The maximum length is 100
--- characters.
-buiBuildingId :: Lens' Building (Maybe Text)
-buiBuildingId
-  = lens _buiBuildingId
-      (\ s a -> s{_buiBuildingId = a})
-
--- | The geographic coordinates of the center of the building, expressed as
--- latitude and longitude in decimal degrees.
-buiCoordinates :: Lens' Building (Maybe BuildingCoordinates)
-buiCoordinates
-  = lens _buiCoordinates
-      (\ s a -> s{_buiCoordinates = a})
-
--- | The building name as seen by users in Calendar. Must be unique for the
--- customer. For example, \"NYC-CHEL\". The maximum length is 100
--- characters.
-buiBuildingName :: Lens' Building (Maybe Text)
-buiBuildingName
-  = lens _buiBuildingName
-      (\ s a -> s{_buiBuildingName = a})
-
--- | The display names for all floors in this building. The floors are
--- expected to be sorted in ascending order, from lowest floor to highest
--- floor. For example, [\"B2\", \"B1\", \"L\", \"1\", \"2\", \"2M\", \"3\",
--- \"PH\"] Must contain at least one entry.
-buiFloorNames :: Lens' Building [Text]
-buiFloorNames
-  = lens _buiFloorNames
-      (\ s a -> s{_buiFloorNames = a})
-      . _Default
-      . _Coerce
-
--- | A brief description of the building. For example, \"Chelsea Market\".
-buiDescription :: Lens' Building (Maybe Text)
-buiDescription
-  = lens _buiDescription
-      (\ s a -> s{_buiDescription = a})
-
-instance FromJSON Building where
-        parseJSON
-          = withObject "Building"
-              (\ o ->
-                 Building' <$>
-                   (o .:? "etags") <*>
-                     (o .:? "kind" .!=
-                        "admin#directory#resources#buildings#Building")
-                     <*> (o .:? "buildingId")
-                     <*> (o .:? "coordinates")
-                     <*> (o .:? "buildingName")
-                     <*> (o .:? "floorNames" .!= mempty)
-                     <*> (o .:? "description"))
-
-instance ToJSON Building where
-        toJSON Building'{..}
-          = object
-              (catMaybes
-                 [("etags" .=) <$> _buiEtags,
-                  Just ("kind" .= _buiKind),
-                  ("buildingId" .=) <$> _buiBuildingId,
-                  ("coordinates" .=) <$> _buiCoordinates,
-                  ("buildingName" .=) <$> _buiBuildingName,
-                  ("floorNames" .=) <$> _buiFloorNames,
-                  ("description" .=) <$> _buiDescription])
-
---
--- /See:/ 'chromeOSDeviceRecentUsersItem' smart constructor.
-data ChromeOSDeviceRecentUsersItem = ChromeOSDeviceRecentUsersItem'
-    { _codruiEmail :: !(Maybe Text)
-    , _codruiType  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChromeOSDeviceRecentUsersItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'codruiEmail'
---
--- * 'codruiType'
-chromeOSDeviceRecentUsersItem
-    :: ChromeOSDeviceRecentUsersItem
-chromeOSDeviceRecentUsersItem =
-    ChromeOSDeviceRecentUsersItem'
-    { _codruiEmail = Nothing
-    , _codruiType = Nothing
-    }
-
--- | Email address of the user. Present only if the user type is managed
-codruiEmail :: Lens' ChromeOSDeviceRecentUsersItem (Maybe Text)
-codruiEmail
-  = lens _codruiEmail (\ s a -> s{_codruiEmail = a})
-
--- | The type of the user
-codruiType :: Lens' ChromeOSDeviceRecentUsersItem (Maybe Text)
-codruiType
-  = lens _codruiType (\ s a -> s{_codruiType = a})
-
-instance FromJSON ChromeOSDeviceRecentUsersItem where
-        parseJSON
-          = withObject "ChromeOSDeviceRecentUsersItem"
-              (\ o ->
-                 ChromeOSDeviceRecentUsersItem' <$>
-                   (o .:? "email") <*> (o .:? "type"))
-
-instance ToJSON ChromeOSDeviceRecentUsersItem where
-        toJSON ChromeOSDeviceRecentUsersItem'{..}
-          = object
-              (catMaybes
-                 [("email" .=) <$> _codruiEmail,
-                  ("type" .=) <$> _codruiType])
-
--- | JSON template for Domain Alias object in Directory API.
---
--- /See:/ 'domainAlias' smart constructor.
-data DomainAlias = DomainAlias'
-    { _dCreationTime     :: !(Maybe (Textual Int64))
-    , _dEtag             :: !(Maybe Text)
-    , _dKind             :: !Text
-    , _dVerified         :: !(Maybe Bool)
-    , _dDomainAliasName  :: !(Maybe Text)
-    , _dParentDomainName :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DomainAlias' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dCreationTime'
---
--- * 'dEtag'
---
--- * 'dKind'
---
--- * 'dVerified'
---
--- * 'dDomainAliasName'
---
--- * 'dParentDomainName'
-domainAlias
-    :: DomainAlias
-domainAlias =
-    DomainAlias'
-    { _dCreationTime = Nothing
-    , _dEtag = Nothing
-    , _dKind = "admin#directory#domainAlias"
-    , _dVerified = Nothing
-    , _dDomainAliasName = Nothing
-    , _dParentDomainName = Nothing
-    }
-
--- | The creation time of the domain alias. (Read-only).
-dCreationTime :: Lens' DomainAlias (Maybe Int64)
-dCreationTime
-  = lens _dCreationTime
-      (\ s a -> s{_dCreationTime = a})
-      . mapping _Coerce
-
--- | ETag of the resource.
-dEtag :: Lens' DomainAlias (Maybe Text)
-dEtag = lens _dEtag (\ s a -> s{_dEtag = a})
-
--- | Kind of resource this is.
-dKind :: Lens' DomainAlias Text
-dKind = lens _dKind (\ s a -> s{_dKind = a})
-
--- | Indicates the verification state of a domain alias. (Read-only)
-dVerified :: Lens' DomainAlias (Maybe Bool)
-dVerified
-  = lens _dVerified (\ s a -> s{_dVerified = a})
-
--- | The domain alias name.
-dDomainAliasName :: Lens' DomainAlias (Maybe Text)
-dDomainAliasName
-  = lens _dDomainAliasName
-      (\ s a -> s{_dDomainAliasName = a})
-
--- | The parent domain name that the domain alias is associated with. This
--- can either be a primary or secondary domain name within a customer.
-dParentDomainName :: Lens' DomainAlias (Maybe Text)
-dParentDomainName
-  = lens _dParentDomainName
-      (\ s a -> s{_dParentDomainName = a})
-
-instance FromJSON DomainAlias where
-        parseJSON
-          = withObject "DomainAlias"
-              (\ o ->
-                 DomainAlias' <$>
-                   (o .:? "creationTime") <*> (o .:? "etag") <*>
-                     (o .:? "kind" .!= "admin#directory#domainAlias")
-                     <*> (o .:? "verified")
-                     <*> (o .:? "domainAliasName")
-                     <*> (o .:? "parentDomainName"))
-
-instance ToJSON DomainAlias where
-        toJSON DomainAlias'{..}
-          = object
-              (catMaybes
-                 [("creationTime" .=) <$> _dCreationTime,
-                  ("etag" .=) <$> _dEtag, Just ("kind" .= _dKind),
-                  ("verified" .=) <$> _dVerified,
-                  ("domainAliasName" .=) <$> _dDomainAliasName,
-                  ("parentDomainName" .=) <$> _dParentDomainName])
-
---
--- /See:/ 'userGender' smart constructor.
-data UserGender = UserGender'
-    { _ugAddressMeAs  :: !(Maybe Text)
-    , _ugCustomGender :: !(Maybe Text)
-    , _ugType         :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserGender' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ugAddressMeAs'
---
--- * 'ugCustomGender'
---
--- * 'ugType'
-userGender
-    :: UserGender
-userGender =
-    UserGender'
-    { _ugAddressMeAs = Nothing
-    , _ugCustomGender = Nothing
-    , _ugType = Nothing
-    }
-
--- | AddressMeAs. A human-readable string containing the proper way to refer
--- to the profile owner by humans, for example \"he\/him\/his\" or
--- \"they\/them\/their\".
-ugAddressMeAs :: Lens' UserGender (Maybe Text)
-ugAddressMeAs
-  = lens _ugAddressMeAs
-      (\ s a -> s{_ugAddressMeAs = a})
-
--- | Custom gender.
-ugCustomGender :: Lens' UserGender (Maybe Text)
-ugCustomGender
-  = lens _ugCustomGender
-      (\ s a -> s{_ugCustomGender = a})
-
--- | Gender.
-ugType :: Lens' UserGender (Maybe Text)
-ugType = lens _ugType (\ s a -> s{_ugType = a})
-
-instance FromJSON UserGender where
-        parseJSON
-          = withObject "UserGender"
-              (\ o ->
-                 UserGender' <$>
-                   (o .:? "addressMeAs") <*> (o .:? "customGender") <*>
-                     (o .:? "type"))
-
-instance ToJSON UserGender where
-        toJSON UserGender'{..}
-          = object
-              (catMaybes
-                 [("addressMeAs" .=) <$> _ugAddressMeAs,
-                  ("customGender" .=) <$> _ugCustomGender,
-                  ("type" .=) <$> _ugType])
-
--- | JSON template for Alias object in Directory API.
---
--- /See:/ 'alias' smart constructor.
-data Alias = Alias'
-    { _aaEtag         :: !(Maybe Text)
-    , _aaKind         :: !Text
-    , _aaAlias        :: !(Maybe Text)
-    , _aaId           :: !(Maybe Text)
-    , _aaPrimaryEmail :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Alias' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aaEtag'
---
--- * 'aaKind'
---
--- * 'aaAlias'
---
--- * 'aaId'
---
--- * 'aaPrimaryEmail'
-alias
-    :: Alias
-alias =
-    Alias'
-    { _aaEtag = Nothing
-    , _aaKind = "admin#directory#alias"
-    , _aaAlias = Nothing
-    , _aaId = Nothing
-    , _aaPrimaryEmail = Nothing
-    }
-
--- | ETag of the resource.
-aaEtag :: Lens' Alias (Maybe Text)
-aaEtag = lens _aaEtag (\ s a -> s{_aaEtag = a})
-
--- | Kind of resource this is.
-aaKind :: Lens' Alias Text
-aaKind = lens _aaKind (\ s a -> s{_aaKind = a})
-
--- | A alias email
-aaAlias :: Lens' Alias (Maybe Text)
-aaAlias = lens _aaAlias (\ s a -> s{_aaAlias = a})
-
--- | Unique id of the group (Read-only) Unique id of the user (Read-only)
-aaId :: Lens' Alias (Maybe Text)
-aaId = lens _aaId (\ s a -> s{_aaId = a})
-
--- | Group\'s primary email (Read-only) User\'s primary email (Read-only)
-aaPrimaryEmail :: Lens' Alias (Maybe Text)
-aaPrimaryEmail
-  = lens _aaPrimaryEmail
-      (\ s a -> s{_aaPrimaryEmail = a})
-
-instance FromJSON Alias where
-        parseJSON
-          = withObject "Alias"
-              (\ o ->
-                 Alias' <$>
-                   (o .:? "etag") <*>
-                     (o .:? "kind" .!= "admin#directory#alias")
-                     <*> (o .:? "alias")
-                     <*> (o .:? "id")
-                     <*> (o .:? "primaryEmail"))
-
-instance ToJSON Alias where
-        toJSON Alias'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _aaEtag, Just ("kind" .= _aaKind),
-                  ("alias" .=) <$> _aaAlias, ("id" .=) <$> _aaId,
-                  ("primaryEmail" .=) <$> _aaPrimaryEmail])
-
--- | JSON template for Schema resource in Directory API.
---
--- /See:/ 'schema' smart constructor.
-data Schema = Schema'
-    { _schEtag        :: !(Maybe Text)
-    , _schKind        :: !Text
-    , _schSchemaName  :: !(Maybe Text)
-    , _schSchemaId    :: !(Maybe Text)
-    , _schDisplayName :: !(Maybe Text)
-    , _schFields      :: !(Maybe [SchemaFieldSpec])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Schema' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'schEtag'
---
--- * 'schKind'
---
--- * 'schSchemaName'
---
--- * 'schSchemaId'
---
--- * 'schDisplayName'
---
--- * 'schFields'
-schema
-    :: Schema
-schema =
-    Schema'
-    { _schEtag = Nothing
-    , _schKind = "admin#directory#schema"
-    , _schSchemaName = Nothing
-    , _schSchemaId = Nothing
-    , _schDisplayName = Nothing
-    , _schFields = Nothing
-    }
-
--- | ETag of the resource.
-schEtag :: Lens' Schema (Maybe Text)
-schEtag = lens _schEtag (\ s a -> s{_schEtag = a})
-
--- | Kind of resource this is.
-schKind :: Lens' Schema Text
-schKind = lens _schKind (\ s a -> s{_schKind = a})
-
--- | Schema name
-schSchemaName :: Lens' Schema (Maybe Text)
-schSchemaName
-  = lens _schSchemaName
-      (\ s a -> s{_schSchemaName = a})
-
--- | Unique identifier of Schema (Read-only)
-schSchemaId :: Lens' Schema (Maybe Text)
-schSchemaId
-  = lens _schSchemaId (\ s a -> s{_schSchemaId = a})
-
--- | Display name for the schema.
-schDisplayName :: Lens' Schema (Maybe Text)
-schDisplayName
-  = lens _schDisplayName
-      (\ s a -> s{_schDisplayName = a})
-
--- | Fields of Schema
-schFields :: Lens' Schema [SchemaFieldSpec]
-schFields
-  = lens _schFields (\ s a -> s{_schFields = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON Schema where
-        parseJSON
-          = withObject "Schema"
-              (\ o ->
-                 Schema' <$>
-                   (o .:? "etag") <*>
-                     (o .:? "kind" .!= "admin#directory#schema")
-                     <*> (o .:? "schemaName")
-                     <*> (o .:? "schemaId")
-                     <*> (o .:? "displayName")
-                     <*> (o .:? "fields" .!= mempty))
-
-instance ToJSON Schema where
-        toJSON Schema'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _schEtag, Just ("kind" .= _schKind),
-                  ("schemaName" .=) <$> _schSchemaName,
-                  ("schemaId" .=) <$> _schSchemaId,
-                  ("displayName" .=) <$> _schDisplayName,
-                  ("fields" .=) <$> _schFields])
-
--- | JSON request template for moving ChromeOs Device to given OU in
--- Directory Devices API.
---
--- /See:/ 'chromeOSMoveDevicesToOu' smart constructor.
-newtype ChromeOSMoveDevicesToOu = ChromeOSMoveDevicesToOu'
-    { _comdtoDeviceIds :: Maybe [Text]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChromeOSMoveDevicesToOu' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'comdtoDeviceIds'
-chromeOSMoveDevicesToOu
-    :: ChromeOSMoveDevicesToOu
-chromeOSMoveDevicesToOu =
-    ChromeOSMoveDevicesToOu'
-    { _comdtoDeviceIds = Nothing
-    }
-
--- | ChromeOs Devices to be moved to OU
-comdtoDeviceIds :: Lens' ChromeOSMoveDevicesToOu [Text]
-comdtoDeviceIds
-  = lens _comdtoDeviceIds
-      (\ s a -> s{_comdtoDeviceIds = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ChromeOSMoveDevicesToOu where
-        parseJSON
-          = withObject "ChromeOSMoveDevicesToOu"
-              (\ o ->
-                 ChromeOSMoveDevicesToOu' <$>
-                   (o .:? "deviceIds" .!= mempty))
-
-instance ToJSON ChromeOSMoveDevicesToOu where
-        toJSON ChromeOSMoveDevicesToOu'{..}
-          = object
-              (catMaybes [("deviceIds" .=) <$> _comdtoDeviceIds])
-
--- | JSON template for User object in Directory API.
---
--- /See:/ 'user' smart constructor.
-data User = User'
-    { _useCreationTime               :: !(Maybe DateTime')
-    , _useLastLoginTime              :: !(Maybe DateTime')
-    , _useThumbnailPhotoEtag         :: !(Maybe Text)
-    , _useEtag                       :: !(Maybe Text)
-    , _usePosixAccounts              :: !(Maybe JSONValue)
-    , _useIPWhiteListed              :: !(Maybe Bool)
-    , _useRelations                  :: !(Maybe JSONValue)
-    , _useSSHPublicKeys              :: !(Maybe JSONValue)
-    , _useHashFunction               :: !(Maybe Text)
-    , _useKind                       :: !Text
-    , _useChangePasswordAtNextLogin  :: !(Maybe Bool)
-    , _useWebsites                   :: !(Maybe JSONValue)
-    , _useAddresses                  :: !(Maybe JSONValue)
-    , _useAliases                    :: !(Maybe [Text])
-    , _useThumbnailPhotoURL          :: !(Maybe Text)
-    , _useExternalIds                :: !(Maybe JSONValue)
-    , _useSuspended                  :: !(Maybe Bool)
-    , _useAgreedToTerms              :: !(Maybe Bool)
-    , _useDeletionTime               :: !(Maybe DateTime')
-    , _useNonEditableAliases         :: !(Maybe [Text])
-    , _useOrgUnitPath                :: !(Maybe Text)
-    , _useCustomerId                 :: !(Maybe Text)
-    , _useLanguages                  :: !(Maybe JSONValue)
-    , _useIncludeInGlobalAddressList :: !(Maybe Bool)
-    , _useGender                     :: !(Maybe JSONValue)
-    , _usePhones                     :: !(Maybe JSONValue)
-    , _useName                       :: !(Maybe UserName)
-    , _usePassword                   :: !(Maybe Text)
-    , _useEmails                     :: !(Maybe JSONValue)
-    , _useIms                        :: !(Maybe JSONValue)
-    , _useKeywords                   :: !(Maybe JSONValue)
-    , _useIsAdmin                    :: !(Maybe Bool)
-    , _useIsEnrolledIn2Sv            :: !(Maybe Bool)
-    , _useId                         :: !(Maybe Text)
-    , _useOrganizations              :: !(Maybe JSONValue)
-    , _usePrimaryEmail               :: !(Maybe Text)
-    , _useIsEnforcedIn2Sv            :: !(Maybe Bool)
-    , _useNotes                      :: !(Maybe JSONValue)
-    , _useIsDelegatedAdmin           :: !(Maybe Bool)
-    , _useLocations                  :: !(Maybe JSONValue)
-    , _useArchived                   :: !(Maybe Bool)
-    , _useIsMailboxSetup             :: !(Maybe Bool)
-    , _useCustomSchemas              :: !(Maybe UserCustomSchemas)
-    , _useSuspensionReason           :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'User' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'useCreationTime'
---
--- * 'useLastLoginTime'
---
--- * 'useThumbnailPhotoEtag'
---
--- * 'useEtag'
---
--- * 'usePosixAccounts'
---
--- * 'useIPWhiteListed'
---
--- * 'useRelations'
---
--- * 'useSSHPublicKeys'
---
--- * 'useHashFunction'
---
--- * 'useKind'
---
--- * 'useChangePasswordAtNextLogin'
---
--- * 'useWebsites'
---
--- * 'useAddresses'
---
--- * 'useAliases'
---
--- * 'useThumbnailPhotoURL'
---
--- * 'useExternalIds'
---
--- * 'useSuspended'
---
--- * 'useAgreedToTerms'
---
--- * 'useDeletionTime'
---
--- * 'useNonEditableAliases'
---
--- * 'useOrgUnitPath'
---
--- * 'useCustomerId'
---
--- * 'useLanguages'
---
--- * 'useIncludeInGlobalAddressList'
---
--- * 'useGender'
---
--- * 'usePhones'
---
--- * 'useName'
---
--- * 'usePassword'
---
--- * 'useEmails'
---
--- * 'useIms'
---
--- * 'useKeywords'
---
--- * 'useIsAdmin'
---
--- * 'useIsEnrolledIn2Sv'
---
--- * 'useId'
---
--- * 'useOrganizations'
---
--- * 'usePrimaryEmail'
---
--- * 'useIsEnforcedIn2Sv'
---
--- * 'useNotes'
---
--- * 'useIsDelegatedAdmin'
---
--- * 'useLocations'
---
--- * 'useArchived'
---
--- * 'useIsMailboxSetup'
---
--- * 'useCustomSchemas'
---
--- * 'useSuspensionReason'
-user
-    :: User
-user =
-    User'
-    { _useCreationTime = Nothing
-    , _useLastLoginTime = Nothing
-    , _useThumbnailPhotoEtag = Nothing
-    , _useEtag = Nothing
-    , _usePosixAccounts = Nothing
-    , _useIPWhiteListed = Nothing
-    , _useRelations = Nothing
-    , _useSSHPublicKeys = Nothing
-    , _useHashFunction = Nothing
-    , _useKind = "admin#directory#user"
-    , _useChangePasswordAtNextLogin = Nothing
-    , _useWebsites = Nothing
-    , _useAddresses = Nothing
-    , _useAliases = Nothing
-    , _useThumbnailPhotoURL = Nothing
-    , _useExternalIds = Nothing
-    , _useSuspended = Nothing
-    , _useAgreedToTerms = Nothing
-    , _useDeletionTime = Nothing
-    , _useNonEditableAliases = Nothing
-    , _useOrgUnitPath = Nothing
-    , _useCustomerId = Nothing
-    , _useLanguages = Nothing
-    , _useIncludeInGlobalAddressList = Nothing
-    , _useGender = Nothing
-    , _usePhones = Nothing
-    , _useName = Nothing
-    , _usePassword = Nothing
-    , _useEmails = Nothing
-    , _useIms = Nothing
-    , _useKeywords = Nothing
-    , _useIsAdmin = Nothing
-    , _useIsEnrolledIn2Sv = Nothing
-    , _useId = Nothing
-    , _useOrganizations = Nothing
-    , _usePrimaryEmail = Nothing
-    , _useIsEnforcedIn2Sv = Nothing
-    , _useNotes = Nothing
-    , _useIsDelegatedAdmin = Nothing
-    , _useLocations = Nothing
-    , _useArchived = Nothing
-    , _useIsMailboxSetup = Nothing
-    , _useCustomSchemas = Nothing
-    , _useSuspensionReason = Nothing
-    }
-
--- | User\'s G Suite account creation time. (Read-only)
-useCreationTime :: Lens' User (Maybe UTCTime)
-useCreationTime
-  = lens _useCreationTime
-      (\ s a -> s{_useCreationTime = a})
-      . mapping _DateTime
-
--- | User\'s last login time. (Read-only)
-useLastLoginTime :: Lens' User (Maybe UTCTime)
-useLastLoginTime
-  = lens _useLastLoginTime
-      (\ s a -> s{_useLastLoginTime = a})
-      . mapping _DateTime
-
--- | ETag of the user\'s photo (Read-only)
-useThumbnailPhotoEtag :: Lens' User (Maybe Text)
-useThumbnailPhotoEtag
-  = lens _useThumbnailPhotoEtag
-      (\ s a -> s{_useThumbnailPhotoEtag = a})
-
--- | ETag of the resource.
-useEtag :: Lens' User (Maybe Text)
-useEtag = lens _useEtag (\ s a -> s{_useEtag = a})
-
-usePosixAccounts :: Lens' User (Maybe JSONValue)
-usePosixAccounts
-  = lens _usePosixAccounts
-      (\ s a -> s{_usePosixAccounts = a})
-
--- | Boolean indicating if ip is whitelisted
-useIPWhiteListed :: Lens' User (Maybe Bool)
-useIPWhiteListed
-  = lens _useIPWhiteListed
-      (\ s a -> s{_useIPWhiteListed = a})
-
-useRelations :: Lens' User (Maybe JSONValue)
-useRelations
-  = lens _useRelations (\ s a -> s{_useRelations = a})
-
-useSSHPublicKeys :: Lens' User (Maybe JSONValue)
-useSSHPublicKeys
-  = lens _useSSHPublicKeys
-      (\ s a -> s{_useSSHPublicKeys = a})
-
--- | Hash function name for password. Supported are MD5, SHA-1 and crypt
-useHashFunction :: Lens' User (Maybe Text)
-useHashFunction
-  = lens _useHashFunction
-      (\ s a -> s{_useHashFunction = a})
-
--- | Kind of resource this is.
-useKind :: Lens' User Text
-useKind = lens _useKind (\ s a -> s{_useKind = a})
-
--- | Boolean indicating if the user should change password in next login
-useChangePasswordAtNextLogin :: Lens' User (Maybe Bool)
-useChangePasswordAtNextLogin
-  = lens _useChangePasswordAtNextLogin
-      (\ s a -> s{_useChangePasswordAtNextLogin = a})
-
-useWebsites :: Lens' User (Maybe JSONValue)
-useWebsites
-  = lens _useWebsites (\ s a -> s{_useWebsites = a})
-
-useAddresses :: Lens' User (Maybe JSONValue)
-useAddresses
-  = lens _useAddresses (\ s a -> s{_useAddresses = a})
-
--- | List of aliases (Read-only)
-useAliases :: Lens' User [Text]
-useAliases
-  = lens _useAliases (\ s a -> s{_useAliases = a}) .
-      _Default
-      . _Coerce
-
--- | Photo Url of the user (Read-only)
-useThumbnailPhotoURL :: Lens' User (Maybe Text)
-useThumbnailPhotoURL
-  = lens _useThumbnailPhotoURL
-      (\ s a -> s{_useThumbnailPhotoURL = a})
-
-useExternalIds :: Lens' User (Maybe JSONValue)
-useExternalIds
-  = lens _useExternalIds
-      (\ s a -> s{_useExternalIds = a})
-
--- | Indicates if user is suspended.
-useSuspended :: Lens' User (Maybe Bool)
-useSuspended
-  = lens _useSuspended (\ s a -> s{_useSuspended = a})
-
--- | Indicates if user has agreed to terms (Read-only)
-useAgreedToTerms :: Lens' User (Maybe Bool)
-useAgreedToTerms
-  = lens _useAgreedToTerms
-      (\ s a -> s{_useAgreedToTerms = a})
-
-useDeletionTime :: Lens' User (Maybe UTCTime)
-useDeletionTime
-  = lens _useDeletionTime
-      (\ s a -> s{_useDeletionTime = a})
-      . mapping _DateTime
-
--- | List of non editable aliases (Read-only)
-useNonEditableAliases :: Lens' User [Text]
-useNonEditableAliases
-  = lens _useNonEditableAliases
-      (\ s a -> s{_useNonEditableAliases = a})
-      . _Default
-      . _Coerce
-
--- | OrgUnit of User
-useOrgUnitPath :: Lens' User (Maybe Text)
-useOrgUnitPath
-  = lens _useOrgUnitPath
-      (\ s a -> s{_useOrgUnitPath = a})
-
--- | CustomerId of User (Read-only)
-useCustomerId :: Lens' User (Maybe Text)
-useCustomerId
-  = lens _useCustomerId
-      (\ s a -> s{_useCustomerId = a})
-
-useLanguages :: Lens' User (Maybe JSONValue)
-useLanguages
-  = lens _useLanguages (\ s a -> s{_useLanguages = a})
-
--- | Boolean indicating if user is included in Global Address List
-useIncludeInGlobalAddressList :: Lens' User (Maybe Bool)
-useIncludeInGlobalAddressList
-  = lens _useIncludeInGlobalAddressList
-      (\ s a -> s{_useIncludeInGlobalAddressList = a})
-
-useGender :: Lens' User (Maybe JSONValue)
-useGender
-  = lens _useGender (\ s a -> s{_useGender = a})
-
-usePhones :: Lens' User (Maybe JSONValue)
-usePhones
-  = lens _usePhones (\ s a -> s{_usePhones = a})
-
--- | User\'s name
-useName :: Lens' User (Maybe UserName)
-useName = lens _useName (\ s a -> s{_useName = a})
-
--- | User\'s password
-usePassword :: Lens' User (Maybe Text)
-usePassword
-  = lens _usePassword (\ s a -> s{_usePassword = a})
-
-useEmails :: Lens' User (Maybe JSONValue)
-useEmails
-  = lens _useEmails (\ s a -> s{_useEmails = a})
-
-useIms :: Lens' User (Maybe JSONValue)
-useIms = lens _useIms (\ s a -> s{_useIms = a})
-
-useKeywords :: Lens' User (Maybe JSONValue)
-useKeywords
-  = lens _useKeywords (\ s a -> s{_useKeywords = a})
-
--- | Boolean indicating if the user is admin (Read-only)
-useIsAdmin :: Lens' User (Maybe Bool)
-useIsAdmin
-  = lens _useIsAdmin (\ s a -> s{_useIsAdmin = a})
-
--- | Is enrolled in 2-step verification (Read-only)
-useIsEnrolledIn2Sv :: Lens' User (Maybe Bool)
-useIsEnrolledIn2Sv
-  = lens _useIsEnrolledIn2Sv
-      (\ s a -> s{_useIsEnrolledIn2Sv = a})
-
--- | Unique identifier of User (Read-only)
-useId :: Lens' User (Maybe Text)
-useId = lens _useId (\ s a -> s{_useId = a})
-
-useOrganizations :: Lens' User (Maybe JSONValue)
-useOrganizations
-  = lens _useOrganizations
-      (\ s a -> s{_useOrganizations = a})
-
--- | username of User
-usePrimaryEmail :: Lens' User (Maybe Text)
-usePrimaryEmail
-  = lens _usePrimaryEmail
-      (\ s a -> s{_usePrimaryEmail = a})
-
--- | Is 2-step verification enforced (Read-only)
-useIsEnforcedIn2Sv :: Lens' User (Maybe Bool)
-useIsEnforcedIn2Sv
-  = lens _useIsEnforcedIn2Sv
-      (\ s a -> s{_useIsEnforcedIn2Sv = a})
-
-useNotes :: Lens' User (Maybe JSONValue)
-useNotes = lens _useNotes (\ s a -> s{_useNotes = a})
-
--- | Boolean indicating if the user is delegated admin (Read-only)
-useIsDelegatedAdmin :: Lens' User (Maybe Bool)
-useIsDelegatedAdmin
-  = lens _useIsDelegatedAdmin
-      (\ s a -> s{_useIsDelegatedAdmin = a})
-
-useLocations :: Lens' User (Maybe JSONValue)
-useLocations
-  = lens _useLocations (\ s a -> s{_useLocations = a})
-
--- | Indicates if user is archived.
-useArchived :: Lens' User (Maybe Bool)
-useArchived
-  = lens _useArchived (\ s a -> s{_useArchived = a})
-
--- | Is mailbox setup (Read-only)
-useIsMailboxSetup :: Lens' User (Maybe Bool)
-useIsMailboxSetup
-  = lens _useIsMailboxSetup
-      (\ s a -> s{_useIsMailboxSetup = a})
-
--- | Custom fields of the user.
-useCustomSchemas :: Lens' User (Maybe UserCustomSchemas)
-useCustomSchemas
-  = lens _useCustomSchemas
-      (\ s a -> s{_useCustomSchemas = a})
-
--- | Suspension reason if user is suspended (Read-only)
-useSuspensionReason :: Lens' User (Maybe Text)
-useSuspensionReason
-  = lens _useSuspensionReason
-      (\ s a -> s{_useSuspensionReason = a})
-
-instance FromJSON User where
-        parseJSON
-          = withObject "User"
-              (\ o ->
-                 User' <$>
-                   (o .:? "creationTime") <*> (o .:? "lastLoginTime")
-                     <*> (o .:? "thumbnailPhotoEtag")
-                     <*> (o .:? "etag")
-                     <*> (o .:? "posixAccounts")
-                     <*> (o .:? "ipWhitelisted")
-                     <*> (o .:? "relations")
-                     <*> (o .:? "sshPublicKeys")
-                     <*> (o .:? "hashFunction")
-                     <*> (o .:? "kind" .!= "admin#directory#user")
-                     <*> (o .:? "changePasswordAtNextLogin")
-                     <*> (o .:? "websites")
-                     <*> (o .:? "addresses")
-                     <*> (o .:? "aliases" .!= mempty)
-                     <*> (o .:? "thumbnailPhotoUrl")
-                     <*> (o .:? "externalIds")
-                     <*> (o .:? "suspended")
-                     <*> (o .:? "agreedToTerms")
-                     <*> (o .:? "deletionTime")
-                     <*> (o .:? "nonEditableAliases" .!= mempty)
-                     <*> (o .:? "orgUnitPath")
-                     <*> (o .:? "customerId")
-                     <*> (o .:? "languages")
-                     <*> (o .:? "includeInGlobalAddressList")
-                     <*> (o .:? "gender")
-                     <*> (o .:? "phones")
-                     <*> (o .:? "name")
-                     <*> (o .:? "password")
-                     <*> (o .:? "emails")
-                     <*> (o .:? "ims")
-                     <*> (o .:? "keywords")
-                     <*> (o .:? "isAdmin")
-                     <*> (o .:? "isEnrolledIn2Sv")
-                     <*> (o .:? "id")
-                     <*> (o .:? "organizations")
-                     <*> (o .:? "primaryEmail")
-                     <*> (o .:? "isEnforcedIn2Sv")
-                     <*> (o .:? "notes")
-                     <*> (o .:? "isDelegatedAdmin")
-                     <*> (o .:? "locations")
-                     <*> (o .:? "archived")
-                     <*> (o .:? "isMailboxSetup")
-                     <*> (o .:? "customSchemas")
-                     <*> (o .:? "suspensionReason"))
-
-instance ToJSON User where
-        toJSON User'{..}
-          = object
-              (catMaybes
-                 [("creationTime" .=) <$> _useCreationTime,
-                  ("lastLoginTime" .=) <$> _useLastLoginTime,
-                  ("thumbnailPhotoEtag" .=) <$> _useThumbnailPhotoEtag,
-                  ("etag" .=) <$> _useEtag,
-                  ("posixAccounts" .=) <$> _usePosixAccounts,
-                  ("ipWhitelisted" .=) <$> _useIPWhiteListed,
-                  ("relations" .=) <$> _useRelations,
-                  ("sshPublicKeys" .=) <$> _useSSHPublicKeys,
-                  ("hashFunction" .=) <$> _useHashFunction,
-                  Just ("kind" .= _useKind),
-                  ("changePasswordAtNextLogin" .=) <$>
-                    _useChangePasswordAtNextLogin,
-                  ("websites" .=) <$> _useWebsites,
-                  ("addresses" .=) <$> _useAddresses,
-                  ("aliases" .=) <$> _useAliases,
-                  ("thumbnailPhotoUrl" .=) <$> _useThumbnailPhotoURL,
-                  ("externalIds" .=) <$> _useExternalIds,
-                  ("suspended" .=) <$> _useSuspended,
-                  ("agreedToTerms" .=) <$> _useAgreedToTerms,
-                  ("deletionTime" .=) <$> _useDeletionTime,
-                  ("nonEditableAliases" .=) <$> _useNonEditableAliases,
-                  ("orgUnitPath" .=) <$> _useOrgUnitPath,
-                  ("customerId" .=) <$> _useCustomerId,
-                  ("languages" .=) <$> _useLanguages,
-                  ("includeInGlobalAddressList" .=) <$>
-                    _useIncludeInGlobalAddressList,
-                  ("gender" .=) <$> _useGender,
-                  ("phones" .=) <$> _usePhones,
-                  ("name" .=) <$> _useName,
-                  ("password" .=) <$> _usePassword,
-                  ("emails" .=) <$> _useEmails, ("ims" .=) <$> _useIms,
-                  ("keywords" .=) <$> _useKeywords,
-                  ("isAdmin" .=) <$> _useIsAdmin,
-                  ("isEnrolledIn2Sv" .=) <$> _useIsEnrolledIn2Sv,
-                  ("id" .=) <$> _useId,
-                  ("organizations" .=) <$> _useOrganizations,
-                  ("primaryEmail" .=) <$> _usePrimaryEmail,
-                  ("isEnforcedIn2Sv" .=) <$> _useIsEnforcedIn2Sv,
-                  ("notes" .=) <$> _useNotes,
-                  ("isDelegatedAdmin" .=) <$> _useIsDelegatedAdmin,
-                  ("locations" .=) <$> _useLocations,
-                  ("archived" .=) <$> _useArchived,
-                  ("isMailboxSetup" .=) <$> _useIsMailboxSetup,
-                  ("customSchemas" .=) <$> _useCustomSchemas,
-                  ("suspensionReason" .=) <$> _useSuspensionReason])
-
--- | JSON request template for firing actions on ChromeOs Device in Directory
--- Devices API.
---
--- /See:/ 'chromeOSDeviceAction' smart constructor.
-data ChromeOSDeviceAction = ChromeOSDeviceAction'
-    { _codaAction            :: !(Maybe Text)
-    , _codaDeprovisionReason :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChromeOSDeviceAction' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'codaAction'
---
--- * 'codaDeprovisionReason'
-chromeOSDeviceAction
-    :: ChromeOSDeviceAction
-chromeOSDeviceAction =
-    ChromeOSDeviceAction'
-    { _codaAction = Nothing
-    , _codaDeprovisionReason = Nothing
-    }
-
--- | Action to be taken on the ChromeOs Device
-codaAction :: Lens' ChromeOSDeviceAction (Maybe Text)
-codaAction
-  = lens _codaAction (\ s a -> s{_codaAction = a})
-
-codaDeprovisionReason :: Lens' ChromeOSDeviceAction (Maybe Text)
-codaDeprovisionReason
-  = lens _codaDeprovisionReason
-      (\ s a -> s{_codaDeprovisionReason = a})
-
-instance FromJSON ChromeOSDeviceAction where
-        parseJSON
-          = withObject "ChromeOSDeviceAction"
-              (\ o ->
-                 ChromeOSDeviceAction' <$>
-                   (o .:? "action") <*> (o .:? "deprovisionReason"))
-
-instance ToJSON ChromeOSDeviceAction where
-        toJSON ChromeOSDeviceAction'{..}
-          = object
-              (catMaybes
-                 [("action" .=) <$> _codaAction,
-                  ("deprovisionReason" .=) <$> _codaDeprovisionReason])
-
--- | JSON request template for renaming a feature.
---
--- /See:/ 'featureRename' smart constructor.
-newtype FeatureRename = FeatureRename'
-    { _frNewName :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FeatureRename' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'frNewName'
-featureRename
-    :: FeatureRename
-featureRename =
-    FeatureRename'
-    { _frNewName = Nothing
-    }
-
--- | New name of the feature.
-frNewName :: Lens' FeatureRename (Maybe Text)
-frNewName
-  = lens _frNewName (\ s a -> s{_frNewName = a})
-
-instance FromJSON FeatureRename where
-        parseJSON
-          = withObject "FeatureRename"
-              (\ o -> FeatureRename' <$> (o .:? "newName"))
-
-instance ToJSON FeatureRename where
-        toJSON FeatureRename'{..}
-          = object (catMaybes [("newName" .=) <$> _frNewName])
-
--- | JSON template for role resource in Directory API.
---
--- /See:/ 'role'' smart constructor.
-data Role = Role'
-    { _rrEtag             :: !(Maybe Text)
-    , _rrKind             :: !Text
-    , _rrRoleName         :: !(Maybe Text)
-    , _rrIsSystemRole     :: !(Maybe Bool)
-    , _rrRoleId           :: !(Maybe (Textual Int64))
-    , _rrRoleDescription  :: !(Maybe Text)
-    , _rrIsSuperAdminRole :: !(Maybe Bool)
-    , _rrRolePrivileges   :: !(Maybe [RoleRolePrivilegesItem])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Role' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rrEtag'
---
--- * 'rrKind'
---
--- * 'rrRoleName'
---
--- * 'rrIsSystemRole'
---
--- * 'rrRoleId'
---
--- * 'rrRoleDescription'
---
--- * 'rrIsSuperAdminRole'
---
--- * 'rrRolePrivileges'
-role'
-    :: Role
-role' =
-    Role'
-    { _rrEtag = Nothing
-    , _rrKind = "admin#directory#role"
-    , _rrRoleName = Nothing
-    , _rrIsSystemRole = Nothing
-    , _rrRoleId = Nothing
-    , _rrRoleDescription = Nothing
-    , _rrIsSuperAdminRole = Nothing
-    , _rrRolePrivileges = Nothing
-    }
-
--- | ETag of the resource.
-rrEtag :: Lens' Role (Maybe Text)
-rrEtag = lens _rrEtag (\ s a -> s{_rrEtag = a})
-
--- | The type of the API resource. This is always admin#directory#role.
-rrKind :: Lens' Role Text
-rrKind = lens _rrKind (\ s a -> s{_rrKind = a})
-
--- | Name of the role.
-rrRoleName :: Lens' Role (Maybe Text)
-rrRoleName
-  = lens _rrRoleName (\ s a -> s{_rrRoleName = a})
-
--- | Returns true if this is a pre-defined system role.
-rrIsSystemRole :: Lens' Role (Maybe Bool)
-rrIsSystemRole
-  = lens _rrIsSystemRole
-      (\ s a -> s{_rrIsSystemRole = a})
-
--- | ID of the role.
-rrRoleId :: Lens' Role (Maybe Int64)
-rrRoleId
-  = lens _rrRoleId (\ s a -> s{_rrRoleId = a}) .
-      mapping _Coerce
-
--- | A short description of the role.
-rrRoleDescription :: Lens' Role (Maybe Text)
-rrRoleDescription
-  = lens _rrRoleDescription
-      (\ s a -> s{_rrRoleDescription = a})
-
--- | Returns true if the role is a super admin role.
-rrIsSuperAdminRole :: Lens' Role (Maybe Bool)
-rrIsSuperAdminRole
-  = lens _rrIsSuperAdminRole
-      (\ s a -> s{_rrIsSuperAdminRole = a})
-
--- | The set of privileges that are granted to this role.
-rrRolePrivileges :: Lens' Role [RoleRolePrivilegesItem]
-rrRolePrivileges
-  = lens _rrRolePrivileges
-      (\ s a -> s{_rrRolePrivileges = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON Role where
-        parseJSON
-          = withObject "Role"
-              (\ o ->
-                 Role' <$>
-                   (o .:? "etag") <*>
-                     (o .:? "kind" .!= "admin#directory#role")
-                     <*> (o .:? "roleName")
-                     <*> (o .:? "isSystemRole")
-                     <*> (o .:? "roleId")
-                     <*> (o .:? "roleDescription")
-                     <*> (o .:? "isSuperAdminRole")
-                     <*> (o .:? "rolePrivileges" .!= mempty))
-
-instance ToJSON Role where
-        toJSON Role'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _rrEtag, Just ("kind" .= _rrKind),
-                  ("roleName" .=) <$> _rrRoleName,
-                  ("isSystemRole" .=) <$> _rrIsSystemRole,
-                  ("roleId" .=) <$> _rrRoleId,
-                  ("roleDescription" .=) <$> _rrRoleDescription,
-                  ("isSuperAdminRole" .=) <$> _rrIsSuperAdminRole,
-                  ("rolePrivileges" .=) <$> _rrRolePrivileges])
-
--- | JSON template for Customer Resource object in Directory API.
---
--- /See:/ 'customer' smart constructor.
-data Customer = Customer'
-    { _cusEtag                 :: !(Maybe Text)
-    , _cusKind                 :: !Text
-    , _cusAlternateEmail       :: !(Maybe Text)
-    , _cusCustomerDomain       :: !(Maybe Text)
-    , _cusPhoneNumber          :: !(Maybe Text)
-    , _cusLanguage             :: !(Maybe Text)
-    , _cusId                   :: !(Maybe Text)
-    , _cusCustomerCreationTime :: !(Maybe DateTime')
-    , _cusPostalAddress        :: !(Maybe CustomerPostalAddress)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Customer' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cusEtag'
---
--- * 'cusKind'
---
--- * 'cusAlternateEmail'
---
--- * 'cusCustomerDomain'
---
--- * 'cusPhoneNumber'
---
--- * 'cusLanguage'
---
--- * 'cusId'
---
--- * 'cusCustomerCreationTime'
---
--- * 'cusPostalAddress'
-customer
-    :: Customer
-customer =
-    Customer'
-    { _cusEtag = Nothing
-    , _cusKind = "admin#directory#customer"
-    , _cusAlternateEmail = Nothing
-    , _cusCustomerDomain = Nothing
-    , _cusPhoneNumber = Nothing
-    , _cusLanguage = Nothing
-    , _cusId = Nothing
-    , _cusCustomerCreationTime = Nothing
-    , _cusPostalAddress = Nothing
-    }
-
--- | ETag of the resource.
-cusEtag :: Lens' Customer (Maybe Text)
-cusEtag = lens _cusEtag (\ s a -> s{_cusEtag = a})
-
--- | Identifies the resource as a customer. Value: admin#directory#customer
-cusKind :: Lens' Customer Text
-cusKind = lens _cusKind (\ s a -> s{_cusKind = a})
-
--- | The customer\'s secondary contact email address. This email address
--- cannot be on the same domain as the customerDomain
-cusAlternateEmail :: Lens' Customer (Maybe Text)
-cusAlternateEmail
-  = lens _cusAlternateEmail
-      (\ s a -> s{_cusAlternateEmail = a})
-
--- | The customer\'s primary domain name string. Do not include the www
--- prefix when creating a new customer.
-cusCustomerDomain :: Lens' Customer (Maybe Text)
-cusCustomerDomain
-  = lens _cusCustomerDomain
-      (\ s a -> s{_cusCustomerDomain = a})
-
--- | The customer\'s contact phone number in E.164 format.
-cusPhoneNumber :: Lens' Customer (Maybe Text)
-cusPhoneNumber
-  = lens _cusPhoneNumber
-      (\ s a -> s{_cusPhoneNumber = a})
-
--- | The customer\'s ISO 639-2 language code. The default value is en-US
-cusLanguage :: Lens' Customer (Maybe Text)
-cusLanguage
-  = lens _cusLanguage (\ s a -> s{_cusLanguage = a})
-
--- | The unique ID for the customer\'s G Suite account. (Readonly)
-cusId :: Lens' Customer (Maybe Text)
-cusId = lens _cusId (\ s a -> s{_cusId = a})
-
--- | The customer\'s creation time (Readonly)
-cusCustomerCreationTime :: Lens' Customer (Maybe UTCTime)
-cusCustomerCreationTime
-  = lens _cusCustomerCreationTime
-      (\ s a -> s{_cusCustomerCreationTime = a})
-      . mapping _DateTime
-
--- | The customer\'s postal address information.
-cusPostalAddress :: Lens' Customer (Maybe CustomerPostalAddress)
-cusPostalAddress
-  = lens _cusPostalAddress
-      (\ s a -> s{_cusPostalAddress = a})
-
-instance FromJSON Customer where
-        parseJSON
-          = withObject "Customer"
-              (\ o ->
-                 Customer' <$>
-                   (o .:? "etag") <*>
-                     (o .:? "kind" .!= "admin#directory#customer")
-                     <*> (o .:? "alternateEmail")
-                     <*> (o .:? "customerDomain")
-                     <*> (o .:? "phoneNumber")
-                     <*> (o .:? "language")
-                     <*> (o .:? "id")
-                     <*> (o .:? "customerCreationTime")
-                     <*> (o .:? "postalAddress"))
-
-instance ToJSON Customer where
-        toJSON Customer'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _cusEtag, Just ("kind" .= _cusKind),
-                  ("alternateEmail" .=) <$> _cusAlternateEmail,
-                  ("customerDomain" .=) <$> _cusCustomerDomain,
-                  ("phoneNumber" .=) <$> _cusPhoneNumber,
-                  ("language" .=) <$> _cusLanguage,
-                  ("id" .=) <$> _cusId,
-                  ("customerCreationTime" .=) <$>
-                    _cusCustomerCreationTime,
-                  ("postalAddress" .=) <$> _cusPostalAddress])
-
---
--- /See:/ 'mobileDeviceApplicationsItem' smart constructor.
-data MobileDeviceApplicationsItem = MobileDeviceApplicationsItem'
-    { _mdaiVersionCode :: !(Maybe (Textual Int32))
-    , _mdaiVersionName :: !(Maybe Text)
-    , _mdaiPackageName :: !(Maybe Text)
-    , _mdaiDisplayName :: !(Maybe Text)
-    , _mdaiPermission  :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MobileDeviceApplicationsItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mdaiVersionCode'
---
--- * 'mdaiVersionName'
---
--- * 'mdaiPackageName'
---
--- * 'mdaiDisplayName'
---
--- * 'mdaiPermission'
-mobileDeviceApplicationsItem
-    :: MobileDeviceApplicationsItem
-mobileDeviceApplicationsItem =
-    MobileDeviceApplicationsItem'
-    { _mdaiVersionCode = Nothing
-    , _mdaiVersionName = Nothing
-    , _mdaiPackageName = Nothing
-    , _mdaiDisplayName = Nothing
-    , _mdaiPermission = Nothing
-    }
-
--- | Version code of application
-mdaiVersionCode :: Lens' MobileDeviceApplicationsItem (Maybe Int32)
-mdaiVersionCode
-  = lens _mdaiVersionCode
-      (\ s a -> s{_mdaiVersionCode = a})
-      . mapping _Coerce
-
--- | Version name of application
-mdaiVersionName :: Lens' MobileDeviceApplicationsItem (Maybe Text)
-mdaiVersionName
-  = lens _mdaiVersionName
-      (\ s a -> s{_mdaiVersionName = a})
-
--- | Package name of application
-mdaiPackageName :: Lens' MobileDeviceApplicationsItem (Maybe Text)
-mdaiPackageName
-  = lens _mdaiPackageName
-      (\ s a -> s{_mdaiPackageName = a})
-
--- | Display name of application
-mdaiDisplayName :: Lens' MobileDeviceApplicationsItem (Maybe Text)
-mdaiDisplayName
-  = lens _mdaiDisplayName
-      (\ s a -> s{_mdaiDisplayName = a})
-
--- | List of Permissions for application
-mdaiPermission :: Lens' MobileDeviceApplicationsItem [Text]
-mdaiPermission
-  = lens _mdaiPermission
-      (\ s a -> s{_mdaiPermission = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON MobileDeviceApplicationsItem where
-        parseJSON
-          = withObject "MobileDeviceApplicationsItem"
-              (\ o ->
-                 MobileDeviceApplicationsItem' <$>
-                   (o .:? "versionCode") <*> (o .:? "versionName") <*>
-                     (o .:? "packageName")
-                     <*> (o .:? "displayName")
-                     <*> (o .:? "permission" .!= mempty))
-
-instance ToJSON MobileDeviceApplicationsItem where
-        toJSON MobileDeviceApplicationsItem'{..}
-          = object
-              (catMaybes
-                 [("versionCode" .=) <$> _mdaiVersionCode,
-                  ("versionName" .=) <$> _mdaiVersionName,
-                  ("packageName" .=) <$> _mdaiPackageName,
-                  ("displayName" .=) <$> _mdaiDisplayName,
-                  ("permission" .=) <$> _mdaiPermission])
-
---
--- /See:/ 'chromeOSDeviceDiskVolumeReportsItemVolumeInfoItem' smart constructor.
-data ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem = ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem'
-    { _coddvriviiStorageFree  :: !(Maybe (Textual Int64))
-    , _coddvriviiStorageTotal :: !(Maybe (Textual Int64))
-    , _coddvriviiVolumeId     :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'coddvriviiStorageFree'
---
--- * 'coddvriviiStorageTotal'
---
--- * 'coddvriviiVolumeId'
-chromeOSDeviceDiskVolumeReportsItemVolumeInfoItem
-    :: ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem
-chromeOSDeviceDiskVolumeReportsItemVolumeInfoItem =
-    ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem'
-    { _coddvriviiStorageFree = Nothing
-    , _coddvriviiStorageTotal = Nothing
-    , _coddvriviiVolumeId = Nothing
-    }
-
--- | Free disk space [in bytes]
-coddvriviiStorageFree :: Lens' ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem (Maybe Int64)
-coddvriviiStorageFree
-  = lens _coddvriviiStorageFree
-      (\ s a -> s{_coddvriviiStorageFree = a})
-      . mapping _Coerce
-
--- | Total disk space [in bytes]
-coddvriviiStorageTotal :: Lens' ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem (Maybe Int64)
-coddvriviiStorageTotal
-  = lens _coddvriviiStorageTotal
-      (\ s a -> s{_coddvriviiStorageTotal = a})
-      . mapping _Coerce
-
--- | Volume id
-coddvriviiVolumeId :: Lens' ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem (Maybe Text)
-coddvriviiVolumeId
-  = lens _coddvriviiVolumeId
-      (\ s a -> s{_coddvriviiVolumeId = a})
-
-instance FromJSON
-         ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem
-         where
-        parseJSON
-          = withObject
-              "ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem"
-              (\ o ->
-                 ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem'
-                   <$>
-                   (o .:? "storageFree") <*> (o .:? "storageTotal") <*>
-                     (o .:? "volumeId"))
-
-instance ToJSON
-         ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem
-         where
-        toJSON
-          ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem'{..}
-          = object
-              (catMaybes
-                 [("storageFree" .=) <$> _coddvriviiStorageFree,
-                  ("storageTotal" .=) <$> _coddvriviiStorageTotal,
-                  ("volumeId" .=) <$> _coddvriviiVolumeId])
-
--- | JSON response template for List Organization Units operation in
--- Directory API.
---
--- /See:/ 'orgUnits' smart constructor.
-data OrgUnits = OrgUnits'
-    { _oEtag              :: !(Maybe Text)
-    , _oKind              :: !Text
-    , _oOrganizationUnits :: !(Maybe [OrgUnit])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OrgUnits' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'oEtag'
---
--- * 'oKind'
---
--- * 'oOrganizationUnits'
-orgUnits
-    :: OrgUnits
-orgUnits =
-    OrgUnits'
-    { _oEtag = Nothing
-    , _oKind = "admin#directory#orgUnits"
-    , _oOrganizationUnits = Nothing
-    }
-
--- | ETag of the resource.
-oEtag :: Lens' OrgUnits (Maybe Text)
-oEtag = lens _oEtag (\ s a -> s{_oEtag = a})
-
--- | Kind of resource this is.
-oKind :: Lens' OrgUnits Text
-oKind = lens _oKind (\ s a -> s{_oKind = a})
-
--- | List of user objects.
-oOrganizationUnits :: Lens' OrgUnits [OrgUnit]
-oOrganizationUnits
-  = lens _oOrganizationUnits
-      (\ s a -> s{_oOrganizationUnits = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON OrgUnits where
-        parseJSON
-          = withObject "OrgUnits"
-              (\ o ->
-                 OrgUnits' <$>
-                   (o .:? "etag") <*>
-                     (o .:? "kind" .!= "admin#directory#orgUnits")
-                     <*> (o .:? "organizationUnits" .!= mempty))
-
-instance ToJSON OrgUnits where
-        toJSON OrgUnits'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _oEtag, Just ("kind" .= _oKind),
-                  ("organizationUnits" .=) <$> _oOrganizationUnits])
-
--- | JSON template for a POSIX account entry.
---
--- /See:/ 'userSSHPublicKey' smart constructor.
-data UserSSHPublicKey = UserSSHPublicKey'
-    { _uspkFingerprint        :: !(Maybe Text)
-    , _uspkKey                :: !(Maybe Text)
-    , _uspkExpirationTimeUsec :: !(Maybe (Textual Int64))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserSSHPublicKey' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uspkFingerprint'
---
--- * 'uspkKey'
---
--- * 'uspkExpirationTimeUsec'
-userSSHPublicKey
-    :: UserSSHPublicKey
-userSSHPublicKey =
-    UserSSHPublicKey'
-    { _uspkFingerprint = Nothing
-    , _uspkKey = Nothing
-    , _uspkExpirationTimeUsec = Nothing
-    }
-
--- | A SHA-256 fingerprint of the SSH public key. (Read-only)
-uspkFingerprint :: Lens' UserSSHPublicKey (Maybe Text)
-uspkFingerprint
-  = lens _uspkFingerprint
-      (\ s a -> s{_uspkFingerprint = a})
-
--- | An SSH public key.
-uspkKey :: Lens' UserSSHPublicKey (Maybe Text)
-uspkKey = lens _uspkKey (\ s a -> s{_uspkKey = a})
-
--- | An expiration time in microseconds since epoch.
-uspkExpirationTimeUsec :: Lens' UserSSHPublicKey (Maybe Int64)
-uspkExpirationTimeUsec
-  = lens _uspkExpirationTimeUsec
-      (\ s a -> s{_uspkExpirationTimeUsec = a})
-      . mapping _Coerce
-
-instance FromJSON UserSSHPublicKey where
-        parseJSON
-          = withObject "UserSSHPublicKey"
-              (\ o ->
-                 UserSSHPublicKey' <$>
-                   (o .:? "fingerprint") <*> (o .:? "key") <*>
-                     (o .:? "expirationTimeUsec"))
-
-instance ToJSON UserSSHPublicKey where
-        toJSON UserSSHPublicKey'{..}
-          = object
-              (catMaybes
-                 [("fingerprint" .=) <$> _uspkFingerprint,
-                  ("key" .=) <$> _uspkKey,
-                  ("expirationTimeUsec" .=) <$>
-                    _uspkExpirationTimeUsec])
-
--- | JSON response template for List verification codes operation in
--- Directory API.
---
--- /See:/ 'verificationCodes' smart constructor.
-data VerificationCodes = VerificationCodes'
-    { _vEtag  :: !(Maybe Text)
-    , _vKind  :: !Text
-    , _vItems :: !(Maybe [VerificationCode])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VerificationCodes' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vEtag'
---
--- * 'vKind'
---
--- * 'vItems'
-verificationCodes
-    :: VerificationCodes
-verificationCodes =
-    VerificationCodes'
-    { _vEtag = Nothing
-    , _vKind = "admin#directory#verificationCodesList"
-    , _vItems = Nothing
-    }
-
--- | ETag of the resource.
-vEtag :: Lens' VerificationCodes (Maybe Text)
-vEtag = lens _vEtag (\ s a -> s{_vEtag = a})
-
--- | The type of the resource. This is always
--- admin#directory#verificationCodesList.
-vKind :: Lens' VerificationCodes Text
-vKind = lens _vKind (\ s a -> s{_vKind = a})
-
--- | A list of verification code resources.
-vItems :: Lens' VerificationCodes [VerificationCode]
-vItems
-  = lens _vItems (\ s a -> s{_vItems = a}) . _Default .
-      _Coerce
-
-instance FromJSON VerificationCodes where
-        parseJSON
-          = withObject "VerificationCodes"
-              (\ o ->
-                 VerificationCodes' <$>
-                   (o .:? "etag") <*>
-                     (o .:? "kind" .!=
-                        "admin#directory#verificationCodesList")
-                     <*> (o .:? "items" .!= mempty))
-
-instance ToJSON VerificationCodes where
-        toJSON VerificationCodes'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _vEtag, Just ("kind" .= _vKind),
-                  ("items" .=) <$> _vItems])
-
--- | JSON template for coordinates of a building in Directory API.
---
--- /See:/ 'buildingCoordinates' smart constructor.
-data BuildingCoordinates = BuildingCoordinates'
-    { _bcLatitude  :: !(Maybe (Textual Double))
-    , _bcLongitude :: !(Maybe (Textual Double))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BuildingCoordinates' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bcLatitude'
---
--- * 'bcLongitude'
-buildingCoordinates
-    :: BuildingCoordinates
-buildingCoordinates =
-    BuildingCoordinates'
-    { _bcLatitude = Nothing
-    , _bcLongitude = Nothing
-    }
-
--- | Latitude in decimal degrees.
-bcLatitude :: Lens' BuildingCoordinates (Maybe Double)
-bcLatitude
-  = lens _bcLatitude (\ s a -> s{_bcLatitude = a}) .
-      mapping _Coerce
-
--- | Longitude in decimal degrees.
-bcLongitude :: Lens' BuildingCoordinates (Maybe Double)
-bcLongitude
-  = lens _bcLongitude (\ s a -> s{_bcLongitude = a}) .
-      mapping _Coerce
-
-instance FromJSON BuildingCoordinates where
-        parseJSON
-          = withObject "BuildingCoordinates"
-              (\ o ->
-                 BuildingCoordinates' <$>
-                   (o .:? "latitude") <*> (o .:? "longitude"))
-
-instance ToJSON BuildingCoordinates where
-        toJSON BuildingCoordinates'{..}
-          = object
-              (catMaybes
-                 [("latitude" .=) <$> _bcLatitude,
-                  ("longitude" .=) <$> _bcLongitude])
-
--- | JSON template for a relation entry.
---
--- /See:/ 'userRelation' smart constructor.
-data UserRelation = UserRelation'
-    { _urValue      :: !(Maybe Text)
-    , _urType       :: !(Maybe Text)
-    , _urCustomType :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserRelation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'urValue'
---
--- * 'urType'
---
--- * 'urCustomType'
-userRelation
-    :: UserRelation
-userRelation =
-    UserRelation'
-    { _urValue = Nothing
-    , _urType = Nothing
-    , _urCustomType = Nothing
-    }
-
--- | The name of the relation.
-urValue :: Lens' UserRelation (Maybe Text)
-urValue = lens _urValue (\ s a -> s{_urValue = a})
-
--- | The relation of the user. Some of the possible values are mother,
--- father, sister, brother, manager, assistant, partner.
-urType :: Lens' UserRelation (Maybe Text)
-urType = lens _urType (\ s a -> s{_urType = a})
-
--- | Custom Type.
-urCustomType :: Lens' UserRelation (Maybe Text)
-urCustomType
-  = lens _urCustomType (\ s a -> s{_urCustomType = a})
-
-instance FromJSON UserRelation where
-        parseJSON
-          = withObject "UserRelation"
-              (\ o ->
-                 UserRelation' <$>
-                   (o .:? "value") <*> (o .:? "type") <*>
-                     (o .:? "customType"))
-
-instance ToJSON UserRelation where
-        toJSON UserRelation'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _urValue, ("type" .=) <$> _urType,
-                  ("customType" .=) <$> _urCustomType])
-
--- | JSON template for Trusted Apps response object of a user in Directory
--- API.
---
--- /See:/ 'trustedApps' smart constructor.
-data TrustedApps = TrustedApps'
-    { _taEtag          :: !(Maybe Text)
-    , _taNextPageToken :: !(Maybe Text)
-    , _taKind          :: !Text
-    , _taTrustedApps   :: !(Maybe [TrustedAppId])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TrustedApps' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'taEtag'
---
--- * 'taNextPageToken'
---
--- * 'taKind'
---
--- * 'taTrustedApps'
-trustedApps
-    :: TrustedApps
-trustedApps =
-    TrustedApps'
-    { _taEtag = Nothing
-    , _taNextPageToken = Nothing
-    , _taKind = "admin#directory#trustedapplist"
-    , _taTrustedApps = Nothing
-    }
-
--- | ETag of the resource.
-taEtag :: Lens' TrustedApps (Maybe Text)
-taEtag = lens _taEtag (\ s a -> s{_taEtag = a})
-
-taNextPageToken :: Lens' TrustedApps (Maybe Text)
-taNextPageToken
-  = lens _taNextPageToken
-      (\ s a -> s{_taNextPageToken = a})
-
--- | Identifies the resource as trusted apps response.
-taKind :: Lens' TrustedApps Text
-taKind = lens _taKind (\ s a -> s{_taKind = a})
-
--- | Trusted Apps list.
-taTrustedApps :: Lens' TrustedApps [TrustedAppId]
-taTrustedApps
-  = lens _taTrustedApps
-      (\ s a -> s{_taTrustedApps = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON TrustedApps where
-        parseJSON
-          = withObject "TrustedApps"
-              (\ o ->
-                 TrustedApps' <$>
-                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "admin#directory#trustedapplist")
-                     <*> (o .:? "trustedApps" .!= mempty))
-
-instance ToJSON TrustedApps where
-        toJSON TrustedApps'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _taEtag,
-                  ("nextPageToken" .=) <$> _taNextPageToken,
-                  Just ("kind" .= _taKind),
-                  ("trustedApps" .=) <$> _taTrustedApps])
-
--- | JSON template for Feature List Response object in Directory API.
---
--- /See:/ 'features' smart constructor.
-data Features = Features'
-    { _feaEtag          :: !(Maybe Text)
-    , _feaNextPageToken :: !(Maybe Text)
-    , _feaKind          :: !Text
-    , _feaFeatures      :: !(Maybe [Feature])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Features' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'feaEtag'
---
--- * 'feaNextPageToken'
---
--- * 'feaKind'
---
--- * 'feaFeatures'
-features
-    :: Features
-features =
-    Features'
-    { _feaEtag = Nothing
-    , _feaNextPageToken = Nothing
-    , _feaKind = "admin#directory#resources#features#featuresList"
-    , _feaFeatures = Nothing
-    }
-
--- | ETag of the resource.
-feaEtag :: Lens' Features (Maybe Text)
-feaEtag = lens _feaEtag (\ s a -> s{_feaEtag = a})
-
--- | The continuation token, used to page through large result sets. Provide
--- this value in a subsequent request to return the next page of results.
-feaNextPageToken :: Lens' Features (Maybe Text)
-feaNextPageToken
-  = lens _feaNextPageToken
-      (\ s a -> s{_feaNextPageToken = a})
-
--- | Kind of resource this is.
-feaKind :: Lens' Features Text
-feaKind = lens _feaKind (\ s a -> s{_feaKind = a})
-
--- | The Features in this page of results.
-feaFeatures :: Lens' Features [Feature]
-feaFeatures
-  = lens _feaFeatures (\ s a -> s{_feaFeatures = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON Features where
-        parseJSON
-          = withObject "Features"
-              (\ o ->
-                 Features' <$>
-                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!=
-                        "admin#directory#resources#features#featuresList")
-                     <*> (o .:? "features" .!= mempty))
-
-instance ToJSON Features where
-        toJSON Features'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _feaEtag,
-                  ("nextPageToken" .=) <$> _feaNextPageToken,
-                  Just ("kind" .= _feaKind),
-                  ("features" .=) <$> _feaFeatures])
-
--- | Additional parameters controlling delivery channel behavior. Optional.
---
--- /See:/ 'channelParams' smart constructor.
-newtype ChannelParams = ChannelParams'
-    { _cpAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChannelParams' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cpAddtional'
-channelParams
-    :: HashMap Text Text -- ^ 'cpAddtional'
-    -> ChannelParams
-channelParams pCpAddtional_ =
-    ChannelParams'
-    { _cpAddtional = _Coerce # pCpAddtional_
-    }
-
--- | Declares a new parameter by name.
-cpAddtional :: Lens' ChannelParams (HashMap Text Text)
-cpAddtional
-  = lens _cpAddtional (\ s a -> s{_cpAddtional = a}) .
-      _Coerce
-
-instance FromJSON ChannelParams where
-        parseJSON
-          = withObject "ChannelParams"
-              (\ o -> ChannelParams' <$> (parseJSONObject o))
-
-instance ToJSON ChannelParams where
-        toJSON = toJSON . _cpAddtional
-
--- | Trusted Platform Module (TPM) (Read-only)
---
--- /See:/ 'chromeOSDeviceTpmVersionInfo' smart constructor.
-data ChromeOSDeviceTpmVersionInfo = ChromeOSDeviceTpmVersionInfo'
-    { _codtviVendorSpecific  :: !(Maybe Text)
-    , _codtviManufacturer    :: !(Maybe Text)
-    , _codtviSpecLevel       :: !(Maybe Text)
-    , _codtviTpmModel        :: !(Maybe Text)
-    , _codtviFamily          :: !(Maybe Text)
-    , _codtviFirmwareVersion :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChromeOSDeviceTpmVersionInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'codtviVendorSpecific'
---
--- * 'codtviManufacturer'
---
--- * 'codtviSpecLevel'
---
--- * 'codtviTpmModel'
---
--- * 'codtviFamily'
---
--- * 'codtviFirmwareVersion'
-chromeOSDeviceTpmVersionInfo
-    :: ChromeOSDeviceTpmVersionInfo
-chromeOSDeviceTpmVersionInfo =
-    ChromeOSDeviceTpmVersionInfo'
-    { _codtviVendorSpecific = Nothing
-    , _codtviManufacturer = Nothing
-    , _codtviSpecLevel = Nothing
-    , _codtviTpmModel = Nothing
-    , _codtviFamily = Nothing
-    , _codtviFirmwareVersion = Nothing
-    }
-
--- | Vendor-specific information such as Vendor ID.
-codtviVendorSpecific :: Lens' ChromeOSDeviceTpmVersionInfo (Maybe Text)
-codtviVendorSpecific
-  = lens _codtviVendorSpecific
-      (\ s a -> s{_codtviVendorSpecific = a})
-
--- | TPM manufacturer code.
-codtviManufacturer :: Lens' ChromeOSDeviceTpmVersionInfo (Maybe Text)
-codtviManufacturer
-  = lens _codtviManufacturer
-      (\ s a -> s{_codtviManufacturer = a})
-
--- | TPM specification level.
-codtviSpecLevel :: Lens' ChromeOSDeviceTpmVersionInfo (Maybe Text)
-codtviSpecLevel
-  = lens _codtviSpecLevel
-      (\ s a -> s{_codtviSpecLevel = a})
-
--- | TPM model number.
-codtviTpmModel :: Lens' ChromeOSDeviceTpmVersionInfo (Maybe Text)
-codtviTpmModel
-  = lens _codtviTpmModel
-      (\ s a -> s{_codtviTpmModel = a})
-
--- | TPM family.
-codtviFamily :: Lens' ChromeOSDeviceTpmVersionInfo (Maybe Text)
-codtviFamily
-  = lens _codtviFamily (\ s a -> s{_codtviFamily = a})
-
--- | TPM firmware version.
-codtviFirmwareVersion :: Lens' ChromeOSDeviceTpmVersionInfo (Maybe Text)
-codtviFirmwareVersion
-  = lens _codtviFirmwareVersion
-      (\ s a -> s{_codtviFirmwareVersion = a})
-
-instance FromJSON ChromeOSDeviceTpmVersionInfo where
-        parseJSON
-          = withObject "ChromeOSDeviceTpmVersionInfo"
-              (\ o ->
-                 ChromeOSDeviceTpmVersionInfo' <$>
-                   (o .:? "vendorSpecific") <*> (o .:? "manufacturer")
-                     <*> (o .:? "specLevel")
-                     <*> (o .:? "tpmModel")
-                     <*> (o .:? "family")
-                     <*> (o .:? "firmwareVersion"))
-
-instance ToJSON ChromeOSDeviceTpmVersionInfo where
-        toJSON ChromeOSDeviceTpmVersionInfo'{..}
-          = object
-              (catMaybes
-                 [("vendorSpecific" .=) <$> _codtviVendorSpecific,
-                  ("manufacturer" .=) <$> _codtviManufacturer,
-                  ("specLevel" .=) <$> _codtviSpecLevel,
-                  ("tpmModel" .=) <$> _codtviTpmModel,
-                  ("family" .=) <$> _codtviFamily,
-                  ("firmwareVersion" .=) <$> _codtviFirmwareVersion])
-
--- | JSON template for an organization entry.
---
--- /See:/ 'userOrganization' smart constructor.
-data UserOrganization = UserOrganization'
-    { _uoDePartment         :: !(Maybe Text)
-    , _uoLocation           :: !(Maybe Text)
-    , _uoCostCenter         :: !(Maybe Text)
-    , _uoDomain             :: !(Maybe Text)
-    , _uoSymbol             :: !(Maybe Text)
-    , _uoPrimary            :: !(Maybe Bool)
-    , _uoName               :: !(Maybe Text)
-    , _uoFullTimeEquivalent :: !(Maybe (Textual Int32))
-    , _uoTitle              :: !(Maybe Text)
-    , _uoType               :: !(Maybe Text)
-    , _uoCustomType         :: !(Maybe Text)
-    , _uoDescription        :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserOrganization' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uoDePartment'
---
--- * 'uoLocation'
---
--- * 'uoCostCenter'
---
--- * 'uoDomain'
---
--- * 'uoSymbol'
---
--- * 'uoPrimary'
---
--- * 'uoName'
---
--- * 'uoFullTimeEquivalent'
---
--- * 'uoTitle'
---
--- * 'uoType'
---
--- * 'uoCustomType'
---
--- * 'uoDescription'
-userOrganization
-    :: UserOrganization
-userOrganization =
-    UserOrganization'
-    { _uoDePartment = Nothing
-    , _uoLocation = Nothing
-    , _uoCostCenter = Nothing
-    , _uoDomain = Nothing
-    , _uoSymbol = Nothing
-    , _uoPrimary = Nothing
-    , _uoName = Nothing
-    , _uoFullTimeEquivalent = Nothing
-    , _uoTitle = Nothing
-    , _uoType = Nothing
-    , _uoCustomType = Nothing
-    , _uoDescription = Nothing
-    }
-
--- | Department within the organization.
-uoDePartment :: Lens' UserOrganization (Maybe Text)
-uoDePartment
-  = lens _uoDePartment (\ s a -> s{_uoDePartment = a})
-
--- | Location of the organization. This need not be fully qualified address.
-uoLocation :: Lens' UserOrganization (Maybe Text)
-uoLocation
-  = lens _uoLocation (\ s a -> s{_uoLocation = a})
-
--- | The cost center of the users department.
-uoCostCenter :: Lens' UserOrganization (Maybe Text)
-uoCostCenter
-  = lens _uoCostCenter (\ s a -> s{_uoCostCenter = a})
-
--- | The domain to which the organization belongs to.
-uoDomain :: Lens' UserOrganization (Maybe Text)
-uoDomain = lens _uoDomain (\ s a -> s{_uoDomain = a})
-
--- | Symbol of the organization.
-uoSymbol :: Lens' UserOrganization (Maybe Text)
-uoSymbol = lens _uoSymbol (\ s a -> s{_uoSymbol = a})
-
--- | If it user\'s primary organization.
-uoPrimary :: Lens' UserOrganization (Maybe Bool)
-uoPrimary
-  = lens _uoPrimary (\ s a -> s{_uoPrimary = a})
-
--- | Name of the organization
-uoName :: Lens' UserOrganization (Maybe Text)
-uoName = lens _uoName (\ s a -> s{_uoName = a})
-
--- | The full-time equivalent percent within the organization (100000 =
--- 100%).
-uoFullTimeEquivalent :: Lens' UserOrganization (Maybe Int32)
-uoFullTimeEquivalent
-  = lens _uoFullTimeEquivalent
-      (\ s a -> s{_uoFullTimeEquivalent = a})
-      . mapping _Coerce
-
--- | Title (designation) of the user in the organization.
-uoTitle :: Lens' UserOrganization (Maybe Text)
-uoTitle = lens _uoTitle (\ s a -> s{_uoTitle = a})
-
--- | Each entry can have a type which indicates standard types of that entry.
--- For example organization could be of school, work etc. In addition to
--- the standard type, an entry can have a custom type and can give it any
--- name. Such types should have the CUSTOM value as type and also have a
--- CustomType value.
-uoType :: Lens' UserOrganization (Maybe Text)
-uoType = lens _uoType (\ s a -> s{_uoType = a})
-
--- | Custom type.
-uoCustomType :: Lens' UserOrganization (Maybe Text)
-uoCustomType
-  = lens _uoCustomType (\ s a -> s{_uoCustomType = a})
-
--- | Description of the organization.
-uoDescription :: Lens' UserOrganization (Maybe Text)
-uoDescription
-  = lens _uoDescription
-      (\ s a -> s{_uoDescription = a})
-
-instance FromJSON UserOrganization where
-        parseJSON
-          = withObject "UserOrganization"
-              (\ o ->
-                 UserOrganization' <$>
-                   (o .:? "department") <*> (o .:? "location") <*>
-                     (o .:? "costCenter")
-                     <*> (o .:? "domain")
-                     <*> (o .:? "symbol")
-                     <*> (o .:? "primary")
-                     <*> (o .:? "name")
-                     <*> (o .:? "fullTimeEquivalent")
-                     <*> (o .:? "title")
-                     <*> (o .:? "type")
-                     <*> (o .:? "customType")
-                     <*> (o .:? "description"))
-
-instance ToJSON UserOrganization where
-        toJSON UserOrganization'{..}
-          = object
-              (catMaybes
-                 [("department" .=) <$> _uoDePartment,
-                  ("location" .=) <$> _uoLocation,
-                  ("costCenter" .=) <$> _uoCostCenter,
-                  ("domain" .=) <$> _uoDomain,
-                  ("symbol" .=) <$> _uoSymbol,
-                  ("primary" .=) <$> _uoPrimary,
-                  ("name" .=) <$> _uoName,
-                  ("fullTimeEquivalent" .=) <$> _uoFullTimeEquivalent,
-                  ("title" .=) <$> _uoTitle, ("type" .=) <$> _uoType,
-                  ("customType" .=) <$> _uoCustomType,
-                  ("description" .=) <$> _uoDescription])
-
--- | JSON template for a website entry.
---
--- /See:/ 'userWebsite' smart constructor.
-data UserWebsite = UserWebsite'
-    { _uwValue      :: !(Maybe Text)
-    , _uwPrimary    :: !(Maybe Bool)
-    , _uwType       :: !(Maybe Text)
-    , _uwCustomType :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserWebsite' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uwValue'
---
--- * 'uwPrimary'
---
--- * 'uwType'
---
--- * 'uwCustomType'
-userWebsite
-    :: UserWebsite
-userWebsite =
-    UserWebsite'
-    { _uwValue = Nothing
-    , _uwPrimary = Nothing
-    , _uwType = Nothing
-    , _uwCustomType = Nothing
-    }
-
--- | Website.
-uwValue :: Lens' UserWebsite (Maybe Text)
-uwValue = lens _uwValue (\ s a -> s{_uwValue = a})
-
--- | If this is user\'s primary website or not.
-uwPrimary :: Lens' UserWebsite (Maybe Bool)
-uwPrimary
-  = lens _uwPrimary (\ s a -> s{_uwPrimary = a})
-
--- | Each entry can have a type which indicates standard types of that entry.
--- For example website could be of home, work, blog etc. In addition to the
--- standard type, an entry can have a custom type and can give it any name.
--- Such types should have the CUSTOM value as type and also have a
--- customType value.
-uwType :: Lens' UserWebsite (Maybe Text)
-uwType = lens _uwType (\ s a -> s{_uwType = a})
-
--- | Custom Type.
-uwCustomType :: Lens' UserWebsite (Maybe Text)
-uwCustomType
-  = lens _uwCustomType (\ s a -> s{_uwCustomType = a})
-
-instance FromJSON UserWebsite where
-        parseJSON
-          = withObject "UserWebsite"
-              (\ o ->
-                 UserWebsite' <$>
-                   (o .:? "value") <*> (o .:? "primary") <*>
-                     (o .:? "type")
-                     <*> (o .:? "customType"))
-
-instance ToJSON UserWebsite where
-        toJSON UserWebsite'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _uwValue,
-                  ("primary" .=) <$> _uwPrimary,
-                  ("type" .=) <$> _uwType,
-                  ("customType" .=) <$> _uwCustomType])
-
---
--- /See:/ 'chromeOSDeviceActiveTimeRangesItem' smart constructor.
-data ChromeOSDeviceActiveTimeRangesItem = ChromeOSDeviceActiveTimeRangesItem'
-    { _codatriDate       :: !(Maybe Date')
-    , _codatriActiveTime :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChromeOSDeviceActiveTimeRangesItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'codatriDate'
---
--- * 'codatriActiveTime'
-chromeOSDeviceActiveTimeRangesItem
-    :: ChromeOSDeviceActiveTimeRangesItem
-chromeOSDeviceActiveTimeRangesItem =
-    ChromeOSDeviceActiveTimeRangesItem'
-    { _codatriDate = Nothing
-    , _codatriActiveTime = Nothing
-    }
-
--- | Date of usage
-codatriDate :: Lens' ChromeOSDeviceActiveTimeRangesItem (Maybe Day)
-codatriDate
-  = lens _codatriDate (\ s a -> s{_codatriDate = a}) .
-      mapping _Date
-
--- | Duration in milliseconds
-codatriActiveTime :: Lens' ChromeOSDeviceActiveTimeRangesItem (Maybe Int32)
-codatriActiveTime
-  = lens _codatriActiveTime
-      (\ s a -> s{_codatriActiveTime = a})
-      . mapping _Coerce
-
-instance FromJSON ChromeOSDeviceActiveTimeRangesItem
-         where
-        parseJSON
-          = withObject "ChromeOSDeviceActiveTimeRangesItem"
-              (\ o ->
-                 ChromeOSDeviceActiveTimeRangesItem' <$>
-                   (o .:? "date") <*> (o .:? "activeTime"))
-
-instance ToJSON ChromeOSDeviceActiveTimeRangesItem
-         where
-        toJSON ChromeOSDeviceActiveTimeRangesItem'{..}
-          = object
-              (catMaybes
-                 [("date" .=) <$> _codatriDate,
-                  ("activeTime" .=) <$> _codatriActiveTime])
-
--- | JSON template for an email.
---
--- /See:/ 'userEmail' smart constructor.
-data UserEmail = UserEmail'
-    { _ueAddress    :: !(Maybe Text)
-    , _uePrimary    :: !(Maybe Bool)
-    , _ueType       :: !(Maybe Text)
-    , _ueCustomType :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserEmail' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ueAddress'
---
--- * 'uePrimary'
---
--- * 'ueType'
---
--- * 'ueCustomType'
-userEmail
-    :: UserEmail
-userEmail =
-    UserEmail'
-    { _ueAddress = Nothing
-    , _uePrimary = Nothing
-    , _ueType = Nothing
-    , _ueCustomType = Nothing
-    }
-
--- | Email id of the user.
-ueAddress :: Lens' UserEmail (Maybe Text)
-ueAddress
-  = lens _ueAddress (\ s a -> s{_ueAddress = a})
-
--- | If this is user\'s primary email. Only one entry could be marked as
--- primary.
-uePrimary :: Lens' UserEmail (Maybe Bool)
-uePrimary
-  = lens _uePrimary (\ s a -> s{_uePrimary = a})
-
--- | Each entry can have a type which indicates standard types of that entry.
--- For example email could be of home, work etc. In addition to the
--- standard type, an entry can have a custom type and can take any value
--- Such types should have the CUSTOM value as type and also have a
--- customType value.
-ueType :: Lens' UserEmail (Maybe Text)
-ueType = lens _ueType (\ s a -> s{_ueType = a})
-
--- | Custom Type.
-ueCustomType :: Lens' UserEmail (Maybe Text)
-ueCustomType
-  = lens _ueCustomType (\ s a -> s{_ueCustomType = a})
-
-instance FromJSON UserEmail where
-        parseJSON
-          = withObject "UserEmail"
-              (\ o ->
-                 UserEmail' <$>
-                   (o .:? "address") <*> (o .:? "primary") <*>
-                     (o .:? "type")
-                     <*> (o .:? "customType"))
-
-instance ToJSON UserEmail where
-        toJSON UserEmail'{..}
-          = object
-              (catMaybes
-                 [("address" .=) <$> _ueAddress,
-                  ("primary" .=) <$> _uePrimary,
-                  ("type" .=) <$> _ueType,
-                  ("customType" .=) <$> _ueCustomType])
-
--- | JSON template for a phone entry.
---
--- /See:/ 'userPhone' smart constructor.
-data UserPhone = UserPhone'
-    { _upValue      :: !(Maybe Text)
-    , _upPrimary    :: !(Maybe Bool)
-    , _upType       :: !(Maybe Text)
-    , _upCustomType :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserPhone' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'upValue'
---
--- * 'upPrimary'
---
--- * 'upType'
---
--- * 'upCustomType'
-userPhone
-    :: UserPhone
-userPhone =
-    UserPhone'
-    { _upValue = Nothing
-    , _upPrimary = Nothing
-    , _upType = Nothing
-    , _upCustomType = Nothing
-    }
-
--- | Phone number.
-upValue :: Lens' UserPhone (Maybe Text)
-upValue = lens _upValue (\ s a -> s{_upValue = a})
-
--- | If this is user\'s primary phone or not.
-upPrimary :: Lens' UserPhone (Maybe Bool)
-upPrimary
-  = lens _upPrimary (\ s a -> s{_upPrimary = a})
-
--- | Each entry can have a type which indicates standard types of that entry.
--- For example phone could be of home_fax, work, mobile etc. In addition to
--- the standard type, an entry can have a custom type and can give it any
--- name. Such types should have the CUSTOM value as type and also have a
--- customType value.
-upType :: Lens' UserPhone (Maybe Text)
-upType = lens _upType (\ s a -> s{_upType = a})
-
--- | Custom Type.
-upCustomType :: Lens' UserPhone (Maybe Text)
-upCustomType
-  = lens _upCustomType (\ s a -> s{_upCustomType = a})
-
-instance FromJSON UserPhone where
-        parseJSON
-          = withObject "UserPhone"
-              (\ o ->
-                 UserPhone' <$>
-                   (o .:? "value") <*> (o .:? "primary") <*>
-                     (o .:? "type")
-                     <*> (o .:? "customType"))
-
-instance ToJSON UserPhone where
-        toJSON UserPhone'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _upValue,
-                  ("primary" .=) <$> _upPrimary,
-                  ("type" .=) <$> _upType,
-                  ("customType" .=) <$> _upCustomType])
-
--- | JSON template for Photo object in Directory API.
---
--- /See:/ 'userPhoto' smart constructor.
-data UserPhoto = UserPhoto'
-    { _upPhotoData    :: !(Maybe Bytes)
-    , _upEtag         :: !(Maybe Text)
-    , _upHeight       :: !(Maybe (Textual Int32))
-    , _upKind         :: !Text
-    , _upWidth        :: !(Maybe (Textual Int32))
-    , _upMimeType     :: !(Maybe Text)
-    , _upId           :: !(Maybe Text)
-    , _upPrimaryEmail :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserPhoto' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'upPhotoData'
---
--- * 'upEtag'
---
--- * 'upHeight'
---
--- * 'upKind'
---
--- * 'upWidth'
---
--- * 'upMimeType'
---
--- * 'upId'
---
--- * 'upPrimaryEmail'
-userPhoto
-    :: UserPhoto
-userPhoto =
-    UserPhoto'
-    { _upPhotoData = Nothing
-    , _upEtag = Nothing
-    , _upHeight = Nothing
-    , _upKind = "admin#directory#user#photo"
-    , _upWidth = Nothing
-    , _upMimeType = Nothing
-    , _upId = Nothing
-    , _upPrimaryEmail = Nothing
-    }
-
--- | Base64 encoded photo data
-upPhotoData :: Lens' UserPhoto (Maybe ByteString)
-upPhotoData
-  = lens _upPhotoData (\ s a -> s{_upPhotoData = a}) .
-      mapping _Bytes
-
--- | ETag of the resource.
-upEtag :: Lens' UserPhoto (Maybe Text)
-upEtag = lens _upEtag (\ s a -> s{_upEtag = a})
-
--- | Height in pixels of the photo
-upHeight :: Lens' UserPhoto (Maybe Int32)
-upHeight
-  = lens _upHeight (\ s a -> s{_upHeight = a}) .
-      mapping _Coerce
-
--- | Kind of resource this is.
-upKind :: Lens' UserPhoto Text
-upKind = lens _upKind (\ s a -> s{_upKind = a})
-
--- | Width in pixels of the photo
-upWidth :: Lens' UserPhoto (Maybe Int32)
-upWidth
-  = lens _upWidth (\ s a -> s{_upWidth = a}) .
-      mapping _Coerce
-
--- | Mime Type of the photo
-upMimeType :: Lens' UserPhoto (Maybe Text)
-upMimeType
-  = lens _upMimeType (\ s a -> s{_upMimeType = a})
-
--- | Unique identifier of User (Read-only)
-upId :: Lens' UserPhoto (Maybe Text)
-upId = lens _upId (\ s a -> s{_upId = a})
-
--- | Primary email of User (Read-only)
-upPrimaryEmail :: Lens' UserPhoto (Maybe Text)
-upPrimaryEmail
-  = lens _upPrimaryEmail
-      (\ s a -> s{_upPrimaryEmail = a})
-
-instance FromJSON UserPhoto where
-        parseJSON
-          = withObject "UserPhoto"
-              (\ o ->
-                 UserPhoto' <$>
-                   (o .:? "photoData") <*> (o .:? "etag") <*>
-                     (o .:? "height")
-                     <*> (o .:? "kind" .!= "admin#directory#user#photo")
-                     <*> (o .:? "width")
-                     <*> (o .:? "mimeType")
-                     <*> (o .:? "id")
-                     <*> (o .:? "primaryEmail"))
-
-instance ToJSON UserPhoto where
-        toJSON UserPhoto'{..}
-          = object
-              (catMaybes
-                 [("photoData" .=) <$> _upPhotoData,
-                  ("etag" .=) <$> _upEtag, ("height" .=) <$> _upHeight,
-                  Just ("kind" .= _upKind), ("width" .=) <$> _upWidth,
-                  ("mimeType" .=) <$> _upMimeType, ("id" .=) <$> _upId,
-                  ("primaryEmail" .=) <$> _upPrimaryEmail])
-
---
--- /See:/ 'chromeOSDeviceSystemRamFreeReportsItem' smart constructor.
-data ChromeOSDeviceSystemRamFreeReportsItem = ChromeOSDeviceSystemRamFreeReportsItem'
-    { _codsrfriReportTime        :: !(Maybe DateTime')
-    , _codsrfriSystemRamFreeInfo :: !(Maybe [Textual Int64])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChromeOSDeviceSystemRamFreeReportsItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'codsrfriReportTime'
---
--- * 'codsrfriSystemRamFreeInfo'
-chromeOSDeviceSystemRamFreeReportsItem
-    :: ChromeOSDeviceSystemRamFreeReportsItem
-chromeOSDeviceSystemRamFreeReportsItem =
-    ChromeOSDeviceSystemRamFreeReportsItem'
-    { _codsrfriReportTime = Nothing
-    , _codsrfriSystemRamFreeInfo = Nothing
-    }
-
--- | Date and time the report was received.
-codsrfriReportTime :: Lens' ChromeOSDeviceSystemRamFreeReportsItem (Maybe UTCTime)
-codsrfriReportTime
-  = lens _codsrfriReportTime
-      (\ s a -> s{_codsrfriReportTime = a})
-      . mapping _DateTime
-
-codsrfriSystemRamFreeInfo :: Lens' ChromeOSDeviceSystemRamFreeReportsItem [Int64]
-codsrfriSystemRamFreeInfo
-  = lens _codsrfriSystemRamFreeInfo
-      (\ s a -> s{_codsrfriSystemRamFreeInfo = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON
-         ChromeOSDeviceSystemRamFreeReportsItem where
-        parseJSON
-          = withObject "ChromeOSDeviceSystemRamFreeReportsItem"
-              (\ o ->
-                 ChromeOSDeviceSystemRamFreeReportsItem' <$>
-                   (o .:? "reportTime") <*>
-                     (o .:? "systemRamFreeInfo" .!= mempty))
-
-instance ToJSON
-         ChromeOSDeviceSystemRamFreeReportsItem where
-        toJSON ChromeOSDeviceSystemRamFreeReportsItem'{..}
-          = object
-              (catMaybes
-                 [("reportTime" .=) <$> _codsrfriReportTime,
-                  ("systemRamFreeInfo" .=) <$>
-                    _codsrfriSystemRamFreeInfo])
-
--- | JSON template for a POSIX account entry. Description of the field
--- family: go\/fbs-posix.
---
--- /See:/ 'userPosixAccount' smart constructor.
-data UserPosixAccount = UserPosixAccount'
-    { _upaGecos               :: !(Maybe Text)
-    , _upaUid                 :: !(Maybe (Textual Word64))
-    , _upaUsername            :: !(Maybe Text)
-    , _upaShell               :: !(Maybe Text)
-    , _upaPrimary             :: !(Maybe Bool)
-    , _upaAccountId           :: !(Maybe Text)
-    , _upaGid                 :: !(Maybe (Textual Word64))
-    , _upaOperatingSystemType :: !(Maybe Text)
-    , _upaSystemId            :: !(Maybe Text)
-    , _upaHomeDirectory       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserPosixAccount' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'upaGecos'
---
--- * 'upaUid'
---
--- * 'upaUsername'
---
--- * 'upaShell'
---
--- * 'upaPrimary'
---
--- * 'upaAccountId'
---
--- * 'upaGid'
---
--- * 'upaOperatingSystemType'
---
--- * 'upaSystemId'
---
--- * 'upaHomeDirectory'
-userPosixAccount
-    :: UserPosixAccount
-userPosixAccount =
-    UserPosixAccount'
-    { _upaGecos = Nothing
-    , _upaUid = Nothing
-    , _upaUsername = Nothing
-    , _upaShell = Nothing
-    , _upaPrimary = Nothing
-    , _upaAccountId = Nothing
-    , _upaGid = Nothing
-    , _upaOperatingSystemType = Nothing
-    , _upaSystemId = Nothing
-    , _upaHomeDirectory = Nothing
-    }
-
--- | The GECOS (user information) for this account.
-upaGecos :: Lens' UserPosixAccount (Maybe Text)
-upaGecos = lens _upaGecos (\ s a -> s{_upaGecos = a})
-
--- | The POSIX compliant user ID.
-upaUid :: Lens' UserPosixAccount (Maybe Word64)
-upaUid
-  = lens _upaUid (\ s a -> s{_upaUid = a}) .
-      mapping _Coerce
-
--- | The username of the account.
-upaUsername :: Lens' UserPosixAccount (Maybe Text)
-upaUsername
-  = lens _upaUsername (\ s a -> s{_upaUsername = a})
-
--- | The path to the login shell for this account.
-upaShell :: Lens' UserPosixAccount (Maybe Text)
-upaShell = lens _upaShell (\ s a -> s{_upaShell = a})
-
--- | If this is user\'s primary account within the SystemId.
-upaPrimary :: Lens' UserPosixAccount (Maybe Bool)
-upaPrimary
-  = lens _upaPrimary (\ s a -> s{_upaPrimary = a})
-
--- | A POSIX account field identifier. (Read-only)
-upaAccountId :: Lens' UserPosixAccount (Maybe Text)
-upaAccountId
-  = lens _upaAccountId (\ s a -> s{_upaAccountId = a})
-
--- | The default group ID.
-upaGid :: Lens' UserPosixAccount (Maybe Word64)
-upaGid
-  = lens _upaGid (\ s a -> s{_upaGid = a}) .
-      mapping _Coerce
-
--- | The operating system type for this account.
-upaOperatingSystemType :: Lens' UserPosixAccount (Maybe Text)
-upaOperatingSystemType
-  = lens _upaOperatingSystemType
-      (\ s a -> s{_upaOperatingSystemType = a})
-
--- | System identifier for which account Username or Uid apply to.
-upaSystemId :: Lens' UserPosixAccount (Maybe Text)
-upaSystemId
-  = lens _upaSystemId (\ s a -> s{_upaSystemId = a})
-
--- | The path to the home directory for this account.
-upaHomeDirectory :: Lens' UserPosixAccount (Maybe Text)
-upaHomeDirectory
-  = lens _upaHomeDirectory
-      (\ s a -> s{_upaHomeDirectory = a})
-
-instance FromJSON UserPosixAccount where
-        parseJSON
-          = withObject "UserPosixAccount"
-              (\ o ->
-                 UserPosixAccount' <$>
-                   (o .:? "gecos") <*> (o .:? "uid") <*>
-                     (o .:? "username")
-                     <*> (o .:? "shell")
-                     <*> (o .:? "primary")
-                     <*> (o .:? "accountId")
-                     <*> (o .:? "gid")
-                     <*> (o .:? "operatingSystemType")
-                     <*> (o .:? "systemId")
-                     <*> (o .:? "homeDirectory"))
-
-instance ToJSON UserPosixAccount where
-        toJSON UserPosixAccount'{..}
-          = object
-              (catMaybes
-                 [("gecos" .=) <$> _upaGecos, ("uid" .=) <$> _upaUid,
-                  ("username" .=) <$> _upaUsername,
-                  ("shell" .=) <$> _upaShell,
-                  ("primary" .=) <$> _upaPrimary,
-                  ("accountId" .=) <$> _upaAccountId,
-                  ("gid" .=) <$> _upaGid,
-                  ("operatingSystemType" .=) <$>
-                    _upaOperatingSystemType,
-                  ("systemId" .=) <$> _upaSystemId,
-                  ("homeDirectory" .=) <$> _upaHomeDirectory])
-
--- | JSON template for a \"feature instance\".
---
--- /See:/ 'featureInstance' smart constructor.
-newtype FeatureInstance = FeatureInstance'
-    { _fiFeature :: Maybe Feature
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FeatureInstance' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fiFeature'
-featureInstance
-    :: FeatureInstance
-featureInstance =
-    FeatureInstance'
-    { _fiFeature = Nothing
-    }
-
--- | The feature that this is an instance of. A calendar resource may have
--- multiple instances of a feature.
-fiFeature :: Lens' FeatureInstance (Maybe Feature)
-fiFeature
-  = lens _fiFeature (\ s a -> s{_fiFeature = a})
-
-instance FromJSON FeatureInstance where
-        parseJSON
-          = withObject "FeatureInstance"
-              (\ o -> FeatureInstance' <$> (o .:? "feature"))
-
-instance ToJSON FeatureInstance where
-        toJSON FeatureInstance'{..}
-          = object (catMaybes [("feature" .=) <$> _fiFeature])
-
--- | JSON template for Mobile Device resource in Directory API.
---
--- /See:/ 'mobileDevice' smart constructor.
-data MobileDevice = MobileDevice'
-    { _mobEmail                          :: !(Maybe [Text])
-    , _mobStatus                         :: !(Maybe Text)
-    , _mobPrivilege                      :: !(Maybe Text)
-    , _mobEtag                           :: !(Maybe Text)
-    , _mobResourceId                     :: !(Maybe Text)
-    , _mobManufacturer                   :: !(Maybe Text)
-    , _mobBuildNumber                    :: !(Maybe Text)
-    , _mobManagedAccountIsOnOwnerProFile :: !(Maybe Bool)
-    , _mobLastSync                       :: !(Maybe DateTime')
-    , _mobOtherAccountsInfo              :: !(Maybe [Text])
-    , _mobKind                           :: !Text
-    , _mobAdbStatus                      :: !(Maybe Bool)
-    , _mobReleaseVersion                 :: !(Maybe Text)
-    , _mobBrand                          :: !(Maybe Text)
-    , _mobSecurityPatchLevel             :: !(Maybe (Textual Int64))
-    , _mobNetworkOperator                :: !(Maybe Text)
-    , _mobKernelVersion                  :: !(Maybe Text)
-    , _mobOS                             :: !(Maybe Text)
-    , _mobName                           :: !(Maybe [Text])
-    , _mobModel                          :: !(Maybe Text)
-    , _mobDeveloperOptionsStatus         :: !(Maybe Bool)
-    , _mobUnknownSourcesStatus           :: !(Maybe Bool)
-    , _mobMeid                           :: !(Maybe Text)
-    , _mobBootLoaderVersion              :: !(Maybe Text)
-    , _mobDeviceId                       :: !(Maybe Text)
-    , _mobFirstSync                      :: !(Maybe DateTime')
-    , _mobUserAgent                      :: !(Maybe Text)
-    , _mobImei                           :: !(Maybe Text)
-    , _mobType                           :: !(Maybe Text)
-    , _mobWifiMACAddress                 :: !(Maybe Text)
-    , _mobEncryptionStatus               :: !(Maybe Text)
-    , _mobSerialNumber                   :: !(Maybe Text)
-    , _mobDevicePasswordStatus           :: !(Maybe Text)
-    , _mobHardwareId                     :: !(Maybe Text)
-    , _mobBasebandVersion                :: !(Maybe Text)
-    , _mobSupportsWorkProFile            :: !(Maybe Bool)
-    , _mobHardware                       :: !(Maybe Text)
-    , _mobDeviceCompromisedStatus        :: !(Maybe Text)
-    , _mobApplications                   :: !(Maybe [MobileDeviceApplicationsItem])
-    , _mobDefaultLanguage                :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MobileDevice' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mobEmail'
---
--- * 'mobStatus'
---
--- * 'mobPrivilege'
---
--- * 'mobEtag'
---
--- * 'mobResourceId'
---
--- * 'mobManufacturer'
---
--- * 'mobBuildNumber'
---
--- * 'mobManagedAccountIsOnOwnerProFile'
---
--- * 'mobLastSync'
---
--- * 'mobOtherAccountsInfo'
---
--- * 'mobKind'
---
--- * 'mobAdbStatus'
---
--- * 'mobReleaseVersion'
---
--- * 'mobBrand'
---
--- * 'mobSecurityPatchLevel'
---
--- * 'mobNetworkOperator'
---
--- * 'mobKernelVersion'
---
--- * 'mobOS'
---
--- * 'mobName'
---
--- * 'mobModel'
---
--- * 'mobDeveloperOptionsStatus'
---
--- * 'mobUnknownSourcesStatus'
---
--- * 'mobMeid'
---
--- * 'mobBootLoaderVersion'
---
--- * 'mobDeviceId'
---
--- * 'mobFirstSync'
---
--- * 'mobUserAgent'
---
--- * 'mobImei'
---
--- * 'mobType'
---
--- * 'mobWifiMACAddress'
---
--- * 'mobEncryptionStatus'
---
--- * 'mobSerialNumber'
---
--- * 'mobDevicePasswordStatus'
---
--- * 'mobHardwareId'
---
--- * 'mobBasebandVersion'
---
--- * 'mobSupportsWorkProFile'
---
--- * 'mobHardware'
---
--- * 'mobDeviceCompromisedStatus'
---
--- * 'mobApplications'
---
--- * 'mobDefaultLanguage'
-mobileDevice
-    :: MobileDevice
-mobileDevice =
-    MobileDevice'
-    { _mobEmail = Nothing
-    , _mobStatus = Nothing
-    , _mobPrivilege = Nothing
-    , _mobEtag = Nothing
-    , _mobResourceId = Nothing
-    , _mobManufacturer = Nothing
-    , _mobBuildNumber = Nothing
-    , _mobManagedAccountIsOnOwnerProFile = Nothing
-    , _mobLastSync = Nothing
-    , _mobOtherAccountsInfo = Nothing
-    , _mobKind = "admin#directory#mobiledevice"
-    , _mobAdbStatus = Nothing
-    , _mobReleaseVersion = Nothing
-    , _mobBrand = Nothing
-    , _mobSecurityPatchLevel = Nothing
-    , _mobNetworkOperator = Nothing
-    , _mobKernelVersion = Nothing
-    , _mobOS = Nothing
-    , _mobName = Nothing
-    , _mobModel = Nothing
-    , _mobDeveloperOptionsStatus = Nothing
-    , _mobUnknownSourcesStatus = Nothing
-    , _mobMeid = Nothing
-    , _mobBootLoaderVersion = Nothing
-    , _mobDeviceId = Nothing
-    , _mobFirstSync = Nothing
-    , _mobUserAgent = Nothing
-    , _mobImei = Nothing
-    , _mobType = Nothing
-    , _mobWifiMACAddress = Nothing
-    , _mobEncryptionStatus = Nothing
-    , _mobSerialNumber = Nothing
-    , _mobDevicePasswordStatus = Nothing
-    , _mobHardwareId = Nothing
-    , _mobBasebandVersion = Nothing
-    , _mobSupportsWorkProFile = Nothing
-    , _mobHardware = Nothing
-    , _mobDeviceCompromisedStatus = Nothing
-    , _mobApplications = Nothing
-    , _mobDefaultLanguage = Nothing
-    }
-
--- | List of owner user\'s email addresses (Read-only)
-mobEmail :: Lens' MobileDevice [Text]
-mobEmail
-  = lens _mobEmail (\ s a -> s{_mobEmail = a}) .
-      _Default
-      . _Coerce
-
--- | Status of the device (Read-only)
-mobStatus :: Lens' MobileDevice (Maybe Text)
-mobStatus
-  = lens _mobStatus (\ s a -> s{_mobStatus = a})
-
--- | DMAgentPermission (Read-only)
-mobPrivilege :: Lens' MobileDevice (Maybe Text)
-mobPrivilege
-  = lens _mobPrivilege (\ s a -> s{_mobPrivilege = a})
-
--- | ETag of the resource.
-mobEtag :: Lens' MobileDevice (Maybe Text)
-mobEtag = lens _mobEtag (\ s a -> s{_mobEtag = a})
-
--- | Unique identifier of Mobile Device (Read-only)
-mobResourceId :: Lens' MobileDevice (Maybe Text)
-mobResourceId
-  = lens _mobResourceId
-      (\ s a -> s{_mobResourceId = a})
-
--- | Mobile Device manufacturer (Read-only)
-mobManufacturer :: Lens' MobileDevice (Maybe Text)
-mobManufacturer
-  = lens _mobManufacturer
-      (\ s a -> s{_mobManufacturer = a})
-
--- | Mobile Device Build number (Read-only)
-mobBuildNumber :: Lens' MobileDevice (Maybe Text)
-mobBuildNumber
-  = lens _mobBuildNumber
-      (\ s a -> s{_mobBuildNumber = a})
-
--- | Boolean indicating if this account is on owner\/primary profile or not
--- (Read-only)
-mobManagedAccountIsOnOwnerProFile :: Lens' MobileDevice (Maybe Bool)
-mobManagedAccountIsOnOwnerProFile
-  = lens _mobManagedAccountIsOnOwnerProFile
-      (\ s a -> s{_mobManagedAccountIsOnOwnerProFile = a})
-
--- | Date and time the device was last synchronized with the policy settings
--- in the G Suite administrator control panel (Read-only)
-mobLastSync :: Lens' MobileDevice (Maybe UTCTime)
-mobLastSync
-  = lens _mobLastSync (\ s a -> s{_mobLastSync = a}) .
-      mapping _DateTime
-
--- | List of accounts added on device (Read-only)
-mobOtherAccountsInfo :: Lens' MobileDevice [Text]
-mobOtherAccountsInfo
-  = lens _mobOtherAccountsInfo
-      (\ s a -> s{_mobOtherAccountsInfo = a})
-      . _Default
-      . _Coerce
-
--- | Kind of resource this is.
-mobKind :: Lens' MobileDevice Text
-mobKind = lens _mobKind (\ s a -> s{_mobKind = a})
-
--- | Adb (USB debugging) enabled or disabled on device (Read-only)
-mobAdbStatus :: Lens' MobileDevice (Maybe Bool)
-mobAdbStatus
-  = lens _mobAdbStatus (\ s a -> s{_mobAdbStatus = a})
-
--- | Mobile Device release version version (Read-only)
-mobReleaseVersion :: Lens' MobileDevice (Maybe Text)
-mobReleaseVersion
-  = lens _mobReleaseVersion
-      (\ s a -> s{_mobReleaseVersion = a})
-
--- | Mobile Device Brand (Read-only)
-mobBrand :: Lens' MobileDevice (Maybe Text)
-mobBrand = lens _mobBrand (\ s a -> s{_mobBrand = a})
-
--- | Mobile Device Security patch level (Read-only)
-mobSecurityPatchLevel :: Lens' MobileDevice (Maybe Int64)
-mobSecurityPatchLevel
-  = lens _mobSecurityPatchLevel
-      (\ s a -> s{_mobSecurityPatchLevel = a})
-      . mapping _Coerce
-
--- | Mobile Device mobile or network operator (if available) (Read-only)
-mobNetworkOperator :: Lens' MobileDevice (Maybe Text)
-mobNetworkOperator
-  = lens _mobNetworkOperator
-      (\ s a -> s{_mobNetworkOperator = a})
-
--- | Mobile Device Kernel version (Read-only)
-mobKernelVersion :: Lens' MobileDevice (Maybe Text)
-mobKernelVersion
-  = lens _mobKernelVersion
-      (\ s a -> s{_mobKernelVersion = a})
-
--- | Name of the mobile operating system
-mobOS :: Lens' MobileDevice (Maybe Text)
-mobOS = lens _mobOS (\ s a -> s{_mobOS = a})
-
--- | List of owner user\'s names (Read-only)
-mobName :: Lens' MobileDevice [Text]
-mobName
-  = lens _mobName (\ s a -> s{_mobName = a}) . _Default
-      . _Coerce
-
--- | Name of the model of the device
-mobModel :: Lens' MobileDevice (Maybe Text)
-mobModel = lens _mobModel (\ s a -> s{_mobModel = a})
-
--- | Developer options enabled or disabled on device (Read-only)
-mobDeveloperOptionsStatus :: Lens' MobileDevice (Maybe Bool)
-mobDeveloperOptionsStatus
-  = lens _mobDeveloperOptionsStatus
-      (\ s a -> s{_mobDeveloperOptionsStatus = a})
-
--- | Unknown sources enabled or disabled on device (Read-only)
-mobUnknownSourcesStatus :: Lens' MobileDevice (Maybe Bool)
-mobUnknownSourcesStatus
-  = lens _mobUnknownSourcesStatus
-      (\ s a -> s{_mobUnknownSourcesStatus = a})
-
--- | Mobile Device MEID number (Read-only)
-mobMeid :: Lens' MobileDevice (Maybe Text)
-mobMeid = lens _mobMeid (\ s a -> s{_mobMeid = a})
-
--- | Mobile Device Bootloader version (Read-only)
-mobBootLoaderVersion :: Lens' MobileDevice (Maybe Text)
-mobBootLoaderVersion
-  = lens _mobBootLoaderVersion
-      (\ s a -> s{_mobBootLoaderVersion = a})
-
--- | Mobile Device serial number (Read-only)
-mobDeviceId :: Lens' MobileDevice (Maybe Text)
-mobDeviceId
-  = lens _mobDeviceId (\ s a -> s{_mobDeviceId = a})
-
--- | Date and time the device was first synchronized with the policy settings
--- in the G Suite administrator control panel (Read-only)
-mobFirstSync :: Lens' MobileDevice (Maybe UTCTime)
-mobFirstSync
-  = lens _mobFirstSync (\ s a -> s{_mobFirstSync = a})
-      . mapping _DateTime
-
--- | Mobile Device user agent
-mobUserAgent :: Lens' MobileDevice (Maybe Text)
-mobUserAgent
-  = lens _mobUserAgent (\ s a -> s{_mobUserAgent = a})
-
--- | Mobile Device IMEI number (Read-only)
-mobImei :: Lens' MobileDevice (Maybe Text)
-mobImei = lens _mobImei (\ s a -> s{_mobImei = a})
-
--- | The type of device (Read-only)
-mobType :: Lens' MobileDevice (Maybe Text)
-mobType = lens _mobType (\ s a -> s{_mobType = a})
-
--- | Mobile Device WiFi MAC address (Read-only)
-mobWifiMACAddress :: Lens' MobileDevice (Maybe Text)
-mobWifiMACAddress
-  = lens _mobWifiMACAddress
-      (\ s a -> s{_mobWifiMACAddress = a})
-
--- | Mobile Device Encryption Status (Read-only)
-mobEncryptionStatus :: Lens' MobileDevice (Maybe Text)
-mobEncryptionStatus
-  = lens _mobEncryptionStatus
-      (\ s a -> s{_mobEncryptionStatus = a})
-
--- | Mobile Device SSN or Serial Number (Read-only)
-mobSerialNumber :: Lens' MobileDevice (Maybe Text)
-mobSerialNumber
-  = lens _mobSerialNumber
-      (\ s a -> s{_mobSerialNumber = a})
-
--- | DevicePasswordStatus (Read-only)
-mobDevicePasswordStatus :: Lens' MobileDevice (Maybe Text)
-mobDevicePasswordStatus
-  = lens _mobDevicePasswordStatus
-      (\ s a -> s{_mobDevicePasswordStatus = a})
-
--- | Mobile Device Hardware Id (Read-only)
-mobHardwareId :: Lens' MobileDevice (Maybe Text)
-mobHardwareId
-  = lens _mobHardwareId
-      (\ s a -> s{_mobHardwareId = a})
-
--- | Mobile Device Baseband version (Read-only)
-mobBasebandVersion :: Lens' MobileDevice (Maybe Text)
-mobBasebandVersion
-  = lens _mobBasebandVersion
-      (\ s a -> s{_mobBasebandVersion = a})
-
--- | Work profile supported on device (Read-only)
-mobSupportsWorkProFile :: Lens' MobileDevice (Maybe Bool)
-mobSupportsWorkProFile
-  = lens _mobSupportsWorkProFile
-      (\ s a -> s{_mobSupportsWorkProFile = a})
-
--- | Mobile Device Hardware (Read-only)
-mobHardware :: Lens' MobileDevice (Maybe Text)
-mobHardware
-  = lens _mobHardware (\ s a -> s{_mobHardware = a})
-
--- | Mobile Device compromised status (Read-only)
-mobDeviceCompromisedStatus :: Lens' MobileDevice (Maybe Text)
-mobDeviceCompromisedStatus
-  = lens _mobDeviceCompromisedStatus
-      (\ s a -> s{_mobDeviceCompromisedStatus = a})
-
--- | List of applications installed on Mobile Device
-mobApplications :: Lens' MobileDevice [MobileDeviceApplicationsItem]
-mobApplications
-  = lens _mobApplications
-      (\ s a -> s{_mobApplications = a})
-      . _Default
-      . _Coerce
-
--- | The default locale used on the Mobile Device (Read-only)
-mobDefaultLanguage :: Lens' MobileDevice (Maybe Text)
-mobDefaultLanguage
-  = lens _mobDefaultLanguage
-      (\ s a -> s{_mobDefaultLanguage = a})
-
-instance FromJSON MobileDevice where
-        parseJSON
-          = withObject "MobileDevice"
-              (\ o ->
-                 MobileDevice' <$>
-                   (o .:? "email" .!= mempty) <*> (o .:? "status") <*>
-                     (o .:? "privilege")
-                     <*> (o .:? "etag")
-                     <*> (o .:? "resourceId")
-                     <*> (o .:? "manufacturer")
-                     <*> (o .:? "buildNumber")
-                     <*> (o .:? "managedAccountIsOnOwnerProfile")
-                     <*> (o .:? "lastSync")
-                     <*> (o .:? "otherAccountsInfo" .!= mempty)
-                     <*> (o .:? "kind" .!= "admin#directory#mobiledevice")
-                     <*> (o .:? "adbStatus")
-                     <*> (o .:? "releaseVersion")
-                     <*> (o .:? "brand")
-                     <*> (o .:? "securityPatchLevel")
-                     <*> (o .:? "networkOperator")
-                     <*> (o .:? "kernelVersion")
-                     <*> (o .:? "os")
-                     <*> (o .:? "name" .!= mempty)
-                     <*> (o .:? "model")
-                     <*> (o .:? "developerOptionsStatus")
-                     <*> (o .:? "unknownSourcesStatus")
-                     <*> (o .:? "meid")
-                     <*> (o .:? "bootloaderVersion")
-                     <*> (o .:? "deviceId")
-                     <*> (o .:? "firstSync")
-                     <*> (o .:? "userAgent")
-                     <*> (o .:? "imei")
-                     <*> (o .:? "type")
-                     <*> (o .:? "wifiMacAddress")
-                     <*> (o .:? "encryptionStatus")
-                     <*> (o .:? "serialNumber")
-                     <*> (o .:? "devicePasswordStatus")
-                     <*> (o .:? "hardwareId")
-                     <*> (o .:? "basebandVersion")
-                     <*> (o .:? "supportsWorkProfile")
-                     <*> (o .:? "hardware")
-                     <*> (o .:? "deviceCompromisedStatus")
-                     <*> (o .:? "applications" .!= mempty)
-                     <*> (o .:? "defaultLanguage"))
-
-instance ToJSON MobileDevice where
-        toJSON MobileDevice'{..}
-          = object
-              (catMaybes
-                 [("email" .=) <$> _mobEmail,
-                  ("status" .=) <$> _mobStatus,
-                  ("privilege" .=) <$> _mobPrivilege,
-                  ("etag" .=) <$> _mobEtag,
-                  ("resourceId" .=) <$> _mobResourceId,
-                  ("manufacturer" .=) <$> _mobManufacturer,
-                  ("buildNumber" .=) <$> _mobBuildNumber,
-                  ("managedAccountIsOnOwnerProfile" .=) <$>
-                    _mobManagedAccountIsOnOwnerProFile,
-                  ("lastSync" .=) <$> _mobLastSync,
-                  ("otherAccountsInfo" .=) <$> _mobOtherAccountsInfo,
-                  Just ("kind" .= _mobKind),
-                  ("adbStatus" .=) <$> _mobAdbStatus,
-                  ("releaseVersion" .=) <$> _mobReleaseVersion,
-                  ("brand" .=) <$> _mobBrand,
-                  ("securityPatchLevel" .=) <$> _mobSecurityPatchLevel,
-                  ("networkOperator" .=) <$> _mobNetworkOperator,
-                  ("kernelVersion" .=) <$> _mobKernelVersion,
-                  ("os" .=) <$> _mobOS, ("name" .=) <$> _mobName,
-                  ("model" .=) <$> _mobModel,
-                  ("developerOptionsStatus" .=) <$>
-                    _mobDeveloperOptionsStatus,
-                  ("unknownSourcesStatus" .=) <$>
-                    _mobUnknownSourcesStatus,
-                  ("meid" .=) <$> _mobMeid,
-                  ("bootloaderVersion" .=) <$> _mobBootLoaderVersion,
-                  ("deviceId" .=) <$> _mobDeviceId,
-                  ("firstSync" .=) <$> _mobFirstSync,
-                  ("userAgent" .=) <$> _mobUserAgent,
-                  ("imei" .=) <$> _mobImei, ("type" .=) <$> _mobType,
-                  ("wifiMacAddress" .=) <$> _mobWifiMACAddress,
-                  ("encryptionStatus" .=) <$> _mobEncryptionStatus,
-                  ("serialNumber" .=) <$> _mobSerialNumber,
-                  ("devicePasswordStatus" .=) <$>
-                    _mobDevicePasswordStatus,
-                  ("hardwareId" .=) <$> _mobHardwareId,
-                  ("basebandVersion" .=) <$> _mobBasebandVersion,
-                  ("supportsWorkProfile" .=) <$>
-                    _mobSupportsWorkProFile,
-                  ("hardware" .=) <$> _mobHardware,
-                  ("deviceCompromisedStatus" .=) <$>
-                    _mobDeviceCompromisedStatus,
-                  ("applications" .=) <$> _mobApplications,
-                  ("defaultLanguage" .=) <$> _mobDefaultLanguage])
-
---
--- /See:/ 'chromeOSDeviceCPUStatusReportsItem' smart constructor.
-data ChromeOSDeviceCPUStatusReportsItem = ChromeOSDeviceCPUStatusReportsItem'
-    { _codcsriCPUUtilizationPercentageInfo :: !(Maybe [Textual Int32])
-    , _codcsriCPUTemperatureInfo           :: !(Maybe [ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem])
-    , _codcsriReportTime                   :: !(Maybe DateTime')
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChromeOSDeviceCPUStatusReportsItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'codcsriCPUUtilizationPercentageInfo'
---
--- * 'codcsriCPUTemperatureInfo'
---
--- * 'codcsriReportTime'
-chromeOSDeviceCPUStatusReportsItem
-    :: ChromeOSDeviceCPUStatusReportsItem
-chromeOSDeviceCPUStatusReportsItem =
-    ChromeOSDeviceCPUStatusReportsItem'
-    { _codcsriCPUUtilizationPercentageInfo = Nothing
-    , _codcsriCPUTemperatureInfo = Nothing
-    , _codcsriReportTime = Nothing
-    }
-
-codcsriCPUUtilizationPercentageInfo :: Lens' ChromeOSDeviceCPUStatusReportsItem [Int32]
-codcsriCPUUtilizationPercentageInfo
-  = lens _codcsriCPUUtilizationPercentageInfo
-      (\ s a ->
-         s{_codcsriCPUUtilizationPercentageInfo = a})
-      . _Default
-      . _Coerce
-
--- | List of CPU temperature samples.
-codcsriCPUTemperatureInfo :: Lens' ChromeOSDeviceCPUStatusReportsItem [ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem]
-codcsriCPUTemperatureInfo
-  = lens _codcsriCPUTemperatureInfo
-      (\ s a -> s{_codcsriCPUTemperatureInfo = a})
-      . _Default
-      . _Coerce
-
--- | Date and time the report was received.
-codcsriReportTime :: Lens' ChromeOSDeviceCPUStatusReportsItem (Maybe UTCTime)
-codcsriReportTime
-  = lens _codcsriReportTime
-      (\ s a -> s{_codcsriReportTime = a})
-      . mapping _DateTime
-
-instance FromJSON ChromeOSDeviceCPUStatusReportsItem
-         where
-        parseJSON
-          = withObject "ChromeOSDeviceCPUStatusReportsItem"
-              (\ o ->
-                 ChromeOSDeviceCPUStatusReportsItem' <$>
-                   (o .:? "cpuUtilizationPercentageInfo" .!= mempty) <*>
-                     (o .:? "cpuTemperatureInfo" .!= mempty)
-                     <*> (o .:? "reportTime"))
-
-instance ToJSON ChromeOSDeviceCPUStatusReportsItem
-         where
-        toJSON ChromeOSDeviceCPUStatusReportsItem'{..}
-          = object
-              (catMaybes
-                 [("cpuUtilizationPercentageInfo" .=) <$>
-                    _codcsriCPUUtilizationPercentageInfo,
-                  ("cpuTemperatureInfo" .=) <$>
-                    _codcsriCPUTemperatureInfo,
-                  ("reportTime" .=) <$> _codcsriReportTime])
-
--- | JSON template for Member resource in Directory API.
---
--- /See:/ 'member' smart constructor.
-data Member = Member'
-    { _memEmail            :: !(Maybe Text)
-    , _memStatus           :: !(Maybe Text)
-    , _memEtag             :: !(Maybe Text)
-    , _memKind             :: !Text
-    , _memDeliverySettings :: !(Maybe Text)
-    , _memRole             :: !(Maybe Text)
-    , _memId               :: !(Maybe Text)
-    , _memType             :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Member' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'memEmail'
---
--- * 'memStatus'
---
--- * 'memEtag'
---
--- * 'memKind'
---
--- * 'memDeliverySettings'
---
--- * 'memRole'
---
--- * 'memId'
---
--- * 'memType'
-member
-    :: Member
-member =
-    Member'
-    { _memEmail = Nothing
-    , _memStatus = Nothing
-    , _memEtag = Nothing
-    , _memKind = "admin#directory#member"
-    , _memDeliverySettings = Nothing
-    , _memRole = Nothing
-    , _memId = Nothing
-    , _memType = Nothing
-    }
-
--- | Email of member (Read-only)
-memEmail :: Lens' Member (Maybe Text)
-memEmail = lens _memEmail (\ s a -> s{_memEmail = a})
-
--- | Status of member (Immutable)
-memStatus :: Lens' Member (Maybe Text)
-memStatus
-  = lens _memStatus (\ s a -> s{_memStatus = a})
-
--- | ETag of the resource.
-memEtag :: Lens' Member (Maybe Text)
-memEtag = lens _memEtag (\ s a -> s{_memEtag = a})
-
--- | Kind of resource this is.
-memKind :: Lens' Member Text
-memKind = lens _memKind (\ s a -> s{_memKind = a})
-
--- | Delivery settings of member
-memDeliverySettings :: Lens' Member (Maybe Text)
-memDeliverySettings
-  = lens _memDeliverySettings
-      (\ s a -> s{_memDeliverySettings = a})
-
--- | Role of member
-memRole :: Lens' Member (Maybe Text)
-memRole = lens _memRole (\ s a -> s{_memRole = a})
-
--- | Unique identifier of customer member (Read-only) Unique identifier of
--- group (Read-only) Unique identifier of member (Read-only)
-memId :: Lens' Member (Maybe Text)
-memId = lens _memId (\ s a -> s{_memId = a})
-
--- | Type of member (Immutable)
-memType :: Lens' Member (Maybe Text)
-memType = lens _memType (\ s a -> s{_memType = a})
-
-instance FromJSON Member where
-        parseJSON
-          = withObject "Member"
-              (\ o ->
-                 Member' <$>
-                   (o .:? "email") <*> (o .:? "status") <*>
-                     (o .:? "etag")
-                     <*> (o .:? "kind" .!= "admin#directory#member")
-                     <*> (o .:? "delivery_settings")
-                     <*> (o .:? "role")
-                     <*> (o .:? "id")
-                     <*> (o .:? "type"))
-
-instance ToJSON Member where
-        toJSON Member'{..}
-          = object
-              (catMaybes
-                 [("email" .=) <$> _memEmail,
-                  ("status" .=) <$> _memStatus,
-                  ("etag" .=) <$> _memEtag, Just ("kind" .= _memKind),
-                  ("delivery_settings" .=) <$> _memDeliverySettings,
-                  ("role" .=) <$> _memRole, ("id" .=) <$> _memId,
-                  ("type" .=) <$> _memType])
-
--- | JSON template for App Access Collections Resource object in Directory
--- API.
---
--- /See:/ 'appAccessCollections' smart constructor.
-data AppAccessCollections = AppAccessCollections'
-    { _aacEtag                           :: !(Maybe Text)
-    , _aacResourceId                     :: !(Maybe (Textual Int64))
-    , _aacEnforceSettingsForAndroidDrive :: !(Maybe Bool)
-    , _aacResourceName                   :: !(Maybe Text)
-    , _aacKind                           :: !Text
-    , _aacTrustDomainOwnedApps           :: !(Maybe Bool)
-    , _aacBlockedAPIAccessBuckets        :: !(Maybe [Text])
-    , _aacErrorMessage                   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AppAccessCollections' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aacEtag'
---
--- * 'aacResourceId'
---
--- * 'aacEnforceSettingsForAndroidDrive'
---
--- * 'aacResourceName'
---
--- * 'aacKind'
---
--- * 'aacTrustDomainOwnedApps'
---
--- * 'aacBlockedAPIAccessBuckets'
---
--- * 'aacErrorMessage'
-appAccessCollections
-    :: AppAccessCollections
-appAccessCollections =
-    AppAccessCollections'
-    { _aacEtag = Nothing
-    , _aacResourceId = Nothing
-    , _aacEnforceSettingsForAndroidDrive = Nothing
-    , _aacResourceName = Nothing
-    , _aacKind = "admin#directory#appaccesscollection"
-    , _aacTrustDomainOwnedApps = Nothing
-    , _aacBlockedAPIAccessBuckets = Nothing
-    , _aacErrorMessage = Nothing
-    }
-
--- | ETag of the resource.
-aacEtag :: Lens' AppAccessCollections (Maybe Text)
-aacEtag = lens _aacEtag (\ s a -> s{_aacEtag = a})
-
--- | Unique ID of app access collection. (Readonly)
-aacResourceId :: Lens' AppAccessCollections (Maybe Int64)
-aacResourceId
-  = lens _aacResourceId
-      (\ s a -> s{_aacResourceId = a})
-      . mapping _Coerce
-
--- | Boolean to indicate whether to enforce app access settings on Android
--- Drive or not.
-aacEnforceSettingsForAndroidDrive :: Lens' AppAccessCollections (Maybe Bool)
-aacEnforceSettingsForAndroidDrive
-  = lens _aacEnforceSettingsForAndroidDrive
-      (\ s a -> s{_aacEnforceSettingsForAndroidDrive = a})
-
--- | Resource name given by the customer while creating\/updating. Should be
--- unique under given customer.
-aacResourceName :: Lens' AppAccessCollections (Maybe Text)
-aacResourceName
-  = lens _aacResourceName
-      (\ s a -> s{_aacResourceName = a})
-
--- | Identifies the resource as an app access collection. Value:
--- admin#directory#appaccesscollection
-aacKind :: Lens' AppAccessCollections Text
-aacKind = lens _aacKind (\ s a -> s{_aacKind = a})
-
--- | Boolean that indicates whether to trust domain owned apps.
-aacTrustDomainOwnedApps :: Lens' AppAccessCollections (Maybe Bool)
-aacTrustDomainOwnedApps
-  = lens _aacTrustDomainOwnedApps
-      (\ s a -> s{_aacTrustDomainOwnedApps = a})
-
--- | List of blocked api access buckets.
-aacBlockedAPIAccessBuckets :: Lens' AppAccessCollections [Text]
-aacBlockedAPIAccessBuckets
-  = lens _aacBlockedAPIAccessBuckets
-      (\ s a -> s{_aacBlockedAPIAccessBuckets = a})
-      . _Default
-      . _Coerce
-
--- | Error message provided by the Admin that will be shown to the user when
--- an app is blocked.
-aacErrorMessage :: Lens' AppAccessCollections (Maybe Text)
-aacErrorMessage
-  = lens _aacErrorMessage
-      (\ s a -> s{_aacErrorMessage = a})
-
-instance FromJSON AppAccessCollections where
-        parseJSON
-          = withObject "AppAccessCollections"
-              (\ o ->
-                 AppAccessCollections' <$>
-                   (o .:? "etag") <*> (o .:? "resourceId") <*>
-                     (o .:? "enforceSettingsForAndroidDrive")
-                     <*> (o .:? "resourceName")
-                     <*>
-                     (o .:? "kind" .!=
-                        "admin#directory#appaccesscollection")
-                     <*> (o .:? "trustDomainOwnedApps")
-                     <*> (o .:? "blockedApiAccessBuckets" .!= mempty)
-                     <*> (o .:? "errorMessage"))
-
-instance ToJSON AppAccessCollections where
-        toJSON AppAccessCollections'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _aacEtag,
-                  ("resourceId" .=) <$> _aacResourceId,
-                  ("enforceSettingsForAndroidDrive" .=) <$>
-                    _aacEnforceSettingsForAndroidDrive,
-                  ("resourceName" .=) <$> _aacResourceName,
-                  Just ("kind" .= _aacKind),
-                  ("trustDomainOwnedApps" .=) <$>
-                    _aacTrustDomainOwnedApps,
-                  ("blockedApiAccessBuckets" .=) <$>
-                    _aacBlockedAPIAccessBuckets,
-                  ("errorMessage" .=) <$> _aacErrorMessage])
-
--- | JSON template for a set of custom properties (i.e. all fields in a
--- particular schema)
---
--- /See:/ 'userCustomProperties' smart constructor.
-newtype UserCustomProperties = UserCustomProperties'
-    { _ucpAddtional :: HashMap Text JSONValue
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserCustomProperties' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ucpAddtional'
-userCustomProperties
-    :: HashMap Text JSONValue -- ^ 'ucpAddtional'
-    -> UserCustomProperties
-userCustomProperties pUcpAddtional_ =
-    UserCustomProperties'
-    { _ucpAddtional = _Coerce # pUcpAddtional_
-    }
-
-ucpAddtional :: Lens' UserCustomProperties (HashMap Text JSONValue)
-ucpAddtional
-  = lens _ucpAddtional (\ s a -> s{_ucpAddtional = a})
-      . _Coerce
-
-instance FromJSON UserCustomProperties where
-        parseJSON
-          = withObject "UserCustomProperties"
-              (\ o ->
-                 UserCustomProperties' <$> (parseJSONObject o))
-
-instance ToJSON UserCustomProperties where
-        toJSON = toJSON . _ucpAddtional
-
--- | JSON template for a language entry.
---
--- /See:/ 'userLanguage' smart constructor.
-data UserLanguage = UserLanguage'
-    { _ulLanguageCode   :: !(Maybe Text)
-    , _ulCustomLanguage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserLanguage' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ulLanguageCode'
---
--- * 'ulCustomLanguage'
-userLanguage
-    :: UserLanguage
-userLanguage =
-    UserLanguage'
-    { _ulLanguageCode = Nothing
-    , _ulCustomLanguage = Nothing
-    }
-
--- | Language Code. Should be used for storing Google III LanguageCode string
--- representation for language. Illegal values cause SchemaException.
-ulLanguageCode :: Lens' UserLanguage (Maybe Text)
-ulLanguageCode
-  = lens _ulLanguageCode
-      (\ s a -> s{_ulLanguageCode = a})
-
--- | Other language. User can provide own language name if there is no
--- corresponding Google III language code. If this is set LanguageCode
--- can\'t be set
-ulCustomLanguage :: Lens' UserLanguage (Maybe Text)
-ulCustomLanguage
-  = lens _ulCustomLanguage
-      (\ s a -> s{_ulCustomLanguage = a})
-
-instance FromJSON UserLanguage where
-        parseJSON
-          = withObject "UserLanguage"
-              (\ o ->
-                 UserLanguage' <$>
-                   (o .:? "languageCode") <*> (o .:? "customLanguage"))
-
-instance ToJSON UserLanguage where
-        toJSON UserLanguage'{..}
-          = object
-              (catMaybes
-                 [("languageCode" .=) <$> _ulLanguageCode,
-                  ("customLanguage" .=) <$> _ulCustomLanguage])
-
--- | JSON template for Domain object in Directory API.
---
--- /See:/ 'domains' smart constructor.
-data Domains = Domains'
-    { _domCreationTime  :: !(Maybe (Textual Int64))
-    , _domEtag          :: !(Maybe Text)
-    , _domKind          :: !Text
-    , _domDomainAliases :: !(Maybe [DomainAlias])
-    , _domVerified      :: !(Maybe Bool)
-    , _domDomainName    :: !(Maybe Text)
-    , _domIsPrimary     :: !(Maybe Bool)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Domains' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'domCreationTime'
---
--- * 'domEtag'
---
--- * 'domKind'
---
--- * 'domDomainAliases'
---
--- * 'domVerified'
---
--- * 'domDomainName'
---
--- * 'domIsPrimary'
-domains
-    :: Domains
-domains =
-    Domains'
-    { _domCreationTime = Nothing
-    , _domEtag = Nothing
-    , _domKind = "admin#directory#domain"
-    , _domDomainAliases = Nothing
-    , _domVerified = Nothing
-    , _domDomainName = Nothing
-    , _domIsPrimary = Nothing
-    }
-
--- | Creation time of the domain. (Read-only).
-domCreationTime :: Lens' Domains (Maybe Int64)
-domCreationTime
-  = lens _domCreationTime
-      (\ s a -> s{_domCreationTime = a})
-      . mapping _Coerce
-
--- | ETag of the resource.
-domEtag :: Lens' Domains (Maybe Text)
-domEtag = lens _domEtag (\ s a -> s{_domEtag = a})
-
--- | Kind of resource this is.
-domKind :: Lens' Domains Text
-domKind = lens _domKind (\ s a -> s{_domKind = a})
-
--- | List of domain alias objects. (Read-only)
-domDomainAliases :: Lens' Domains [DomainAlias]
-domDomainAliases
-  = lens _domDomainAliases
-      (\ s a -> s{_domDomainAliases = a})
-      . _Default
-      . _Coerce
-
--- | Indicates the verification state of a domain. (Read-only).
-domVerified :: Lens' Domains (Maybe Bool)
-domVerified
-  = lens _domVerified (\ s a -> s{_domVerified = a})
-
--- | The domain name of the customer.
-domDomainName :: Lens' Domains (Maybe Text)
-domDomainName
-  = lens _domDomainName
-      (\ s a -> s{_domDomainName = a})
-
--- | Indicates if the domain is a primary domain (Read-only).
-domIsPrimary :: Lens' Domains (Maybe Bool)
-domIsPrimary
-  = lens _domIsPrimary (\ s a -> s{_domIsPrimary = a})
-
-instance FromJSON Domains where
-        parseJSON
-          = withObject "Domains"
-              (\ o ->
-                 Domains' <$>
-                   (o .:? "creationTime") <*> (o .:? "etag") <*>
-                     (o .:? "kind" .!= "admin#directory#domain")
-                     <*> (o .:? "domainAliases" .!= mempty)
-                     <*> (o .:? "verified")
-                     <*> (o .:? "domainName")
-                     <*> (o .:? "isPrimary"))
-
-instance ToJSON Domains where
-        toJSON Domains'{..}
-          = object
-              (catMaybes
-                 [("creationTime" .=) <$> _domCreationTime,
-                  ("etag" .=) <$> _domEtag, Just ("kind" .= _domKind),
-                  ("domainAliases" .=) <$> _domDomainAliases,
-                  ("verified" .=) <$> _domVerified,
-                  ("domainName" .=) <$> _domDomainName,
-                  ("isPrimary" .=) <$> _domIsPrimary])
-
--- | JSON template for Calendar Resource List Response object in Directory
--- API.
---
--- /See:/ 'calendarResources' smart constructor.
-data CalendarResources = CalendarResources'
-    { _crsEtag          :: !(Maybe Text)
-    , _crsNextPageToken :: !(Maybe Text)
-    , _crsKind          :: !Text
-    , _crsItems         :: !(Maybe [CalendarResource])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CalendarResources' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'crsEtag'
---
--- * 'crsNextPageToken'
---
--- * 'crsKind'
---
--- * 'crsItems'
-calendarResources
-    :: CalendarResources
-calendarResources =
-    CalendarResources'
-    { _crsEtag = Nothing
-    , _crsNextPageToken = Nothing
-    , _crsKind = "admin#directory#resources#calendars#calendarResourcesList"
-    , _crsItems = Nothing
-    }
-
--- | ETag of the resource.
-crsEtag :: Lens' CalendarResources (Maybe Text)
-crsEtag = lens _crsEtag (\ s a -> s{_crsEtag = a})
-
--- | The continuation token, used to page through large result sets. Provide
--- this value in a subsequent request to return the next page of results.
-crsNextPageToken :: Lens' CalendarResources (Maybe Text)
-crsNextPageToken
-  = lens _crsNextPageToken
-      (\ s a -> s{_crsNextPageToken = a})
-
--- | Identifies this as a collection of CalendarResources. This is always
--- admin#directory#resources#calendars#calendarResourcesList.
-crsKind :: Lens' CalendarResources Text
-crsKind = lens _crsKind (\ s a -> s{_crsKind = a})
-
--- | The CalendarResources in this page of results.
-crsItems :: Lens' CalendarResources [CalendarResource]
-crsItems
-  = lens _crsItems (\ s a -> s{_crsItems = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON CalendarResources where
-        parseJSON
-          = withObject "CalendarResources"
-              (\ o ->
-                 CalendarResources' <$>
-                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!=
-                        "admin#directory#resources#calendars#calendarResourcesList")
-                     <*> (o .:? "items" .!= mempty))
-
-instance ToJSON CalendarResources where
-        toJSON CalendarResources'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _crsEtag,
-                  ("nextPageToken" .=) <$> _crsNextPageToken,
-                  Just ("kind" .= _crsKind),
-                  ("items" .=) <$> _crsItems])
-
--- | Template for notifications list response.
---
--- /See:/ 'notifications' smart constructor.
-data Notifications = Notifications'
-    { _notEtag                     :: !(Maybe Text)
-    , _notNextPageToken            :: !(Maybe Text)
-    , _notKind                     :: !Text
-    , _notItems                    :: !(Maybe [Notification])
-    , _notUnreadNotificationsCount :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Notifications' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'notEtag'
---
--- * 'notNextPageToken'
---
--- * 'notKind'
---
--- * 'notItems'
---
--- * 'notUnreadNotificationsCount'
-notifications
-    :: Notifications
-notifications =
-    Notifications'
-    { _notEtag = Nothing
-    , _notNextPageToken = Nothing
-    , _notKind = "admin#directory#notifications"
-    , _notItems = Nothing
-    , _notUnreadNotificationsCount = Nothing
-    }
-
--- | ETag of the resource.
-notEtag :: Lens' Notifications (Maybe Text)
-notEtag = lens _notEtag (\ s a -> s{_notEtag = a})
-
--- | Token for fetching the next page of notifications.
-notNextPageToken :: Lens' Notifications (Maybe Text)
-notNextPageToken
-  = lens _notNextPageToken
-      (\ s a -> s{_notNextPageToken = a})
-
--- | The type of the resource.
-notKind :: Lens' Notifications Text
-notKind = lens _notKind (\ s a -> s{_notKind = a})
-
--- | List of notifications in this page.
-notItems :: Lens' Notifications [Notification]
-notItems
-  = lens _notItems (\ s a -> s{_notItems = a}) .
-      _Default
-      . _Coerce
-
--- | Number of unread notification for the domain.
-notUnreadNotificationsCount :: Lens' Notifications (Maybe Int32)
-notUnreadNotificationsCount
-  = lens _notUnreadNotificationsCount
-      (\ s a -> s{_notUnreadNotificationsCount = a})
-      . mapping _Coerce
-
-instance FromJSON Notifications where
-        parseJSON
-          = withObject "Notifications"
-              (\ o ->
-                 Notifications' <$>
-                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "admin#directory#notifications")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "unreadNotificationsCount"))
-
-instance ToJSON Notifications where
-        toJSON Notifications'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _notEtag,
-                  ("nextPageToken" .=) <$> _notNextPageToken,
-                  Just ("kind" .= _notKind),
-                  ("items" .=) <$> _notItems,
-                  ("unreadNotificationsCount" .=) <$>
-                    _notUnreadNotificationsCount])
-
--- | Indexing spec for a numeric field. By default, only exact match queries
--- will be supported for numeric fields. Setting the numericIndexingSpec
--- allows range queries to be supported.
---
--- /See:/ 'schemaFieldSpecNumericIndexingSpec' smart constructor.
-data SchemaFieldSpecNumericIndexingSpec = SchemaFieldSpecNumericIndexingSpec'
-    { _sfsnisMaxValue :: !(Maybe (Textual Double))
-    , _sfsnisMinValue :: !(Maybe (Textual Double))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SchemaFieldSpecNumericIndexingSpec' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sfsnisMaxValue'
---
--- * 'sfsnisMinValue'
-schemaFieldSpecNumericIndexingSpec
-    :: SchemaFieldSpecNumericIndexingSpec
-schemaFieldSpecNumericIndexingSpec =
-    SchemaFieldSpecNumericIndexingSpec'
-    { _sfsnisMaxValue = Nothing
-    , _sfsnisMinValue = Nothing
-    }
-
--- | Maximum value of this field. This is meant to be indicative rather than
--- enforced. Values outside this range will still be indexed, but search
--- may not be as performant.
-sfsnisMaxValue :: Lens' SchemaFieldSpecNumericIndexingSpec (Maybe Double)
-sfsnisMaxValue
-  = lens _sfsnisMaxValue
-      (\ s a -> s{_sfsnisMaxValue = a})
-      . mapping _Coerce
-
--- | Minimum value of this field. This is meant to be indicative rather than
--- enforced. Values outside this range will still be indexed, but search
--- may not be as performant.
-sfsnisMinValue :: Lens' SchemaFieldSpecNumericIndexingSpec (Maybe Double)
-sfsnisMinValue
-  = lens _sfsnisMinValue
-      (\ s a -> s{_sfsnisMinValue = a})
-      . mapping _Coerce
-
-instance FromJSON SchemaFieldSpecNumericIndexingSpec
-         where
-        parseJSON
-          = withObject "SchemaFieldSpecNumericIndexingSpec"
-              (\ o ->
-                 SchemaFieldSpecNumericIndexingSpec' <$>
-                   (o .:? "maxValue") <*> (o .:? "minValue"))
-
-instance ToJSON SchemaFieldSpecNumericIndexingSpec
-         where
-        toJSON SchemaFieldSpecNumericIndexingSpec'{..}
-          = object
-              (catMaybes
-                 [("maxValue" .=) <$> _sfsnisMaxValue,
-                  ("minValue" .=) <$> _sfsnisMinValue])
-
--- | JSON request template for firing commands on Mobile Device in Directory
--- Devices API.
---
--- /See:/ 'mobileDeviceAction' smart constructor.
-newtype MobileDeviceAction = MobileDeviceAction'
-    { _mdaAction :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MobileDeviceAction' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mdaAction'
-mobileDeviceAction
-    :: MobileDeviceAction
-mobileDeviceAction =
-    MobileDeviceAction'
-    { _mdaAction = Nothing
-    }
-
--- | Action to be taken on the Mobile Device
-mdaAction :: Lens' MobileDeviceAction (Maybe Text)
-mdaAction
-  = lens _mdaAction (\ s a -> s{_mdaAction = a})
-
-instance FromJSON MobileDeviceAction where
-        parseJSON
-          = withObject "MobileDeviceAction"
-              (\ o -> MobileDeviceAction' <$> (o .:? "action"))
-
-instance ToJSON MobileDeviceAction where
-        toJSON MobileDeviceAction'{..}
-          = object (catMaybes [("action" .=) <$> _mdaAction])
-
--- | JSON template for FieldSpec resource for Schemas in Directory API.
---
--- /See:/ 'schemaFieldSpec' smart constructor.
-data SchemaFieldSpec = SchemaFieldSpec'
-    { _sfsEtag                :: !(Maybe Text)
-    , _sfsKind                :: !Text
-    , _sfsNumericIndexingSpec :: !(Maybe SchemaFieldSpecNumericIndexingSpec)
-    , _sfsReadAccessType      :: !Text
-    , _sfsFieldId             :: !(Maybe Text)
-    , _sfsIndexed             :: !Bool
-    , _sfsFieldType           :: !(Maybe Text)
-    , _sfsFieldName           :: !(Maybe Text)
-    , _sfsDisplayName         :: !(Maybe Text)
-    , _sfsMultiValued         :: !(Maybe Bool)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SchemaFieldSpec' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sfsEtag'
---
--- * 'sfsKind'
---
--- * 'sfsNumericIndexingSpec'
---
--- * 'sfsReadAccessType'
---
--- * 'sfsFieldId'
---
--- * 'sfsIndexed'
---
--- * 'sfsFieldType'
---
--- * 'sfsFieldName'
---
--- * 'sfsDisplayName'
---
--- * 'sfsMultiValued'
-schemaFieldSpec
-    :: SchemaFieldSpec
-schemaFieldSpec =
-    SchemaFieldSpec'
-    { _sfsEtag = Nothing
-    , _sfsKind = "admin#directory#schema#fieldspec"
-    , _sfsNumericIndexingSpec = Nothing
-    , _sfsReadAccessType = "ALL_DOMAIN_USERS"
-    , _sfsFieldId = Nothing
-    , _sfsIndexed = True
-    , _sfsFieldType = Nothing
-    , _sfsFieldName = Nothing
-    , _sfsDisplayName = Nothing
-    , _sfsMultiValued = Nothing
-    }
-
--- | ETag of the resource.
-sfsEtag :: Lens' SchemaFieldSpec (Maybe Text)
-sfsEtag = lens _sfsEtag (\ s a -> s{_sfsEtag = a})
-
--- | Kind of resource this is.
-sfsKind :: Lens' SchemaFieldSpec Text
-sfsKind = lens _sfsKind (\ s a -> s{_sfsKind = a})
-
--- | Indexing spec for a numeric field. By default, only exact match queries
--- will be supported for numeric fields. Setting the numericIndexingSpec
--- allows range queries to be supported.
-sfsNumericIndexingSpec :: Lens' SchemaFieldSpec (Maybe SchemaFieldSpecNumericIndexingSpec)
-sfsNumericIndexingSpec
-  = lens _sfsNumericIndexingSpec
-      (\ s a -> s{_sfsNumericIndexingSpec = a})
-
--- | Read ACLs on the field specifying who can view values of this field.
--- Valid values are \"ALL_DOMAIN_USERS\" and \"ADMINS_AND_SELF\".
-sfsReadAccessType :: Lens' SchemaFieldSpec Text
-sfsReadAccessType
-  = lens _sfsReadAccessType
-      (\ s a -> s{_sfsReadAccessType = a})
-
--- | Unique identifier of Field (Read-only)
-sfsFieldId :: Lens' SchemaFieldSpec (Maybe Text)
-sfsFieldId
-  = lens _sfsFieldId (\ s a -> s{_sfsFieldId = a})
-
--- | Boolean specifying whether the field is indexed or not.
-sfsIndexed :: Lens' SchemaFieldSpec Bool
-sfsIndexed
-  = lens _sfsIndexed (\ s a -> s{_sfsIndexed = a})
-
--- | Type of the field.
-sfsFieldType :: Lens' SchemaFieldSpec (Maybe Text)
-sfsFieldType
-  = lens _sfsFieldType (\ s a -> s{_sfsFieldType = a})
-
--- | Name of the field.
-sfsFieldName :: Lens' SchemaFieldSpec (Maybe Text)
-sfsFieldName
-  = lens _sfsFieldName (\ s a -> s{_sfsFieldName = a})
-
--- | Display Name of the field.
-sfsDisplayName :: Lens' SchemaFieldSpec (Maybe Text)
-sfsDisplayName
-  = lens _sfsDisplayName
-      (\ s a -> s{_sfsDisplayName = a})
-
--- | Boolean specifying whether this is a multi-valued field or not.
-sfsMultiValued :: Lens' SchemaFieldSpec (Maybe Bool)
-sfsMultiValued
-  = lens _sfsMultiValued
-      (\ s a -> s{_sfsMultiValued = a})
-
-instance FromJSON SchemaFieldSpec where
-        parseJSON
-          = withObject "SchemaFieldSpec"
-              (\ o ->
-                 SchemaFieldSpec' <$>
-                   (o .:? "etag") <*>
-                     (o .:? "kind" .!= "admin#directory#schema#fieldspec")
-                     <*> (o .:? "numericIndexingSpec")
-                     <*> (o .:? "readAccessType" .!= "ALL_DOMAIN_USERS")
-                     <*> (o .:? "fieldId")
-                     <*> (o .:? "indexed" .!= True)
-                     <*> (o .:? "fieldType")
-                     <*> (o .:? "fieldName")
-                     <*> (o .:? "displayName")
-                     <*> (o .:? "multiValued"))
-
-instance ToJSON SchemaFieldSpec where
-        toJSON SchemaFieldSpec'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _sfsEtag, Just ("kind" .= _sfsKind),
-                  ("numericIndexingSpec" .=) <$>
-                    _sfsNumericIndexingSpec,
-                  Just ("readAccessType" .= _sfsReadAccessType),
-                  ("fieldId" .=) <$> _sfsFieldId,
-                  Just ("indexed" .= _sfsIndexed),
-                  ("fieldType" .=) <$> _sfsFieldType,
-                  ("fieldName" .=) <$> _sfsFieldName,
-                  ("displayName" .=) <$> _sfsDisplayName,
-                  ("multiValued" .=) <$> _sfsMultiValued])
-
--- | JSON response template for List Chrome OS Devices operation in Directory
--- API.
---
--- /See:/ 'chromeOSDevices' smart constructor.
-data ChromeOSDevices = ChromeOSDevices'
-    { _cosdEtag            :: !(Maybe Text)
-    , _cosdNextPageToken   :: !(Maybe Text)
-    , _cosdKind            :: !Text
-    , _cosdChromeosDevices :: !(Maybe [ChromeOSDevice])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChromeOSDevices' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cosdEtag'
---
--- * 'cosdNextPageToken'
---
--- * 'cosdKind'
---
--- * 'cosdChromeosDevices'
-chromeOSDevices
-    :: ChromeOSDevices
-chromeOSDevices =
-    ChromeOSDevices'
-    { _cosdEtag = Nothing
-    , _cosdNextPageToken = Nothing
-    , _cosdKind = "admin#directory#chromeosdevices"
-    , _cosdChromeosDevices = Nothing
-    }
-
--- | ETag of the resource.
-cosdEtag :: Lens' ChromeOSDevices (Maybe Text)
-cosdEtag = lens _cosdEtag (\ s a -> s{_cosdEtag = a})
-
--- | Token used to access next page of this result.
-cosdNextPageToken :: Lens' ChromeOSDevices (Maybe Text)
-cosdNextPageToken
-  = lens _cosdNextPageToken
-      (\ s a -> s{_cosdNextPageToken = a})
-
--- | Kind of resource this is.
-cosdKind :: Lens' ChromeOSDevices Text
-cosdKind = lens _cosdKind (\ s a -> s{_cosdKind = a})
-
--- | List of Chrome OS Device objects.
-cosdChromeosDevices :: Lens' ChromeOSDevices [ChromeOSDevice]
-cosdChromeosDevices
-  = lens _cosdChromeosDevices
-      (\ s a -> s{_cosdChromeosDevices = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ChromeOSDevices where
-        parseJSON
-          = withObject "ChromeOSDevices"
-              (\ o ->
-                 ChromeOSDevices' <$>
-                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "admin#directory#chromeosdevices")
-                     <*> (o .:? "chromeosdevices" .!= mempty))
-
-instance ToJSON ChromeOSDevices where
-        toJSON ChromeOSDevices'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _cosdEtag,
-                  ("nextPageToken" .=) <$> _cosdNextPageToken,
-                  Just ("kind" .= _cosdKind),
-                  ("chromeosdevices" .=) <$> _cosdChromeosDevices])
-
--- | JSON template for Has Member response in Directory API.
---
--- /See:/ 'membersHasMember' smart constructor.
-newtype MembersHasMember = MembersHasMember'
-    { _mhmIsMember :: Maybe Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MembersHasMember' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mhmIsMember'
-membersHasMember
-    :: MembersHasMember
-membersHasMember =
-    MembersHasMember'
-    { _mhmIsMember = Nothing
-    }
-
--- | Identifies whether the given user is a member of the group. Membership
--- can be direct or nested.
-mhmIsMember :: Lens' MembersHasMember (Maybe Bool)
-mhmIsMember
-  = lens _mhmIsMember (\ s a -> s{_mhmIsMember = a})
-
-instance FromJSON MembersHasMember where
-        parseJSON
-          = withObject "MembersHasMember"
-              (\ o -> MembersHasMember' <$> (o .:? "isMember"))
-
-instance ToJSON MembersHasMember where
-        toJSON MembersHasMember'{..}
-          = object
-              (catMaybes [("isMember" .=) <$> _mhmIsMember])
-
--- | JSON template for Trusted App Ids Resource object in Directory API.
---
--- /See:/ 'trustedAppId' smart constructor.
-data TrustedAppId = TrustedAppId'
-    { _taiCertificateHashSHA256 :: !(Maybe Text)
-    , _taiEtag                  :: !(Maybe Text)
-    , _taiKind                  :: !Text
-    , _taiCertificateHashSHA1   :: !(Maybe Text)
-    , _taiAndroidPackageName    :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TrustedAppId' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'taiCertificateHashSHA256'
---
--- * 'taiEtag'
---
--- * 'taiKind'
---
--- * 'taiCertificateHashSHA1'
---
--- * 'taiAndroidPackageName'
-trustedAppId
-    :: TrustedAppId
-trustedAppId =
-    TrustedAppId'
-    { _taiCertificateHashSHA256 = Nothing
-    , _taiEtag = Nothing
-    , _taiKind = "admin#directory#trustedappid"
-    , _taiCertificateHashSHA1 = Nothing
-    , _taiAndroidPackageName = Nothing
-    }
-
--- | SHA256 signature of the app certificate.
-taiCertificateHashSHA256 :: Lens' TrustedAppId (Maybe Text)
-taiCertificateHashSHA256
-  = lens _taiCertificateHashSHA256
-      (\ s a -> s{_taiCertificateHashSHA256 = a})
-
-taiEtag :: Lens' TrustedAppId (Maybe Text)
-taiEtag = lens _taiEtag (\ s a -> s{_taiEtag = a})
-
--- | Identifies the resource as a trusted AppId.
-taiKind :: Lens' TrustedAppId Text
-taiKind = lens _taiKind (\ s a -> s{_taiKind = a})
-
--- | SHA1 signature of the app certificate.
-taiCertificateHashSHA1 :: Lens' TrustedAppId (Maybe Text)
-taiCertificateHashSHA1
-  = lens _taiCertificateHashSHA1
-      (\ s a -> s{_taiCertificateHashSHA1 = a})
-
--- | Android package name.
-taiAndroidPackageName :: Lens' TrustedAppId (Maybe Text)
-taiAndroidPackageName
-  = lens _taiAndroidPackageName
-      (\ s a -> s{_taiAndroidPackageName = a})
-
-instance FromJSON TrustedAppId where
-        parseJSON
-          = withObject "TrustedAppId"
-              (\ o ->
-                 TrustedAppId' <$>
-                   (o .:? "certificateHashSHA256") <*> (o .:? "etag")
-                     <*> (o .:? "kind" .!= "admin#directory#trustedappid")
-                     <*> (o .:? "certificateHashSHA1")
-                     <*> (o .:? "androidPackageName"))
-
-instance ToJSON TrustedAppId where
-        toJSON TrustedAppId'{..}
-          = object
-              (catMaybes
-                 [("certificateHashSHA256" .=) <$>
-                    _taiCertificateHashSHA256,
-                  ("etag" .=) <$> _taiEtag, Just ("kind" .= _taiKind),
-                  ("certificateHashSHA1" .=) <$>
-                    _taiCertificateHashSHA1,
-                  ("androidPackageName" .=) <$>
-                    _taiAndroidPackageName])
-
--- | JSON template for an externalId entry.
---
--- /See:/ 'userExternalId' smart constructor.
-data UserExternalId = UserExternalId'
-    { _ueiValue      :: !(Maybe Text)
-    , _ueiType       :: !(Maybe Text)
-    , _ueiCustomType :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserExternalId' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ueiValue'
---
--- * 'ueiType'
---
--- * 'ueiCustomType'
-userExternalId
-    :: UserExternalId
-userExternalId =
-    UserExternalId'
-    { _ueiValue = Nothing
-    , _ueiType = Nothing
-    , _ueiCustomType = Nothing
-    }
-
--- | The value of the id.
-ueiValue :: Lens' UserExternalId (Maybe Text)
-ueiValue = lens _ueiValue (\ s a -> s{_ueiValue = a})
-
--- | The type of the Id.
-ueiType :: Lens' UserExternalId (Maybe Text)
-ueiType = lens _ueiType (\ s a -> s{_ueiType = a})
-
--- | Custom type.
-ueiCustomType :: Lens' UserExternalId (Maybe Text)
-ueiCustomType
-  = lens _ueiCustomType
-      (\ s a -> s{_ueiCustomType = a})
-
-instance FromJSON UserExternalId where
-        parseJSON
-          = withObject "UserExternalId"
-              (\ o ->
-                 UserExternalId' <$>
-                   (o .:? "value") <*> (o .:? "type") <*>
-                     (o .:? "customType"))
-
-instance ToJSON UserExternalId where
-        toJSON UserExternalId'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _ueiValue,
-                  ("type" .=) <$> _ueiType,
-                  ("customType" .=) <$> _ueiCustomType])
-
---
--- /See:/ 'asps' smart constructor.
-data Asps = Asps'
-    { _aspEtag  :: !(Maybe Text)
-    , _aspKind  :: !Text
-    , _aspItems :: !(Maybe [Asp])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Asps' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aspEtag'
---
--- * 'aspKind'
---
--- * 'aspItems'
-asps
-    :: Asps
-asps =
-    Asps'
-    { _aspEtag = Nothing
-    , _aspKind = "admin#directory#aspList"
-    , _aspItems = Nothing
-    }
-
--- | ETag of the resource.
-aspEtag :: Lens' Asps (Maybe Text)
-aspEtag = lens _aspEtag (\ s a -> s{_aspEtag = a})
-
--- | The type of the API resource. This is always admin#directory#aspList.
-aspKind :: Lens' Asps Text
-aspKind = lens _aspKind (\ s a -> s{_aspKind = a})
-
--- | A list of ASP resources.
-aspItems :: Lens' Asps [Asp]
-aspItems
-  = lens _aspItems (\ s a -> s{_aspItems = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON Asps where
-        parseJSON
-          = withObject "Asps"
-              (\ o ->
-                 Asps' <$>
-                   (o .:? "etag") <*>
-                     (o .:? "kind" .!= "admin#directory#aspList")
-                     <*> (o .:? "items" .!= mempty))
-
-instance ToJSON Asps where
-        toJSON Asps'{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _aspEtag, Just ("kind" .= _aspKind),
-                  ("items" .=) <$> _aspItems])
-
---
--- /See:/ 'chromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem' smart constructor.
-data ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem = ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem'
-    { _codcsrictiiTemperature :: !(Maybe (Textual Int32))
-    , _codcsrictiiLabel       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'codcsrictiiTemperature'
---
--- * 'codcsrictiiLabel'
-chromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem
-    :: ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem
-chromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem =
-    ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem'
-    { _codcsrictiiTemperature = Nothing
-    , _codcsrictiiLabel = Nothing
-    }
-
--- | Temperature in Celsius degrees.
-codcsrictiiTemperature :: Lens' ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem (Maybe Int32)
-codcsrictiiTemperature
-  = lens _codcsrictiiTemperature
-      (\ s a -> s{_codcsrictiiTemperature = a})
-      . mapping _Coerce
-
--- | CPU label
-codcsrictiiLabel :: Lens' ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem (Maybe Text)
-codcsrictiiLabel
-  = lens _codcsrictiiLabel
-      (\ s a -> s{_codcsrictiiLabel = a})
-
-instance FromJSON
-         ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem
-         where
-        parseJSON
-          = withObject
-              "ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem"
-              (\ o ->
-                 ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem'
-                   <$> (o .:? "temperature") <*> (o .:? "label"))
-
-instance ToJSON
-         ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem
-         where
-        toJSON
-          ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem'{..}
-          = object
-              (catMaybes
-                 [("temperature" .=) <$> _codcsrictiiTemperature,
-                  ("label" .=) <$> _codcsrictiiLabel])
-
---
--- /See:/ 'roleRolePrivilegesItem' smart constructor.
-data RoleRolePrivilegesItem = RoleRolePrivilegesItem'
-    { _rrpiServiceId     :: !(Maybe Text)
-    , _rrpiPrivilegeName :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RoleRolePrivilegesItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rrpiServiceId'
---
--- * 'rrpiPrivilegeName'
-roleRolePrivilegesItem
-    :: RoleRolePrivilegesItem
-roleRolePrivilegesItem =
-    RoleRolePrivilegesItem'
-    { _rrpiServiceId = Nothing
-    , _rrpiPrivilegeName = Nothing
-    }
-
--- | The obfuscated ID of the service this privilege is for.
-rrpiServiceId :: Lens' RoleRolePrivilegesItem (Maybe Text)
-rrpiServiceId
-  = lens _rrpiServiceId
-      (\ s a -> s{_rrpiServiceId = a})
-
--- | The name of the privilege.
-rrpiPrivilegeName :: Lens' RoleRolePrivilegesItem (Maybe Text)
-rrpiPrivilegeName
-  = lens _rrpiPrivilegeName
-      (\ s a -> s{_rrpiPrivilegeName = a})
-
-instance FromJSON RoleRolePrivilegesItem where
-        parseJSON
-          = withObject "RoleRolePrivilegesItem"
-              (\ o ->
-                 RoleRolePrivilegesItem' <$>
-                   (o .:? "serviceId") <*> (o .:? "privilegeName"))
-
-instance ToJSON RoleRolePrivilegesItem where
-        toJSON RoleRolePrivilegesItem'{..}
-          = object
-              (catMaybes
-                 [("serviceId" .=) <$> _rrpiServiceId,
-                  ("privilegeName" .=) <$> _rrpiPrivilegeName])
-
--- | JSON response template to list Domains in Directory API.
---
--- /See:/ 'domains2' smart constructor.
-data Domains2 = Domains2'
-    { _ddEtag    :: !(Maybe Text)
-    , _ddKind    :: !Text
-    , _ddDomains :: !(Maybe [Domains])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Domains2' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ddEtag'
---
--- * 'ddKind'
---
--- * 'ddDomains'
-domains2
-    :: Domains2
-domains2 =
-    Domains2'
-    { _ddEtag = Nothing
-    , _ddKind = "admin#directory#domains"
-    , _ddDomains = Nothing
-    }
+data UserLocation =
+  UserLocation'
+    { _ulArea         :: !(Maybe Text)
+    , _ulBuildingId   :: !(Maybe Text)
+    , _ulDeskCode     :: !(Maybe Text)
+    , _ulFloorName    :: !(Maybe Text)
+    , _ulType         :: !(Maybe Text)
+    , _ulCustomType   :: !(Maybe Text)
+    , _ulFloorSection :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UserLocation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ulArea'
+--
+-- * 'ulBuildingId'
+--
+-- * 'ulDeskCode'
+--
+-- * 'ulFloorName'
+--
+-- * 'ulType'
+--
+-- * 'ulCustomType'
+--
+-- * 'ulFloorSection'
+userLocation
+    :: UserLocation
+userLocation =
+  UserLocation'
+    { _ulArea = Nothing
+    , _ulBuildingId = Nothing
+    , _ulDeskCode = Nothing
+    , _ulFloorName = Nothing
+    , _ulType = Nothing
+    , _ulCustomType = Nothing
+    , _ulFloorSection = Nothing
+    }
+
+
+-- | Textual location. This is most useful for display purposes to concisely
+-- describe the location. For example, \"Mountain View, CA\", \"Near
+-- Seattle\", \"US-NYC-9TH 9A209A\".
+ulArea :: Lens' UserLocation (Maybe Text)
+ulArea = lens _ulArea (\ s a -> s{_ulArea = a})
+
+-- | Building Identifier.
+ulBuildingId :: Lens' UserLocation (Maybe Text)
+ulBuildingId
+  = lens _ulBuildingId (\ s a -> s{_ulBuildingId = a})
+
+-- | Most specific textual code of individual desk location.
+ulDeskCode :: Lens' UserLocation (Maybe Text)
+ulDeskCode
+  = lens _ulDeskCode (\ s a -> s{_ulDeskCode = a})
+
+-- | Floor name\/number.
+ulFloorName :: Lens' UserLocation (Maybe Text)
+ulFloorName
+  = lens _ulFloorName (\ s a -> s{_ulFloorName = a})
+
+-- | Each entry can have a type which indicates standard types of that entry.
+-- For example location could be of types default and desk. In addition to
+-- standard type, an entry can have a custom type and can give it any name.
+-- Such types should have \"custom\" as type and also have a customType
+-- value.
+ulType :: Lens' UserLocation (Maybe Text)
+ulType = lens _ulType (\ s a -> s{_ulType = a})
+
+-- | Custom Type.
+ulCustomType :: Lens' UserLocation (Maybe Text)
+ulCustomType
+  = lens _ulCustomType (\ s a -> s{_ulCustomType = a})
+
+-- | Floor section. More specific location within the floor. For example, if
+-- a floor is divided into sections \"A\", \"B\", and \"C\", this field
+-- would identify one of those values.
+ulFloorSection :: Lens' UserLocation (Maybe Text)
+ulFloorSection
+  = lens _ulFloorSection
+      (\ s a -> s{_ulFloorSection = a})
+
+instance FromJSON UserLocation where
+        parseJSON
+          = withObject "UserLocation"
+              (\ o ->
+                 UserLocation' <$>
+                   (o .:? "area") <*> (o .:? "buildingId") <*>
+                     (o .:? "deskCode")
+                     <*> (o .:? "floorName")
+                     <*> (o .:? "type")
+                     <*> (o .:? "customType")
+                     <*> (o .:? "floorSection"))
+
+instance ToJSON UserLocation where
+        toJSON UserLocation'{..}
+          = object
+              (catMaybes
+                 [("area" .=) <$> _ulArea,
+                  ("buildingId" .=) <$> _ulBuildingId,
+                  ("deskCode" .=) <$> _ulDeskCode,
+                  ("floorName" .=) <$> _ulFloorName,
+                  ("type" .=) <$> _ulType,
+                  ("customType" .=) <$> _ulCustomType,
+                  ("floorSection" .=) <$> _ulFloorSection])
+
+-- | JSON template for verification codes in Directory API.
+--
+-- /See:/ 'verificationCode' smart constructor.
+data VerificationCode =
+  VerificationCode'
+    { _vcVerificationCode :: !(Maybe Text)
+    , _vcEtag             :: !(Maybe Text)
+    , _vcKind             :: !Text
+    , _vcUserId           :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'VerificationCode' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vcVerificationCode'
+--
+-- * 'vcEtag'
+--
+-- * 'vcKind'
+--
+-- * 'vcUserId'
+verificationCode
+    :: VerificationCode
+verificationCode =
+  VerificationCode'
+    { _vcVerificationCode = Nothing
+    , _vcEtag = Nothing
+    , _vcKind = "admin#directory#verificationCode"
+    , _vcUserId = Nothing
+    }
+
+
+-- | A current verification code for the user. Invalidated or used
+-- verification codes are not returned as part of the result.
+vcVerificationCode :: Lens' VerificationCode (Maybe Text)
+vcVerificationCode
+  = lens _vcVerificationCode
+      (\ s a -> s{_vcVerificationCode = a})
+
+-- | ETag of the resource.
+vcEtag :: Lens' VerificationCode (Maybe Text)
+vcEtag = lens _vcEtag (\ s a -> s{_vcEtag = a})
+
+-- | The type of the resource. This is always
+-- admin#directory#verificationCode.
+vcKind :: Lens' VerificationCode Text
+vcKind = lens _vcKind (\ s a -> s{_vcKind = a})
+
+-- | The obfuscated unique ID of the user.
+vcUserId :: Lens' VerificationCode (Maybe Text)
+vcUserId = lens _vcUserId (\ s a -> s{_vcUserId = a})
+
+instance FromJSON VerificationCode where
+        parseJSON
+          = withObject "VerificationCode"
+              (\ o ->
+                 VerificationCode' <$>
+                   (o .:? "verificationCode") <*> (o .:? "etag") <*>
+                     (o .:? "kind" .!= "admin#directory#verificationCode")
+                     <*> (o .:? "userId"))
+
+instance ToJSON VerificationCode where
+        toJSON VerificationCode'{..}
+          = object
+              (catMaybes
+                 [("verificationCode" .=) <$> _vcVerificationCode,
+                  ("etag" .=) <$> _vcEtag, Just ("kind" .= _vcKind),
+                  ("userId" .=) <$> _vcUserId])
+
+-- | JSON template for Feature object in Directory API.
+--
+-- /See:/ 'feature' smart constructor.
+data Feature =
+  Feature'
+    { _fEtags :: !(Maybe Text)
+    , _fKind  :: !Text
+    , _fName  :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Feature' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fEtags'
+--
+-- * 'fKind'
+--
+-- * 'fName'
+feature
+    :: Feature
+feature =
+  Feature'
+    { _fEtags = Nothing
+    , _fKind = "admin#directory#resources#features#Feature"
+    , _fName = Nothing
+    }
+
+
+-- | ETag of the resource.
+fEtags :: Lens' Feature (Maybe Text)
+fEtags = lens _fEtags (\ s a -> s{_fEtags = a})
+
+-- | Kind of resource this is.
+fKind :: Lens' Feature Text
+fKind = lens _fKind (\ s a -> s{_fKind = a})
+
+-- | The name of the feature.
+fName :: Lens' Feature (Maybe Text)
+fName = lens _fName (\ s a -> s{_fName = a})
+
+instance FromJSON Feature where
+        parseJSON
+          = withObject "Feature"
+              (\ o ->
+                 Feature' <$>
+                   (o .:? "etags") <*>
+                     (o .:? "kind" .!=
+                        "admin#directory#resources#features#Feature")
+                     <*> (o .:? "name"))
+
+instance ToJSON Feature where
+        toJSON Feature'{..}
+          = object
+              (catMaybes
+                 [("etags" .=) <$> _fEtags, Just ("kind" .= _fKind),
+                  ("name" .=) <$> _fName])
+
+-- | JSON template for Org Unit resource in Directory API.
+--
+-- /See:/ 'orgUnit' smart constructor.
+data OrgUnit =
+  OrgUnit'
+    { _ouEtag              :: !(Maybe Text)
+    , _ouParentOrgUnitPath :: !(Maybe Text)
+    , _ouKind              :: !Text
+    , _ouOrgUnitPath       :: !(Maybe Text)
+    , _ouName              :: !(Maybe Text)
+    , _ouBlockInheritance  :: !(Maybe Bool)
+    , _ouParentOrgUnitId   :: !(Maybe Text)
+    , _ouDescription       :: !(Maybe Text)
+    , _ouOrgUnitId         :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'OrgUnit' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ouEtag'
+--
+-- * 'ouParentOrgUnitPath'
+--
+-- * 'ouKind'
+--
+-- * 'ouOrgUnitPath'
+--
+-- * 'ouName'
+--
+-- * 'ouBlockInheritance'
+--
+-- * 'ouParentOrgUnitId'
+--
+-- * 'ouDescription'
+--
+-- * 'ouOrgUnitId'
+orgUnit
+    :: OrgUnit
+orgUnit =
+  OrgUnit'
+    { _ouEtag = Nothing
+    , _ouParentOrgUnitPath = Nothing
+    , _ouKind = "admin#directory#orgUnit"
+    , _ouOrgUnitPath = Nothing
+    , _ouName = Nothing
+    , _ouBlockInheritance = Nothing
+    , _ouParentOrgUnitId = Nothing
+    , _ouDescription = Nothing
+    , _ouOrgUnitId = Nothing
+    }
+
+
+-- | ETag of the resource.
+ouEtag :: Lens' OrgUnit (Maybe Text)
+ouEtag = lens _ouEtag (\ s a -> s{_ouEtag = a})
+
+-- | Path of parent OrgUnit
+ouParentOrgUnitPath :: Lens' OrgUnit (Maybe Text)
+ouParentOrgUnitPath
+  = lens _ouParentOrgUnitPath
+      (\ s a -> s{_ouParentOrgUnitPath = a})
+
+-- | Kind of resource this is.
+ouKind :: Lens' OrgUnit Text
+ouKind = lens _ouKind (\ s a -> s{_ouKind = a})
+
+-- | Path of OrgUnit
+ouOrgUnitPath :: Lens' OrgUnit (Maybe Text)
+ouOrgUnitPath
+  = lens _ouOrgUnitPath
+      (\ s a -> s{_ouOrgUnitPath = a})
+
+-- | Name of OrgUnit
+ouName :: Lens' OrgUnit (Maybe Text)
+ouName = lens _ouName (\ s a -> s{_ouName = a})
+
+-- | Should block inheritance
+ouBlockInheritance :: Lens' OrgUnit (Maybe Bool)
+ouBlockInheritance
+  = lens _ouBlockInheritance
+      (\ s a -> s{_ouBlockInheritance = a})
+
+-- | Id of parent OrgUnit
+ouParentOrgUnitId :: Lens' OrgUnit (Maybe Text)
+ouParentOrgUnitId
+  = lens _ouParentOrgUnitId
+      (\ s a -> s{_ouParentOrgUnitId = a})
+
+-- | Description of OrgUnit
+ouDescription :: Lens' OrgUnit (Maybe Text)
+ouDescription
+  = lens _ouDescription
+      (\ s a -> s{_ouDescription = a})
+
+-- | Id of OrgUnit
+ouOrgUnitId :: Lens' OrgUnit (Maybe Text)
+ouOrgUnitId
+  = lens _ouOrgUnitId (\ s a -> s{_ouOrgUnitId = a})
+
+instance FromJSON OrgUnit where
+        parseJSON
+          = withObject "OrgUnit"
+              (\ o ->
+                 OrgUnit' <$>
+                   (o .:? "etag") <*> (o .:? "parentOrgUnitPath") <*>
+                     (o .:? "kind" .!= "admin#directory#orgUnit")
+                     <*> (o .:? "orgUnitPath")
+                     <*> (o .:? "name")
+                     <*> (o .:? "blockInheritance")
+                     <*> (o .:? "parentOrgUnitId")
+                     <*> (o .:? "description")
+                     <*> (o .:? "orgUnitId"))
+
+instance ToJSON OrgUnit where
+        toJSON OrgUnit'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _ouEtag,
+                  ("parentOrgUnitPath" .=) <$> _ouParentOrgUnitPath,
+                  Just ("kind" .= _ouKind),
+                  ("orgUnitPath" .=) <$> _ouOrgUnitPath,
+                  ("name" .=) <$> _ouName,
+                  ("blockInheritance" .=) <$> _ouBlockInheritance,
+                  ("parentOrgUnitId" .=) <$> _ouParentOrgUnitId,
+                  ("description" .=) <$> _ouDescription,
+                  ("orgUnitId" .=) <$> _ouOrgUnitId])
+
+-- | JSON request template for setting\/revoking admin status of a user in
+-- Directory API.
+--
+-- /See:/ 'userMakeAdmin' smart constructor.
+newtype UserMakeAdmin =
+  UserMakeAdmin'
+    { _umaStatus :: Maybe Bool
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UserMakeAdmin' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umaStatus'
+userMakeAdmin
+    :: UserMakeAdmin
+userMakeAdmin = UserMakeAdmin' {_umaStatus = Nothing}
+
+
+-- | Boolean indicating new admin status of the user
+umaStatus :: Lens' UserMakeAdmin (Maybe Bool)
+umaStatus
+  = lens _umaStatus (\ s a -> s{_umaStatus = a})
+
+instance FromJSON UserMakeAdmin where
+        parseJSON
+          = withObject "UserMakeAdmin"
+              (\ o -> UserMakeAdmin' <$> (o .:? "status"))
+
+instance ToJSON UserMakeAdmin where
+        toJSON UserMakeAdmin'{..}
+          = object (catMaybes [("status" .=) <$> _umaStatus])
+
+-- | JSON template for About (notes) of a user in Directory API.
+--
+-- /See:/ 'userAbout' smart constructor.
+data UserAbout =
+  UserAbout'
+    { _uaValue       :: !(Maybe Text)
+    , _uaContentType :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UserAbout' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uaValue'
+--
+-- * 'uaContentType'
+userAbout
+    :: UserAbout
+userAbout = UserAbout' {_uaValue = Nothing, _uaContentType = Nothing}
+
+
+-- | Actual value of notes.
+uaValue :: Lens' UserAbout (Maybe Text)
+uaValue = lens _uaValue (\ s a -> s{_uaValue = a})
+
+-- | About entry can have a type which indicates the content type. It can
+-- either be plain or html. By default, notes contents are assumed to
+-- contain plain text.
+uaContentType :: Lens' UserAbout (Maybe Text)
+uaContentType
+  = lens _uaContentType
+      (\ s a -> s{_uaContentType = a})
+
+instance FromJSON UserAbout where
+        parseJSON
+          = withObject "UserAbout"
+              (\ o ->
+                 UserAbout' <$>
+                   (o .:? "value") <*> (o .:? "contentType"))
+
+instance ToJSON UserAbout where
+        toJSON UserAbout'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _uaValue,
+                  ("contentType" .=) <$> _uaContentType])
+
+-- | JSON response template for List privileges operation in Directory API.
+--
+-- /See:/ 'privileges' smart constructor.
+data Privileges =
+  Privileges'
+    { _pEtag  :: !(Maybe Text)
+    , _pKind  :: !Text
+    , _pItems :: !(Maybe [Privilege])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Privileges' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pEtag'
+--
+-- * 'pKind'
+--
+-- * 'pItems'
+privileges
+    :: Privileges
+privileges =
+  Privileges'
+    {_pEtag = Nothing, _pKind = "admin#directory#privileges", _pItems = Nothing}
+
+
+-- | ETag of the resource.
+pEtag :: Lens' Privileges (Maybe Text)
+pEtag = lens _pEtag (\ s a -> s{_pEtag = a})
+
+-- | The type of the API resource. This is always admin#directory#privileges.
+pKind :: Lens' Privileges Text
+pKind = lens _pKind (\ s a -> s{_pKind = a})
+
+-- | A list of Privilege resources.
+pItems :: Lens' Privileges [Privilege]
+pItems
+  = lens _pItems (\ s a -> s{_pItems = a}) . _Default .
+      _Coerce
+
+instance FromJSON Privileges where
+        parseJSON
+          = withObject "Privileges"
+              (\ o ->
+                 Privileges' <$>
+                   (o .:? "etag") <*>
+                     (o .:? "kind" .!= "admin#directory#privileges")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON Privileges where
+        toJSON Privileges'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _pEtag, Just ("kind" .= _pKind),
+                  ("items" .=) <$> _pItems])
+
+-- | JSON response template for List Groups operation in Directory API.
+--
+-- /See:/ 'groups' smart constructor.
+data Groups =
+  Groups'
+    { _gGroups        :: !(Maybe [Group])
+    , _gEtag          :: !(Maybe Text)
+    , _gNextPageToken :: !(Maybe Text)
+    , _gKind          :: !Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Groups' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gGroups'
+--
+-- * 'gEtag'
+--
+-- * 'gNextPageToken'
+--
+-- * 'gKind'
+groups
+    :: Groups
+groups =
+  Groups'
+    { _gGroups = Nothing
+    , _gEtag = Nothing
+    , _gNextPageToken = Nothing
+    , _gKind = "admin#directory#groups"
+    }
+
+
+-- | List of group objects.
+gGroups :: Lens' Groups [Group]
+gGroups
+  = lens _gGroups (\ s a -> s{_gGroups = a}) . _Default
+      . _Coerce
+
+-- | ETag of the resource.
+gEtag :: Lens' Groups (Maybe Text)
+gEtag = lens _gEtag (\ s a -> s{_gEtag = a})
+
+-- | Token used to access next page of this result.
+gNextPageToken :: Lens' Groups (Maybe Text)
+gNextPageToken
+  = lens _gNextPageToken
+      (\ s a -> s{_gNextPageToken = a})
+
+-- | Kind of resource this is.
+gKind :: Lens' Groups Text
+gKind = lens _gKind (\ s a -> s{_gKind = a})
+
+instance FromJSON Groups where
+        parseJSON
+          = withObject "Groups"
+              (\ o ->
+                 Groups' <$>
+                   (o .:? "groups" .!= mempty) <*> (o .:? "etag") <*>
+                     (o .:? "nextPageToken")
+                     <*> (o .:? "kind" .!= "admin#directory#groups"))
+
+instance ToJSON Groups where
+        toJSON Groups'{..}
+          = object
+              (catMaybes
+                 [("groups" .=) <$> _gGroups, ("etag" .=) <$> _gEtag,
+                  ("nextPageToken" .=) <$> _gNextPageToken,
+                  Just ("kind" .= _gKind)])
+
+-- | JSON response template for List roleAssignments operation in Directory
+-- API.
+--
+-- /See:/ 'roleAssignments' smart constructor.
+data RoleAssignments =
+  RoleAssignments'
+    { _raEtag          :: !(Maybe Text)
+    , _raNextPageToken :: !(Maybe Text)
+    , _raKind          :: !Text
+    , _raItems         :: !(Maybe [RoleAssignment])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'RoleAssignments' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'raEtag'
+--
+-- * 'raNextPageToken'
+--
+-- * 'raKind'
+--
+-- * 'raItems'
+roleAssignments
+    :: RoleAssignments
+roleAssignments =
+  RoleAssignments'
+    { _raEtag = Nothing
+    , _raNextPageToken = Nothing
+    , _raKind = "admin#directory#roleAssignments"
+    , _raItems = Nothing
+    }
+
+
+-- | ETag of the resource.
+raEtag :: Lens' RoleAssignments (Maybe Text)
+raEtag = lens _raEtag (\ s a -> s{_raEtag = a})
+
+raNextPageToken :: Lens' RoleAssignments (Maybe Text)
+raNextPageToken
+  = lens _raNextPageToken
+      (\ s a -> s{_raNextPageToken = a})
+
+-- | The type of the API resource. This is always
+-- admin#directory#roleAssignments.
+raKind :: Lens' RoleAssignments Text
+raKind = lens _raKind (\ s a -> s{_raKind = a})
+
+-- | A list of RoleAssignment resources.
+raItems :: Lens' RoleAssignments [RoleAssignment]
+raItems
+  = lens _raItems (\ s a -> s{_raItems = a}) . _Default
+      . _Coerce
+
+instance FromJSON RoleAssignments where
+        parseJSON
+          = withObject "RoleAssignments"
+              (\ o ->
+                 RoleAssignments' <$>
+                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "admin#directory#roleAssignments")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON RoleAssignments where
+        toJSON RoleAssignments'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _raEtag,
+                  ("nextPageToken" .=) <$> _raNextPageToken,
+                  Just ("kind" .= _raKind), ("items" .=) <$> _raItems])
+
+-- | JSON template for privilege resource in Directory API.
+--
+-- /See:/ 'privilege' smart constructor.
+data Privilege =
+  Privilege'
+    { _priEtag            :: !(Maybe Text)
+    , _priIsOuScopable    :: !(Maybe Bool)
+    , _priKind            :: !Text
+    , _priServiceName     :: !(Maybe Text)
+    , _priServiceId       :: !(Maybe Text)
+    , _priPrivilegeName   :: !(Maybe Text)
+    , _priChildPrivileges :: !(Maybe [Privilege])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Privilege' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'priEtag'
+--
+-- * 'priIsOuScopable'
+--
+-- * 'priKind'
+--
+-- * 'priServiceName'
+--
+-- * 'priServiceId'
+--
+-- * 'priPrivilegeName'
+--
+-- * 'priChildPrivileges'
+privilege
+    :: Privilege
+privilege =
+  Privilege'
+    { _priEtag = Nothing
+    , _priIsOuScopable = Nothing
+    , _priKind = "admin#directory#privilege"
+    , _priServiceName = Nothing
+    , _priServiceId = Nothing
+    , _priPrivilegeName = Nothing
+    , _priChildPrivileges = Nothing
+    }
+
+
+-- | ETag of the resource.
+priEtag :: Lens' Privilege (Maybe Text)
+priEtag = lens _priEtag (\ s a -> s{_priEtag = a})
+
+-- | If the privilege can be restricted to an organization unit.
+priIsOuScopable :: Lens' Privilege (Maybe Bool)
+priIsOuScopable
+  = lens _priIsOuScopable
+      (\ s a -> s{_priIsOuScopable = a})
+
+-- | The type of the API resource. This is always admin#directory#privilege.
+priKind :: Lens' Privilege Text
+priKind = lens _priKind (\ s a -> s{_priKind = a})
+
+-- | The name of the service this privilege is for.
+priServiceName :: Lens' Privilege (Maybe Text)
+priServiceName
+  = lens _priServiceName
+      (\ s a -> s{_priServiceName = a})
+
+-- | The obfuscated ID of the service this privilege is for.
+priServiceId :: Lens' Privilege (Maybe Text)
+priServiceId
+  = lens _priServiceId (\ s a -> s{_priServiceId = a})
+
+-- | The name of the privilege.
+priPrivilegeName :: Lens' Privilege (Maybe Text)
+priPrivilegeName
+  = lens _priPrivilegeName
+      (\ s a -> s{_priPrivilegeName = a})
+
+-- | A list of child privileges. Privileges for a service form a tree. Each
+-- privilege can have a list of child privileges; this list is empty for a
+-- leaf privilege.
+priChildPrivileges :: Lens' Privilege [Privilege]
+priChildPrivileges
+  = lens _priChildPrivileges
+      (\ s a -> s{_priChildPrivileges = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON Privilege where
+        parseJSON
+          = withObject "Privilege"
+              (\ o ->
+                 Privilege' <$>
+                   (o .:? "etag") <*> (o .:? "isOuScopable") <*>
+                     (o .:? "kind" .!= "admin#directory#privilege")
+                     <*> (o .:? "serviceName")
+                     <*> (o .:? "serviceId")
+                     <*> (o .:? "privilegeName")
+                     <*> (o .:? "childPrivileges" .!= mempty))
+
+instance ToJSON Privilege where
+        toJSON Privilege'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _priEtag,
+                  ("isOuScopable" .=) <$> _priIsOuScopable,
+                  Just ("kind" .= _priKind),
+                  ("serviceName" .=) <$> _priServiceName,
+                  ("serviceId" .=) <$> _priServiceId,
+                  ("privilegeName" .=) <$> _priPrivilegeName,
+                  ("childPrivileges" .=) <$> _priChildPrivileges])
+
+-- | JSON response template for List roles operation in Directory API.
+--
+-- /See:/ 'roles' smart constructor.
+data Roles =
+  Roles'
+    { _rEtag          :: !(Maybe Text)
+    , _rNextPageToken :: !(Maybe Text)
+    , _rKind          :: !Text
+    , _rItems         :: !(Maybe [Role])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Roles' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rEtag'
+--
+-- * 'rNextPageToken'
+--
+-- * 'rKind'
+--
+-- * 'rItems'
+roles
+    :: Roles
+roles =
+  Roles'
+    { _rEtag = Nothing
+    , _rNextPageToken = Nothing
+    , _rKind = "admin#directory#roles"
+    , _rItems = Nothing
+    }
+
+
+-- | ETag of the resource.
+rEtag :: Lens' Roles (Maybe Text)
+rEtag = lens _rEtag (\ s a -> s{_rEtag = a})
+
+rNextPageToken :: Lens' Roles (Maybe Text)
+rNextPageToken
+  = lens _rNextPageToken
+      (\ s a -> s{_rNextPageToken = a})
+
+-- | The type of the API resource. This is always admin#directory#roles.
+rKind :: Lens' Roles Text
+rKind = lens _rKind (\ s a -> s{_rKind = a})
+
+-- | A list of Role resources.
+rItems :: Lens' Roles [Role]
+rItems
+  = lens _rItems (\ s a -> s{_rItems = a}) . _Default .
+      _Coerce
+
+instance FromJSON Roles where
+        parseJSON
+          = withObject "Roles"
+              (\ o ->
+                 Roles' <$>
+                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "admin#directory#roles")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON Roles where
+        toJSON Roles'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _rEtag,
+                  ("nextPageToken" .=) <$> _rNextPageToken,
+                  Just ("kind" .= _rKind), ("items" .=) <$> _rItems])
+
+--
+-- /See:/ 'chromeOSDeviceDiskVolumeReportsItem' smart constructor.
+newtype ChromeOSDeviceDiskVolumeReportsItem =
+  ChromeOSDeviceDiskVolumeReportsItem'
+    { _coddvriVolumeInfo :: Maybe [ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem]
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ChromeOSDeviceDiskVolumeReportsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'coddvriVolumeInfo'
+chromeOSDeviceDiskVolumeReportsItem
+    :: ChromeOSDeviceDiskVolumeReportsItem
+chromeOSDeviceDiskVolumeReportsItem =
+  ChromeOSDeviceDiskVolumeReportsItem' {_coddvriVolumeInfo = Nothing}
+
+
+-- | Disk volumes
+coddvriVolumeInfo :: Lens' ChromeOSDeviceDiskVolumeReportsItem [ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem]
+coddvriVolumeInfo
+  = lens _coddvriVolumeInfo
+      (\ s a -> s{_coddvriVolumeInfo = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ChromeOSDeviceDiskVolumeReportsItem
+         where
+        parseJSON
+          = withObject "ChromeOSDeviceDiskVolumeReportsItem"
+              (\ o ->
+                 ChromeOSDeviceDiskVolumeReportsItem' <$>
+                   (o .:? "volumeInfo" .!= mempty))
+
+instance ToJSON ChromeOSDeviceDiskVolumeReportsItem
+         where
+        toJSON ChromeOSDeviceDiskVolumeReportsItem'{..}
+          = object
+              (catMaybes
+                 [("volumeInfo" .=) <$> _coddvriVolumeInfo])
+
+-- | JSON template for address.
+--
+-- /See:/ 'userAddress' smart constructor.
+data UserAddress =
+  UserAddress'
+    { _uaStreetAddress      :: !(Maybe Text)
+    , _uaPoBox              :: !(Maybe Text)
+    , _uaCountry            :: !(Maybe Text)
+    , _uaPostalCode         :: !(Maybe Text)
+    , _uaFormatted          :: !(Maybe Text)
+    , _uaExtendedAddress    :: !(Maybe Text)
+    , _uaLocality           :: !(Maybe Text)
+    , _uaPrimary            :: !(Maybe Bool)
+    , _uaCountryCode        :: !(Maybe Text)
+    , _uaRegion             :: !(Maybe Text)
+    , _uaType               :: !(Maybe Text)
+    , _uaCustomType         :: !(Maybe Text)
+    , _uaSourceIsStructured :: !(Maybe Bool)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UserAddress' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uaStreetAddress'
+--
+-- * 'uaPoBox'
+--
+-- * 'uaCountry'
+--
+-- * 'uaPostalCode'
+--
+-- * 'uaFormatted'
+--
+-- * 'uaExtendedAddress'
+--
+-- * 'uaLocality'
+--
+-- * 'uaPrimary'
+--
+-- * 'uaCountryCode'
+--
+-- * 'uaRegion'
+--
+-- * 'uaType'
+--
+-- * 'uaCustomType'
+--
+-- * 'uaSourceIsStructured'
+userAddress
+    :: UserAddress
+userAddress =
+  UserAddress'
+    { _uaStreetAddress = Nothing
+    , _uaPoBox = Nothing
+    , _uaCountry = Nothing
+    , _uaPostalCode = Nothing
+    , _uaFormatted = Nothing
+    , _uaExtendedAddress = Nothing
+    , _uaLocality = Nothing
+    , _uaPrimary = Nothing
+    , _uaCountryCode = Nothing
+    , _uaRegion = Nothing
+    , _uaType = Nothing
+    , _uaCustomType = Nothing
+    , _uaSourceIsStructured = Nothing
+    }
+
+
+-- | Street.
+uaStreetAddress :: Lens' UserAddress (Maybe Text)
+uaStreetAddress
+  = lens _uaStreetAddress
+      (\ s a -> s{_uaStreetAddress = a})
+
+-- | Other parts of address.
+uaPoBox :: Lens' UserAddress (Maybe Text)
+uaPoBox = lens _uaPoBox (\ s a -> s{_uaPoBox = a})
+
+-- | Country.
+uaCountry :: Lens' UserAddress (Maybe Text)
+uaCountry
+  = lens _uaCountry (\ s a -> s{_uaCountry = a})
+
+-- | Postal code.
+uaPostalCode :: Lens' UserAddress (Maybe Text)
+uaPostalCode
+  = lens _uaPostalCode (\ s a -> s{_uaPostalCode = a})
+
+-- | Formatted address.
+uaFormatted :: Lens' UserAddress (Maybe Text)
+uaFormatted
+  = lens _uaFormatted (\ s a -> s{_uaFormatted = a})
+
+-- | Extended Address.
+uaExtendedAddress :: Lens' UserAddress (Maybe Text)
+uaExtendedAddress
+  = lens _uaExtendedAddress
+      (\ s a -> s{_uaExtendedAddress = a})
+
+-- | Locality.
+uaLocality :: Lens' UserAddress (Maybe Text)
+uaLocality
+  = lens _uaLocality (\ s a -> s{_uaLocality = a})
+
+-- | If this is user\'s primary address. Only one entry could be marked as
+-- primary.
+uaPrimary :: Lens' UserAddress (Maybe Bool)
+uaPrimary
+  = lens _uaPrimary (\ s a -> s{_uaPrimary = a})
+
+-- | Country code.
+uaCountryCode :: Lens' UserAddress (Maybe Text)
+uaCountryCode
+  = lens _uaCountryCode
+      (\ s a -> s{_uaCountryCode = a})
+
+-- | Region.
+uaRegion :: Lens' UserAddress (Maybe Text)
+uaRegion = lens _uaRegion (\ s a -> s{_uaRegion = a})
+
+-- | Each entry can have a type which indicates standard values of that
+-- entry. For example address could be of home, work etc. In addition to
+-- the standard type, an entry can have a custom type and can take any
+-- value. Such type should have the CUSTOM value as type and also have a
+-- customType value.
+uaType :: Lens' UserAddress (Maybe Text)
+uaType = lens _uaType (\ s a -> s{_uaType = a})
+
+-- | Custom type.
+uaCustomType :: Lens' UserAddress (Maybe Text)
+uaCustomType
+  = lens _uaCustomType (\ s a -> s{_uaCustomType = a})
+
+-- | User supplied address was structured. Structured addresses are NOT
+-- supported at this time. You might be able to write structured addresses,
+-- but any values will eventually be clobbered.
+uaSourceIsStructured :: Lens' UserAddress (Maybe Bool)
+uaSourceIsStructured
+  = lens _uaSourceIsStructured
+      (\ s a -> s{_uaSourceIsStructured = a})
+
+instance FromJSON UserAddress where
+        parseJSON
+          = withObject "UserAddress"
+              (\ o ->
+                 UserAddress' <$>
+                   (o .:? "streetAddress") <*> (o .:? "poBox") <*>
+                     (o .:? "country")
+                     <*> (o .:? "postalCode")
+                     <*> (o .:? "formatted")
+                     <*> (o .:? "extendedAddress")
+                     <*> (o .:? "locality")
+                     <*> (o .:? "primary")
+                     <*> (o .:? "countryCode")
+                     <*> (o .:? "region")
+                     <*> (o .:? "type")
+                     <*> (o .:? "customType")
+                     <*> (o .:? "sourceIsStructured"))
+
+instance ToJSON UserAddress where
+        toJSON UserAddress'{..}
+          = object
+              (catMaybes
+                 [("streetAddress" .=) <$> _uaStreetAddress,
+                  ("poBox" .=) <$> _uaPoBox,
+                  ("country" .=) <$> _uaCountry,
+                  ("postalCode" .=) <$> _uaPostalCode,
+                  ("formatted" .=) <$> _uaFormatted,
+                  ("extendedAddress" .=) <$> _uaExtendedAddress,
+                  ("locality" .=) <$> _uaLocality,
+                  ("primary" .=) <$> _uaPrimary,
+                  ("countryCode" .=) <$> _uaCountryCode,
+                  ("region" .=) <$> _uaRegion, ("type" .=) <$> _uaType,
+                  ("customType" .=) <$> _uaCustomType,
+                  ("sourceIsStructured" .=) <$> _uaSourceIsStructured])
+
+-- | JSON template for postal address of a customer.
+--
+-- /See:/ 'customerPostalAddress' smart constructor.
+data CustomerPostalAddress =
+  CustomerPostalAddress'
+    { _cpaOrganizationName :: !(Maybe Text)
+    , _cpaPostalCode       :: !(Maybe Text)
+    , _cpaAddressLine1     :: !(Maybe Text)
+    , _cpaLocality         :: !(Maybe Text)
+    , _cpaContactName      :: !(Maybe Text)
+    , _cpaAddressLine2     :: !(Maybe Text)
+    , _cpaCountryCode      :: !(Maybe Text)
+    , _cpaRegion           :: !(Maybe Text)
+    , _cpaAddressLine3     :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CustomerPostalAddress' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cpaOrganizationName'
+--
+-- * 'cpaPostalCode'
+--
+-- * 'cpaAddressLine1'
+--
+-- * 'cpaLocality'
+--
+-- * 'cpaContactName'
+--
+-- * 'cpaAddressLine2'
+--
+-- * 'cpaCountryCode'
+--
+-- * 'cpaRegion'
+--
+-- * 'cpaAddressLine3'
+customerPostalAddress
+    :: CustomerPostalAddress
+customerPostalAddress =
+  CustomerPostalAddress'
+    { _cpaOrganizationName = Nothing
+    , _cpaPostalCode = Nothing
+    , _cpaAddressLine1 = Nothing
+    , _cpaLocality = Nothing
+    , _cpaContactName = Nothing
+    , _cpaAddressLine2 = Nothing
+    , _cpaCountryCode = Nothing
+    , _cpaRegion = Nothing
+    , _cpaAddressLine3 = Nothing
+    }
+
+
+-- | The company or company division name.
+cpaOrganizationName :: Lens' CustomerPostalAddress (Maybe Text)
+cpaOrganizationName
+  = lens _cpaOrganizationName
+      (\ s a -> s{_cpaOrganizationName = a})
+
+-- | The postal code. A postalCode example is a postal zip code such as
+-- 10009. This is in accordance with -
+-- http:\/\/portablecontacts.net\/draft-spec.html#address_element.
+cpaPostalCode :: Lens' CustomerPostalAddress (Maybe Text)
+cpaPostalCode
+  = lens _cpaPostalCode
+      (\ s a -> s{_cpaPostalCode = a})
+
+-- | A customer\'s physical address. The address can be composed of one to
+-- three lines.
+cpaAddressLine1 :: Lens' CustomerPostalAddress (Maybe Text)
+cpaAddressLine1
+  = lens _cpaAddressLine1
+      (\ s a -> s{_cpaAddressLine1 = a})
+
+-- | Name of the locality. An example of a locality value is the city of San
+-- Francisco.
+cpaLocality :: Lens' CustomerPostalAddress (Maybe Text)
+cpaLocality
+  = lens _cpaLocality (\ s a -> s{_cpaLocality = a})
+
+-- | The customer contact\'s name.
+cpaContactName :: Lens' CustomerPostalAddress (Maybe Text)
+cpaContactName
+  = lens _cpaContactName
+      (\ s a -> s{_cpaContactName = a})
+
+-- | Address line 2 of the address.
+cpaAddressLine2 :: Lens' CustomerPostalAddress (Maybe Text)
+cpaAddressLine2
+  = lens _cpaAddressLine2
+      (\ s a -> s{_cpaAddressLine2 = a})
+
+-- | This is a required property. For countryCode information see the ISO
+-- 3166 country code elements.
+cpaCountryCode :: Lens' CustomerPostalAddress (Maybe Text)
+cpaCountryCode
+  = lens _cpaCountryCode
+      (\ s a -> s{_cpaCountryCode = a})
+
+-- | Name of the region. An example of a region value is NY for the state of
+-- New York.
+cpaRegion :: Lens' CustomerPostalAddress (Maybe Text)
+cpaRegion
+  = lens _cpaRegion (\ s a -> s{_cpaRegion = a})
+
+-- | Address line 3 of the address.
+cpaAddressLine3 :: Lens' CustomerPostalAddress (Maybe Text)
+cpaAddressLine3
+  = lens _cpaAddressLine3
+      (\ s a -> s{_cpaAddressLine3 = a})
+
+instance FromJSON CustomerPostalAddress where
+        parseJSON
+          = withObject "CustomerPostalAddress"
+              (\ o ->
+                 CustomerPostalAddress' <$>
+                   (o .:? "organizationName") <*> (o .:? "postalCode")
+                     <*> (o .:? "addressLine1")
+                     <*> (o .:? "locality")
+                     <*> (o .:? "contactName")
+                     <*> (o .:? "addressLine2")
+                     <*> (o .:? "countryCode")
+                     <*> (o .:? "region")
+                     <*> (o .:? "addressLine3"))
+
+instance ToJSON CustomerPostalAddress where
+        toJSON CustomerPostalAddress'{..}
+          = object
+              (catMaybes
+                 [("organizationName" .=) <$> _cpaOrganizationName,
+                  ("postalCode" .=) <$> _cpaPostalCode,
+                  ("addressLine1" .=) <$> _cpaAddressLine1,
+                  ("locality" .=) <$> _cpaLocality,
+                  ("contactName" .=) <$> _cpaContactName,
+                  ("addressLine2" .=) <$> _cpaAddressLine2,
+                  ("countryCode" .=) <$> _cpaCountryCode,
+                  ("region" .=) <$> _cpaRegion,
+                  ("addressLine3" .=) <$> _cpaAddressLine3])
+
+-- | JSON template for roleAssignment resource in Directory API.
+--
+-- /See:/ 'roleAssignment' smart constructor.
+data RoleAssignment =
+  RoleAssignment'
+    { _rolEtag             :: !(Maybe Text)
+    , _rolScopeType        :: !(Maybe Text)
+    , _rolKind             :: !Text
+    , _rolAssignedTo       :: !(Maybe Text)
+    , _rolRoleId           :: !(Maybe (Textual Int64))
+    , _rolRoleAssignmentId :: !(Maybe (Textual Int64))
+    , _rolOrgUnitId        :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'RoleAssignment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rolEtag'
+--
+-- * 'rolScopeType'
+--
+-- * 'rolKind'
+--
+-- * 'rolAssignedTo'
+--
+-- * 'rolRoleId'
+--
+-- * 'rolRoleAssignmentId'
+--
+-- * 'rolOrgUnitId'
+roleAssignment
+    :: RoleAssignment
+roleAssignment =
+  RoleAssignment'
+    { _rolEtag = Nothing
+    , _rolScopeType = Nothing
+    , _rolKind = "admin#directory#roleAssignment"
+    , _rolAssignedTo = Nothing
+    , _rolRoleId = Nothing
+    , _rolRoleAssignmentId = Nothing
+    , _rolOrgUnitId = Nothing
+    }
+
+
+-- | ETag of the resource.
+rolEtag :: Lens' RoleAssignment (Maybe Text)
+rolEtag = lens _rolEtag (\ s a -> s{_rolEtag = a})
+
+-- | The scope in which this role is assigned. Possible values are: -
+-- CUSTOMER - ORG_UNIT
+rolScopeType :: Lens' RoleAssignment (Maybe Text)
+rolScopeType
+  = lens _rolScopeType (\ s a -> s{_rolScopeType = a})
+
+-- | The type of the API resource. This is always
+-- admin#directory#roleAssignment.
+rolKind :: Lens' RoleAssignment Text
+rolKind = lens _rolKind (\ s a -> s{_rolKind = a})
+
+-- | The unique ID of the user this role is assigned to.
+rolAssignedTo :: Lens' RoleAssignment (Maybe Text)
+rolAssignedTo
+  = lens _rolAssignedTo
+      (\ s a -> s{_rolAssignedTo = a})
+
+-- | The ID of the role that is assigned.
+rolRoleId :: Lens' RoleAssignment (Maybe Int64)
+rolRoleId
+  = lens _rolRoleId (\ s a -> s{_rolRoleId = a}) .
+      mapping _Coerce
+
+-- | ID of this roleAssignment.
+rolRoleAssignmentId :: Lens' RoleAssignment (Maybe Int64)
+rolRoleAssignmentId
+  = lens _rolRoleAssignmentId
+      (\ s a -> s{_rolRoleAssignmentId = a})
+      . mapping _Coerce
+
+-- | If the role is restricted to an organization unit, this contains the ID
+-- for the organization unit the exercise of this role is restricted to.
+rolOrgUnitId :: Lens' RoleAssignment (Maybe Text)
+rolOrgUnitId
+  = lens _rolOrgUnitId (\ s a -> s{_rolOrgUnitId = a})
+
+instance FromJSON RoleAssignment where
+        parseJSON
+          = withObject "RoleAssignment"
+              (\ o ->
+                 RoleAssignment' <$>
+                   (o .:? "etag") <*> (o .:? "scopeType") <*>
+                     (o .:? "kind" .!= "admin#directory#roleAssignment")
+                     <*> (o .:? "assignedTo")
+                     <*> (o .:? "roleId")
+                     <*> (o .:? "roleAssignmentId")
+                     <*> (o .:? "orgUnitId"))
+
+instance ToJSON RoleAssignment where
+        toJSON RoleAssignment'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _rolEtag,
+                  ("scopeType" .=) <$> _rolScopeType,
+                  Just ("kind" .= _rolKind),
+                  ("assignedTo" .=) <$> _rolAssignedTo,
+                  ("roleId" .=) <$> _rolRoleId,
+                  ("roleAssignmentId" .=) <$> _rolRoleAssignmentId,
+                  ("orgUnitId" .=) <$> _rolOrgUnitId])
+
+-- | JSON template for Group resource in Directory API.
+--
+-- /See:/ 'group'' smart constructor.
+data Group =
+  Group'
+    { _groEmail              :: !(Maybe Text)
+    , _groEtag               :: !(Maybe Text)
+    , _groDirectMembersCount :: !(Maybe (Textual Int64))
+    , _groKind               :: !Text
+    , _groAliases            :: !(Maybe [Text])
+    , _groNonEditableAliases :: !(Maybe [Text])
+    , _groName               :: !(Maybe Text)
+    , _groAdminCreated       :: !(Maybe Bool)
+    , _groId                 :: !(Maybe Text)
+    , _groDescription        :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Group' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'groEmail'
+--
+-- * 'groEtag'
+--
+-- * 'groDirectMembersCount'
+--
+-- * 'groKind'
+--
+-- * 'groAliases'
+--
+-- * 'groNonEditableAliases'
+--
+-- * 'groName'
+--
+-- * 'groAdminCreated'
+--
+-- * 'groId'
+--
+-- * 'groDescription'
+group'
+    :: Group
+group' =
+  Group'
+    { _groEmail = Nothing
+    , _groEtag = Nothing
+    , _groDirectMembersCount = Nothing
+    , _groKind = "admin#directory#group"
+    , _groAliases = Nothing
+    , _groNonEditableAliases = Nothing
+    , _groName = Nothing
+    , _groAdminCreated = Nothing
+    , _groId = Nothing
+    , _groDescription = Nothing
+    }
+
+
+-- | Email of Group
+groEmail :: Lens' Group (Maybe Text)
+groEmail = lens _groEmail (\ s a -> s{_groEmail = a})
+
+-- | ETag of the resource.
+groEtag :: Lens' Group (Maybe Text)
+groEtag = lens _groEtag (\ s a -> s{_groEtag = a})
+
+-- | Group direct members count
+groDirectMembersCount :: Lens' Group (Maybe Int64)
+groDirectMembersCount
+  = lens _groDirectMembersCount
+      (\ s a -> s{_groDirectMembersCount = a})
+      . mapping _Coerce
+
+-- | Kind of resource this is.
+groKind :: Lens' Group Text
+groKind = lens _groKind (\ s a -> s{_groKind = a})
+
+-- | List of aliases (Read-only)
+groAliases :: Lens' Group [Text]
+groAliases
+  = lens _groAliases (\ s a -> s{_groAliases = a}) .
+      _Default
+      . _Coerce
+
+-- | List of non editable aliases (Read-only)
+groNonEditableAliases :: Lens' Group [Text]
+groNonEditableAliases
+  = lens _groNonEditableAliases
+      (\ s a -> s{_groNonEditableAliases = a})
+      . _Default
+      . _Coerce
+
+-- | Group name
+groName :: Lens' Group (Maybe Text)
+groName = lens _groName (\ s a -> s{_groName = a})
+
+-- | Is the group created by admin (Read-only) *
+groAdminCreated :: Lens' Group (Maybe Bool)
+groAdminCreated
+  = lens _groAdminCreated
+      (\ s a -> s{_groAdminCreated = a})
+
+-- | Unique identifier of Group (Read-only)
+groId :: Lens' Group (Maybe Text)
+groId = lens _groId (\ s a -> s{_groId = a})
+
+-- | Description of the group
+groDescription :: Lens' Group (Maybe Text)
+groDescription
+  = lens _groDescription
+      (\ s a -> s{_groDescription = a})
+
+instance FromJSON Group where
+        parseJSON
+          = withObject "Group"
+              (\ o ->
+                 Group' <$>
+                   (o .:? "email") <*> (o .:? "etag") <*>
+                     (o .:? "directMembersCount")
+                     <*> (o .:? "kind" .!= "admin#directory#group")
+                     <*> (o .:? "aliases" .!= mempty)
+                     <*> (o .:? "nonEditableAliases" .!= mempty)
+                     <*> (o .:? "name")
+                     <*> (o .:? "adminCreated")
+                     <*> (o .:? "id")
+                     <*> (o .:? "description"))
+
+instance ToJSON Group where
+        toJSON Group'{..}
+          = object
+              (catMaybes
+                 [("email" .=) <$> _groEmail,
+                  ("etag" .=) <$> _groEtag,
+                  ("directMembersCount" .=) <$> _groDirectMembersCount,
+                  Just ("kind" .= _groKind),
+                  ("aliases" .=) <$> _groAliases,
+                  ("nonEditableAliases" .=) <$> _groNonEditableAliases,
+                  ("name" .=) <$> _groName,
+                  ("adminCreated" .=) <$> _groAdminCreated,
+                  ("id" .=) <$> _groId,
+                  ("description" .=) <$> _groDescription])
+
+-- | JSON template for Chrome Os Device resource in Directory API.
+--
+-- /See:/ 'chromeOSDevice' smart constructor.
+data ChromeOSDevice =
+  ChromeOSDevice'
+    { _codStatus               :: !(Maybe Text)
+    , _codEtag                 :: !(Maybe Text)
+    , _codCPUStatusReports     :: !(Maybe [ChromeOSDeviceCPUStatusReportsItem])
+    , _codAnnotatedUser        :: !(Maybe Text)
+    , _codSystemRamFreeReports :: !(Maybe [ChromeOSDeviceSystemRamFreeReportsItem])
+    , _codPlatformVersion      :: !(Maybe Text)
+    , _codLastSync             :: !(Maybe DateTime')
+    , _codActiveTimeRanges     :: !(Maybe [ChromeOSDeviceActiveTimeRangesItem])
+    , _codKind                 :: !Text
+    , _codEthernetMACAddress   :: !(Maybe Text)
+    , _codLastEnrollmentTime   :: !(Maybe DateTime')
+    , _codAnnotatedLocation    :: !(Maybe Text)
+    , _codMACAddress           :: !(Maybe Text)
+    , _codOrgUnitPath          :: !(Maybe Text)
+    , _codRecentUsers          :: !(Maybe [ChromeOSDeviceRecentUsersItem])
+    , _codSupportEndDate       :: !(Maybe DateTime')
+    , _codModel                :: !(Maybe Text)
+    , _codWillAutoRenew        :: !(Maybe Bool)
+    , _codMeid                 :: !(Maybe Text)
+    , _codDeviceFiles          :: !(Maybe [ChromeOSDeviceDeviceFilesItem])
+    , _codDeviceId             :: !(Maybe Text)
+    , _codBootMode             :: !(Maybe Text)
+    , _codTpmVersionInfo       :: !(Maybe ChromeOSDeviceTpmVersionInfo)
+    , _codOrderNumber          :: !(Maybe Text)
+    , _codDiskVolumeReports    :: !(Maybe [ChromeOSDeviceDiskVolumeReportsItem])
+    , _codAnnotatedAssetId     :: !(Maybe Text)
+    , _codNotes                :: !(Maybe Text)
+    , _codSerialNumber         :: !(Maybe Text)
+    , _codFirmwareVersion      :: !(Maybe Text)
+    , _codOSVersion            :: !(Maybe Text)
+    , _codSystemRamTotal       :: !(Maybe (Textual Int64))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ChromeOSDevice' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'codStatus'
+--
+-- * 'codEtag'
+--
+-- * 'codCPUStatusReports'
+--
+-- * 'codAnnotatedUser'
+--
+-- * 'codSystemRamFreeReports'
+--
+-- * 'codPlatformVersion'
+--
+-- * 'codLastSync'
+--
+-- * 'codActiveTimeRanges'
+--
+-- * 'codKind'
+--
+-- * 'codEthernetMACAddress'
+--
+-- * 'codLastEnrollmentTime'
+--
+-- * 'codAnnotatedLocation'
+--
+-- * 'codMACAddress'
+--
+-- * 'codOrgUnitPath'
+--
+-- * 'codRecentUsers'
+--
+-- * 'codSupportEndDate'
+--
+-- * 'codModel'
+--
+-- * 'codWillAutoRenew'
+--
+-- * 'codMeid'
+--
+-- * 'codDeviceFiles'
+--
+-- * 'codDeviceId'
+--
+-- * 'codBootMode'
+--
+-- * 'codTpmVersionInfo'
+--
+-- * 'codOrderNumber'
+--
+-- * 'codDiskVolumeReports'
+--
+-- * 'codAnnotatedAssetId'
+--
+-- * 'codNotes'
+--
+-- * 'codSerialNumber'
+--
+-- * 'codFirmwareVersion'
+--
+-- * 'codOSVersion'
+--
+-- * 'codSystemRamTotal'
+chromeOSDevice
+    :: ChromeOSDevice
+chromeOSDevice =
+  ChromeOSDevice'
+    { _codStatus = Nothing
+    , _codEtag = Nothing
+    , _codCPUStatusReports = Nothing
+    , _codAnnotatedUser = Nothing
+    , _codSystemRamFreeReports = Nothing
+    , _codPlatformVersion = Nothing
+    , _codLastSync = Nothing
+    , _codActiveTimeRanges = Nothing
+    , _codKind = "admin#directory#chromeosdevice"
+    , _codEthernetMACAddress = Nothing
+    , _codLastEnrollmentTime = Nothing
+    , _codAnnotatedLocation = Nothing
+    , _codMACAddress = Nothing
+    , _codOrgUnitPath = Nothing
+    , _codRecentUsers = Nothing
+    , _codSupportEndDate = Nothing
+    , _codModel = Nothing
+    , _codWillAutoRenew = Nothing
+    , _codMeid = Nothing
+    , _codDeviceFiles = Nothing
+    , _codDeviceId = Nothing
+    , _codBootMode = Nothing
+    , _codTpmVersionInfo = Nothing
+    , _codOrderNumber = Nothing
+    , _codDiskVolumeReports = Nothing
+    , _codAnnotatedAssetId = Nothing
+    , _codNotes = Nothing
+    , _codSerialNumber = Nothing
+    , _codFirmwareVersion = Nothing
+    , _codOSVersion = Nothing
+    , _codSystemRamTotal = Nothing
+    }
+
+
+-- | status of the device (Read-only)
+codStatus :: Lens' ChromeOSDevice (Maybe Text)
+codStatus
+  = lens _codStatus (\ s a -> s{_codStatus = a})
+
+-- | ETag of the resource.
+codEtag :: Lens' ChromeOSDevice (Maybe Text)
+codEtag = lens _codEtag (\ s a -> s{_codEtag = a})
+
+-- | Reports of CPU utilization and temperature (Read-only)
+codCPUStatusReports :: Lens' ChromeOSDevice [ChromeOSDeviceCPUStatusReportsItem]
+codCPUStatusReports
+  = lens _codCPUStatusReports
+      (\ s a -> s{_codCPUStatusReports = a})
+      . _Default
+      . _Coerce
+
+-- | User of the device
+codAnnotatedUser :: Lens' ChromeOSDevice (Maybe Text)
+codAnnotatedUser
+  = lens _codAnnotatedUser
+      (\ s a -> s{_codAnnotatedUser = a})
+
+-- | Reports of amounts of available RAM memory (Read-only)
+codSystemRamFreeReports :: Lens' ChromeOSDevice [ChromeOSDeviceSystemRamFreeReportsItem]
+codSystemRamFreeReports
+  = lens _codSystemRamFreeReports
+      (\ s a -> s{_codSystemRamFreeReports = a})
+      . _Default
+      . _Coerce
+
+-- | Chromebook platform version (Read-only)
+codPlatformVersion :: Lens' ChromeOSDevice (Maybe Text)
+codPlatformVersion
+  = lens _codPlatformVersion
+      (\ s a -> s{_codPlatformVersion = a})
+
+-- | Date and time the device was last synchronized with the policy settings
+-- in the G Suite administrator control panel (Read-only)
+codLastSync :: Lens' ChromeOSDevice (Maybe UTCTime)
+codLastSync
+  = lens _codLastSync (\ s a -> s{_codLastSync = a}) .
+      mapping _DateTime
+
+-- | List of active time ranges (Read-only)
+codActiveTimeRanges :: Lens' ChromeOSDevice [ChromeOSDeviceActiveTimeRangesItem]
+codActiveTimeRanges
+  = lens _codActiveTimeRanges
+      (\ s a -> s{_codActiveTimeRanges = a})
+      . _Default
+      . _Coerce
+
+-- | Kind of resource this is.
+codKind :: Lens' ChromeOSDevice Text
+codKind = lens _codKind (\ s a -> s{_codKind = a})
+
+-- | Chromebook Mac Address on ethernet network interface (Read-only)
+codEthernetMACAddress :: Lens' ChromeOSDevice (Maybe Text)
+codEthernetMACAddress
+  = lens _codEthernetMACAddress
+      (\ s a -> s{_codEthernetMACAddress = a})
+
+-- | Date and time the device was last enrolled (Read-only)
+codLastEnrollmentTime :: Lens' ChromeOSDevice (Maybe UTCTime)
+codLastEnrollmentTime
+  = lens _codLastEnrollmentTime
+      (\ s a -> s{_codLastEnrollmentTime = a})
+      . mapping _DateTime
+
+-- | Address or location of the device as noted by the administrator
+codAnnotatedLocation :: Lens' ChromeOSDevice (Maybe Text)
+codAnnotatedLocation
+  = lens _codAnnotatedLocation
+      (\ s a -> s{_codAnnotatedLocation = a})
+
+-- | Chromebook Mac Address on wifi network interface (Read-only)
+codMACAddress :: Lens' ChromeOSDevice (Maybe Text)
+codMACAddress
+  = lens _codMACAddress
+      (\ s a -> s{_codMACAddress = a})
+
+-- | OrgUnit of the device
+codOrgUnitPath :: Lens' ChromeOSDevice (Maybe Text)
+codOrgUnitPath
+  = lens _codOrgUnitPath
+      (\ s a -> s{_codOrgUnitPath = a})
+
+-- | List of recent device users, in descending order by last login time
+-- (Read-only)
+codRecentUsers :: Lens' ChromeOSDevice [ChromeOSDeviceRecentUsersItem]
+codRecentUsers
+  = lens _codRecentUsers
+      (\ s a -> s{_codRecentUsers = a})
+      . _Default
+      . _Coerce
+
+-- | Final date the device will be supported (Read-only)
+codSupportEndDate :: Lens' ChromeOSDevice (Maybe UTCTime)
+codSupportEndDate
+  = lens _codSupportEndDate
+      (\ s a -> s{_codSupportEndDate = a})
+      . mapping _DateTime
+
+-- | Chromebook Model (Read-only)
+codModel :: Lens' ChromeOSDevice (Maybe Text)
+codModel = lens _codModel (\ s a -> s{_codModel = a})
+
+-- | Will Chromebook auto renew after support end date (Read-only)
+codWillAutoRenew :: Lens' ChromeOSDevice (Maybe Bool)
+codWillAutoRenew
+  = lens _codWillAutoRenew
+      (\ s a -> s{_codWillAutoRenew = a})
+
+-- | Mobile Equipment identifier for the 3G mobile card in the Chromebook
+-- (Read-only)
+codMeid :: Lens' ChromeOSDevice (Maybe Text)
+codMeid = lens _codMeid (\ s a -> s{_codMeid = a})
+
+-- | List of device files to download (Read-only)
+codDeviceFiles :: Lens' ChromeOSDevice [ChromeOSDeviceDeviceFilesItem]
+codDeviceFiles
+  = lens _codDeviceFiles
+      (\ s a -> s{_codDeviceFiles = a})
+      . _Default
+      . _Coerce
+
+-- | Unique identifier of Chrome OS Device (Read-only)
+codDeviceId :: Lens' ChromeOSDevice (Maybe Text)
+codDeviceId
+  = lens _codDeviceId (\ s a -> s{_codDeviceId = a})
+
+-- | Chromebook boot mode (Read-only)
+codBootMode :: Lens' ChromeOSDevice (Maybe Text)
+codBootMode
+  = lens _codBootMode (\ s a -> s{_codBootMode = a})
+
+-- | Trusted Platform Module (TPM) (Read-only)
+codTpmVersionInfo :: Lens' ChromeOSDevice (Maybe ChromeOSDeviceTpmVersionInfo)
+codTpmVersionInfo
+  = lens _codTpmVersionInfo
+      (\ s a -> s{_codTpmVersionInfo = a})
+
+-- | Chromebook order number (Read-only)
+codOrderNumber :: Lens' ChromeOSDevice (Maybe Text)
+codOrderNumber
+  = lens _codOrderNumber
+      (\ s a -> s{_codOrderNumber = a})
+
+-- | Reports of disk space and other info about mounted\/connected volumes.
+codDiskVolumeReports :: Lens' ChromeOSDevice [ChromeOSDeviceDiskVolumeReportsItem]
+codDiskVolumeReports
+  = lens _codDiskVolumeReports
+      (\ s a -> s{_codDiskVolumeReports = a})
+      . _Default
+      . _Coerce
+
+-- | AssetId specified during enrollment or through later annotation
+codAnnotatedAssetId :: Lens' ChromeOSDevice (Maybe Text)
+codAnnotatedAssetId
+  = lens _codAnnotatedAssetId
+      (\ s a -> s{_codAnnotatedAssetId = a})
+
+-- | Notes added by the administrator
+codNotes :: Lens' ChromeOSDevice (Maybe Text)
+codNotes = lens _codNotes (\ s a -> s{_codNotes = a})
+
+-- | Chromebook serial number (Read-only)
+codSerialNumber :: Lens' ChromeOSDevice (Maybe Text)
+codSerialNumber
+  = lens _codSerialNumber
+      (\ s a -> s{_codSerialNumber = a})
+
+-- | Chromebook firmware version (Read-only)
+codFirmwareVersion :: Lens' ChromeOSDevice (Maybe Text)
+codFirmwareVersion
+  = lens _codFirmwareVersion
+      (\ s a -> s{_codFirmwareVersion = a})
+
+-- | Chromebook Os Version (Read-only)
+codOSVersion :: Lens' ChromeOSDevice (Maybe Text)
+codOSVersion
+  = lens _codOSVersion (\ s a -> s{_codOSVersion = a})
+
+-- | Total RAM on the device [in bytes] (Read-only)
+codSystemRamTotal :: Lens' ChromeOSDevice (Maybe Int64)
+codSystemRamTotal
+  = lens _codSystemRamTotal
+      (\ s a -> s{_codSystemRamTotal = a})
+      . mapping _Coerce
+
+instance FromJSON ChromeOSDevice where
+        parseJSON
+          = withObject "ChromeOSDevice"
+              (\ o ->
+                 ChromeOSDevice' <$>
+                   (o .:? "status") <*> (o .:? "etag") <*>
+                     (o .:? "cpuStatusReports" .!= mempty)
+                     <*> (o .:? "annotatedUser")
+                     <*> (o .:? "systemRamFreeReports" .!= mempty)
+                     <*> (o .:? "platformVersion")
+                     <*> (o .:? "lastSync")
+                     <*> (o .:? "activeTimeRanges" .!= mempty)
+                     <*>
+                     (o .:? "kind" .!= "admin#directory#chromeosdevice")
+                     <*> (o .:? "ethernetMacAddress")
+                     <*> (o .:? "lastEnrollmentTime")
+                     <*> (o .:? "annotatedLocation")
+                     <*> (o .:? "macAddress")
+                     <*> (o .:? "orgUnitPath")
+                     <*> (o .:? "recentUsers" .!= mempty)
+                     <*> (o .:? "supportEndDate")
+                     <*> (o .:? "model")
+                     <*> (o .:? "willAutoRenew")
+                     <*> (o .:? "meid")
+                     <*> (o .:? "deviceFiles" .!= mempty)
+                     <*> (o .:? "deviceId")
+                     <*> (o .:? "bootMode")
+                     <*> (o .:? "tpmVersionInfo")
+                     <*> (o .:? "orderNumber")
+                     <*> (o .:? "diskVolumeReports" .!= mempty)
+                     <*> (o .:? "annotatedAssetId")
+                     <*> (o .:? "notes")
+                     <*> (o .:? "serialNumber")
+                     <*> (o .:? "firmwareVersion")
+                     <*> (o .:? "osVersion")
+                     <*> (o .:? "systemRamTotal"))
+
+instance ToJSON ChromeOSDevice where
+        toJSON ChromeOSDevice'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _codStatus,
+                  ("etag" .=) <$> _codEtag,
+                  ("cpuStatusReports" .=) <$> _codCPUStatusReports,
+                  ("annotatedUser" .=) <$> _codAnnotatedUser,
+                  ("systemRamFreeReports" .=) <$>
+                    _codSystemRamFreeReports,
+                  ("platformVersion" .=) <$> _codPlatformVersion,
+                  ("lastSync" .=) <$> _codLastSync,
+                  ("activeTimeRanges" .=) <$> _codActiveTimeRanges,
+                  Just ("kind" .= _codKind),
+                  ("ethernetMacAddress" .=) <$> _codEthernetMACAddress,
+                  ("lastEnrollmentTime" .=) <$> _codLastEnrollmentTime,
+                  ("annotatedLocation" .=) <$> _codAnnotatedLocation,
+                  ("macAddress" .=) <$> _codMACAddress,
+                  ("orgUnitPath" .=) <$> _codOrgUnitPath,
+                  ("recentUsers" .=) <$> _codRecentUsers,
+                  ("supportEndDate" .=) <$> _codSupportEndDate,
+                  ("model" .=) <$> _codModel,
+                  ("willAutoRenew" .=) <$> _codWillAutoRenew,
+                  ("meid" .=) <$> _codMeid,
+                  ("deviceFiles" .=) <$> _codDeviceFiles,
+                  ("deviceId" .=) <$> _codDeviceId,
+                  ("bootMode" .=) <$> _codBootMode,
+                  ("tpmVersionInfo" .=) <$> _codTpmVersionInfo,
+                  ("orderNumber" .=) <$> _codOrderNumber,
+                  ("diskVolumeReports" .=) <$> _codDiskVolumeReports,
+                  ("annotatedAssetId" .=) <$> _codAnnotatedAssetId,
+                  ("notes" .=) <$> _codNotes,
+                  ("serialNumber" .=) <$> _codSerialNumber,
+                  ("firmwareVersion" .=) <$> _codFirmwareVersion,
+                  ("osVersion" .=) <$> _codOSVersion,
+                  ("systemRamTotal" .=) <$> _codSystemRamTotal])
+
+-- | JSON response template for List Users operation in Apps Directory API.
+--
+-- /See:/ 'users' smart constructor.
+data Users =
+  Users'
+    { _uEtag          :: !(Maybe Text)
+    , _uNextPageToken :: !(Maybe Text)
+    , _uUsers         :: !(Maybe [User])
+    , _uKind          :: !Text
+    , _uTriggerEvent  :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Users' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uEtag'
+--
+-- * 'uNextPageToken'
+--
+-- * 'uUsers'
+--
+-- * 'uKind'
+--
+-- * 'uTriggerEvent'
+users
+    :: Users
+users =
+  Users'
+    { _uEtag = Nothing
+    , _uNextPageToken = Nothing
+    , _uUsers = Nothing
+    , _uKind = "admin#directory#users"
+    , _uTriggerEvent = Nothing
+    }
+
+
+-- | ETag of the resource.
+uEtag :: Lens' Users (Maybe Text)
+uEtag = lens _uEtag (\ s a -> s{_uEtag = a})
+
+-- | Token used to access next page of this result.
+uNextPageToken :: Lens' Users (Maybe Text)
+uNextPageToken
+  = lens _uNextPageToken
+      (\ s a -> s{_uNextPageToken = a})
+
+-- | List of user objects.
+uUsers :: Lens' Users [User]
+uUsers
+  = lens _uUsers (\ s a -> s{_uUsers = a}) . _Default .
+      _Coerce
+
+-- | Kind of resource this is.
+uKind :: Lens' Users Text
+uKind = lens _uKind (\ s a -> s{_uKind = a})
+
+-- | Event that triggered this response (only used in case of Push Response)
+uTriggerEvent :: Lens' Users (Maybe Text)
+uTriggerEvent
+  = lens _uTriggerEvent
+      (\ s a -> s{_uTriggerEvent = a})
+
+instance FromJSON Users where
+        parseJSON
+          = withObject "Users"
+              (\ o ->
+                 Users' <$>
+                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
+                     (o .:? "users" .!= mempty)
+                     <*> (o .:? "kind" .!= "admin#directory#users")
+                     <*> (o .:? "trigger_event"))
+
+instance ToJSON Users where
+        toJSON Users'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _uEtag,
+                  ("nextPageToken" .=) <$> _uNextPageToken,
+                  ("users" .=) <$> _uUsers, Just ("kind" .= _uKind),
+                  ("trigger_event" .=) <$> _uTriggerEvent])
+
+-- | The template that returns individual ASP (Access Code) data.
+--
+-- /See:/ 'asp' smart constructor.
+data Asp =
+  Asp'
+    { _aCreationTime :: !(Maybe (Textual Int64))
+    , _aEtag         :: !(Maybe Text)
+    , _aCodeId       :: !(Maybe (Textual Int32))
+    , _aKind         :: !Text
+    , _aName         :: !(Maybe Text)
+    , _aLastTimeUsed :: !(Maybe (Textual Int64))
+    , _aUserKey      :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Asp' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aCreationTime'
+--
+-- * 'aEtag'
+--
+-- * 'aCodeId'
+--
+-- * 'aKind'
+--
+-- * 'aName'
+--
+-- * 'aLastTimeUsed'
+--
+-- * 'aUserKey'
+asp
+    :: Asp
+asp =
+  Asp'
+    { _aCreationTime = Nothing
+    , _aEtag = Nothing
+    , _aCodeId = Nothing
+    , _aKind = "admin#directory#asp"
+    , _aName = Nothing
+    , _aLastTimeUsed = Nothing
+    , _aUserKey = Nothing
+    }
+
+
+-- | The time when the ASP was created. Expressed in Unix time format.
+aCreationTime :: Lens' Asp (Maybe Int64)
+aCreationTime
+  = lens _aCreationTime
+      (\ s a -> s{_aCreationTime = a})
+      . mapping _Coerce
+
+-- | ETag of the ASP.
+aEtag :: Lens' Asp (Maybe Text)
+aEtag = lens _aEtag (\ s a -> s{_aEtag = a})
+
+-- | The unique ID of the ASP.
+aCodeId :: Lens' Asp (Maybe Int32)
+aCodeId
+  = lens _aCodeId (\ s a -> s{_aCodeId = a}) .
+      mapping _Coerce
+
+-- | The type of the API resource. This is always admin#directory#asp.
+aKind :: Lens' Asp Text
+aKind = lens _aKind (\ s a -> s{_aKind = a})
+
+-- | The name of the application that the user, represented by their userId,
+-- entered when the ASP was created.
+aName :: Lens' Asp (Maybe Text)
+aName = lens _aName (\ s a -> s{_aName = a})
+
+-- | The time when the ASP was last used. Expressed in Unix time format.
+aLastTimeUsed :: Lens' Asp (Maybe Int64)
+aLastTimeUsed
+  = lens _aLastTimeUsed
+      (\ s a -> s{_aLastTimeUsed = a})
+      . mapping _Coerce
+
+-- | The unique ID of the user who issued the ASP.
+aUserKey :: Lens' Asp (Maybe Text)
+aUserKey = lens _aUserKey (\ s a -> s{_aUserKey = a})
+
+instance FromJSON Asp where
+        parseJSON
+          = withObject "Asp"
+              (\ o ->
+                 Asp' <$>
+                   (o .:? "creationTime") <*> (o .:? "etag") <*>
+                     (o .:? "codeId")
+                     <*> (o .:? "kind" .!= "admin#directory#asp")
+                     <*> (o .:? "name")
+                     <*> (o .:? "lastTimeUsed")
+                     <*> (o .:? "userKey"))
+
+instance ToJSON Asp where
+        toJSON Asp'{..}
+          = object
+              (catMaybes
+                 [("creationTime" .=) <$> _aCreationTime,
+                  ("etag" .=) <$> _aEtag, ("codeId" .=) <$> _aCodeId,
+                  Just ("kind" .= _aKind), ("name" .=) <$> _aName,
+                  ("lastTimeUsed" .=) <$> _aLastTimeUsed,
+                  ("userKey" .=) <$> _aUserKey])
+
+-- | JSON response template for List Schema operation in Directory API.
+--
+-- /See:/ 'schemas' smart constructor.
+data Schemas =
+  Schemas'
+    { _sEtag    :: !(Maybe Text)
+    , _sSchemas :: !(Maybe [Schema])
+    , _sKind    :: !Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Schemas' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sEtag'
+--
+-- * 'sSchemas'
+--
+-- * 'sKind'
+schemas
+    :: Schemas
+schemas =
+  Schemas'
+    {_sEtag = Nothing, _sSchemas = Nothing, _sKind = "admin#directory#schemas"}
+
+
+-- | ETag of the resource.
+sEtag :: Lens' Schemas (Maybe Text)
+sEtag = lens _sEtag (\ s a -> s{_sEtag = a})
+
+-- | List of UserSchema objects.
+sSchemas :: Lens' Schemas [Schema]
+sSchemas
+  = lens _sSchemas (\ s a -> s{_sSchemas = a}) .
+      _Default
+      . _Coerce
+
+-- | Kind of resource this is.
+sKind :: Lens' Schemas Text
+sKind = lens _sKind (\ s a -> s{_sKind = a})
+
+instance FromJSON Schemas where
+        parseJSON
+          = withObject "Schemas"
+              (\ o ->
+                 Schemas' <$>
+                   (o .:? "etag") <*> (o .:? "schemas" .!= mempty) <*>
+                     (o .:? "kind" .!= "admin#directory#schemas"))
+
+instance ToJSON Schemas where
+        toJSON Schemas'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _sEtag,
+                  ("schemas" .=) <$> _sSchemas,
+                  Just ("kind" .= _sKind)])
+
+--
+-- /See:/ 'chromeOSDeviceDeviceFilesItem' smart constructor.
+data ChromeOSDeviceDeviceFilesItem =
+  ChromeOSDeviceDeviceFilesItem'
+    { _coddfiName        :: !(Maybe Text)
+    , _coddfiDownloadURL :: !(Maybe Text)
+    , _coddfiType        :: !(Maybe Text)
+    , _coddfiCreateTime  :: !(Maybe DateTime')
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ChromeOSDeviceDeviceFilesItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'coddfiName'
+--
+-- * 'coddfiDownloadURL'
+--
+-- * 'coddfiType'
+--
+-- * 'coddfiCreateTime'
+chromeOSDeviceDeviceFilesItem
+    :: ChromeOSDeviceDeviceFilesItem
+chromeOSDeviceDeviceFilesItem =
+  ChromeOSDeviceDeviceFilesItem'
+    { _coddfiName = Nothing
+    , _coddfiDownloadURL = Nothing
+    , _coddfiType = Nothing
+    , _coddfiCreateTime = Nothing
+    }
+
+
+-- | File name
+coddfiName :: Lens' ChromeOSDeviceDeviceFilesItem (Maybe Text)
+coddfiName
+  = lens _coddfiName (\ s a -> s{_coddfiName = a})
+
+-- | File download URL
+coddfiDownloadURL :: Lens' ChromeOSDeviceDeviceFilesItem (Maybe Text)
+coddfiDownloadURL
+  = lens _coddfiDownloadURL
+      (\ s a -> s{_coddfiDownloadURL = a})
+
+-- | File type
+coddfiType :: Lens' ChromeOSDeviceDeviceFilesItem (Maybe Text)
+coddfiType
+  = lens _coddfiType (\ s a -> s{_coddfiType = a})
+
+-- | Date and time the file was created
+coddfiCreateTime :: Lens' ChromeOSDeviceDeviceFilesItem (Maybe UTCTime)
+coddfiCreateTime
+  = lens _coddfiCreateTime
+      (\ s a -> s{_coddfiCreateTime = a})
+      . mapping _DateTime
+
+instance FromJSON ChromeOSDeviceDeviceFilesItem where
+        parseJSON
+          = withObject "ChromeOSDeviceDeviceFilesItem"
+              (\ o ->
+                 ChromeOSDeviceDeviceFilesItem' <$>
+                   (o .:? "name") <*> (o .:? "downloadUrl") <*>
+                     (o .:? "type")
+                     <*> (o .:? "createTime"))
+
+instance ToJSON ChromeOSDeviceDeviceFilesItem where
+        toJSON ChromeOSDeviceDeviceFilesItem'{..}
+          = object
+              (catMaybes
+                 [("name" .=) <$> _coddfiName,
+                  ("downloadUrl" .=) <$> _coddfiDownloadURL,
+                  ("type" .=) <$> _coddfiType,
+                  ("createTime" .=) <$> _coddfiCreateTime])
+
+-- | JSON template for Building List Response object in Directory API.
+--
+-- /See:/ 'buildings' smart constructor.
+data Buildings =
+  Buildings'
+    { _bEtag          :: !(Maybe Text)
+    , _bNextPageToken :: !(Maybe Text)
+    , _bBuildings     :: !(Maybe [Building])
+    , _bKind          :: !Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Buildings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bEtag'
+--
+-- * 'bNextPageToken'
+--
+-- * 'bBuildings'
+--
+-- * 'bKind'
+buildings
+    :: Buildings
+buildings =
+  Buildings'
+    { _bEtag = Nothing
+    , _bNextPageToken = Nothing
+    , _bBuildings = Nothing
+    , _bKind = "admin#directory#resources#buildings#buildingsList"
+    }
+
+
+-- | ETag of the resource.
+bEtag :: Lens' Buildings (Maybe Text)
+bEtag = lens _bEtag (\ s a -> s{_bEtag = a})
+
+-- | 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' Buildings (Maybe Text)
+bNextPageToken
+  = lens _bNextPageToken
+      (\ s a -> s{_bNextPageToken = a})
+
+-- | The Buildings in this page of results.
+bBuildings :: Lens' Buildings [Building]
+bBuildings
+  = lens _bBuildings (\ s a -> s{_bBuildings = a}) .
+      _Default
+      . _Coerce
+
+-- | Kind of resource this is.
+bKind :: Lens' Buildings Text
+bKind = lens _bKind (\ s a -> s{_bKind = a})
+
+instance FromJSON Buildings where
+        parseJSON
+          = withObject "Buildings"
+              (\ o ->
+                 Buildings' <$>
+                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
+                     (o .:? "buildings" .!= mempty)
+                     <*>
+                     (o .:? "kind" .!=
+                        "admin#directory#resources#buildings#buildingsList"))
+
+instance ToJSON Buildings where
+        toJSON Buildings'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _bEtag,
+                  ("nextPageToken" .=) <$> _bNextPageToken,
+                  ("buildings" .=) <$> _bBuildings,
+                  Just ("kind" .= _bKind)])
+
+-- | Template for a notification resource.
+--
+-- /See:/ 'notification' smart constructor.
+data Notification =
+  Notification'
+    { _nSubject        :: !(Maybe Text)
+    , _nEtag           :: !(Maybe Text)
+    , _nKind           :: !Text
+    , _nBody           :: !(Maybe Text)
+    , _nFromAddress    :: !(Maybe Text)
+    , _nIsUnread       :: !(Maybe Bool)
+    , _nNotificationId :: !(Maybe Text)
+    , _nSendTime       :: !(Maybe DateTime')
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Notification' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nSubject'
+--
+-- * 'nEtag'
+--
+-- * 'nKind'
+--
+-- * 'nBody'
+--
+-- * 'nFromAddress'
+--
+-- * 'nIsUnread'
+--
+-- * 'nNotificationId'
+--
+-- * 'nSendTime'
+notification
+    :: Notification
+notification =
+  Notification'
+    { _nSubject = Nothing
+    , _nEtag = Nothing
+    , _nKind = "admin#directory#notification"
+    , _nBody = Nothing
+    , _nFromAddress = Nothing
+    , _nIsUnread = Nothing
+    , _nNotificationId = Nothing
+    , _nSendTime = Nothing
+    }
+
+
+-- | Subject of the notification (Read-only)
+nSubject :: Lens' Notification (Maybe Text)
+nSubject = lens _nSubject (\ s a -> s{_nSubject = a})
+
+-- | ETag of the resource.
+nEtag :: Lens' Notification (Maybe Text)
+nEtag = lens _nEtag (\ s a -> s{_nEtag = a})
+
+-- | The type of the resource.
+nKind :: Lens' Notification Text
+nKind = lens _nKind (\ s a -> s{_nKind = a})
+
+-- | Body of the notification (Read-only)
+nBody :: Lens' Notification (Maybe Text)
+nBody = lens _nBody (\ s a -> s{_nBody = a})
+
+-- | Address from which the notification is received (Read-only)
+nFromAddress :: Lens' Notification (Maybe Text)
+nFromAddress
+  = lens _nFromAddress (\ s a -> s{_nFromAddress = a})
+
+-- | Boolean indicating whether the notification is unread or not.
+nIsUnread :: Lens' Notification (Maybe Bool)
+nIsUnread
+  = lens _nIsUnread (\ s a -> s{_nIsUnread = a})
+
+nNotificationId :: Lens' Notification (Maybe Text)
+nNotificationId
+  = lens _nNotificationId
+      (\ s a -> s{_nNotificationId = a})
+
+-- | Time at which notification was sent (Read-only)
+nSendTime :: Lens' Notification (Maybe UTCTime)
+nSendTime
+  = lens _nSendTime (\ s a -> s{_nSendTime = a}) .
+      mapping _DateTime
+
+instance FromJSON Notification where
+        parseJSON
+          = withObject "Notification"
+              (\ o ->
+                 Notification' <$>
+                   (o .:? "subject") <*> (o .:? "etag") <*>
+                     (o .:? "kind" .!= "admin#directory#notification")
+                     <*> (o .:? "body")
+                     <*> (o .:? "fromAddress")
+                     <*> (o .:? "isUnread")
+                     <*> (o .:? "notificationId")
+                     <*> (o .:? "sendTime"))
+
+instance ToJSON Notification where
+        toJSON Notification'{..}
+          = object
+              (catMaybes
+                 [("subject" .=) <$> _nSubject,
+                  ("etag" .=) <$> _nEtag, Just ("kind" .= _nKind),
+                  ("body" .=) <$> _nBody,
+                  ("fromAddress" .=) <$> _nFromAddress,
+                  ("isUnread" .=) <$> _nIsUnread,
+                  ("notificationId" .=) <$> _nNotificationId,
+                  ("sendTime" .=) <$> _nSendTime])
+
+-- | JSON template for instant messenger of an user.
+--
+-- /See:/ 'userIm' smart constructor.
+data UserIm =
+  UserIm'
+    { _uiIm             :: !(Maybe Text)
+    , _uiProtocol       :: !(Maybe Text)
+    , _uiPrimary        :: !(Maybe Bool)
+    , _uiCustomProtocol :: !(Maybe Text)
+    , _uiType           :: !(Maybe Text)
+    , _uiCustomType     :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UserIm' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uiIm'
+--
+-- * 'uiProtocol'
+--
+-- * 'uiPrimary'
+--
+-- * 'uiCustomProtocol'
+--
+-- * 'uiType'
+--
+-- * 'uiCustomType'
+userIm
+    :: UserIm
+userIm =
+  UserIm'
+    { _uiIm = Nothing
+    , _uiProtocol = Nothing
+    , _uiPrimary = Nothing
+    , _uiCustomProtocol = Nothing
+    , _uiType = Nothing
+    , _uiCustomType = Nothing
+    }
+
+
+-- | Instant messenger id.
+uiIm :: Lens' UserIm (Maybe Text)
+uiIm = lens _uiIm (\ s a -> s{_uiIm = a})
+
+-- | Protocol used in the instant messenger. It should be one of the values
+-- from ImProtocolTypes map. Similar to type, it can take a CUSTOM value
+-- and specify the custom name in customProtocol field.
+uiProtocol :: Lens' UserIm (Maybe Text)
+uiProtocol
+  = lens _uiProtocol (\ s a -> s{_uiProtocol = a})
+
+-- | If this is user\'s primary im. Only one entry could be marked as
+-- primary.
+uiPrimary :: Lens' UserIm (Maybe Bool)
+uiPrimary
+  = lens _uiPrimary (\ s a -> s{_uiPrimary = a})
+
+-- | Custom protocol.
+uiCustomProtocol :: Lens' UserIm (Maybe Text)
+uiCustomProtocol
+  = lens _uiCustomProtocol
+      (\ s a -> s{_uiCustomProtocol = a})
+
+-- | Each entry can have a type which indicates standard types of that entry.
+-- For example instant messengers could be of home, work etc. In addition
+-- to the standard type, an entry can have a custom type and can take any
+-- value. Such types should have the CUSTOM value as type and also have a
+-- customType value.
+uiType :: Lens' UserIm (Maybe Text)
+uiType = lens _uiType (\ s a -> s{_uiType = a})
+
+-- | Custom type.
+uiCustomType :: Lens' UserIm (Maybe Text)
+uiCustomType
+  = lens _uiCustomType (\ s a -> s{_uiCustomType = a})
+
+instance FromJSON UserIm where
+        parseJSON
+          = withObject "UserIm"
+              (\ o ->
+                 UserIm' <$>
+                   (o .:? "im") <*> (o .:? "protocol") <*>
+                     (o .:? "primary")
+                     <*> (o .:? "customProtocol")
+                     <*> (o .:? "type")
+                     <*> (o .:? "customType"))
+
+instance ToJSON UserIm where
+        toJSON UserIm'{..}
+          = object
+              (catMaybes
+                 [("im" .=) <$> _uiIm,
+                  ("protocol" .=) <$> _uiProtocol,
+                  ("primary" .=) <$> _uiPrimary,
+                  ("customProtocol" .=) <$> _uiCustomProtocol,
+                  ("type" .=) <$> _uiType,
+                  ("customType" .=) <$> _uiCustomType])
+
+-- | JSON template for the postal address of a building in Directory API.
+--
+-- /See:/ 'buildingAddress' smart constructor.
+data BuildingAddress =
+  BuildingAddress'
+    { _baLanguageCode       :: !(Maybe Text)
+    , _baRegionCode         :: !(Maybe Text)
+    , _baSublocality        :: !(Maybe Text)
+    , _baPostalCode         :: !(Maybe Text)
+    , _baLocality           :: !(Maybe Text)
+    , _baAdministrativeArea :: !(Maybe Text)
+    , _baAddressLines       :: !(Maybe [Text])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'BuildingAddress' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'baLanguageCode'
+--
+-- * 'baRegionCode'
+--
+-- * 'baSublocality'
+--
+-- * 'baPostalCode'
+--
+-- * 'baLocality'
+--
+-- * 'baAdministrativeArea'
+--
+-- * 'baAddressLines'
+buildingAddress
+    :: BuildingAddress
+buildingAddress =
+  BuildingAddress'
+    { _baLanguageCode = Nothing
+    , _baRegionCode = Nothing
+    , _baSublocality = Nothing
+    , _baPostalCode = Nothing
+    , _baLocality = Nothing
+    , _baAdministrativeArea = Nothing
+    , _baAddressLines = Nothing
+    }
+
+
+-- | Optional. BCP-47 language code of the contents of this address (if
+-- known).
+baLanguageCode :: Lens' BuildingAddress (Maybe Text)
+baLanguageCode
+  = lens _baLanguageCode
+      (\ s a -> s{_baLanguageCode = a})
+
+-- | Required. CLDR region code of the country\/region of the address.
+baRegionCode :: Lens' BuildingAddress (Maybe Text)
+baRegionCode
+  = lens _baRegionCode (\ s a -> s{_baRegionCode = a})
+
+-- | Optional. Sublocality of the address.
+baSublocality :: Lens' BuildingAddress (Maybe Text)
+baSublocality
+  = lens _baSublocality
+      (\ s a -> s{_baSublocality = a})
+
+-- | Optional. Postal code of the address.
+baPostalCode :: Lens' BuildingAddress (Maybe Text)
+baPostalCode
+  = lens _baPostalCode (\ s a -> s{_baPostalCode = a})
+
+-- | Optional. Generally refers to the city\/town portion of the address.
+-- Examples: US city, IT comune, UK post town. In regions of the world
+-- where localities are not well defined or do not fit into this structure
+-- well, leave locality empty and use addressLines.
+baLocality :: Lens' BuildingAddress (Maybe Text)
+baLocality
+  = lens _baLocality (\ s a -> s{_baLocality = a})
+
+-- | Optional. Highest administrative subdivision which is used for postal
+-- addresses of a country or region.
+baAdministrativeArea :: Lens' BuildingAddress (Maybe Text)
+baAdministrativeArea
+  = lens _baAdministrativeArea
+      (\ s a -> s{_baAdministrativeArea = a})
+
+-- | Unstructured address lines describing the lower levels of an address.
+baAddressLines :: Lens' BuildingAddress [Text]
+baAddressLines
+  = lens _baAddressLines
+      (\ s a -> s{_baAddressLines = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON BuildingAddress where
+        parseJSON
+          = withObject "BuildingAddress"
+              (\ o ->
+                 BuildingAddress' <$>
+                   (o .:? "languageCode") <*> (o .:? "regionCode") <*>
+                     (o .:? "sublocality")
+                     <*> (o .:? "postalCode")
+                     <*> (o .:? "locality")
+                     <*> (o .:? "administrativeArea")
+                     <*> (o .:? "addressLines" .!= mempty))
+
+instance ToJSON BuildingAddress where
+        toJSON BuildingAddress'{..}
+          = object
+              (catMaybes
+                 [("languageCode" .=) <$> _baLanguageCode,
+                  ("regionCode" .=) <$> _baRegionCode,
+                  ("sublocality" .=) <$> _baSublocality,
+                  ("postalCode" .=) <$> _baPostalCode,
+                  ("locality" .=) <$> _baLocality,
+                  ("administrativeArea" .=) <$> _baAdministrativeArea,
+                  ("addressLines" .=) <$> _baAddressLines])
+
+-- | JSON response template for List tokens operation in Directory API.
+--
+-- /See:/ 'tokens' smart constructor.
+data Tokens =
+  Tokens'
+    { _tEtag  :: !(Maybe Text)
+    , _tKind  :: !Text
+    , _tItems :: !(Maybe [Token])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Tokens' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tEtag'
+--
+-- * 'tKind'
+--
+-- * 'tItems'
+tokens
+    :: Tokens
+tokens =
+  Tokens'
+    {_tEtag = Nothing, _tKind = "admin#directory#tokenList", _tItems = Nothing}
+
+
+-- | ETag of the resource.
+tEtag :: Lens' Tokens (Maybe Text)
+tEtag = lens _tEtag (\ s a -> s{_tEtag = a})
+
+-- | The type of the API resource. This is always admin#directory#tokenList.
+tKind :: Lens' Tokens Text
+tKind = lens _tKind (\ s a -> s{_tKind = a})
+
+-- | A list of Token resources.
+tItems :: Lens' Tokens [Token]
+tItems
+  = lens _tItems (\ s a -> s{_tItems = a}) . _Default .
+      _Coerce
+
+instance FromJSON Tokens where
+        parseJSON
+          = withObject "Tokens"
+              (\ o ->
+                 Tokens' <$>
+                   (o .:? "etag") <*>
+                     (o .:? "kind" .!= "admin#directory#tokenList")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON Tokens where
+        toJSON Tokens'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _tEtag, Just ("kind" .= _tKind),
+                  ("items" .=) <$> _tItems])
+
+-- | Custom fields of the user.
+--
+-- /See:/ 'userCustomSchemas' smart constructor.
+newtype UserCustomSchemas =
+  UserCustomSchemas'
+    { _ucsAddtional :: HashMap Text UserCustomProperties
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UserCustomSchemas' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ucsAddtional'
+userCustomSchemas
+    :: HashMap Text UserCustomProperties -- ^ 'ucsAddtional'
+    -> UserCustomSchemas
+userCustomSchemas pUcsAddtional_ =
+  UserCustomSchemas' {_ucsAddtional = _Coerce # pUcsAddtional_}
+
+
+ucsAddtional :: Lens' UserCustomSchemas (HashMap Text UserCustomProperties)
+ucsAddtional
+  = lens _ucsAddtional (\ s a -> s{_ucsAddtional = a})
+      . _Coerce
+
+instance FromJSON UserCustomSchemas where
+        parseJSON
+          = withObject "UserCustomSchemas"
+              (\ o -> UserCustomSchemas' <$> (parseJSONObject o))
+
+instance ToJSON UserCustomSchemas where
+        toJSON = toJSON . _ucsAddtional
+
+-- | JSON template for a keyword entry.
+--
+-- /See:/ 'userKeyword' smart constructor.
+data UserKeyword =
+  UserKeyword'
+    { _ukValue      :: !(Maybe Text)
+    , _ukType       :: !(Maybe Text)
+    , _ukCustomType :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UserKeyword' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ukValue'
+--
+-- * 'ukType'
+--
+-- * 'ukCustomType'
+userKeyword
+    :: UserKeyword
+userKeyword =
+  UserKeyword' {_ukValue = Nothing, _ukType = Nothing, _ukCustomType = Nothing}
+
+
+-- | Keyword.
+ukValue :: Lens' UserKeyword (Maybe Text)
+ukValue = lens _ukValue (\ s a -> s{_ukValue = a})
+
+-- | Each entry can have a type which indicates standard type of that entry.
+-- For example, keyword could be of type occupation or outlook. In addition
+-- to the standard type, an entry can have a custom type and can give it
+-- any name. Such types should have the CUSTOM value as type and also have
+-- a customType value.
+ukType :: Lens' UserKeyword (Maybe Text)
+ukType = lens _ukType (\ s a -> s{_ukType = a})
+
+-- | Custom Type.
+ukCustomType :: Lens' UserKeyword (Maybe Text)
+ukCustomType
+  = lens _ukCustomType (\ s a -> s{_ukCustomType = a})
+
+instance FromJSON UserKeyword where
+        parseJSON
+          = withObject "UserKeyword"
+              (\ o ->
+                 UserKeyword' <$>
+                   (o .:? "value") <*> (o .:? "type") <*>
+                     (o .:? "customType"))
+
+instance ToJSON UserKeyword where
+        toJSON UserKeyword'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _ukValue, ("type" .=) <$> _ukType,
+                  ("customType" .=) <$> _ukCustomType])
+
+-- | JSON response template to list domain aliases in Directory API.
+--
+-- /See:/ 'domainAliases' smart constructor.
+data DomainAliases =
+  DomainAliases'
+    { _daEtag          :: !(Maybe Text)
+    , _daKind          :: !Text
+    , _daDomainAliases :: !(Maybe [DomainAlias])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DomainAliases' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'daEtag'
+--
+-- * 'daKind'
+--
+-- * 'daDomainAliases'
+domainAliases
+    :: DomainAliases
+domainAliases =
+  DomainAliases'
+    { _daEtag = Nothing
+    , _daKind = "admin#directory#domainAliases"
+    , _daDomainAliases = Nothing
+    }
+
+
+-- | ETag of the resource.
+daEtag :: Lens' DomainAliases (Maybe Text)
+daEtag = lens _daEtag (\ s a -> s{_daEtag = a})
+
+-- | Kind of resource this is.
+daKind :: Lens' DomainAliases Text
+daKind = lens _daKind (\ s a -> s{_daKind = a})
+
+-- | List of domain alias objects.
+daDomainAliases :: Lens' DomainAliases [DomainAlias]
+daDomainAliases
+  = lens _daDomainAliases
+      (\ s a -> s{_daDomainAliases = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON DomainAliases where
+        parseJSON
+          = withObject "DomainAliases"
+              (\ o ->
+                 DomainAliases' <$>
+                   (o .:? "etag") <*>
+                     (o .:? "kind" .!= "admin#directory#domainAliases")
+                     <*> (o .:? "domainAliases" .!= mempty))
+
+instance ToJSON DomainAliases where
+        toJSON DomainAliases'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _daEtag, Just ("kind" .= _daKind),
+                  ("domainAliases" .=) <$> _daDomainAliases])
+
+-- | JSON response template to list aliases in Directory API.
+--
+-- /See:/ 'aliases' smart constructor.
+data Aliases =
+  Aliases'
+    { _aliEtag    :: !(Maybe Text)
+    , _aliKind    :: !Text
+    , _aliAliases :: !(Maybe [JSONValue])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Aliases' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aliEtag'
+--
+-- * 'aliKind'
+--
+-- * 'aliAliases'
+aliases
+    :: Aliases
+aliases =
+  Aliases'
+    { _aliEtag = Nothing
+    , _aliKind = "admin#directory#aliases"
+    , _aliAliases = Nothing
+    }
+
+
+-- | ETag of the resource.
+aliEtag :: Lens' Aliases (Maybe Text)
+aliEtag = lens _aliEtag (\ s a -> s{_aliEtag = a})
+
+-- | Kind of resource this is.
+aliKind :: Lens' Aliases Text
+aliKind = lens _aliKind (\ s a -> s{_aliKind = a})
+
+-- | List of alias objects.
+aliAliases :: Lens' Aliases [JSONValue]
+aliAliases
+  = lens _aliAliases (\ s a -> s{_aliAliases = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON Aliases where
+        parseJSON
+          = withObject "Aliases"
+              (\ o ->
+                 Aliases' <$>
+                   (o .:? "etag") <*>
+                     (o .:? "kind" .!= "admin#directory#aliases")
+                     <*> (o .:? "aliases" .!= mempty))
+
+instance ToJSON Aliases where
+        toJSON Aliases'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _aliEtag, Just ("kind" .= _aliKind),
+                  ("aliases" .=) <$> _aliAliases])
+
+-- | JSON template for Calendar Resource object in Directory API.
+--
+-- /See:/ 'calendarResource' smart constructor.
+data CalendarResource =
+  CalendarResource'
+    { _crEtags                  :: !(Maybe Text)
+    , _crResourceId             :: !(Maybe Text)
+    , _crResourceType           :: !(Maybe Text)
+    , _crResourceName           :: !(Maybe Text)
+    , _crKind                   :: !Text
+    , _crBuildingId             :: !(Maybe Text)
+    , _crFeatureInstances       :: !(Maybe JSONValue)
+    , _crResourceEmail          :: !(Maybe Text)
+    , _crCapacity               :: !(Maybe (Textual Int32))
+    , _crResourceDescription    :: !(Maybe Text)
+    , _crFloorName              :: !(Maybe Text)
+    , _crGeneratedResourceName  :: !(Maybe Text)
+    , _crResourceCategory       :: !(Maybe Text)
+    , _crFloorSection           :: !(Maybe Text)
+    , _crUserVisibleDescription :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CalendarResource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crEtags'
+--
+-- * 'crResourceId'
+--
+-- * 'crResourceType'
+--
+-- * 'crResourceName'
+--
+-- * 'crKind'
+--
+-- * 'crBuildingId'
+--
+-- * 'crFeatureInstances'
+--
+-- * 'crResourceEmail'
+--
+-- * 'crCapacity'
+--
+-- * 'crResourceDescription'
+--
+-- * 'crFloorName'
+--
+-- * 'crGeneratedResourceName'
+--
+-- * 'crResourceCategory'
+--
+-- * 'crFloorSection'
+--
+-- * 'crUserVisibleDescription'
+calendarResource
+    :: CalendarResource
+calendarResource =
+  CalendarResource'
+    { _crEtags = Nothing
+    , _crResourceId = Nothing
+    , _crResourceType = Nothing
+    , _crResourceName = Nothing
+    , _crKind = "admin#directory#resources#calendars#CalendarResource"
+    , _crBuildingId = Nothing
+    , _crFeatureInstances = Nothing
+    , _crResourceEmail = Nothing
+    , _crCapacity = Nothing
+    , _crResourceDescription = Nothing
+    , _crFloorName = Nothing
+    , _crGeneratedResourceName = Nothing
+    , _crResourceCategory = Nothing
+    , _crFloorSection = Nothing
+    , _crUserVisibleDescription = Nothing
+    }
+
+
+-- | ETag of the resource.
+crEtags :: Lens' CalendarResource (Maybe Text)
+crEtags = lens _crEtags (\ s a -> s{_crEtags = a})
+
+-- | The unique ID for the calendar resource.
+crResourceId :: Lens' CalendarResource (Maybe Text)
+crResourceId
+  = lens _crResourceId (\ s a -> s{_crResourceId = a})
+
+-- | The type of the calendar resource, intended for non-room resources.
+crResourceType :: Lens' CalendarResource (Maybe Text)
+crResourceType
+  = lens _crResourceType
+      (\ s a -> s{_crResourceType = a})
+
+-- | The name of the calendar resource. For example, \"Training Room 1A\".
+crResourceName :: Lens' CalendarResource (Maybe Text)
+crResourceName
+  = lens _crResourceName
+      (\ s a -> s{_crResourceName = a})
+
+-- | The type of the resource. For calendar resources, the value is
+-- admin#directory#resources#calendars#CalendarResource.
+crKind :: Lens' CalendarResource Text
+crKind = lens _crKind (\ s a -> s{_crKind = a})
+
+-- | Unique ID for the building a resource is located in.
+crBuildingId :: Lens' CalendarResource (Maybe Text)
+crBuildingId
+  = lens _crBuildingId (\ s a -> s{_crBuildingId = a})
+
+crFeatureInstances :: Lens' CalendarResource (Maybe JSONValue)
+crFeatureInstances
+  = lens _crFeatureInstances
+      (\ s a -> s{_crFeatureInstances = a})
+
+-- | The read-only email for the calendar resource. Generated as part of
+-- creating a new calendar resource.
+crResourceEmail :: Lens' CalendarResource (Maybe Text)
+crResourceEmail
+  = lens _crResourceEmail
+      (\ s a -> s{_crResourceEmail = a})
+
+-- | Capacity of a resource, number of seats in a room.
+crCapacity :: Lens' CalendarResource (Maybe Int32)
+crCapacity
+  = lens _crCapacity (\ s a -> s{_crCapacity = a}) .
+      mapping _Coerce
+
+-- | Description of the resource, visible only to admins.
+crResourceDescription :: Lens' CalendarResource (Maybe Text)
+crResourceDescription
+  = lens _crResourceDescription
+      (\ s a -> s{_crResourceDescription = a})
+
+-- | Name of the floor a resource is located on.
+crFloorName :: Lens' CalendarResource (Maybe Text)
+crFloorName
+  = lens _crFloorName (\ s a -> s{_crFloorName = a})
+
+-- | The read-only auto-generated name of the calendar resource which
+-- includes metadata about the resource such as building name, floor,
+-- capacity, etc. For example, \"NYC-2-Training Room 1A (16)\".
+crGeneratedResourceName :: Lens' CalendarResource (Maybe Text)
+crGeneratedResourceName
+  = lens _crGeneratedResourceName
+      (\ s a -> s{_crGeneratedResourceName = a})
+
+-- | The category of the calendar resource. Either CONFERENCE_ROOM or OTHER.
+-- Legacy data is set to CATEGORY_UNKNOWN.
+crResourceCategory :: Lens' CalendarResource (Maybe Text)
+crResourceCategory
+  = lens _crResourceCategory
+      (\ s a -> s{_crResourceCategory = a})
+
+-- | Name of the section within a floor a resource is located in.
+crFloorSection :: Lens' CalendarResource (Maybe Text)
+crFloorSection
+  = lens _crFloorSection
+      (\ s a -> s{_crFloorSection = a})
+
+-- | Description of the resource, visible to users and admins.
+crUserVisibleDescription :: Lens' CalendarResource (Maybe Text)
+crUserVisibleDescription
+  = lens _crUserVisibleDescription
+      (\ s a -> s{_crUserVisibleDescription = a})
+
+instance FromJSON CalendarResource where
+        parseJSON
+          = withObject "CalendarResource"
+              (\ o ->
+                 CalendarResource' <$>
+                   (o .:? "etags") <*> (o .:? "resourceId") <*>
+                     (o .:? "resourceType")
+                     <*> (o .:? "resourceName")
+                     <*>
+                     (o .:? "kind" .!=
+                        "admin#directory#resources#calendars#CalendarResource")
+                     <*> (o .:? "buildingId")
+                     <*> (o .:? "featureInstances")
+                     <*> (o .:? "resourceEmail")
+                     <*> (o .:? "capacity")
+                     <*> (o .:? "resourceDescription")
+                     <*> (o .:? "floorName")
+                     <*> (o .:? "generatedResourceName")
+                     <*> (o .:? "resourceCategory")
+                     <*> (o .:? "floorSection")
+                     <*> (o .:? "userVisibleDescription"))
+
+instance ToJSON CalendarResource where
+        toJSON CalendarResource'{..}
+          = object
+              (catMaybes
+                 [("etags" .=) <$> _crEtags,
+                  ("resourceId" .=) <$> _crResourceId,
+                  ("resourceType" .=) <$> _crResourceType,
+                  ("resourceName" .=) <$> _crResourceName,
+                  Just ("kind" .= _crKind),
+                  ("buildingId" .=) <$> _crBuildingId,
+                  ("featureInstances" .=) <$> _crFeatureInstances,
+                  ("resourceEmail" .=) <$> _crResourceEmail,
+                  ("capacity" .=) <$> _crCapacity,
+                  ("resourceDescription" .=) <$>
+                    _crResourceDescription,
+                  ("floorName" .=) <$> _crFloorName,
+                  ("generatedResourceName" .=) <$>
+                    _crGeneratedResourceName,
+                  ("resourceCategory" .=) <$> _crResourceCategory,
+                  ("floorSection" .=) <$> _crFloorSection,
+                  ("userVisibleDescription" .=) <$>
+                    _crUserVisibleDescription])
+
+-- | JSON request template to undelete a user in Directory API.
+--
+-- /See:/ 'userUndelete' smart constructor.
+newtype UserUndelete =
+  UserUndelete'
+    { _uuOrgUnitPath :: Maybe Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UserUndelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uuOrgUnitPath'
+userUndelete
+    :: UserUndelete
+userUndelete = UserUndelete' {_uuOrgUnitPath = Nothing}
+
+
+-- | OrgUnit of User
+uuOrgUnitPath :: Lens' UserUndelete (Maybe Text)
+uuOrgUnitPath
+  = lens _uuOrgUnitPath
+      (\ s a -> s{_uuOrgUnitPath = a})
+
+instance FromJSON UserUndelete where
+        parseJSON
+          = withObject "UserUndelete"
+              (\ o -> UserUndelete' <$> (o .:? "orgUnitPath"))
+
+instance ToJSON UserUndelete where
+        toJSON UserUndelete'{..}
+          = object
+              (catMaybes [("orgUnitPath" .=) <$> _uuOrgUnitPath])
+
+-- | JSON response template for List Members operation in Directory API.
+--
+-- /See:/ 'members' smart constructor.
+data Members =
+  Members'
+    { _mEtag          :: !(Maybe Text)
+    , _mNextPageToken :: !(Maybe Text)
+    , _mKind          :: !Text
+    , _mMembers       :: !(Maybe [Member])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Members' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mEtag'
+--
+-- * 'mNextPageToken'
+--
+-- * 'mKind'
+--
+-- * 'mMembers'
+members
+    :: Members
+members =
+  Members'
+    { _mEtag = Nothing
+    , _mNextPageToken = Nothing
+    , _mKind = "admin#directory#members"
+    , _mMembers = Nothing
+    }
+
+
+-- | ETag of the resource.
+mEtag :: Lens' Members (Maybe Text)
+mEtag = lens _mEtag (\ s a -> s{_mEtag = a})
+
+-- | Token used to access next page of this result.
+mNextPageToken :: Lens' Members (Maybe Text)
+mNextPageToken
+  = lens _mNextPageToken
+      (\ s a -> s{_mNextPageToken = a})
+
+-- | Kind of resource this is.
+mKind :: Lens' Members Text
+mKind = lens _mKind (\ s a -> s{_mKind = a})
+
+-- | List of member objects.
+mMembers :: Lens' Members [Member]
+mMembers
+  = lens _mMembers (\ s a -> s{_mMembers = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON Members where
+        parseJSON
+          = withObject "Members"
+              (\ o ->
+                 Members' <$>
+                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "admin#directory#members")
+                     <*> (o .:? "members" .!= mempty))
+
+instance ToJSON Members where
+        toJSON Members'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _mEtag,
+                  ("nextPageToken" .=) <$> _mNextPageToken,
+                  Just ("kind" .= _mKind),
+                  ("members" .=) <$> _mMembers])
+
+-- | An notification channel used to watch for resource changes.
+--
+-- /See:/ 'channel' smart constructor.
+data Channel =
+  Channel'
+    { _cResourceURI :: !(Maybe Text)
+    , _cResourceId  :: !(Maybe Text)
+    , _cKind        :: !Text
+    , _cExpiration  :: !(Maybe (Textual Int64))
+    , _cToken       :: !(Maybe Text)
+    , _cAddress     :: !(Maybe Text)
+    , _cPayload     :: !(Maybe Bool)
+    , _cParams      :: !(Maybe ChannelParams)
+    , _cId          :: !(Maybe Text)
+    , _cType        :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Channel' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cResourceURI'
+--
+-- * 'cResourceId'
+--
+-- * 'cKind'
+--
+-- * 'cExpiration'
+--
+-- * 'cToken'
+--
+-- * 'cAddress'
+--
+-- * 'cPayload'
+--
+-- * 'cParams'
+--
+-- * 'cId'
+--
+-- * 'cType'
+channel
+    :: Channel
+channel =
+  Channel'
+    { _cResourceURI = Nothing
+    , _cResourceId = Nothing
+    , _cKind = "api#channel"
+    , _cExpiration = Nothing
+    , _cToken = Nothing
+    , _cAddress = Nothing
+    , _cPayload = Nothing
+    , _cParams = Nothing
+    , _cId = Nothing
+    , _cType = Nothing
+    }
+
+
+-- | A version-specific identifier for the watched resource.
+cResourceURI :: Lens' Channel (Maybe Text)
+cResourceURI
+  = lens _cResourceURI (\ s a -> s{_cResourceURI = a})
+
+-- | An opaque ID that identifies the resource being watched on this channel.
+-- Stable across different API versions.
+cResourceId :: Lens' Channel (Maybe Text)
+cResourceId
+  = lens _cResourceId (\ s a -> s{_cResourceId = a})
+
+-- | Identifies this as a notification channel used to watch for changes to a
+-- resource. Value: the fixed string \"api#channel\".
+cKind :: Lens' Channel Text
+cKind = lens _cKind (\ s a -> s{_cKind = a})
+
+-- | Date and time of notification channel expiration, expressed as a Unix
+-- timestamp, in milliseconds. Optional.
+cExpiration :: Lens' Channel (Maybe Int64)
+cExpiration
+  = lens _cExpiration (\ s a -> s{_cExpiration = a}) .
+      mapping _Coerce
+
+-- | An arbitrary string delivered to the target address with each
+-- notification delivered over this channel. Optional.
+cToken :: Lens' Channel (Maybe Text)
+cToken = lens _cToken (\ s a -> s{_cToken = a})
+
+-- | The address where notifications are delivered for this channel.
+cAddress :: Lens' Channel (Maybe Text)
+cAddress = lens _cAddress (\ s a -> s{_cAddress = a})
+
+-- | A Boolean value to indicate whether payload is wanted. Optional.
+cPayload :: Lens' Channel (Maybe Bool)
+cPayload = lens _cPayload (\ s a -> s{_cPayload = a})
+
+-- | Additional parameters controlling delivery channel behavior. Optional.
+cParams :: Lens' Channel (Maybe ChannelParams)
+cParams = lens _cParams (\ s a -> s{_cParams = a})
+
+-- | A UUID or similar unique string that identifies this channel.
+cId :: Lens' Channel (Maybe Text)
+cId = lens _cId (\ s a -> s{_cId = a})
+
+-- | The type of delivery mechanism used for this channel.
+cType :: Lens' Channel (Maybe Text)
+cType = lens _cType (\ s a -> s{_cType = a})
+
+instance FromJSON Channel where
+        parseJSON
+          = withObject "Channel"
+              (\ o ->
+                 Channel' <$>
+                   (o .:? "resourceUri") <*> (o .:? "resourceId") <*>
+                     (o .:? "kind" .!= "api#channel")
+                     <*> (o .:? "expiration")
+                     <*> (o .:? "token")
+                     <*> (o .:? "address")
+                     <*> (o .:? "payload")
+                     <*> (o .:? "params")
+                     <*> (o .:? "id")
+                     <*> (o .:? "type"))
+
+instance ToJSON Channel where
+        toJSON Channel'{..}
+          = object
+              (catMaybes
+                 [("resourceUri" .=) <$> _cResourceURI,
+                  ("resourceId" .=) <$> _cResourceId,
+                  Just ("kind" .= _cKind),
+                  ("expiration" .=) <$> _cExpiration,
+                  ("token" .=) <$> _cToken,
+                  ("address" .=) <$> _cAddress,
+                  ("payload" .=) <$> _cPayload,
+                  ("params" .=) <$> _cParams, ("id" .=) <$> _cId,
+                  ("type" .=) <$> _cType])
+
+-- | JSON response template for List Mobile Devices operation in Directory
+-- API.
+--
+-- /See:/ 'mobileDevices' smart constructor.
+data MobileDevices =
+  MobileDevices'
+    { _mdEtag          :: !(Maybe Text)
+    , _mdNextPageToken :: !(Maybe Text)
+    , _mdKind          :: !Text
+    , _mdMobileDevices :: !(Maybe [MobileDevice])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MobileDevices' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mdEtag'
+--
+-- * 'mdNextPageToken'
+--
+-- * 'mdKind'
+--
+-- * 'mdMobileDevices'
+mobileDevices
+    :: MobileDevices
+mobileDevices =
+  MobileDevices'
+    { _mdEtag = Nothing
+    , _mdNextPageToken = Nothing
+    , _mdKind = "admin#directory#mobiledevices"
+    , _mdMobileDevices = Nothing
+    }
+
+
+-- | ETag of the resource.
+mdEtag :: Lens' MobileDevices (Maybe Text)
+mdEtag = lens _mdEtag (\ s a -> s{_mdEtag = a})
+
+-- | Token used to access next page of this result.
+mdNextPageToken :: Lens' MobileDevices (Maybe Text)
+mdNextPageToken
+  = lens _mdNextPageToken
+      (\ s a -> s{_mdNextPageToken = a})
+
+-- | Kind of resource this is.
+mdKind :: Lens' MobileDevices Text
+mdKind = lens _mdKind (\ s a -> s{_mdKind = a})
+
+-- | List of Mobile Device objects.
+mdMobileDevices :: Lens' MobileDevices [MobileDevice]
+mdMobileDevices
+  = lens _mdMobileDevices
+      (\ s a -> s{_mdMobileDevices = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON MobileDevices where
+        parseJSON
+          = withObject "MobileDevices"
+              (\ o ->
+                 MobileDevices' <$>
+                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "admin#directory#mobiledevices")
+                     <*> (o .:? "mobiledevices" .!= mempty))
+
+instance ToJSON MobileDevices where
+        toJSON MobileDevices'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _mdEtag,
+                  ("nextPageToken" .=) <$> _mdNextPageToken,
+                  Just ("kind" .= _mdKind),
+                  ("mobiledevices" .=) <$> _mdMobileDevices])
+
+-- | JSON template for token resource in Directory API.
+--
+-- /See:/ 'token' smart constructor.
+data Token =
+  Token'
+    { _tokClientId    :: !(Maybe Text)
+    , _tokEtag        :: !(Maybe Text)
+    , _tokDisplayText :: !(Maybe Text)
+    , _tokKind        :: !Text
+    , _tokScopes      :: !(Maybe [Text])
+    , _tokNATiveApp   :: !(Maybe Bool)
+    , _tokAnonymous   :: !(Maybe Bool)
+    , _tokUserKey     :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Token' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tokClientId'
+--
+-- * 'tokEtag'
+--
+-- * 'tokDisplayText'
+--
+-- * 'tokKind'
+--
+-- * 'tokScopes'
+--
+-- * 'tokNATiveApp'
+--
+-- * 'tokAnonymous'
+--
+-- * 'tokUserKey'
+token
+    :: Token
+token =
+  Token'
+    { _tokClientId = Nothing
+    , _tokEtag = Nothing
+    , _tokDisplayText = Nothing
+    , _tokKind = "admin#directory#token"
+    , _tokScopes = Nothing
+    , _tokNATiveApp = Nothing
+    , _tokAnonymous = Nothing
+    , _tokUserKey = Nothing
+    }
+
+
+-- | The Client ID of the application the token is issued to.
+tokClientId :: Lens' Token (Maybe Text)
+tokClientId
+  = lens _tokClientId (\ s a -> s{_tokClientId = a})
+
+-- | ETag of the resource.
+tokEtag :: Lens' Token (Maybe Text)
+tokEtag = lens _tokEtag (\ s a -> s{_tokEtag = a})
+
+-- | The displayable name of the application the token is issued to.
+tokDisplayText :: Lens' Token (Maybe Text)
+tokDisplayText
+  = lens _tokDisplayText
+      (\ s a -> s{_tokDisplayText = a})
+
+-- | The type of the API resource. This is always admin#directory#token.
+tokKind :: Lens' Token Text
+tokKind = lens _tokKind (\ s a -> s{_tokKind = a})
+
+-- | A list of authorization scopes the application is granted.
+tokScopes :: Lens' Token [Text]
+tokScopes
+  = lens _tokScopes (\ s a -> s{_tokScopes = a}) .
+      _Default
+      . _Coerce
+
+-- | Whether the token is issued to an installed application. The value is
+-- true if the application is installed to a desktop or mobile device.
+tokNATiveApp :: Lens' Token (Maybe Bool)
+tokNATiveApp
+  = lens _tokNATiveApp (\ s a -> s{_tokNATiveApp = a})
+
+-- | Whether the application is registered with Google. The value is true if
+-- the application has an anonymous Client ID.
+tokAnonymous :: Lens' Token (Maybe Bool)
+tokAnonymous
+  = lens _tokAnonymous (\ s a -> s{_tokAnonymous = a})
+
+-- | The unique ID of the user that issued the token.
+tokUserKey :: Lens' Token (Maybe Text)
+tokUserKey
+  = lens _tokUserKey (\ s a -> s{_tokUserKey = a})
+
+instance FromJSON Token where
+        parseJSON
+          = withObject "Token"
+              (\ o ->
+                 Token' <$>
+                   (o .:? "clientId") <*> (o .:? "etag") <*>
+                     (o .:? "displayText")
+                     <*> (o .:? "kind" .!= "admin#directory#token")
+                     <*> (o .:? "scopes" .!= mempty)
+                     <*> (o .:? "nativeApp")
+                     <*> (o .:? "anonymous")
+                     <*> (o .:? "userKey"))
+
+instance ToJSON Token where
+        toJSON Token'{..}
+          = object
+              (catMaybes
+                 [("clientId" .=) <$> _tokClientId,
+                  ("etag" .=) <$> _tokEtag,
+                  ("displayText" .=) <$> _tokDisplayText,
+                  Just ("kind" .= _tokKind),
+                  ("scopes" .=) <$> _tokScopes,
+                  ("nativeApp" .=) <$> _tokNATiveApp,
+                  ("anonymous" .=) <$> _tokAnonymous,
+                  ("userKey" .=) <$> _tokUserKey])
+
+-- | JSON template for name of a user in Directory API.
+--
+-- /See:/ 'userName' smart constructor.
+data UserName =
+  UserName'
+    { _unGivenName  :: !(Maybe Text)
+    , _unFullName   :: !(Maybe Text)
+    , _unFamilyName :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UserName' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'unGivenName'
+--
+-- * 'unFullName'
+--
+-- * 'unFamilyName'
+userName
+    :: UserName
+userName =
+  UserName'
+    {_unGivenName = Nothing, _unFullName = Nothing, _unFamilyName = Nothing}
+
+
+-- | First Name
+unGivenName :: Lens' UserName (Maybe Text)
+unGivenName
+  = lens _unGivenName (\ s a -> s{_unGivenName = a})
+
+-- | Full Name
+unFullName :: Lens' UserName (Maybe Text)
+unFullName
+  = lens _unFullName (\ s a -> s{_unFullName = a})
+
+-- | Last Name
+unFamilyName :: Lens' UserName (Maybe Text)
+unFamilyName
+  = lens _unFamilyName (\ s a -> s{_unFamilyName = a})
+
+instance FromJSON UserName where
+        parseJSON
+          = withObject "UserName"
+              (\ o ->
+                 UserName' <$>
+                   (o .:? "givenName") <*> (o .:? "fullName") <*>
+                     (o .:? "familyName"))
+
+instance ToJSON UserName where
+        toJSON UserName'{..}
+          = object
+              (catMaybes
+                 [("givenName" .=) <$> _unGivenName,
+                  ("fullName" .=) <$> _unFullName,
+                  ("familyName" .=) <$> _unFamilyName])
+
+-- | JSON template for Building object in Directory API.
+--
+-- /See:/ 'building' smart constructor.
+data Building =
+  Building'
+    { _buiEtags        :: !(Maybe Text)
+    , _buiKind         :: !Text
+    , _buiBuildingId   :: !(Maybe Text)
+    , _buiAddress      :: !(Maybe BuildingAddress)
+    , _buiCoordinates  :: !(Maybe BuildingCoordinates)
+    , _buiBuildingName :: !(Maybe Text)
+    , _buiFloorNames   :: !(Maybe [Text])
+    , _buiDescription  :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Building' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'buiEtags'
+--
+-- * 'buiKind'
+--
+-- * 'buiBuildingId'
+--
+-- * 'buiAddress'
+--
+-- * 'buiCoordinates'
+--
+-- * 'buiBuildingName'
+--
+-- * 'buiFloorNames'
+--
+-- * 'buiDescription'
+building
+    :: Building
+building =
+  Building'
+    { _buiEtags = Nothing
+    , _buiKind = "admin#directory#resources#buildings#Building"
+    , _buiBuildingId = Nothing
+    , _buiAddress = Nothing
+    , _buiCoordinates = Nothing
+    , _buiBuildingName = Nothing
+    , _buiFloorNames = Nothing
+    , _buiDescription = Nothing
+    }
+
+
+-- | ETag of the resource.
+buiEtags :: Lens' Building (Maybe Text)
+buiEtags = lens _buiEtags (\ s a -> s{_buiEtags = a})
+
+-- | Kind of resource this is.
+buiKind :: Lens' Building Text
+buiKind = lens _buiKind (\ s a -> s{_buiKind = a})
+
+-- | Unique identifier for the building. The maximum length is 100
+-- characters.
+buiBuildingId :: Lens' Building (Maybe Text)
+buiBuildingId
+  = lens _buiBuildingId
+      (\ s a -> s{_buiBuildingId = a})
+
+-- | The postal address of the building. See PostalAddress for details. Note
+-- that only a single address line and region code are required.
+buiAddress :: Lens' Building (Maybe BuildingAddress)
+buiAddress
+  = lens _buiAddress (\ s a -> s{_buiAddress = a})
+
+-- | The geographic coordinates of the center of the building, expressed as
+-- latitude and longitude in decimal degrees.
+buiCoordinates :: Lens' Building (Maybe BuildingCoordinates)
+buiCoordinates
+  = lens _buiCoordinates
+      (\ s a -> s{_buiCoordinates = a})
+
+-- | The building name as seen by users in Calendar. Must be unique for the
+-- customer. For example, \"NYC-CHEL\". The maximum length is 100
+-- characters.
+buiBuildingName :: Lens' Building (Maybe Text)
+buiBuildingName
+  = lens _buiBuildingName
+      (\ s a -> s{_buiBuildingName = a})
+
+-- | The display names for all floors in this building. The floors are
+-- expected to be sorted in ascending order, from lowest floor to highest
+-- floor. For example, [\"B2\", \"B1\", \"L\", \"1\", \"2\", \"2M\", \"3\",
+-- \"PH\"] Must contain at least one entry.
+buiFloorNames :: Lens' Building [Text]
+buiFloorNames
+  = lens _buiFloorNames
+      (\ s a -> s{_buiFloorNames = a})
+      . _Default
+      . _Coerce
+
+-- | A brief description of the building. For example, \"Chelsea Market\".
+buiDescription :: Lens' Building (Maybe Text)
+buiDescription
+  = lens _buiDescription
+      (\ s a -> s{_buiDescription = a})
+
+instance FromJSON Building where
+        parseJSON
+          = withObject "Building"
+              (\ o ->
+                 Building' <$>
+                   (o .:? "etags") <*>
+                     (o .:? "kind" .!=
+                        "admin#directory#resources#buildings#Building")
+                     <*> (o .:? "buildingId")
+                     <*> (o .:? "address")
+                     <*> (o .:? "coordinates")
+                     <*> (o .:? "buildingName")
+                     <*> (o .:? "floorNames" .!= mempty)
+                     <*> (o .:? "description"))
+
+instance ToJSON Building where
+        toJSON Building'{..}
+          = object
+              (catMaybes
+                 [("etags" .=) <$> _buiEtags,
+                  Just ("kind" .= _buiKind),
+                  ("buildingId" .=) <$> _buiBuildingId,
+                  ("address" .=) <$> _buiAddress,
+                  ("coordinates" .=) <$> _buiCoordinates,
+                  ("buildingName" .=) <$> _buiBuildingName,
+                  ("floorNames" .=) <$> _buiFloorNames,
+                  ("description" .=) <$> _buiDescription])
+
+--
+-- /See:/ 'chromeOSDeviceRecentUsersItem' smart constructor.
+data ChromeOSDeviceRecentUsersItem =
+  ChromeOSDeviceRecentUsersItem'
+    { _codruiEmail :: !(Maybe Text)
+    , _codruiType  :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ChromeOSDeviceRecentUsersItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'codruiEmail'
+--
+-- * 'codruiType'
+chromeOSDeviceRecentUsersItem
+    :: ChromeOSDeviceRecentUsersItem
+chromeOSDeviceRecentUsersItem =
+  ChromeOSDeviceRecentUsersItem' {_codruiEmail = Nothing, _codruiType = Nothing}
+
+
+-- | Email address of the user. Present only if the user type is managed
+codruiEmail :: Lens' ChromeOSDeviceRecentUsersItem (Maybe Text)
+codruiEmail
+  = lens _codruiEmail (\ s a -> s{_codruiEmail = a})
+
+-- | The type of the user
+codruiType :: Lens' ChromeOSDeviceRecentUsersItem (Maybe Text)
+codruiType
+  = lens _codruiType (\ s a -> s{_codruiType = a})
+
+instance FromJSON ChromeOSDeviceRecentUsersItem where
+        parseJSON
+          = withObject "ChromeOSDeviceRecentUsersItem"
+              (\ o ->
+                 ChromeOSDeviceRecentUsersItem' <$>
+                   (o .:? "email") <*> (o .:? "type"))
+
+instance ToJSON ChromeOSDeviceRecentUsersItem where
+        toJSON ChromeOSDeviceRecentUsersItem'{..}
+          = object
+              (catMaybes
+                 [("email" .=) <$> _codruiEmail,
+                  ("type" .=) <$> _codruiType])
+
+-- | JSON template for Domain Alias object in Directory API.
+--
+-- /See:/ 'domainAlias' smart constructor.
+data DomainAlias =
+  DomainAlias'
+    { _dCreationTime     :: !(Maybe (Textual Int64))
+    , _dEtag             :: !(Maybe Text)
+    , _dKind             :: !Text
+    , _dVerified         :: !(Maybe Bool)
+    , _dDomainAliasName  :: !(Maybe Text)
+    , _dParentDomainName :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DomainAlias' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dCreationTime'
+--
+-- * 'dEtag'
+--
+-- * 'dKind'
+--
+-- * 'dVerified'
+--
+-- * 'dDomainAliasName'
+--
+-- * 'dParentDomainName'
+domainAlias
+    :: DomainAlias
+domainAlias =
+  DomainAlias'
+    { _dCreationTime = Nothing
+    , _dEtag = Nothing
+    , _dKind = "admin#directory#domainAlias"
+    , _dVerified = Nothing
+    , _dDomainAliasName = Nothing
+    , _dParentDomainName = Nothing
+    }
+
+
+-- | The creation time of the domain alias. (Read-only).
+dCreationTime :: Lens' DomainAlias (Maybe Int64)
+dCreationTime
+  = lens _dCreationTime
+      (\ s a -> s{_dCreationTime = a})
+      . mapping _Coerce
+
+-- | ETag of the resource.
+dEtag :: Lens' DomainAlias (Maybe Text)
+dEtag = lens _dEtag (\ s a -> s{_dEtag = a})
+
+-- | Kind of resource this is.
+dKind :: Lens' DomainAlias Text
+dKind = lens _dKind (\ s a -> s{_dKind = a})
+
+-- | Indicates the verification state of a domain alias. (Read-only)
+dVerified :: Lens' DomainAlias (Maybe Bool)
+dVerified
+  = lens _dVerified (\ s a -> s{_dVerified = a})
+
+-- | The domain alias name.
+dDomainAliasName :: Lens' DomainAlias (Maybe Text)
+dDomainAliasName
+  = lens _dDomainAliasName
+      (\ s a -> s{_dDomainAliasName = a})
+
+-- | The parent domain name that the domain alias is associated with. This
+-- can either be a primary or secondary domain name within a customer.
+dParentDomainName :: Lens' DomainAlias (Maybe Text)
+dParentDomainName
+  = lens _dParentDomainName
+      (\ s a -> s{_dParentDomainName = a})
+
+instance FromJSON DomainAlias where
+        parseJSON
+          = withObject "DomainAlias"
+              (\ o ->
+                 DomainAlias' <$>
+                   (o .:? "creationTime") <*> (o .:? "etag") <*>
+                     (o .:? "kind" .!= "admin#directory#domainAlias")
+                     <*> (o .:? "verified")
+                     <*> (o .:? "domainAliasName")
+                     <*> (o .:? "parentDomainName"))
+
+instance ToJSON DomainAlias where
+        toJSON DomainAlias'{..}
+          = object
+              (catMaybes
+                 [("creationTime" .=) <$> _dCreationTime,
+                  ("etag" .=) <$> _dEtag, Just ("kind" .= _dKind),
+                  ("verified" .=) <$> _dVerified,
+                  ("domainAliasName" .=) <$> _dDomainAliasName,
+                  ("parentDomainName" .=) <$> _dParentDomainName])
+
+--
+-- /See:/ 'userGender' smart constructor.
+data UserGender =
+  UserGender'
+    { _ugAddressMeAs  :: !(Maybe Text)
+    , _ugCustomGender :: !(Maybe Text)
+    , _ugType         :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UserGender' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ugAddressMeAs'
+--
+-- * 'ugCustomGender'
+--
+-- * 'ugType'
+userGender
+    :: UserGender
+userGender =
+  UserGender'
+    {_ugAddressMeAs = Nothing, _ugCustomGender = Nothing, _ugType = Nothing}
+
+
+-- | AddressMeAs. A human-readable string containing the proper way to refer
+-- to the profile owner by humans, for example \"he\/him\/his\" or
+-- \"they\/them\/their\".
+ugAddressMeAs :: Lens' UserGender (Maybe Text)
+ugAddressMeAs
+  = lens _ugAddressMeAs
+      (\ s a -> s{_ugAddressMeAs = a})
+
+-- | Custom gender.
+ugCustomGender :: Lens' UserGender (Maybe Text)
+ugCustomGender
+  = lens _ugCustomGender
+      (\ s a -> s{_ugCustomGender = a})
+
+-- | Gender.
+ugType :: Lens' UserGender (Maybe Text)
+ugType = lens _ugType (\ s a -> s{_ugType = a})
+
+instance FromJSON UserGender where
+        parseJSON
+          = withObject "UserGender"
+              (\ o ->
+                 UserGender' <$>
+                   (o .:? "addressMeAs") <*> (o .:? "customGender") <*>
+                     (o .:? "type"))
+
+instance ToJSON UserGender where
+        toJSON UserGender'{..}
+          = object
+              (catMaybes
+                 [("addressMeAs" .=) <$> _ugAddressMeAs,
+                  ("customGender" .=) <$> _ugCustomGender,
+                  ("type" .=) <$> _ugType])
+
+-- | JSON template for Alias object in Directory API.
+--
+-- /See:/ 'alias' smart constructor.
+data Alias =
+  Alias'
+    { _aaEtag         :: !(Maybe Text)
+    , _aaKind         :: !Text
+    , _aaAlias        :: !(Maybe Text)
+    , _aaId           :: !(Maybe Text)
+    , _aaPrimaryEmail :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Alias' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aaEtag'
+--
+-- * 'aaKind'
+--
+-- * 'aaAlias'
+--
+-- * 'aaId'
+--
+-- * 'aaPrimaryEmail'
+alias
+    :: Alias
+alias =
+  Alias'
+    { _aaEtag = Nothing
+    , _aaKind = "admin#directory#alias"
+    , _aaAlias = Nothing
+    , _aaId = Nothing
+    , _aaPrimaryEmail = Nothing
+    }
+
+
+-- | ETag of the resource.
+aaEtag :: Lens' Alias (Maybe Text)
+aaEtag = lens _aaEtag (\ s a -> s{_aaEtag = a})
+
+-- | Kind of resource this is.
+aaKind :: Lens' Alias Text
+aaKind = lens _aaKind (\ s a -> s{_aaKind = a})
+
+-- | A alias email
+aaAlias :: Lens' Alias (Maybe Text)
+aaAlias = lens _aaAlias (\ s a -> s{_aaAlias = a})
+
+-- | Unique id of the group (Read-only) Unique id of the user (Read-only)
+aaId :: Lens' Alias (Maybe Text)
+aaId = lens _aaId (\ s a -> s{_aaId = a})
+
+-- | Group\'s primary email (Read-only) User\'s primary email (Read-only)
+aaPrimaryEmail :: Lens' Alias (Maybe Text)
+aaPrimaryEmail
+  = lens _aaPrimaryEmail
+      (\ s a -> s{_aaPrimaryEmail = a})
+
+instance FromJSON Alias where
+        parseJSON
+          = withObject "Alias"
+              (\ o ->
+                 Alias' <$>
+                   (o .:? "etag") <*>
+                     (o .:? "kind" .!= "admin#directory#alias")
+                     <*> (o .:? "alias")
+                     <*> (o .:? "id")
+                     <*> (o .:? "primaryEmail"))
+
+instance ToJSON Alias where
+        toJSON Alias'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _aaEtag, Just ("kind" .= _aaKind),
+                  ("alias" .=) <$> _aaAlias, ("id" .=) <$> _aaId,
+                  ("primaryEmail" .=) <$> _aaPrimaryEmail])
+
+-- | JSON template for Schema resource in Directory API.
+--
+-- /See:/ 'schema' smart constructor.
+data Schema =
+  Schema'
+    { _schEtag        :: !(Maybe Text)
+    , _schKind        :: !Text
+    , _schSchemaName  :: !(Maybe Text)
+    , _schSchemaId    :: !(Maybe Text)
+    , _schDisplayName :: !(Maybe Text)
+    , _schFields      :: !(Maybe [SchemaFieldSpec])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Schema' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'schEtag'
+--
+-- * 'schKind'
+--
+-- * 'schSchemaName'
+--
+-- * 'schSchemaId'
+--
+-- * 'schDisplayName'
+--
+-- * 'schFields'
+schema
+    :: Schema
+schema =
+  Schema'
+    { _schEtag = Nothing
+    , _schKind = "admin#directory#schema"
+    , _schSchemaName = Nothing
+    , _schSchemaId = Nothing
+    , _schDisplayName = Nothing
+    , _schFields = Nothing
+    }
+
+
+-- | ETag of the resource.
+schEtag :: Lens' Schema (Maybe Text)
+schEtag = lens _schEtag (\ s a -> s{_schEtag = a})
+
+-- | Kind of resource this is.
+schKind :: Lens' Schema Text
+schKind = lens _schKind (\ s a -> s{_schKind = a})
+
+-- | Schema name
+schSchemaName :: Lens' Schema (Maybe Text)
+schSchemaName
+  = lens _schSchemaName
+      (\ s a -> s{_schSchemaName = a})
+
+-- | Unique identifier of Schema (Read-only)
+schSchemaId :: Lens' Schema (Maybe Text)
+schSchemaId
+  = lens _schSchemaId (\ s a -> s{_schSchemaId = a})
+
+-- | Display name for the schema.
+schDisplayName :: Lens' Schema (Maybe Text)
+schDisplayName
+  = lens _schDisplayName
+      (\ s a -> s{_schDisplayName = a})
+
+-- | Fields of Schema
+schFields :: Lens' Schema [SchemaFieldSpec]
+schFields
+  = lens _schFields (\ s a -> s{_schFields = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON Schema where
+        parseJSON
+          = withObject "Schema"
+              (\ o ->
+                 Schema' <$>
+                   (o .:? "etag") <*>
+                     (o .:? "kind" .!= "admin#directory#schema")
+                     <*> (o .:? "schemaName")
+                     <*> (o .:? "schemaId")
+                     <*> (o .:? "displayName")
+                     <*> (o .:? "fields" .!= mempty))
+
+instance ToJSON Schema where
+        toJSON Schema'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _schEtag, Just ("kind" .= _schKind),
+                  ("schemaName" .=) <$> _schSchemaName,
+                  ("schemaId" .=) <$> _schSchemaId,
+                  ("displayName" .=) <$> _schDisplayName,
+                  ("fields" .=) <$> _schFields])
+
+-- | JSON request template for moving ChromeOs Device to given OU in
+-- Directory Devices API.
+--
+-- /See:/ 'chromeOSMoveDevicesToOu' smart constructor.
+newtype ChromeOSMoveDevicesToOu =
+  ChromeOSMoveDevicesToOu'
+    { _comdtoDeviceIds :: Maybe [Text]
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ChromeOSMoveDevicesToOu' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'comdtoDeviceIds'
+chromeOSMoveDevicesToOu
+    :: ChromeOSMoveDevicesToOu
+chromeOSMoveDevicesToOu = ChromeOSMoveDevicesToOu' {_comdtoDeviceIds = Nothing}
+
+
+-- | ChromeOs Devices to be moved to OU
+comdtoDeviceIds :: Lens' ChromeOSMoveDevicesToOu [Text]
+comdtoDeviceIds
+  = lens _comdtoDeviceIds
+      (\ s a -> s{_comdtoDeviceIds = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ChromeOSMoveDevicesToOu where
+        parseJSON
+          = withObject "ChromeOSMoveDevicesToOu"
+              (\ o ->
+                 ChromeOSMoveDevicesToOu' <$>
+                   (o .:? "deviceIds" .!= mempty))
+
+instance ToJSON ChromeOSMoveDevicesToOu where
+        toJSON ChromeOSMoveDevicesToOu'{..}
+          = object
+              (catMaybes [("deviceIds" .=) <$> _comdtoDeviceIds])
+
+-- | JSON template for User object in Directory API.
+--
+-- /See:/ 'user' smart constructor.
+data User =
+  User'
+    { _useCreationTime               :: !(Maybe DateTime')
+    , _useLastLoginTime              :: !(Maybe DateTime')
+    , _useThumbnailPhotoEtag         :: !(Maybe Text)
+    , _useEtag                       :: !(Maybe Text)
+    , _usePosixAccounts              :: !(Maybe JSONValue)
+    , _useIPWhiteListed              :: !(Maybe Bool)
+    , _useRelations                  :: !(Maybe JSONValue)
+    , _useSSHPublicKeys              :: !(Maybe JSONValue)
+    , _useHashFunction               :: !(Maybe Text)
+    , _useKind                       :: !Text
+    , _useChangePasswordAtNextLogin  :: !(Maybe Bool)
+    , _useWebsites                   :: !(Maybe JSONValue)
+    , _useAddresses                  :: !(Maybe JSONValue)
+    , _useAliases                    :: !(Maybe [Text])
+    , _useThumbnailPhotoURL          :: !(Maybe Text)
+    , _useExternalIds                :: !(Maybe JSONValue)
+    , _useSuspended                  :: !(Maybe Bool)
+    , _useAgreedToTerms              :: !(Maybe Bool)
+    , _useDeletionTime               :: !(Maybe DateTime')
+    , _useNonEditableAliases         :: !(Maybe [Text])
+    , _useOrgUnitPath                :: !(Maybe Text)
+    , _useCustomerId                 :: !(Maybe Text)
+    , _useLanguages                  :: !(Maybe JSONValue)
+    , _useIncludeInGlobalAddressList :: !(Maybe Bool)
+    , _useGender                     :: !(Maybe JSONValue)
+    , _usePhones                     :: !(Maybe JSONValue)
+    , _useName                       :: !(Maybe UserName)
+    , _usePassword                   :: !(Maybe Text)
+    , _useEmails                     :: !(Maybe JSONValue)
+    , _useIms                        :: !(Maybe JSONValue)
+    , _useKeywords                   :: !(Maybe JSONValue)
+    , _useIsAdmin                    :: !(Maybe Bool)
+    , _useIsEnrolledIn2Sv            :: !(Maybe Bool)
+    , _useId                         :: !(Maybe Text)
+    , _useOrganizations              :: !(Maybe JSONValue)
+    , _usePrimaryEmail               :: !(Maybe Text)
+    , _useIsEnforcedIn2Sv            :: !(Maybe Bool)
+    , _useNotes                      :: !(Maybe JSONValue)
+    , _useIsDelegatedAdmin           :: !(Maybe Bool)
+    , _useLocations                  :: !(Maybe JSONValue)
+    , _useArchived                   :: !(Maybe Bool)
+    , _useIsMailboxSetup             :: !(Maybe Bool)
+    , _useCustomSchemas              :: !(Maybe UserCustomSchemas)
+    , _useSuspensionReason           :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'User' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'useCreationTime'
+--
+-- * 'useLastLoginTime'
+--
+-- * 'useThumbnailPhotoEtag'
+--
+-- * 'useEtag'
+--
+-- * 'usePosixAccounts'
+--
+-- * 'useIPWhiteListed'
+--
+-- * 'useRelations'
+--
+-- * 'useSSHPublicKeys'
+--
+-- * 'useHashFunction'
+--
+-- * 'useKind'
+--
+-- * 'useChangePasswordAtNextLogin'
+--
+-- * 'useWebsites'
+--
+-- * 'useAddresses'
+--
+-- * 'useAliases'
+--
+-- * 'useThumbnailPhotoURL'
+--
+-- * 'useExternalIds'
+--
+-- * 'useSuspended'
+--
+-- * 'useAgreedToTerms'
+--
+-- * 'useDeletionTime'
+--
+-- * 'useNonEditableAliases'
+--
+-- * 'useOrgUnitPath'
+--
+-- * 'useCustomerId'
+--
+-- * 'useLanguages'
+--
+-- * 'useIncludeInGlobalAddressList'
+--
+-- * 'useGender'
+--
+-- * 'usePhones'
+--
+-- * 'useName'
+--
+-- * 'usePassword'
+--
+-- * 'useEmails'
+--
+-- * 'useIms'
+--
+-- * 'useKeywords'
+--
+-- * 'useIsAdmin'
+--
+-- * 'useIsEnrolledIn2Sv'
+--
+-- * 'useId'
+--
+-- * 'useOrganizations'
+--
+-- * 'usePrimaryEmail'
+--
+-- * 'useIsEnforcedIn2Sv'
+--
+-- * 'useNotes'
+--
+-- * 'useIsDelegatedAdmin'
+--
+-- * 'useLocations'
+--
+-- * 'useArchived'
+--
+-- * 'useIsMailboxSetup'
+--
+-- * 'useCustomSchemas'
+--
+-- * 'useSuspensionReason'
+user
+    :: User
+user =
+  User'
+    { _useCreationTime = Nothing
+    , _useLastLoginTime = Nothing
+    , _useThumbnailPhotoEtag = Nothing
+    , _useEtag = Nothing
+    , _usePosixAccounts = Nothing
+    , _useIPWhiteListed = Nothing
+    , _useRelations = Nothing
+    , _useSSHPublicKeys = Nothing
+    , _useHashFunction = Nothing
+    , _useKind = "admin#directory#user"
+    , _useChangePasswordAtNextLogin = Nothing
+    , _useWebsites = Nothing
+    , _useAddresses = Nothing
+    , _useAliases = Nothing
+    , _useThumbnailPhotoURL = Nothing
+    , _useExternalIds = Nothing
+    , _useSuspended = Nothing
+    , _useAgreedToTerms = Nothing
+    , _useDeletionTime = Nothing
+    , _useNonEditableAliases = Nothing
+    , _useOrgUnitPath = Nothing
+    , _useCustomerId = Nothing
+    , _useLanguages = Nothing
+    , _useIncludeInGlobalAddressList = Nothing
+    , _useGender = Nothing
+    , _usePhones = Nothing
+    , _useName = Nothing
+    , _usePassword = Nothing
+    , _useEmails = Nothing
+    , _useIms = Nothing
+    , _useKeywords = Nothing
+    , _useIsAdmin = Nothing
+    , _useIsEnrolledIn2Sv = Nothing
+    , _useId = Nothing
+    , _useOrganizations = Nothing
+    , _usePrimaryEmail = Nothing
+    , _useIsEnforcedIn2Sv = Nothing
+    , _useNotes = Nothing
+    , _useIsDelegatedAdmin = Nothing
+    , _useLocations = Nothing
+    , _useArchived = Nothing
+    , _useIsMailboxSetup = Nothing
+    , _useCustomSchemas = Nothing
+    , _useSuspensionReason = Nothing
+    }
+
+
+-- | User\'s G Suite account creation time. (Read-only)
+useCreationTime :: Lens' User (Maybe UTCTime)
+useCreationTime
+  = lens _useCreationTime
+      (\ s a -> s{_useCreationTime = a})
+      . mapping _DateTime
+
+-- | User\'s last login time. (Read-only)
+useLastLoginTime :: Lens' User (Maybe UTCTime)
+useLastLoginTime
+  = lens _useLastLoginTime
+      (\ s a -> s{_useLastLoginTime = a})
+      . mapping _DateTime
+
+-- | ETag of the user\'s photo (Read-only)
+useThumbnailPhotoEtag :: Lens' User (Maybe Text)
+useThumbnailPhotoEtag
+  = lens _useThumbnailPhotoEtag
+      (\ s a -> s{_useThumbnailPhotoEtag = a})
+
+-- | ETag of the resource.
+useEtag :: Lens' User (Maybe Text)
+useEtag = lens _useEtag (\ s a -> s{_useEtag = a})
+
+usePosixAccounts :: Lens' User (Maybe JSONValue)
+usePosixAccounts
+  = lens _usePosixAccounts
+      (\ s a -> s{_usePosixAccounts = a})
+
+-- | Boolean indicating if ip is whitelisted
+useIPWhiteListed :: Lens' User (Maybe Bool)
+useIPWhiteListed
+  = lens _useIPWhiteListed
+      (\ s a -> s{_useIPWhiteListed = a})
+
+useRelations :: Lens' User (Maybe JSONValue)
+useRelations
+  = lens _useRelations (\ s a -> s{_useRelations = a})
+
+useSSHPublicKeys :: Lens' User (Maybe JSONValue)
+useSSHPublicKeys
+  = lens _useSSHPublicKeys
+      (\ s a -> s{_useSSHPublicKeys = a})
+
+-- | Hash function name for password. Supported are MD5, SHA-1 and crypt
+useHashFunction :: Lens' User (Maybe Text)
+useHashFunction
+  = lens _useHashFunction
+      (\ s a -> s{_useHashFunction = a})
+
+-- | Kind of resource this is.
+useKind :: Lens' User Text
+useKind = lens _useKind (\ s a -> s{_useKind = a})
+
+-- | Boolean indicating if the user should change password in next login
+useChangePasswordAtNextLogin :: Lens' User (Maybe Bool)
+useChangePasswordAtNextLogin
+  = lens _useChangePasswordAtNextLogin
+      (\ s a -> s{_useChangePasswordAtNextLogin = a})
+
+useWebsites :: Lens' User (Maybe JSONValue)
+useWebsites
+  = lens _useWebsites (\ s a -> s{_useWebsites = a})
+
+useAddresses :: Lens' User (Maybe JSONValue)
+useAddresses
+  = lens _useAddresses (\ s a -> s{_useAddresses = a})
+
+-- | List of aliases (Read-only)
+useAliases :: Lens' User [Text]
+useAliases
+  = lens _useAliases (\ s a -> s{_useAliases = a}) .
+      _Default
+      . _Coerce
+
+-- | Photo Url of the user (Read-only)
+useThumbnailPhotoURL :: Lens' User (Maybe Text)
+useThumbnailPhotoURL
+  = lens _useThumbnailPhotoURL
+      (\ s a -> s{_useThumbnailPhotoURL = a})
+
+useExternalIds :: Lens' User (Maybe JSONValue)
+useExternalIds
+  = lens _useExternalIds
+      (\ s a -> s{_useExternalIds = a})
+
+-- | Indicates if user is suspended.
+useSuspended :: Lens' User (Maybe Bool)
+useSuspended
+  = lens _useSuspended (\ s a -> s{_useSuspended = a})
+
+-- | Indicates if user has agreed to terms (Read-only)
+useAgreedToTerms :: Lens' User (Maybe Bool)
+useAgreedToTerms
+  = lens _useAgreedToTerms
+      (\ s a -> s{_useAgreedToTerms = a})
+
+useDeletionTime :: Lens' User (Maybe UTCTime)
+useDeletionTime
+  = lens _useDeletionTime
+      (\ s a -> s{_useDeletionTime = a})
+      . mapping _DateTime
+
+-- | List of non editable aliases (Read-only)
+useNonEditableAliases :: Lens' User [Text]
+useNonEditableAliases
+  = lens _useNonEditableAliases
+      (\ s a -> s{_useNonEditableAliases = a})
+      . _Default
+      . _Coerce
+
+-- | OrgUnit of User
+useOrgUnitPath :: Lens' User (Maybe Text)
+useOrgUnitPath
+  = lens _useOrgUnitPath
+      (\ s a -> s{_useOrgUnitPath = a})
+
+-- | CustomerId of User (Read-only)
+useCustomerId :: Lens' User (Maybe Text)
+useCustomerId
+  = lens _useCustomerId
+      (\ s a -> s{_useCustomerId = a})
+
+useLanguages :: Lens' User (Maybe JSONValue)
+useLanguages
+  = lens _useLanguages (\ s a -> s{_useLanguages = a})
+
+-- | Boolean indicating if user is included in Global Address List
+useIncludeInGlobalAddressList :: Lens' User (Maybe Bool)
+useIncludeInGlobalAddressList
+  = lens _useIncludeInGlobalAddressList
+      (\ s a -> s{_useIncludeInGlobalAddressList = a})
+
+useGender :: Lens' User (Maybe JSONValue)
+useGender
+  = lens _useGender (\ s a -> s{_useGender = a})
+
+usePhones :: Lens' User (Maybe JSONValue)
+usePhones
+  = lens _usePhones (\ s a -> s{_usePhones = a})
+
+-- | User\'s name
+useName :: Lens' User (Maybe UserName)
+useName = lens _useName (\ s a -> s{_useName = a})
+
+-- | User\'s password
+usePassword :: Lens' User (Maybe Text)
+usePassword
+  = lens _usePassword (\ s a -> s{_usePassword = a})
+
+useEmails :: Lens' User (Maybe JSONValue)
+useEmails
+  = lens _useEmails (\ s a -> s{_useEmails = a})
+
+useIms :: Lens' User (Maybe JSONValue)
+useIms = lens _useIms (\ s a -> s{_useIms = a})
+
+useKeywords :: Lens' User (Maybe JSONValue)
+useKeywords
+  = lens _useKeywords (\ s a -> s{_useKeywords = a})
+
+-- | Boolean indicating if the user is admin (Read-only)
+useIsAdmin :: Lens' User (Maybe Bool)
+useIsAdmin
+  = lens _useIsAdmin (\ s a -> s{_useIsAdmin = a})
+
+-- | Is enrolled in 2-step verification (Read-only)
+useIsEnrolledIn2Sv :: Lens' User (Maybe Bool)
+useIsEnrolledIn2Sv
+  = lens _useIsEnrolledIn2Sv
+      (\ s a -> s{_useIsEnrolledIn2Sv = a})
+
+-- | Unique identifier of User (Read-only)
+useId :: Lens' User (Maybe Text)
+useId = lens _useId (\ s a -> s{_useId = a})
+
+useOrganizations :: Lens' User (Maybe JSONValue)
+useOrganizations
+  = lens _useOrganizations
+      (\ s a -> s{_useOrganizations = a})
+
+-- | username of User
+usePrimaryEmail :: Lens' User (Maybe Text)
+usePrimaryEmail
+  = lens _usePrimaryEmail
+      (\ s a -> s{_usePrimaryEmail = a})
+
+-- | Is 2-step verification enforced (Read-only)
+useIsEnforcedIn2Sv :: Lens' User (Maybe Bool)
+useIsEnforcedIn2Sv
+  = lens _useIsEnforcedIn2Sv
+      (\ s a -> s{_useIsEnforcedIn2Sv = a})
+
+useNotes :: Lens' User (Maybe JSONValue)
+useNotes = lens _useNotes (\ s a -> s{_useNotes = a})
+
+-- | Boolean indicating if the user is delegated admin (Read-only)
+useIsDelegatedAdmin :: Lens' User (Maybe Bool)
+useIsDelegatedAdmin
+  = lens _useIsDelegatedAdmin
+      (\ s a -> s{_useIsDelegatedAdmin = a})
+
+useLocations :: Lens' User (Maybe JSONValue)
+useLocations
+  = lens _useLocations (\ s a -> s{_useLocations = a})
+
+-- | Indicates if user is archived.
+useArchived :: Lens' User (Maybe Bool)
+useArchived
+  = lens _useArchived (\ s a -> s{_useArchived = a})
+
+-- | Is mailbox setup (Read-only)
+useIsMailboxSetup :: Lens' User (Maybe Bool)
+useIsMailboxSetup
+  = lens _useIsMailboxSetup
+      (\ s a -> s{_useIsMailboxSetup = a})
+
+-- | Custom fields of the user.
+useCustomSchemas :: Lens' User (Maybe UserCustomSchemas)
+useCustomSchemas
+  = lens _useCustomSchemas
+      (\ s a -> s{_useCustomSchemas = a})
+
+-- | Suspension reason if user is suspended (Read-only)
+useSuspensionReason :: Lens' User (Maybe Text)
+useSuspensionReason
+  = lens _useSuspensionReason
+      (\ s a -> s{_useSuspensionReason = a})
+
+instance FromJSON User where
+        parseJSON
+          = withObject "User"
+              (\ o ->
+                 User' <$>
+                   (o .:? "creationTime") <*> (o .:? "lastLoginTime")
+                     <*> (o .:? "thumbnailPhotoEtag")
+                     <*> (o .:? "etag")
+                     <*> (o .:? "posixAccounts")
+                     <*> (o .:? "ipWhitelisted")
+                     <*> (o .:? "relations")
+                     <*> (o .:? "sshPublicKeys")
+                     <*> (o .:? "hashFunction")
+                     <*> (o .:? "kind" .!= "admin#directory#user")
+                     <*> (o .:? "changePasswordAtNextLogin")
+                     <*> (o .:? "websites")
+                     <*> (o .:? "addresses")
+                     <*> (o .:? "aliases" .!= mempty)
+                     <*> (o .:? "thumbnailPhotoUrl")
+                     <*> (o .:? "externalIds")
+                     <*> (o .:? "suspended")
+                     <*> (o .:? "agreedToTerms")
+                     <*> (o .:? "deletionTime")
+                     <*> (o .:? "nonEditableAliases" .!= mempty)
+                     <*> (o .:? "orgUnitPath")
+                     <*> (o .:? "customerId")
+                     <*> (o .:? "languages")
+                     <*> (o .:? "includeInGlobalAddressList")
+                     <*> (o .:? "gender")
+                     <*> (o .:? "phones")
+                     <*> (o .:? "name")
+                     <*> (o .:? "password")
+                     <*> (o .:? "emails")
+                     <*> (o .:? "ims")
+                     <*> (o .:? "keywords")
+                     <*> (o .:? "isAdmin")
+                     <*> (o .:? "isEnrolledIn2Sv")
+                     <*> (o .:? "id")
+                     <*> (o .:? "organizations")
+                     <*> (o .:? "primaryEmail")
+                     <*> (o .:? "isEnforcedIn2Sv")
+                     <*> (o .:? "notes")
+                     <*> (o .:? "isDelegatedAdmin")
+                     <*> (o .:? "locations")
+                     <*> (o .:? "archived")
+                     <*> (o .:? "isMailboxSetup")
+                     <*> (o .:? "customSchemas")
+                     <*> (o .:? "suspensionReason"))
+
+instance ToJSON User where
+        toJSON User'{..}
+          = object
+              (catMaybes
+                 [("creationTime" .=) <$> _useCreationTime,
+                  ("lastLoginTime" .=) <$> _useLastLoginTime,
+                  ("thumbnailPhotoEtag" .=) <$> _useThumbnailPhotoEtag,
+                  ("etag" .=) <$> _useEtag,
+                  ("posixAccounts" .=) <$> _usePosixAccounts,
+                  ("ipWhitelisted" .=) <$> _useIPWhiteListed,
+                  ("relations" .=) <$> _useRelations,
+                  ("sshPublicKeys" .=) <$> _useSSHPublicKeys,
+                  ("hashFunction" .=) <$> _useHashFunction,
+                  Just ("kind" .= _useKind),
+                  ("changePasswordAtNextLogin" .=) <$>
+                    _useChangePasswordAtNextLogin,
+                  ("websites" .=) <$> _useWebsites,
+                  ("addresses" .=) <$> _useAddresses,
+                  ("aliases" .=) <$> _useAliases,
+                  ("thumbnailPhotoUrl" .=) <$> _useThumbnailPhotoURL,
+                  ("externalIds" .=) <$> _useExternalIds,
+                  ("suspended" .=) <$> _useSuspended,
+                  ("agreedToTerms" .=) <$> _useAgreedToTerms,
+                  ("deletionTime" .=) <$> _useDeletionTime,
+                  ("nonEditableAliases" .=) <$> _useNonEditableAliases,
+                  ("orgUnitPath" .=) <$> _useOrgUnitPath,
+                  ("customerId" .=) <$> _useCustomerId,
+                  ("languages" .=) <$> _useLanguages,
+                  ("includeInGlobalAddressList" .=) <$>
+                    _useIncludeInGlobalAddressList,
+                  ("gender" .=) <$> _useGender,
+                  ("phones" .=) <$> _usePhones,
+                  ("name" .=) <$> _useName,
+                  ("password" .=) <$> _usePassword,
+                  ("emails" .=) <$> _useEmails, ("ims" .=) <$> _useIms,
+                  ("keywords" .=) <$> _useKeywords,
+                  ("isAdmin" .=) <$> _useIsAdmin,
+                  ("isEnrolledIn2Sv" .=) <$> _useIsEnrolledIn2Sv,
+                  ("id" .=) <$> _useId,
+                  ("organizations" .=) <$> _useOrganizations,
+                  ("primaryEmail" .=) <$> _usePrimaryEmail,
+                  ("isEnforcedIn2Sv" .=) <$> _useIsEnforcedIn2Sv,
+                  ("notes" .=) <$> _useNotes,
+                  ("isDelegatedAdmin" .=) <$> _useIsDelegatedAdmin,
+                  ("locations" .=) <$> _useLocations,
+                  ("archived" .=) <$> _useArchived,
+                  ("isMailboxSetup" .=) <$> _useIsMailboxSetup,
+                  ("customSchemas" .=) <$> _useCustomSchemas,
+                  ("suspensionReason" .=) <$> _useSuspensionReason])
+
+-- | JSON request template for firing actions on ChromeOs Device in Directory
+-- Devices API.
+--
+-- /See:/ 'chromeOSDeviceAction' smart constructor.
+data ChromeOSDeviceAction =
+  ChromeOSDeviceAction'
+    { _codaAction            :: !(Maybe Text)
+    , _codaDeprovisionReason :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ChromeOSDeviceAction' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'codaAction'
+--
+-- * 'codaDeprovisionReason'
+chromeOSDeviceAction
+    :: ChromeOSDeviceAction
+chromeOSDeviceAction =
+  ChromeOSDeviceAction'
+    {_codaAction = Nothing, _codaDeprovisionReason = Nothing}
+
+
+-- | Action to be taken on the ChromeOs Device
+codaAction :: Lens' ChromeOSDeviceAction (Maybe Text)
+codaAction
+  = lens _codaAction (\ s a -> s{_codaAction = a})
+
+codaDeprovisionReason :: Lens' ChromeOSDeviceAction (Maybe Text)
+codaDeprovisionReason
+  = lens _codaDeprovisionReason
+      (\ s a -> s{_codaDeprovisionReason = a})
+
+instance FromJSON ChromeOSDeviceAction where
+        parseJSON
+          = withObject "ChromeOSDeviceAction"
+              (\ o ->
+                 ChromeOSDeviceAction' <$>
+                   (o .:? "action") <*> (o .:? "deprovisionReason"))
+
+instance ToJSON ChromeOSDeviceAction where
+        toJSON ChromeOSDeviceAction'{..}
+          = object
+              (catMaybes
+                 [("action" .=) <$> _codaAction,
+                  ("deprovisionReason" .=) <$> _codaDeprovisionReason])
+
+-- | JSON request template for renaming a feature.
+--
+-- /See:/ 'featureRename' smart constructor.
+newtype FeatureRename =
+  FeatureRename'
+    { _frNewName :: Maybe Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FeatureRename' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'frNewName'
+featureRename
+    :: FeatureRename
+featureRename = FeatureRename' {_frNewName = Nothing}
+
+
+-- | New name of the feature.
+frNewName :: Lens' FeatureRename (Maybe Text)
+frNewName
+  = lens _frNewName (\ s a -> s{_frNewName = a})
+
+instance FromJSON FeatureRename where
+        parseJSON
+          = withObject "FeatureRename"
+              (\ o -> FeatureRename' <$> (o .:? "newName"))
+
+instance ToJSON FeatureRename where
+        toJSON FeatureRename'{..}
+          = object (catMaybes [("newName" .=) <$> _frNewName])
+
+-- | JSON template for role resource in Directory API.
+--
+-- /See:/ 'role'' smart constructor.
+data Role =
+  Role'
+    { _rrEtag             :: !(Maybe Text)
+    , _rrKind             :: !Text
+    , _rrRoleName         :: !(Maybe Text)
+    , _rrIsSystemRole     :: !(Maybe Bool)
+    , _rrRoleId           :: !(Maybe (Textual Int64))
+    , _rrRoleDescription  :: !(Maybe Text)
+    , _rrIsSuperAdminRole :: !(Maybe Bool)
+    , _rrRolePrivileges   :: !(Maybe [RoleRolePrivilegesItem])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Role' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rrEtag'
+--
+-- * 'rrKind'
+--
+-- * 'rrRoleName'
+--
+-- * 'rrIsSystemRole'
+--
+-- * 'rrRoleId'
+--
+-- * 'rrRoleDescription'
+--
+-- * 'rrIsSuperAdminRole'
+--
+-- * 'rrRolePrivileges'
+role'
+    :: Role
+role' =
+  Role'
+    { _rrEtag = Nothing
+    , _rrKind = "admin#directory#role"
+    , _rrRoleName = Nothing
+    , _rrIsSystemRole = Nothing
+    , _rrRoleId = Nothing
+    , _rrRoleDescription = Nothing
+    , _rrIsSuperAdminRole = Nothing
+    , _rrRolePrivileges = Nothing
+    }
+
+
+-- | ETag of the resource.
+rrEtag :: Lens' Role (Maybe Text)
+rrEtag = lens _rrEtag (\ s a -> s{_rrEtag = a})
+
+-- | The type of the API resource. This is always admin#directory#role.
+rrKind :: Lens' Role Text
+rrKind = lens _rrKind (\ s a -> s{_rrKind = a})
+
+-- | Name of the role.
+rrRoleName :: Lens' Role (Maybe Text)
+rrRoleName
+  = lens _rrRoleName (\ s a -> s{_rrRoleName = a})
+
+-- | Returns true if this is a pre-defined system role.
+rrIsSystemRole :: Lens' Role (Maybe Bool)
+rrIsSystemRole
+  = lens _rrIsSystemRole
+      (\ s a -> s{_rrIsSystemRole = a})
+
+-- | ID of the role.
+rrRoleId :: Lens' Role (Maybe Int64)
+rrRoleId
+  = lens _rrRoleId (\ s a -> s{_rrRoleId = a}) .
+      mapping _Coerce
+
+-- | A short description of the role.
+rrRoleDescription :: Lens' Role (Maybe Text)
+rrRoleDescription
+  = lens _rrRoleDescription
+      (\ s a -> s{_rrRoleDescription = a})
+
+-- | Returns true if the role is a super admin role.
+rrIsSuperAdminRole :: Lens' Role (Maybe Bool)
+rrIsSuperAdminRole
+  = lens _rrIsSuperAdminRole
+      (\ s a -> s{_rrIsSuperAdminRole = a})
+
+-- | The set of privileges that are granted to this role.
+rrRolePrivileges :: Lens' Role [RoleRolePrivilegesItem]
+rrRolePrivileges
+  = lens _rrRolePrivileges
+      (\ s a -> s{_rrRolePrivileges = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON Role where
+        parseJSON
+          = withObject "Role"
+              (\ o ->
+                 Role' <$>
+                   (o .:? "etag") <*>
+                     (o .:? "kind" .!= "admin#directory#role")
+                     <*> (o .:? "roleName")
+                     <*> (o .:? "isSystemRole")
+                     <*> (o .:? "roleId")
+                     <*> (o .:? "roleDescription")
+                     <*> (o .:? "isSuperAdminRole")
+                     <*> (o .:? "rolePrivileges" .!= mempty))
+
+instance ToJSON Role where
+        toJSON Role'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _rrEtag, Just ("kind" .= _rrKind),
+                  ("roleName" .=) <$> _rrRoleName,
+                  ("isSystemRole" .=) <$> _rrIsSystemRole,
+                  ("roleId" .=) <$> _rrRoleId,
+                  ("roleDescription" .=) <$> _rrRoleDescription,
+                  ("isSuperAdminRole" .=) <$> _rrIsSuperAdminRole,
+                  ("rolePrivileges" .=) <$> _rrRolePrivileges])
+
+-- | JSON template for Customer Resource object in Directory API.
+--
+-- /See:/ 'customer' smart constructor.
+data Customer =
+  Customer'
+    { _cusEtag                 :: !(Maybe Text)
+    , _cusKind                 :: !Text
+    , _cusAlternateEmail       :: !(Maybe Text)
+    , _cusCustomerDomain       :: !(Maybe Text)
+    , _cusPhoneNumber          :: !(Maybe Text)
+    , _cusLanguage             :: !(Maybe Text)
+    , _cusId                   :: !(Maybe Text)
+    , _cusCustomerCreationTime :: !(Maybe DateTime')
+    , _cusPostalAddress        :: !(Maybe CustomerPostalAddress)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Customer' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cusEtag'
+--
+-- * 'cusKind'
+--
+-- * 'cusAlternateEmail'
+--
+-- * 'cusCustomerDomain'
+--
+-- * 'cusPhoneNumber'
+--
+-- * 'cusLanguage'
+--
+-- * 'cusId'
+--
+-- * 'cusCustomerCreationTime'
+--
+-- * 'cusPostalAddress'
+customer
+    :: Customer
+customer =
+  Customer'
+    { _cusEtag = Nothing
+    , _cusKind = "admin#directory#customer"
+    , _cusAlternateEmail = Nothing
+    , _cusCustomerDomain = Nothing
+    , _cusPhoneNumber = Nothing
+    , _cusLanguage = Nothing
+    , _cusId = Nothing
+    , _cusCustomerCreationTime = Nothing
+    , _cusPostalAddress = Nothing
+    }
+
+
+-- | ETag of the resource.
+cusEtag :: Lens' Customer (Maybe Text)
+cusEtag = lens _cusEtag (\ s a -> s{_cusEtag = a})
+
+-- | Identifies the resource as a customer. Value: admin#directory#customer
+cusKind :: Lens' Customer Text
+cusKind = lens _cusKind (\ s a -> s{_cusKind = a})
+
+-- | The customer\'s secondary contact email address. This email address
+-- cannot be on the same domain as the customerDomain
+cusAlternateEmail :: Lens' Customer (Maybe Text)
+cusAlternateEmail
+  = lens _cusAlternateEmail
+      (\ s a -> s{_cusAlternateEmail = a})
+
+-- | The customer\'s primary domain name string. Do not include the www
+-- prefix when creating a new customer.
+cusCustomerDomain :: Lens' Customer (Maybe Text)
+cusCustomerDomain
+  = lens _cusCustomerDomain
+      (\ s a -> s{_cusCustomerDomain = a})
+
+-- | The customer\'s contact phone number in E.164 format.
+cusPhoneNumber :: Lens' Customer (Maybe Text)
+cusPhoneNumber
+  = lens _cusPhoneNumber
+      (\ s a -> s{_cusPhoneNumber = a})
+
+-- | The customer\'s ISO 639-2 language code. The default value is en-US
+cusLanguage :: Lens' Customer (Maybe Text)
+cusLanguage
+  = lens _cusLanguage (\ s a -> s{_cusLanguage = a})
+
+-- | The unique ID for the customer\'s G Suite account. (Readonly)
+cusId :: Lens' Customer (Maybe Text)
+cusId = lens _cusId (\ s a -> s{_cusId = a})
+
+-- | The customer\'s creation time (Readonly)
+cusCustomerCreationTime :: Lens' Customer (Maybe UTCTime)
+cusCustomerCreationTime
+  = lens _cusCustomerCreationTime
+      (\ s a -> s{_cusCustomerCreationTime = a})
+      . mapping _DateTime
+
+-- | The customer\'s postal address information.
+cusPostalAddress :: Lens' Customer (Maybe CustomerPostalAddress)
+cusPostalAddress
+  = lens _cusPostalAddress
+      (\ s a -> s{_cusPostalAddress = a})
+
+instance FromJSON Customer where
+        parseJSON
+          = withObject "Customer"
+              (\ o ->
+                 Customer' <$>
+                   (o .:? "etag") <*>
+                     (o .:? "kind" .!= "admin#directory#customer")
+                     <*> (o .:? "alternateEmail")
+                     <*> (o .:? "customerDomain")
+                     <*> (o .:? "phoneNumber")
+                     <*> (o .:? "language")
+                     <*> (o .:? "id")
+                     <*> (o .:? "customerCreationTime")
+                     <*> (o .:? "postalAddress"))
+
+instance ToJSON Customer where
+        toJSON Customer'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _cusEtag, Just ("kind" .= _cusKind),
+                  ("alternateEmail" .=) <$> _cusAlternateEmail,
+                  ("customerDomain" .=) <$> _cusCustomerDomain,
+                  ("phoneNumber" .=) <$> _cusPhoneNumber,
+                  ("language" .=) <$> _cusLanguage,
+                  ("id" .=) <$> _cusId,
+                  ("customerCreationTime" .=) <$>
+                    _cusCustomerCreationTime,
+                  ("postalAddress" .=) <$> _cusPostalAddress])
+
+--
+-- /See:/ 'mobileDeviceApplicationsItem' smart constructor.
+data MobileDeviceApplicationsItem =
+  MobileDeviceApplicationsItem'
+    { _mdaiVersionCode :: !(Maybe (Textual Int32))
+    , _mdaiVersionName :: !(Maybe Text)
+    , _mdaiPackageName :: !(Maybe Text)
+    , _mdaiDisplayName :: !(Maybe Text)
+    , _mdaiPermission  :: !(Maybe [Text])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MobileDeviceApplicationsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mdaiVersionCode'
+--
+-- * 'mdaiVersionName'
+--
+-- * 'mdaiPackageName'
+--
+-- * 'mdaiDisplayName'
+--
+-- * 'mdaiPermission'
+mobileDeviceApplicationsItem
+    :: MobileDeviceApplicationsItem
+mobileDeviceApplicationsItem =
+  MobileDeviceApplicationsItem'
+    { _mdaiVersionCode = Nothing
+    , _mdaiVersionName = Nothing
+    , _mdaiPackageName = Nothing
+    , _mdaiDisplayName = Nothing
+    , _mdaiPermission = Nothing
+    }
+
+
+-- | Version code of application
+mdaiVersionCode :: Lens' MobileDeviceApplicationsItem (Maybe Int32)
+mdaiVersionCode
+  = lens _mdaiVersionCode
+      (\ s a -> s{_mdaiVersionCode = a})
+      . mapping _Coerce
+
+-- | Version name of application
+mdaiVersionName :: Lens' MobileDeviceApplicationsItem (Maybe Text)
+mdaiVersionName
+  = lens _mdaiVersionName
+      (\ s a -> s{_mdaiVersionName = a})
+
+-- | Package name of application
+mdaiPackageName :: Lens' MobileDeviceApplicationsItem (Maybe Text)
+mdaiPackageName
+  = lens _mdaiPackageName
+      (\ s a -> s{_mdaiPackageName = a})
+
+-- | Display name of application
+mdaiDisplayName :: Lens' MobileDeviceApplicationsItem (Maybe Text)
+mdaiDisplayName
+  = lens _mdaiDisplayName
+      (\ s a -> s{_mdaiDisplayName = a})
+
+-- | List of Permissions for application
+mdaiPermission :: Lens' MobileDeviceApplicationsItem [Text]
+mdaiPermission
+  = lens _mdaiPermission
+      (\ s a -> s{_mdaiPermission = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON MobileDeviceApplicationsItem where
+        parseJSON
+          = withObject "MobileDeviceApplicationsItem"
+              (\ o ->
+                 MobileDeviceApplicationsItem' <$>
+                   (o .:? "versionCode") <*> (o .:? "versionName") <*>
+                     (o .:? "packageName")
+                     <*> (o .:? "displayName")
+                     <*> (o .:? "permission" .!= mempty))
+
+instance ToJSON MobileDeviceApplicationsItem where
+        toJSON MobileDeviceApplicationsItem'{..}
+          = object
+              (catMaybes
+                 [("versionCode" .=) <$> _mdaiVersionCode,
+                  ("versionName" .=) <$> _mdaiVersionName,
+                  ("packageName" .=) <$> _mdaiPackageName,
+                  ("displayName" .=) <$> _mdaiDisplayName,
+                  ("permission" .=) <$> _mdaiPermission])
+
+--
+-- /See:/ 'chromeOSDeviceDiskVolumeReportsItemVolumeInfoItem' smart constructor.
+data ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem =
+  ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem'
+    { _coddvriviiStorageFree  :: !(Maybe (Textual Int64))
+    , _coddvriviiStorageTotal :: !(Maybe (Textual Int64))
+    , _coddvriviiVolumeId     :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'coddvriviiStorageFree'
+--
+-- * 'coddvriviiStorageTotal'
+--
+-- * 'coddvriviiVolumeId'
+chromeOSDeviceDiskVolumeReportsItemVolumeInfoItem
+    :: ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem
+chromeOSDeviceDiskVolumeReportsItemVolumeInfoItem =
+  ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem'
+    { _coddvriviiStorageFree = Nothing
+    , _coddvriviiStorageTotal = Nothing
+    , _coddvriviiVolumeId = Nothing
+    }
+
+
+-- | Free disk space [in bytes]
+coddvriviiStorageFree :: Lens' ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem (Maybe Int64)
+coddvriviiStorageFree
+  = lens _coddvriviiStorageFree
+      (\ s a -> s{_coddvriviiStorageFree = a})
+      . mapping _Coerce
+
+-- | Total disk space [in bytes]
+coddvriviiStorageTotal :: Lens' ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem (Maybe Int64)
+coddvriviiStorageTotal
+  = lens _coddvriviiStorageTotal
+      (\ s a -> s{_coddvriviiStorageTotal = a})
+      . mapping _Coerce
+
+-- | Volume id
+coddvriviiVolumeId :: Lens' ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem (Maybe Text)
+coddvriviiVolumeId
+  = lens _coddvriviiVolumeId
+      (\ s a -> s{_coddvriviiVolumeId = a})
+
+instance FromJSON
+           ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem
+         where
+        parseJSON
+          = withObject
+              "ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem"
+              (\ o ->
+                 ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem'
+                   <$>
+                   (o .:? "storageFree") <*> (o .:? "storageTotal") <*>
+                     (o .:? "volumeId"))
+
+instance ToJSON
+           ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem
+         where
+        toJSON
+          ChromeOSDeviceDiskVolumeReportsItemVolumeInfoItem'{..}
+          = object
+              (catMaybes
+                 [("storageFree" .=) <$> _coddvriviiStorageFree,
+                  ("storageTotal" .=) <$> _coddvriviiStorageTotal,
+                  ("volumeId" .=) <$> _coddvriviiVolumeId])
+
+-- | JSON response template for List Organization Units operation in
+-- Directory API.
+--
+-- /See:/ 'orgUnits' smart constructor.
+data OrgUnits =
+  OrgUnits'
+    { _oEtag              :: !(Maybe Text)
+    , _oKind              :: !Text
+    , _oOrganizationUnits :: !(Maybe [OrgUnit])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'OrgUnits' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oEtag'
+--
+-- * 'oKind'
+--
+-- * 'oOrganizationUnits'
+orgUnits
+    :: OrgUnits
+orgUnits =
+  OrgUnits'
+    { _oEtag = Nothing
+    , _oKind = "admin#directory#orgUnits"
+    , _oOrganizationUnits = Nothing
+    }
+
+
+-- | ETag of the resource.
+oEtag :: Lens' OrgUnits (Maybe Text)
+oEtag = lens _oEtag (\ s a -> s{_oEtag = a})
+
+-- | Kind of resource this is.
+oKind :: Lens' OrgUnits Text
+oKind = lens _oKind (\ s a -> s{_oKind = a})
+
+-- | List of user objects.
+oOrganizationUnits :: Lens' OrgUnits [OrgUnit]
+oOrganizationUnits
+  = lens _oOrganizationUnits
+      (\ s a -> s{_oOrganizationUnits = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON OrgUnits where
+        parseJSON
+          = withObject "OrgUnits"
+              (\ o ->
+                 OrgUnits' <$>
+                   (o .:? "etag") <*>
+                     (o .:? "kind" .!= "admin#directory#orgUnits")
+                     <*> (o .:? "organizationUnits" .!= mempty))
+
+instance ToJSON OrgUnits where
+        toJSON OrgUnits'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _oEtag, Just ("kind" .= _oKind),
+                  ("organizationUnits" .=) <$> _oOrganizationUnits])
+
+-- | JSON template for a POSIX account entry.
+--
+-- /See:/ 'userSSHPublicKey' smart constructor.
+data UserSSHPublicKey =
+  UserSSHPublicKey'
+    { _uspkFingerprint        :: !(Maybe Text)
+    , _uspkKey                :: !(Maybe Text)
+    , _uspkExpirationTimeUsec :: !(Maybe (Textual Int64))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UserSSHPublicKey' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uspkFingerprint'
+--
+-- * 'uspkKey'
+--
+-- * 'uspkExpirationTimeUsec'
+userSSHPublicKey
+    :: UserSSHPublicKey
+userSSHPublicKey =
+  UserSSHPublicKey'
+    { _uspkFingerprint = Nothing
+    , _uspkKey = Nothing
+    , _uspkExpirationTimeUsec = Nothing
+    }
+
+
+-- | A SHA-256 fingerprint of the SSH public key. (Read-only)
+uspkFingerprint :: Lens' UserSSHPublicKey (Maybe Text)
+uspkFingerprint
+  = lens _uspkFingerprint
+      (\ s a -> s{_uspkFingerprint = a})
+
+-- | An SSH public key.
+uspkKey :: Lens' UserSSHPublicKey (Maybe Text)
+uspkKey = lens _uspkKey (\ s a -> s{_uspkKey = a})
+
+-- | An expiration time in microseconds since epoch.
+uspkExpirationTimeUsec :: Lens' UserSSHPublicKey (Maybe Int64)
+uspkExpirationTimeUsec
+  = lens _uspkExpirationTimeUsec
+      (\ s a -> s{_uspkExpirationTimeUsec = a})
+      . mapping _Coerce
+
+instance FromJSON UserSSHPublicKey where
+        parseJSON
+          = withObject "UserSSHPublicKey"
+              (\ o ->
+                 UserSSHPublicKey' <$>
+                   (o .:? "fingerprint") <*> (o .:? "key") <*>
+                     (o .:? "expirationTimeUsec"))
+
+instance ToJSON UserSSHPublicKey where
+        toJSON UserSSHPublicKey'{..}
+          = object
+              (catMaybes
+                 [("fingerprint" .=) <$> _uspkFingerprint,
+                  ("key" .=) <$> _uspkKey,
+                  ("expirationTimeUsec" .=) <$>
+                    _uspkExpirationTimeUsec])
+
+-- | JSON response template for List verification codes operation in
+-- Directory API.
+--
+-- /See:/ 'verificationCodes' smart constructor.
+data VerificationCodes =
+  VerificationCodes'
+    { _vEtag  :: !(Maybe Text)
+    , _vKind  :: !Text
+    , _vItems :: !(Maybe [VerificationCode])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'VerificationCodes' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vEtag'
+--
+-- * 'vKind'
+--
+-- * 'vItems'
+verificationCodes
+    :: VerificationCodes
+verificationCodes =
+  VerificationCodes'
+    { _vEtag = Nothing
+    , _vKind = "admin#directory#verificationCodesList"
+    , _vItems = Nothing
+    }
+
+
+-- | ETag of the resource.
+vEtag :: Lens' VerificationCodes (Maybe Text)
+vEtag = lens _vEtag (\ s a -> s{_vEtag = a})
+
+-- | The type of the resource. This is always
+-- admin#directory#verificationCodesList.
+vKind :: Lens' VerificationCodes Text
+vKind = lens _vKind (\ s a -> s{_vKind = a})
+
+-- | A list of verification code resources.
+vItems :: Lens' VerificationCodes [VerificationCode]
+vItems
+  = lens _vItems (\ s a -> s{_vItems = a}) . _Default .
+      _Coerce
+
+instance FromJSON VerificationCodes where
+        parseJSON
+          = withObject "VerificationCodes"
+              (\ o ->
+                 VerificationCodes' <$>
+                   (o .:? "etag") <*>
+                     (o .:? "kind" .!=
+                        "admin#directory#verificationCodesList")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON VerificationCodes where
+        toJSON VerificationCodes'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _vEtag, Just ("kind" .= _vKind),
+                  ("items" .=) <$> _vItems])
+
+-- | JSON template for coordinates of a building in Directory API.
+--
+-- /See:/ 'buildingCoordinates' smart constructor.
+data BuildingCoordinates =
+  BuildingCoordinates'
+    { _bcLatitude  :: !(Maybe (Textual Double))
+    , _bcLongitude :: !(Maybe (Textual Double))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'BuildingCoordinates' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bcLatitude'
+--
+-- * 'bcLongitude'
+buildingCoordinates
+    :: BuildingCoordinates
+buildingCoordinates =
+  BuildingCoordinates' {_bcLatitude = Nothing, _bcLongitude = Nothing}
+
+
+-- | Latitude in decimal degrees.
+bcLatitude :: Lens' BuildingCoordinates (Maybe Double)
+bcLatitude
+  = lens _bcLatitude (\ s a -> s{_bcLatitude = a}) .
+      mapping _Coerce
+
+-- | Longitude in decimal degrees.
+bcLongitude :: Lens' BuildingCoordinates (Maybe Double)
+bcLongitude
+  = lens _bcLongitude (\ s a -> s{_bcLongitude = a}) .
+      mapping _Coerce
+
+instance FromJSON BuildingCoordinates where
+        parseJSON
+          = withObject "BuildingCoordinates"
+              (\ o ->
+                 BuildingCoordinates' <$>
+                   (o .:? "latitude") <*> (o .:? "longitude"))
+
+instance ToJSON BuildingCoordinates where
+        toJSON BuildingCoordinates'{..}
+          = object
+              (catMaybes
+                 [("latitude" .=) <$> _bcLatitude,
+                  ("longitude" .=) <$> _bcLongitude])
+
+-- | JSON template for a relation entry.
+--
+-- /See:/ 'userRelation' smart constructor.
+data UserRelation =
+  UserRelation'
+    { _urValue      :: !(Maybe Text)
+    , _urType       :: !(Maybe Text)
+    , _urCustomType :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UserRelation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'urValue'
+--
+-- * 'urType'
+--
+-- * 'urCustomType'
+userRelation
+    :: UserRelation
+userRelation =
+  UserRelation' {_urValue = Nothing, _urType = Nothing, _urCustomType = Nothing}
+
+
+-- | The name of the relation.
+urValue :: Lens' UserRelation (Maybe Text)
+urValue = lens _urValue (\ s a -> s{_urValue = a})
+
+-- | The relation of the user. Some of the possible values are mother,
+-- father, sister, brother, manager, assistant, partner.
+urType :: Lens' UserRelation (Maybe Text)
+urType = lens _urType (\ s a -> s{_urType = a})
+
+-- | Custom Type.
+urCustomType :: Lens' UserRelation (Maybe Text)
+urCustomType
+  = lens _urCustomType (\ s a -> s{_urCustomType = a})
+
+instance FromJSON UserRelation where
+        parseJSON
+          = withObject "UserRelation"
+              (\ o ->
+                 UserRelation' <$>
+                   (o .:? "value") <*> (o .:? "type") <*>
+                     (o .:? "customType"))
+
+instance ToJSON UserRelation where
+        toJSON UserRelation'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _urValue, ("type" .=) <$> _urType,
+                  ("customType" .=) <$> _urCustomType])
+
+-- | JSON template for Trusted Apps response object of a user in Directory
+-- API.
+--
+-- /See:/ 'trustedApps' smart constructor.
+data TrustedApps =
+  TrustedApps'
+    { _taEtag          :: !(Maybe Text)
+    , _taNextPageToken :: !(Maybe Text)
+    , _taKind          :: !Text
+    , _taTrustedApps   :: !(Maybe [TrustedAppId])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TrustedApps' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'taEtag'
+--
+-- * 'taNextPageToken'
+--
+-- * 'taKind'
+--
+-- * 'taTrustedApps'
+trustedApps
+    :: TrustedApps
+trustedApps =
+  TrustedApps'
+    { _taEtag = Nothing
+    , _taNextPageToken = Nothing
+    , _taKind = "admin#directory#trustedapplist"
+    , _taTrustedApps = Nothing
+    }
+
+
+-- | ETag of the resource.
+taEtag :: Lens' TrustedApps (Maybe Text)
+taEtag = lens _taEtag (\ s a -> s{_taEtag = a})
+
+taNextPageToken :: Lens' TrustedApps (Maybe Text)
+taNextPageToken
+  = lens _taNextPageToken
+      (\ s a -> s{_taNextPageToken = a})
+
+-- | Identifies the resource as trusted apps response.
+taKind :: Lens' TrustedApps Text
+taKind = lens _taKind (\ s a -> s{_taKind = a})
+
+-- | Trusted Apps list.
+taTrustedApps :: Lens' TrustedApps [TrustedAppId]
+taTrustedApps
+  = lens _taTrustedApps
+      (\ s a -> s{_taTrustedApps = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TrustedApps where
+        parseJSON
+          = withObject "TrustedApps"
+              (\ o ->
+                 TrustedApps' <$>
+                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "admin#directory#trustedapplist")
+                     <*> (o .:? "trustedApps" .!= mempty))
+
+instance ToJSON TrustedApps where
+        toJSON TrustedApps'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _taEtag,
+                  ("nextPageToken" .=) <$> _taNextPageToken,
+                  Just ("kind" .= _taKind),
+                  ("trustedApps" .=) <$> _taTrustedApps])
+
+-- | JSON template for Feature List Response object in Directory API.
+--
+-- /See:/ 'features' smart constructor.
+data Features =
+  Features'
+    { _feaEtag          :: !(Maybe Text)
+    , _feaNextPageToken :: !(Maybe Text)
+    , _feaKind          :: !Text
+    , _feaFeatures      :: !(Maybe [Feature])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Features' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'feaEtag'
+--
+-- * 'feaNextPageToken'
+--
+-- * 'feaKind'
+--
+-- * 'feaFeatures'
+features
+    :: Features
+features =
+  Features'
+    { _feaEtag = Nothing
+    , _feaNextPageToken = Nothing
+    , _feaKind = "admin#directory#resources#features#featuresList"
+    , _feaFeatures = Nothing
+    }
+
+
+-- | ETag of the resource.
+feaEtag :: Lens' Features (Maybe Text)
+feaEtag = lens _feaEtag (\ s a -> s{_feaEtag = a})
+
+-- | The continuation token, used to page through large result sets. Provide
+-- this value in a subsequent request to return the next page of results.
+feaNextPageToken :: Lens' Features (Maybe Text)
+feaNextPageToken
+  = lens _feaNextPageToken
+      (\ s a -> s{_feaNextPageToken = a})
+
+-- | Kind of resource this is.
+feaKind :: Lens' Features Text
+feaKind = lens _feaKind (\ s a -> s{_feaKind = a})
+
+-- | The Features in this page of results.
+feaFeatures :: Lens' Features [Feature]
+feaFeatures
+  = lens _feaFeatures (\ s a -> s{_feaFeatures = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON Features where
+        parseJSON
+          = withObject "Features"
+              (\ o ->
+                 Features' <$>
+                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "admin#directory#resources#features#featuresList")
+                     <*> (o .:? "features" .!= mempty))
+
+instance ToJSON Features where
+        toJSON Features'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _feaEtag,
+                  ("nextPageToken" .=) <$> _feaNextPageToken,
+                  Just ("kind" .= _feaKind),
+                  ("features" .=) <$> _feaFeatures])
+
+-- | Additional parameters controlling delivery channel behavior. Optional.
+--
+-- /See:/ 'channelParams' smart constructor.
+newtype ChannelParams =
+  ChannelParams'
+    { _cpAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ChannelParams' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cpAddtional'
+channelParams
+    :: HashMap Text Text -- ^ 'cpAddtional'
+    -> ChannelParams
+channelParams pCpAddtional_ =
+  ChannelParams' {_cpAddtional = _Coerce # pCpAddtional_}
+
+
+-- | Declares a new parameter by name.
+cpAddtional :: Lens' ChannelParams (HashMap Text Text)
+cpAddtional
+  = lens _cpAddtional (\ s a -> s{_cpAddtional = a}) .
+      _Coerce
+
+instance FromJSON ChannelParams where
+        parseJSON
+          = withObject "ChannelParams"
+              (\ o -> ChannelParams' <$> (parseJSONObject o))
+
+instance ToJSON ChannelParams where
+        toJSON = toJSON . _cpAddtional
+
+-- | Trusted Platform Module (TPM) (Read-only)
+--
+-- /See:/ 'chromeOSDeviceTpmVersionInfo' smart constructor.
+data ChromeOSDeviceTpmVersionInfo =
+  ChromeOSDeviceTpmVersionInfo'
+    { _codtviVendorSpecific  :: !(Maybe Text)
+    , _codtviManufacturer    :: !(Maybe Text)
+    , _codtviSpecLevel       :: !(Maybe Text)
+    , _codtviTpmModel        :: !(Maybe Text)
+    , _codtviFamily          :: !(Maybe Text)
+    , _codtviFirmwareVersion :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ChromeOSDeviceTpmVersionInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'codtviVendorSpecific'
+--
+-- * 'codtviManufacturer'
+--
+-- * 'codtviSpecLevel'
+--
+-- * 'codtviTpmModel'
+--
+-- * 'codtviFamily'
+--
+-- * 'codtviFirmwareVersion'
+chromeOSDeviceTpmVersionInfo
+    :: ChromeOSDeviceTpmVersionInfo
+chromeOSDeviceTpmVersionInfo =
+  ChromeOSDeviceTpmVersionInfo'
+    { _codtviVendorSpecific = Nothing
+    , _codtviManufacturer = Nothing
+    , _codtviSpecLevel = Nothing
+    , _codtviTpmModel = Nothing
+    , _codtviFamily = Nothing
+    , _codtviFirmwareVersion = Nothing
+    }
+
+
+-- | Vendor-specific information such as Vendor ID.
+codtviVendorSpecific :: Lens' ChromeOSDeviceTpmVersionInfo (Maybe Text)
+codtviVendorSpecific
+  = lens _codtviVendorSpecific
+      (\ s a -> s{_codtviVendorSpecific = a})
+
+-- | TPM manufacturer code.
+codtviManufacturer :: Lens' ChromeOSDeviceTpmVersionInfo (Maybe Text)
+codtviManufacturer
+  = lens _codtviManufacturer
+      (\ s a -> s{_codtviManufacturer = a})
+
+-- | TPM specification level.
+codtviSpecLevel :: Lens' ChromeOSDeviceTpmVersionInfo (Maybe Text)
+codtviSpecLevel
+  = lens _codtviSpecLevel
+      (\ s a -> s{_codtviSpecLevel = a})
+
+-- | TPM model number.
+codtviTpmModel :: Lens' ChromeOSDeviceTpmVersionInfo (Maybe Text)
+codtviTpmModel
+  = lens _codtviTpmModel
+      (\ s a -> s{_codtviTpmModel = a})
+
+-- | TPM family.
+codtviFamily :: Lens' ChromeOSDeviceTpmVersionInfo (Maybe Text)
+codtviFamily
+  = lens _codtviFamily (\ s a -> s{_codtviFamily = a})
+
+-- | TPM firmware version.
+codtviFirmwareVersion :: Lens' ChromeOSDeviceTpmVersionInfo (Maybe Text)
+codtviFirmwareVersion
+  = lens _codtviFirmwareVersion
+      (\ s a -> s{_codtviFirmwareVersion = a})
+
+instance FromJSON ChromeOSDeviceTpmVersionInfo where
+        parseJSON
+          = withObject "ChromeOSDeviceTpmVersionInfo"
+              (\ o ->
+                 ChromeOSDeviceTpmVersionInfo' <$>
+                   (o .:? "vendorSpecific") <*> (o .:? "manufacturer")
+                     <*> (o .:? "specLevel")
+                     <*> (o .:? "tpmModel")
+                     <*> (o .:? "family")
+                     <*> (o .:? "firmwareVersion"))
+
+instance ToJSON ChromeOSDeviceTpmVersionInfo where
+        toJSON ChromeOSDeviceTpmVersionInfo'{..}
+          = object
+              (catMaybes
+                 [("vendorSpecific" .=) <$> _codtviVendorSpecific,
+                  ("manufacturer" .=) <$> _codtviManufacturer,
+                  ("specLevel" .=) <$> _codtviSpecLevel,
+                  ("tpmModel" .=) <$> _codtviTpmModel,
+                  ("family" .=) <$> _codtviFamily,
+                  ("firmwareVersion" .=) <$> _codtviFirmwareVersion])
+
+-- | JSON template for an organization entry.
+--
+-- /See:/ 'userOrganization' smart constructor.
+data UserOrganization =
+  UserOrganization'
+    { _uoDePartment         :: !(Maybe Text)
+    , _uoLocation           :: !(Maybe Text)
+    , _uoCostCenter         :: !(Maybe Text)
+    , _uoDomain             :: !(Maybe Text)
+    , _uoSymbol             :: !(Maybe Text)
+    , _uoPrimary            :: !(Maybe Bool)
+    , _uoName               :: !(Maybe Text)
+    , _uoFullTimeEquivalent :: !(Maybe (Textual Int32))
+    , _uoTitle              :: !(Maybe Text)
+    , _uoType               :: !(Maybe Text)
+    , _uoCustomType         :: !(Maybe Text)
+    , _uoDescription        :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UserOrganization' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uoDePartment'
+--
+-- * 'uoLocation'
+--
+-- * 'uoCostCenter'
+--
+-- * 'uoDomain'
+--
+-- * 'uoSymbol'
+--
+-- * 'uoPrimary'
+--
+-- * 'uoName'
+--
+-- * 'uoFullTimeEquivalent'
+--
+-- * 'uoTitle'
+--
+-- * 'uoType'
+--
+-- * 'uoCustomType'
+--
+-- * 'uoDescription'
+userOrganization
+    :: UserOrganization
+userOrganization =
+  UserOrganization'
+    { _uoDePartment = Nothing
+    , _uoLocation = Nothing
+    , _uoCostCenter = Nothing
+    , _uoDomain = Nothing
+    , _uoSymbol = Nothing
+    , _uoPrimary = Nothing
+    , _uoName = Nothing
+    , _uoFullTimeEquivalent = Nothing
+    , _uoTitle = Nothing
+    , _uoType = Nothing
+    , _uoCustomType = Nothing
+    , _uoDescription = Nothing
+    }
+
+
+-- | Department within the organization.
+uoDePartment :: Lens' UserOrganization (Maybe Text)
+uoDePartment
+  = lens _uoDePartment (\ s a -> s{_uoDePartment = a})
+
+-- | Location of the organization. This need not be fully qualified address.
+uoLocation :: Lens' UserOrganization (Maybe Text)
+uoLocation
+  = lens _uoLocation (\ s a -> s{_uoLocation = a})
+
+-- | The cost center of the users department.
+uoCostCenter :: Lens' UserOrganization (Maybe Text)
+uoCostCenter
+  = lens _uoCostCenter (\ s a -> s{_uoCostCenter = a})
+
+-- | The domain to which the organization belongs to.
+uoDomain :: Lens' UserOrganization (Maybe Text)
+uoDomain = lens _uoDomain (\ s a -> s{_uoDomain = a})
+
+-- | Symbol of the organization.
+uoSymbol :: Lens' UserOrganization (Maybe Text)
+uoSymbol = lens _uoSymbol (\ s a -> s{_uoSymbol = a})
+
+-- | If it user\'s primary organization.
+uoPrimary :: Lens' UserOrganization (Maybe Bool)
+uoPrimary
+  = lens _uoPrimary (\ s a -> s{_uoPrimary = a})
+
+-- | Name of the organization
+uoName :: Lens' UserOrganization (Maybe Text)
+uoName = lens _uoName (\ s a -> s{_uoName = a})
+
+-- | The full-time equivalent percent within the organization (100000 =
+-- 100%).
+uoFullTimeEquivalent :: Lens' UserOrganization (Maybe Int32)
+uoFullTimeEquivalent
+  = lens _uoFullTimeEquivalent
+      (\ s a -> s{_uoFullTimeEquivalent = a})
+      . mapping _Coerce
+
+-- | Title (designation) of the user in the organization.
+uoTitle :: Lens' UserOrganization (Maybe Text)
+uoTitle = lens _uoTitle (\ s a -> s{_uoTitle = a})
+
+-- | Each entry can have a type which indicates standard types of that entry.
+-- For example organization could be of school, work etc. In addition to
+-- the standard type, an entry can have a custom type and can give it any
+-- name. Such types should have the CUSTOM value as type and also have a
+-- CustomType value.
+uoType :: Lens' UserOrganization (Maybe Text)
+uoType = lens _uoType (\ s a -> s{_uoType = a})
+
+-- | Custom type.
+uoCustomType :: Lens' UserOrganization (Maybe Text)
+uoCustomType
+  = lens _uoCustomType (\ s a -> s{_uoCustomType = a})
+
+-- | Description of the organization.
+uoDescription :: Lens' UserOrganization (Maybe Text)
+uoDescription
+  = lens _uoDescription
+      (\ s a -> s{_uoDescription = a})
+
+instance FromJSON UserOrganization where
+        parseJSON
+          = withObject "UserOrganization"
+              (\ o ->
+                 UserOrganization' <$>
+                   (o .:? "department") <*> (o .:? "location") <*>
+                     (o .:? "costCenter")
+                     <*> (o .:? "domain")
+                     <*> (o .:? "symbol")
+                     <*> (o .:? "primary")
+                     <*> (o .:? "name")
+                     <*> (o .:? "fullTimeEquivalent")
+                     <*> (o .:? "title")
+                     <*> (o .:? "type")
+                     <*> (o .:? "customType")
+                     <*> (o .:? "description"))
+
+instance ToJSON UserOrganization where
+        toJSON UserOrganization'{..}
+          = object
+              (catMaybes
+                 [("department" .=) <$> _uoDePartment,
+                  ("location" .=) <$> _uoLocation,
+                  ("costCenter" .=) <$> _uoCostCenter,
+                  ("domain" .=) <$> _uoDomain,
+                  ("symbol" .=) <$> _uoSymbol,
+                  ("primary" .=) <$> _uoPrimary,
+                  ("name" .=) <$> _uoName,
+                  ("fullTimeEquivalent" .=) <$> _uoFullTimeEquivalent,
+                  ("title" .=) <$> _uoTitle, ("type" .=) <$> _uoType,
+                  ("customType" .=) <$> _uoCustomType,
+                  ("description" .=) <$> _uoDescription])
+
+-- | JSON template for a website entry.
+--
+-- /See:/ 'userWebsite' smart constructor.
+data UserWebsite =
+  UserWebsite'
+    { _uwValue      :: !(Maybe Text)
+    , _uwPrimary    :: !(Maybe Bool)
+    , _uwType       :: !(Maybe Text)
+    , _uwCustomType :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UserWebsite' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uwValue'
+--
+-- * 'uwPrimary'
+--
+-- * 'uwType'
+--
+-- * 'uwCustomType'
+userWebsite
+    :: UserWebsite
+userWebsite =
+  UserWebsite'
+    { _uwValue = Nothing
+    , _uwPrimary = Nothing
+    , _uwType = Nothing
+    , _uwCustomType = Nothing
+    }
+
+
+-- | Website.
+uwValue :: Lens' UserWebsite (Maybe Text)
+uwValue = lens _uwValue (\ s a -> s{_uwValue = a})
+
+-- | If this is user\'s primary website or not.
+uwPrimary :: Lens' UserWebsite (Maybe Bool)
+uwPrimary
+  = lens _uwPrimary (\ s a -> s{_uwPrimary = a})
+
+-- | Each entry can have a type which indicates standard types of that entry.
+-- For example website could be of home, work, blog etc. In addition to the
+-- standard type, an entry can have a custom type and can give it any name.
+-- Such types should have the CUSTOM value as type and also have a
+-- customType value.
+uwType :: Lens' UserWebsite (Maybe Text)
+uwType = lens _uwType (\ s a -> s{_uwType = a})
+
+-- | Custom Type.
+uwCustomType :: Lens' UserWebsite (Maybe Text)
+uwCustomType
+  = lens _uwCustomType (\ s a -> s{_uwCustomType = a})
+
+instance FromJSON UserWebsite where
+        parseJSON
+          = withObject "UserWebsite"
+              (\ o ->
+                 UserWebsite' <$>
+                   (o .:? "value") <*> (o .:? "primary") <*>
+                     (o .:? "type")
+                     <*> (o .:? "customType"))
+
+instance ToJSON UserWebsite where
+        toJSON UserWebsite'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _uwValue,
+                  ("primary" .=) <$> _uwPrimary,
+                  ("type" .=) <$> _uwType,
+                  ("customType" .=) <$> _uwCustomType])
+
+--
+-- /See:/ 'chromeOSDeviceActiveTimeRangesItem' smart constructor.
+data ChromeOSDeviceActiveTimeRangesItem =
+  ChromeOSDeviceActiveTimeRangesItem'
+    { _codatriDate       :: !(Maybe Date')
+    , _codatriActiveTime :: !(Maybe (Textual Int32))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ChromeOSDeviceActiveTimeRangesItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'codatriDate'
+--
+-- * 'codatriActiveTime'
+chromeOSDeviceActiveTimeRangesItem
+    :: ChromeOSDeviceActiveTimeRangesItem
+chromeOSDeviceActiveTimeRangesItem =
+  ChromeOSDeviceActiveTimeRangesItem'
+    {_codatriDate = Nothing, _codatriActiveTime = Nothing}
+
+
+-- | Date of usage
+codatriDate :: Lens' ChromeOSDeviceActiveTimeRangesItem (Maybe Day)
+codatriDate
+  = lens _codatriDate (\ s a -> s{_codatriDate = a}) .
+      mapping _Date
+
+-- | Duration in milliseconds
+codatriActiveTime :: Lens' ChromeOSDeviceActiveTimeRangesItem (Maybe Int32)
+codatriActiveTime
+  = lens _codatriActiveTime
+      (\ s a -> s{_codatriActiveTime = a})
+      . mapping _Coerce
+
+instance FromJSON ChromeOSDeviceActiveTimeRangesItem
+         where
+        parseJSON
+          = withObject "ChromeOSDeviceActiveTimeRangesItem"
+              (\ o ->
+                 ChromeOSDeviceActiveTimeRangesItem' <$>
+                   (o .:? "date") <*> (o .:? "activeTime"))
+
+instance ToJSON ChromeOSDeviceActiveTimeRangesItem
+         where
+        toJSON ChromeOSDeviceActiveTimeRangesItem'{..}
+          = object
+              (catMaybes
+                 [("date" .=) <$> _codatriDate,
+                  ("activeTime" .=) <$> _codatriActiveTime])
+
+-- | JSON template for an email.
+--
+-- /See:/ 'userEmail' smart constructor.
+data UserEmail =
+  UserEmail'
+    { _ueAddress    :: !(Maybe Text)
+    , _uePrimary    :: !(Maybe Bool)
+    , _ueType       :: !(Maybe Text)
+    , _ueCustomType :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UserEmail' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ueAddress'
+--
+-- * 'uePrimary'
+--
+-- * 'ueType'
+--
+-- * 'ueCustomType'
+userEmail
+    :: UserEmail
+userEmail =
+  UserEmail'
+    { _ueAddress = Nothing
+    , _uePrimary = Nothing
+    , _ueType = Nothing
+    , _ueCustomType = Nothing
+    }
+
+
+-- | Email id of the user.
+ueAddress :: Lens' UserEmail (Maybe Text)
+ueAddress
+  = lens _ueAddress (\ s a -> s{_ueAddress = a})
+
+-- | If this is user\'s primary email. Only one entry could be marked as
+-- primary.
+uePrimary :: Lens' UserEmail (Maybe Bool)
+uePrimary
+  = lens _uePrimary (\ s a -> s{_uePrimary = a})
+
+-- | Each entry can have a type which indicates standard types of that entry.
+-- For example email could be of home, work etc. In addition to the
+-- standard type, an entry can have a custom type and can take any value
+-- Such types should have the CUSTOM value as type and also have a
+-- customType value.
+ueType :: Lens' UserEmail (Maybe Text)
+ueType = lens _ueType (\ s a -> s{_ueType = a})
+
+-- | Custom Type.
+ueCustomType :: Lens' UserEmail (Maybe Text)
+ueCustomType
+  = lens _ueCustomType (\ s a -> s{_ueCustomType = a})
+
+instance FromJSON UserEmail where
+        parseJSON
+          = withObject "UserEmail"
+              (\ o ->
+                 UserEmail' <$>
+                   (o .:? "address") <*> (o .:? "primary") <*>
+                     (o .:? "type")
+                     <*> (o .:? "customType"))
+
+instance ToJSON UserEmail where
+        toJSON UserEmail'{..}
+          = object
+              (catMaybes
+                 [("address" .=) <$> _ueAddress,
+                  ("primary" .=) <$> _uePrimary,
+                  ("type" .=) <$> _ueType,
+                  ("customType" .=) <$> _ueCustomType])
+
+-- | JSON template for a phone entry.
+--
+-- /See:/ 'userPhone' smart constructor.
+data UserPhone =
+  UserPhone'
+    { _upValue      :: !(Maybe Text)
+    , _upPrimary    :: !(Maybe Bool)
+    , _upType       :: !(Maybe Text)
+    , _upCustomType :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UserPhone' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'upValue'
+--
+-- * 'upPrimary'
+--
+-- * 'upType'
+--
+-- * 'upCustomType'
+userPhone
+    :: UserPhone
+userPhone =
+  UserPhone'
+    { _upValue = Nothing
+    , _upPrimary = Nothing
+    , _upType = Nothing
+    , _upCustomType = Nothing
+    }
+
+
+-- | Phone number.
+upValue :: Lens' UserPhone (Maybe Text)
+upValue = lens _upValue (\ s a -> s{_upValue = a})
+
+-- | If this is user\'s primary phone or not.
+upPrimary :: Lens' UserPhone (Maybe Bool)
+upPrimary
+  = lens _upPrimary (\ s a -> s{_upPrimary = a})
+
+-- | Each entry can have a type which indicates standard types of that entry.
+-- For example phone could be of home_fax, work, mobile etc. In addition to
+-- the standard type, an entry can have a custom type and can give it any
+-- name. Such types should have the CUSTOM value as type and also have a
+-- customType value.
+upType :: Lens' UserPhone (Maybe Text)
+upType = lens _upType (\ s a -> s{_upType = a})
+
+-- | Custom Type.
+upCustomType :: Lens' UserPhone (Maybe Text)
+upCustomType
+  = lens _upCustomType (\ s a -> s{_upCustomType = a})
+
+instance FromJSON UserPhone where
+        parseJSON
+          = withObject "UserPhone"
+              (\ o ->
+                 UserPhone' <$>
+                   (o .:? "value") <*> (o .:? "primary") <*>
+                     (o .:? "type")
+                     <*> (o .:? "customType"))
+
+instance ToJSON UserPhone where
+        toJSON UserPhone'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _upValue,
+                  ("primary" .=) <$> _upPrimary,
+                  ("type" .=) <$> _upType,
+                  ("customType" .=) <$> _upCustomType])
+
+-- | JSON template for Photo object in Directory API.
+--
+-- /See:/ 'userPhoto' smart constructor.
+data UserPhoto =
+  UserPhoto'
+    { _upPhotoData    :: !(Maybe Bytes)
+    , _upEtag         :: !(Maybe Text)
+    , _upHeight       :: !(Maybe (Textual Int32))
+    , _upKind         :: !Text
+    , _upWidth        :: !(Maybe (Textual Int32))
+    , _upMimeType     :: !(Maybe Text)
+    , _upId           :: !(Maybe Text)
+    , _upPrimaryEmail :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UserPhoto' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'upPhotoData'
+--
+-- * 'upEtag'
+--
+-- * 'upHeight'
+--
+-- * 'upKind'
+--
+-- * 'upWidth'
+--
+-- * 'upMimeType'
+--
+-- * 'upId'
+--
+-- * 'upPrimaryEmail'
+userPhoto
+    :: UserPhoto
+userPhoto =
+  UserPhoto'
+    { _upPhotoData = Nothing
+    , _upEtag = Nothing
+    , _upHeight = Nothing
+    , _upKind = "admin#directory#user#photo"
+    , _upWidth = Nothing
+    , _upMimeType = Nothing
+    , _upId = Nothing
+    , _upPrimaryEmail = Nothing
+    }
+
+
+-- | Base64 encoded photo data
+upPhotoData :: Lens' UserPhoto (Maybe ByteString)
+upPhotoData
+  = lens _upPhotoData (\ s a -> s{_upPhotoData = a}) .
+      mapping _Bytes
+
+-- | ETag of the resource.
+upEtag :: Lens' UserPhoto (Maybe Text)
+upEtag = lens _upEtag (\ s a -> s{_upEtag = a})
+
+-- | Height in pixels of the photo
+upHeight :: Lens' UserPhoto (Maybe Int32)
+upHeight
+  = lens _upHeight (\ s a -> s{_upHeight = a}) .
+      mapping _Coerce
+
+-- | Kind of resource this is.
+upKind :: Lens' UserPhoto Text
+upKind = lens _upKind (\ s a -> s{_upKind = a})
+
+-- | Width in pixels of the photo
+upWidth :: Lens' UserPhoto (Maybe Int32)
+upWidth
+  = lens _upWidth (\ s a -> s{_upWidth = a}) .
+      mapping _Coerce
+
+-- | Mime Type of the photo
+upMimeType :: Lens' UserPhoto (Maybe Text)
+upMimeType
+  = lens _upMimeType (\ s a -> s{_upMimeType = a})
+
+-- | Unique identifier of User (Read-only)
+upId :: Lens' UserPhoto (Maybe Text)
+upId = lens _upId (\ s a -> s{_upId = a})
+
+-- | Primary email of User (Read-only)
+upPrimaryEmail :: Lens' UserPhoto (Maybe Text)
+upPrimaryEmail
+  = lens _upPrimaryEmail
+      (\ s a -> s{_upPrimaryEmail = a})
+
+instance FromJSON UserPhoto where
+        parseJSON
+          = withObject "UserPhoto"
+              (\ o ->
+                 UserPhoto' <$>
+                   (o .:? "photoData") <*> (o .:? "etag") <*>
+                     (o .:? "height")
+                     <*> (o .:? "kind" .!= "admin#directory#user#photo")
+                     <*> (o .:? "width")
+                     <*> (o .:? "mimeType")
+                     <*> (o .:? "id")
+                     <*> (o .:? "primaryEmail"))
+
+instance ToJSON UserPhoto where
+        toJSON UserPhoto'{..}
+          = object
+              (catMaybes
+                 [("photoData" .=) <$> _upPhotoData,
+                  ("etag" .=) <$> _upEtag, ("height" .=) <$> _upHeight,
+                  Just ("kind" .= _upKind), ("width" .=) <$> _upWidth,
+                  ("mimeType" .=) <$> _upMimeType, ("id" .=) <$> _upId,
+                  ("primaryEmail" .=) <$> _upPrimaryEmail])
+
+--
+-- /See:/ 'chromeOSDeviceSystemRamFreeReportsItem' smart constructor.
+data ChromeOSDeviceSystemRamFreeReportsItem =
+  ChromeOSDeviceSystemRamFreeReportsItem'
+    { _codsrfriReportTime        :: !(Maybe DateTime')
+    , _codsrfriSystemRamFreeInfo :: !(Maybe [Textual Int64])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ChromeOSDeviceSystemRamFreeReportsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'codsrfriReportTime'
+--
+-- * 'codsrfriSystemRamFreeInfo'
+chromeOSDeviceSystemRamFreeReportsItem
+    :: ChromeOSDeviceSystemRamFreeReportsItem
+chromeOSDeviceSystemRamFreeReportsItem =
+  ChromeOSDeviceSystemRamFreeReportsItem'
+    {_codsrfriReportTime = Nothing, _codsrfriSystemRamFreeInfo = Nothing}
+
+
+-- | Date and time the report was received.
+codsrfriReportTime :: Lens' ChromeOSDeviceSystemRamFreeReportsItem (Maybe UTCTime)
+codsrfriReportTime
+  = lens _codsrfriReportTime
+      (\ s a -> s{_codsrfriReportTime = a})
+      . mapping _DateTime
+
+codsrfriSystemRamFreeInfo :: Lens' ChromeOSDeviceSystemRamFreeReportsItem [Int64]
+codsrfriSystemRamFreeInfo
+  = lens _codsrfriSystemRamFreeInfo
+      (\ s a -> s{_codsrfriSystemRamFreeInfo = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+           ChromeOSDeviceSystemRamFreeReportsItem
+         where
+        parseJSON
+          = withObject "ChromeOSDeviceSystemRamFreeReportsItem"
+              (\ o ->
+                 ChromeOSDeviceSystemRamFreeReportsItem' <$>
+                   (o .:? "reportTime") <*>
+                     (o .:? "systemRamFreeInfo" .!= mempty))
+
+instance ToJSON
+           ChromeOSDeviceSystemRamFreeReportsItem
+         where
+        toJSON ChromeOSDeviceSystemRamFreeReportsItem'{..}
+          = object
+              (catMaybes
+                 [("reportTime" .=) <$> _codsrfriReportTime,
+                  ("systemRamFreeInfo" .=) <$>
+                    _codsrfriSystemRamFreeInfo])
+
+-- | JSON template for a POSIX account entry. Description of the field
+-- family: go\/fbs-posix.
+--
+-- /See:/ 'userPosixAccount' smart constructor.
+data UserPosixAccount =
+  UserPosixAccount'
+    { _upaGecos               :: !(Maybe Text)
+    , _upaUid                 :: !(Maybe (Textual Word64))
+    , _upaUsername            :: !(Maybe Text)
+    , _upaShell               :: !(Maybe Text)
+    , _upaPrimary             :: !(Maybe Bool)
+    , _upaAccountId           :: !(Maybe Text)
+    , _upaGid                 :: !(Maybe (Textual Word64))
+    , _upaOperatingSystemType :: !(Maybe Text)
+    , _upaSystemId            :: !(Maybe Text)
+    , _upaHomeDirectory       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UserPosixAccount' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'upaGecos'
+--
+-- * 'upaUid'
+--
+-- * 'upaUsername'
+--
+-- * 'upaShell'
+--
+-- * 'upaPrimary'
+--
+-- * 'upaAccountId'
+--
+-- * 'upaGid'
+--
+-- * 'upaOperatingSystemType'
+--
+-- * 'upaSystemId'
+--
+-- * 'upaHomeDirectory'
+userPosixAccount
+    :: UserPosixAccount
+userPosixAccount =
+  UserPosixAccount'
+    { _upaGecos = Nothing
+    , _upaUid = Nothing
+    , _upaUsername = Nothing
+    , _upaShell = Nothing
+    , _upaPrimary = Nothing
+    , _upaAccountId = Nothing
+    , _upaGid = Nothing
+    , _upaOperatingSystemType = Nothing
+    , _upaSystemId = Nothing
+    , _upaHomeDirectory = Nothing
+    }
+
+
+-- | The GECOS (user information) for this account.
+upaGecos :: Lens' UserPosixAccount (Maybe Text)
+upaGecos = lens _upaGecos (\ s a -> s{_upaGecos = a})
+
+-- | The POSIX compliant user ID.
+upaUid :: Lens' UserPosixAccount (Maybe Word64)
+upaUid
+  = lens _upaUid (\ s a -> s{_upaUid = a}) .
+      mapping _Coerce
+
+-- | The username of the account.
+upaUsername :: Lens' UserPosixAccount (Maybe Text)
+upaUsername
+  = lens _upaUsername (\ s a -> s{_upaUsername = a})
+
+-- | The path to the login shell for this account.
+upaShell :: Lens' UserPosixAccount (Maybe Text)
+upaShell = lens _upaShell (\ s a -> s{_upaShell = a})
+
+-- | If this is user\'s primary account within the SystemId.
+upaPrimary :: Lens' UserPosixAccount (Maybe Bool)
+upaPrimary
+  = lens _upaPrimary (\ s a -> s{_upaPrimary = a})
+
+-- | A POSIX account field identifier.
+upaAccountId :: Lens' UserPosixAccount (Maybe Text)
+upaAccountId
+  = lens _upaAccountId (\ s a -> s{_upaAccountId = a})
+
+-- | The default group ID.
+upaGid :: Lens' UserPosixAccount (Maybe Word64)
+upaGid
+  = lens _upaGid (\ s a -> s{_upaGid = a}) .
+      mapping _Coerce
+
+-- | The operating system type for this account.
+upaOperatingSystemType :: Lens' UserPosixAccount (Maybe Text)
+upaOperatingSystemType
+  = lens _upaOperatingSystemType
+      (\ s a -> s{_upaOperatingSystemType = a})
+
+-- | System identifier for which account Username or Uid apply to.
+upaSystemId :: Lens' UserPosixAccount (Maybe Text)
+upaSystemId
+  = lens _upaSystemId (\ s a -> s{_upaSystemId = a})
+
+-- | The path to the home directory for this account.
+upaHomeDirectory :: Lens' UserPosixAccount (Maybe Text)
+upaHomeDirectory
+  = lens _upaHomeDirectory
+      (\ s a -> s{_upaHomeDirectory = a})
+
+instance FromJSON UserPosixAccount where
+        parseJSON
+          = withObject "UserPosixAccount"
+              (\ o ->
+                 UserPosixAccount' <$>
+                   (o .:? "gecos") <*> (o .:? "uid") <*>
+                     (o .:? "username")
+                     <*> (o .:? "shell")
+                     <*> (o .:? "primary")
+                     <*> (o .:? "accountId")
+                     <*> (o .:? "gid")
+                     <*> (o .:? "operatingSystemType")
+                     <*> (o .:? "systemId")
+                     <*> (o .:? "homeDirectory"))
+
+instance ToJSON UserPosixAccount where
+        toJSON UserPosixAccount'{..}
+          = object
+              (catMaybes
+                 [("gecos" .=) <$> _upaGecos, ("uid" .=) <$> _upaUid,
+                  ("username" .=) <$> _upaUsername,
+                  ("shell" .=) <$> _upaShell,
+                  ("primary" .=) <$> _upaPrimary,
+                  ("accountId" .=) <$> _upaAccountId,
+                  ("gid" .=) <$> _upaGid,
+                  ("operatingSystemType" .=) <$>
+                    _upaOperatingSystemType,
+                  ("systemId" .=) <$> _upaSystemId,
+                  ("homeDirectory" .=) <$> _upaHomeDirectory])
+
+-- | JSON template for a \"feature instance\".
+--
+-- /See:/ 'featureInstance' smart constructor.
+newtype FeatureInstance =
+  FeatureInstance'
+    { _fiFeature :: Maybe Feature
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FeatureInstance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fiFeature'
+featureInstance
+    :: FeatureInstance
+featureInstance = FeatureInstance' {_fiFeature = Nothing}
+
+
+-- | The feature that this is an instance of. A calendar resource may have
+-- multiple instances of a feature.
+fiFeature :: Lens' FeatureInstance (Maybe Feature)
+fiFeature
+  = lens _fiFeature (\ s a -> s{_fiFeature = a})
+
+instance FromJSON FeatureInstance where
+        parseJSON
+          = withObject "FeatureInstance"
+              (\ o -> FeatureInstance' <$> (o .:? "feature"))
+
+instance ToJSON FeatureInstance where
+        toJSON FeatureInstance'{..}
+          = object (catMaybes [("feature" .=) <$> _fiFeature])
+
+-- | JSON template for Mobile Device resource in Directory API.
+--
+-- /See:/ 'mobileDevice' smart constructor.
+data MobileDevice =
+  MobileDevice'
+    { _mobEmail                          :: !(Maybe [Text])
+    , _mobStatus                         :: !(Maybe Text)
+    , _mobPrivilege                      :: !(Maybe Text)
+    , _mobEtag                           :: !(Maybe Text)
+    , _mobResourceId                     :: !(Maybe Text)
+    , _mobManufacturer                   :: !(Maybe Text)
+    , _mobBuildNumber                    :: !(Maybe Text)
+    , _mobManagedAccountIsOnOwnerProFile :: !(Maybe Bool)
+    , _mobLastSync                       :: !(Maybe DateTime')
+    , _mobOtherAccountsInfo              :: !(Maybe [Text])
+    , _mobKind                           :: !Text
+    , _mobAdbStatus                      :: !(Maybe Bool)
+    , _mobReleaseVersion                 :: !(Maybe Text)
+    , _mobBrand                          :: !(Maybe Text)
+    , _mobSecurityPatchLevel             :: !(Maybe (Textual Int64))
+    , _mobNetworkOperator                :: !(Maybe Text)
+    , _mobKernelVersion                  :: !(Maybe Text)
+    , _mobOS                             :: !(Maybe Text)
+    , _mobName                           :: !(Maybe [Text])
+    , _mobModel                          :: !(Maybe Text)
+    , _mobDeveloperOptionsStatus         :: !(Maybe Bool)
+    , _mobUnknownSourcesStatus           :: !(Maybe Bool)
+    , _mobMeid                           :: !(Maybe Text)
+    , _mobBootLoaderVersion              :: !(Maybe Text)
+    , _mobDeviceId                       :: !(Maybe Text)
+    , _mobFirstSync                      :: !(Maybe DateTime')
+    , _mobUserAgent                      :: !(Maybe Text)
+    , _mobImei                           :: !(Maybe Text)
+    , _mobType                           :: !(Maybe Text)
+    , _mobWifiMACAddress                 :: !(Maybe Text)
+    , _mobEncryptionStatus               :: !(Maybe Text)
+    , _mobSerialNumber                   :: !(Maybe Text)
+    , _mobDevicePasswordStatus           :: !(Maybe Text)
+    , _mobHardwareId                     :: !(Maybe Text)
+    , _mobBasebandVersion                :: !(Maybe Text)
+    , _mobSupportsWorkProFile            :: !(Maybe Bool)
+    , _mobHardware                       :: !(Maybe Text)
+    , _mobDeviceCompromisedStatus        :: !(Maybe Text)
+    , _mobApplications                   :: !(Maybe [MobileDeviceApplicationsItem])
+    , _mobDefaultLanguage                :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MobileDevice' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mobEmail'
+--
+-- * 'mobStatus'
+--
+-- * 'mobPrivilege'
+--
+-- * 'mobEtag'
+--
+-- * 'mobResourceId'
+--
+-- * 'mobManufacturer'
+--
+-- * 'mobBuildNumber'
+--
+-- * 'mobManagedAccountIsOnOwnerProFile'
+--
+-- * 'mobLastSync'
+--
+-- * 'mobOtherAccountsInfo'
+--
+-- * 'mobKind'
+--
+-- * 'mobAdbStatus'
+--
+-- * 'mobReleaseVersion'
+--
+-- * 'mobBrand'
+--
+-- * 'mobSecurityPatchLevel'
+--
+-- * 'mobNetworkOperator'
+--
+-- * 'mobKernelVersion'
+--
+-- * 'mobOS'
+--
+-- * 'mobName'
+--
+-- * 'mobModel'
+--
+-- * 'mobDeveloperOptionsStatus'
+--
+-- * 'mobUnknownSourcesStatus'
+--
+-- * 'mobMeid'
+--
+-- * 'mobBootLoaderVersion'
+--
+-- * 'mobDeviceId'
+--
+-- * 'mobFirstSync'
+--
+-- * 'mobUserAgent'
+--
+-- * 'mobImei'
+--
+-- * 'mobType'
+--
+-- * 'mobWifiMACAddress'
+--
+-- * 'mobEncryptionStatus'
+--
+-- * 'mobSerialNumber'
+--
+-- * 'mobDevicePasswordStatus'
+--
+-- * 'mobHardwareId'
+--
+-- * 'mobBasebandVersion'
+--
+-- * 'mobSupportsWorkProFile'
+--
+-- * 'mobHardware'
+--
+-- * 'mobDeviceCompromisedStatus'
+--
+-- * 'mobApplications'
+--
+-- * 'mobDefaultLanguage'
+mobileDevice
+    :: MobileDevice
+mobileDevice =
+  MobileDevice'
+    { _mobEmail = Nothing
+    , _mobStatus = Nothing
+    , _mobPrivilege = Nothing
+    , _mobEtag = Nothing
+    , _mobResourceId = Nothing
+    , _mobManufacturer = Nothing
+    , _mobBuildNumber = Nothing
+    , _mobManagedAccountIsOnOwnerProFile = Nothing
+    , _mobLastSync = Nothing
+    , _mobOtherAccountsInfo = Nothing
+    , _mobKind = "admin#directory#mobiledevice"
+    , _mobAdbStatus = Nothing
+    , _mobReleaseVersion = Nothing
+    , _mobBrand = Nothing
+    , _mobSecurityPatchLevel = Nothing
+    , _mobNetworkOperator = Nothing
+    , _mobKernelVersion = Nothing
+    , _mobOS = Nothing
+    , _mobName = Nothing
+    , _mobModel = Nothing
+    , _mobDeveloperOptionsStatus = Nothing
+    , _mobUnknownSourcesStatus = Nothing
+    , _mobMeid = Nothing
+    , _mobBootLoaderVersion = Nothing
+    , _mobDeviceId = Nothing
+    , _mobFirstSync = Nothing
+    , _mobUserAgent = Nothing
+    , _mobImei = Nothing
+    , _mobType = Nothing
+    , _mobWifiMACAddress = Nothing
+    , _mobEncryptionStatus = Nothing
+    , _mobSerialNumber = Nothing
+    , _mobDevicePasswordStatus = Nothing
+    , _mobHardwareId = Nothing
+    , _mobBasebandVersion = Nothing
+    , _mobSupportsWorkProFile = Nothing
+    , _mobHardware = Nothing
+    , _mobDeviceCompromisedStatus = Nothing
+    , _mobApplications = Nothing
+    , _mobDefaultLanguage = Nothing
+    }
+
+
+-- | List of owner user\'s email addresses (Read-only)
+mobEmail :: Lens' MobileDevice [Text]
+mobEmail
+  = lens _mobEmail (\ s a -> s{_mobEmail = a}) .
+      _Default
+      . _Coerce
+
+-- | Status of the device (Read-only)
+mobStatus :: Lens' MobileDevice (Maybe Text)
+mobStatus
+  = lens _mobStatus (\ s a -> s{_mobStatus = a})
+
+-- | DMAgentPermission (Read-only)
+mobPrivilege :: Lens' MobileDevice (Maybe Text)
+mobPrivilege
+  = lens _mobPrivilege (\ s a -> s{_mobPrivilege = a})
+
+-- | ETag of the resource.
+mobEtag :: Lens' MobileDevice (Maybe Text)
+mobEtag = lens _mobEtag (\ s a -> s{_mobEtag = a})
+
+-- | Unique identifier of Mobile Device (Read-only)
+mobResourceId :: Lens' MobileDevice (Maybe Text)
+mobResourceId
+  = lens _mobResourceId
+      (\ s a -> s{_mobResourceId = a})
+
+-- | Mobile Device manufacturer (Read-only)
+mobManufacturer :: Lens' MobileDevice (Maybe Text)
+mobManufacturer
+  = lens _mobManufacturer
+      (\ s a -> s{_mobManufacturer = a})
+
+-- | Mobile Device Build number (Read-only)
+mobBuildNumber :: Lens' MobileDevice (Maybe Text)
+mobBuildNumber
+  = lens _mobBuildNumber
+      (\ s a -> s{_mobBuildNumber = a})
+
+-- | Boolean indicating if this account is on owner\/primary profile or not
+-- (Read-only)
+mobManagedAccountIsOnOwnerProFile :: Lens' MobileDevice (Maybe Bool)
+mobManagedAccountIsOnOwnerProFile
+  = lens _mobManagedAccountIsOnOwnerProFile
+      (\ s a -> s{_mobManagedAccountIsOnOwnerProFile = a})
+
+-- | Date and time the device was last synchronized with the policy settings
+-- in the G Suite administrator control panel (Read-only)
+mobLastSync :: Lens' MobileDevice (Maybe UTCTime)
+mobLastSync
+  = lens _mobLastSync (\ s a -> s{_mobLastSync = a}) .
+      mapping _DateTime
+
+-- | List of accounts added on device (Read-only)
+mobOtherAccountsInfo :: Lens' MobileDevice [Text]
+mobOtherAccountsInfo
+  = lens _mobOtherAccountsInfo
+      (\ s a -> s{_mobOtherAccountsInfo = a})
+      . _Default
+      . _Coerce
+
+-- | Kind of resource this is.
+mobKind :: Lens' MobileDevice Text
+mobKind = lens _mobKind (\ s a -> s{_mobKind = a})
+
+-- | Adb (USB debugging) enabled or disabled on device (Read-only)
+mobAdbStatus :: Lens' MobileDevice (Maybe Bool)
+mobAdbStatus
+  = lens _mobAdbStatus (\ s a -> s{_mobAdbStatus = a})
+
+-- | Mobile Device release version version (Read-only)
+mobReleaseVersion :: Lens' MobileDevice (Maybe Text)
+mobReleaseVersion
+  = lens _mobReleaseVersion
+      (\ s a -> s{_mobReleaseVersion = a})
+
+-- | Mobile Device Brand (Read-only)
+mobBrand :: Lens' MobileDevice (Maybe Text)
+mobBrand = lens _mobBrand (\ s a -> s{_mobBrand = a})
+
+-- | Mobile Device Security patch level (Read-only)
+mobSecurityPatchLevel :: Lens' MobileDevice (Maybe Int64)
+mobSecurityPatchLevel
+  = lens _mobSecurityPatchLevel
+      (\ s a -> s{_mobSecurityPatchLevel = a})
+      . mapping _Coerce
+
+-- | Mobile Device mobile or network operator (if available) (Read-only)
+mobNetworkOperator :: Lens' MobileDevice (Maybe Text)
+mobNetworkOperator
+  = lens _mobNetworkOperator
+      (\ s a -> s{_mobNetworkOperator = a})
+
+-- | Mobile Device Kernel version (Read-only)
+mobKernelVersion :: Lens' MobileDevice (Maybe Text)
+mobKernelVersion
+  = lens _mobKernelVersion
+      (\ s a -> s{_mobKernelVersion = a})
+
+-- | Name of the mobile operating system
+mobOS :: Lens' MobileDevice (Maybe Text)
+mobOS = lens _mobOS (\ s a -> s{_mobOS = a})
+
+-- | List of owner user\'s names (Read-only)
+mobName :: Lens' MobileDevice [Text]
+mobName
+  = lens _mobName (\ s a -> s{_mobName = a}) . _Default
+      . _Coerce
+
+-- | Name of the model of the device
+mobModel :: Lens' MobileDevice (Maybe Text)
+mobModel = lens _mobModel (\ s a -> s{_mobModel = a})
+
+-- | Developer options enabled or disabled on device (Read-only)
+mobDeveloperOptionsStatus :: Lens' MobileDevice (Maybe Bool)
+mobDeveloperOptionsStatus
+  = lens _mobDeveloperOptionsStatus
+      (\ s a -> s{_mobDeveloperOptionsStatus = a})
+
+-- | Unknown sources enabled or disabled on device (Read-only)
+mobUnknownSourcesStatus :: Lens' MobileDevice (Maybe Bool)
+mobUnknownSourcesStatus
+  = lens _mobUnknownSourcesStatus
+      (\ s a -> s{_mobUnknownSourcesStatus = a})
+
+-- | Mobile Device MEID number (Read-only)
+mobMeid :: Lens' MobileDevice (Maybe Text)
+mobMeid = lens _mobMeid (\ s a -> s{_mobMeid = a})
+
+-- | Mobile Device Bootloader version (Read-only)
+mobBootLoaderVersion :: Lens' MobileDevice (Maybe Text)
+mobBootLoaderVersion
+  = lens _mobBootLoaderVersion
+      (\ s a -> s{_mobBootLoaderVersion = a})
+
+-- | Mobile Device serial number (Read-only)
+mobDeviceId :: Lens' MobileDevice (Maybe Text)
+mobDeviceId
+  = lens _mobDeviceId (\ s a -> s{_mobDeviceId = a})
+
+-- | Date and time the device was first synchronized with the policy settings
+-- in the G Suite administrator control panel (Read-only)
+mobFirstSync :: Lens' MobileDevice (Maybe UTCTime)
+mobFirstSync
+  = lens _mobFirstSync (\ s a -> s{_mobFirstSync = a})
+      . mapping _DateTime
+
+-- | Mobile Device user agent
+mobUserAgent :: Lens' MobileDevice (Maybe Text)
+mobUserAgent
+  = lens _mobUserAgent (\ s a -> s{_mobUserAgent = a})
+
+-- | Mobile Device IMEI number (Read-only)
+mobImei :: Lens' MobileDevice (Maybe Text)
+mobImei = lens _mobImei (\ s a -> s{_mobImei = a})
+
+-- | The type of device (Read-only)
+mobType :: Lens' MobileDevice (Maybe Text)
+mobType = lens _mobType (\ s a -> s{_mobType = a})
+
+-- | Mobile Device WiFi MAC address (Read-only)
+mobWifiMACAddress :: Lens' MobileDevice (Maybe Text)
+mobWifiMACAddress
+  = lens _mobWifiMACAddress
+      (\ s a -> s{_mobWifiMACAddress = a})
+
+-- | Mobile Device Encryption Status (Read-only)
+mobEncryptionStatus :: Lens' MobileDevice (Maybe Text)
+mobEncryptionStatus
+  = lens _mobEncryptionStatus
+      (\ s a -> s{_mobEncryptionStatus = a})
+
+-- | Mobile Device SSN or Serial Number (Read-only)
+mobSerialNumber :: Lens' MobileDevice (Maybe Text)
+mobSerialNumber
+  = lens _mobSerialNumber
+      (\ s a -> s{_mobSerialNumber = a})
+
+-- | DevicePasswordStatus (Read-only)
+mobDevicePasswordStatus :: Lens' MobileDevice (Maybe Text)
+mobDevicePasswordStatus
+  = lens _mobDevicePasswordStatus
+      (\ s a -> s{_mobDevicePasswordStatus = a})
+
+-- | Mobile Device Hardware Id (Read-only)
+mobHardwareId :: Lens' MobileDevice (Maybe Text)
+mobHardwareId
+  = lens _mobHardwareId
+      (\ s a -> s{_mobHardwareId = a})
+
+-- | Mobile Device Baseband version (Read-only)
+mobBasebandVersion :: Lens' MobileDevice (Maybe Text)
+mobBasebandVersion
+  = lens _mobBasebandVersion
+      (\ s a -> s{_mobBasebandVersion = a})
+
+-- | Work profile supported on device (Read-only)
+mobSupportsWorkProFile :: Lens' MobileDevice (Maybe Bool)
+mobSupportsWorkProFile
+  = lens _mobSupportsWorkProFile
+      (\ s a -> s{_mobSupportsWorkProFile = a})
+
+-- | Mobile Device Hardware (Read-only)
+mobHardware :: Lens' MobileDevice (Maybe Text)
+mobHardware
+  = lens _mobHardware (\ s a -> s{_mobHardware = a})
+
+-- | Mobile Device compromised status (Read-only)
+mobDeviceCompromisedStatus :: Lens' MobileDevice (Maybe Text)
+mobDeviceCompromisedStatus
+  = lens _mobDeviceCompromisedStatus
+      (\ s a -> s{_mobDeviceCompromisedStatus = a})
+
+-- | List of applications installed on Mobile Device
+mobApplications :: Lens' MobileDevice [MobileDeviceApplicationsItem]
+mobApplications
+  = lens _mobApplications
+      (\ s a -> s{_mobApplications = a})
+      . _Default
+      . _Coerce
+
+-- | The default locale used on the Mobile Device (Read-only)
+mobDefaultLanguage :: Lens' MobileDevice (Maybe Text)
+mobDefaultLanguage
+  = lens _mobDefaultLanguage
+      (\ s a -> s{_mobDefaultLanguage = a})
+
+instance FromJSON MobileDevice where
+        parseJSON
+          = withObject "MobileDevice"
+              (\ o ->
+                 MobileDevice' <$>
+                   (o .:? "email" .!= mempty) <*> (o .:? "status") <*>
+                     (o .:? "privilege")
+                     <*> (o .:? "etag")
+                     <*> (o .:? "resourceId")
+                     <*> (o .:? "manufacturer")
+                     <*> (o .:? "buildNumber")
+                     <*> (o .:? "managedAccountIsOnOwnerProfile")
+                     <*> (o .:? "lastSync")
+                     <*> (o .:? "otherAccountsInfo" .!= mempty)
+                     <*> (o .:? "kind" .!= "admin#directory#mobiledevice")
+                     <*> (o .:? "adbStatus")
+                     <*> (o .:? "releaseVersion")
+                     <*> (o .:? "brand")
+                     <*> (o .:? "securityPatchLevel")
+                     <*> (o .:? "networkOperator")
+                     <*> (o .:? "kernelVersion")
+                     <*> (o .:? "os")
+                     <*> (o .:? "name" .!= mempty)
+                     <*> (o .:? "model")
+                     <*> (o .:? "developerOptionsStatus")
+                     <*> (o .:? "unknownSourcesStatus")
+                     <*> (o .:? "meid")
+                     <*> (o .:? "bootloaderVersion")
+                     <*> (o .:? "deviceId")
+                     <*> (o .:? "firstSync")
+                     <*> (o .:? "userAgent")
+                     <*> (o .:? "imei")
+                     <*> (o .:? "type")
+                     <*> (o .:? "wifiMacAddress")
+                     <*> (o .:? "encryptionStatus")
+                     <*> (o .:? "serialNumber")
+                     <*> (o .:? "devicePasswordStatus")
+                     <*> (o .:? "hardwareId")
+                     <*> (o .:? "basebandVersion")
+                     <*> (o .:? "supportsWorkProfile")
+                     <*> (o .:? "hardware")
+                     <*> (o .:? "deviceCompromisedStatus")
+                     <*> (o .:? "applications" .!= mempty)
+                     <*> (o .:? "defaultLanguage"))
+
+instance ToJSON MobileDevice where
+        toJSON MobileDevice'{..}
+          = object
+              (catMaybes
+                 [("email" .=) <$> _mobEmail,
+                  ("status" .=) <$> _mobStatus,
+                  ("privilege" .=) <$> _mobPrivilege,
+                  ("etag" .=) <$> _mobEtag,
+                  ("resourceId" .=) <$> _mobResourceId,
+                  ("manufacturer" .=) <$> _mobManufacturer,
+                  ("buildNumber" .=) <$> _mobBuildNumber,
+                  ("managedAccountIsOnOwnerProfile" .=) <$>
+                    _mobManagedAccountIsOnOwnerProFile,
+                  ("lastSync" .=) <$> _mobLastSync,
+                  ("otherAccountsInfo" .=) <$> _mobOtherAccountsInfo,
+                  Just ("kind" .= _mobKind),
+                  ("adbStatus" .=) <$> _mobAdbStatus,
+                  ("releaseVersion" .=) <$> _mobReleaseVersion,
+                  ("brand" .=) <$> _mobBrand,
+                  ("securityPatchLevel" .=) <$> _mobSecurityPatchLevel,
+                  ("networkOperator" .=) <$> _mobNetworkOperator,
+                  ("kernelVersion" .=) <$> _mobKernelVersion,
+                  ("os" .=) <$> _mobOS, ("name" .=) <$> _mobName,
+                  ("model" .=) <$> _mobModel,
+                  ("developerOptionsStatus" .=) <$>
+                    _mobDeveloperOptionsStatus,
+                  ("unknownSourcesStatus" .=) <$>
+                    _mobUnknownSourcesStatus,
+                  ("meid" .=) <$> _mobMeid,
+                  ("bootloaderVersion" .=) <$> _mobBootLoaderVersion,
+                  ("deviceId" .=) <$> _mobDeviceId,
+                  ("firstSync" .=) <$> _mobFirstSync,
+                  ("userAgent" .=) <$> _mobUserAgent,
+                  ("imei" .=) <$> _mobImei, ("type" .=) <$> _mobType,
+                  ("wifiMacAddress" .=) <$> _mobWifiMACAddress,
+                  ("encryptionStatus" .=) <$> _mobEncryptionStatus,
+                  ("serialNumber" .=) <$> _mobSerialNumber,
+                  ("devicePasswordStatus" .=) <$>
+                    _mobDevicePasswordStatus,
+                  ("hardwareId" .=) <$> _mobHardwareId,
+                  ("basebandVersion" .=) <$> _mobBasebandVersion,
+                  ("supportsWorkProfile" .=) <$>
+                    _mobSupportsWorkProFile,
+                  ("hardware" .=) <$> _mobHardware,
+                  ("deviceCompromisedStatus" .=) <$>
+                    _mobDeviceCompromisedStatus,
+                  ("applications" .=) <$> _mobApplications,
+                  ("defaultLanguage" .=) <$> _mobDefaultLanguage])
+
+--
+-- /See:/ 'chromeOSDeviceCPUStatusReportsItem' smart constructor.
+data ChromeOSDeviceCPUStatusReportsItem =
+  ChromeOSDeviceCPUStatusReportsItem'
+    { _codcsriCPUUtilizationPercentageInfo :: !(Maybe [Textual Int32])
+    , _codcsriCPUTemperatureInfo           :: !(Maybe [ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem])
+    , _codcsriReportTime                   :: !(Maybe DateTime')
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ChromeOSDeviceCPUStatusReportsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'codcsriCPUUtilizationPercentageInfo'
+--
+-- * 'codcsriCPUTemperatureInfo'
+--
+-- * 'codcsriReportTime'
+chromeOSDeviceCPUStatusReportsItem
+    :: ChromeOSDeviceCPUStatusReportsItem
+chromeOSDeviceCPUStatusReportsItem =
+  ChromeOSDeviceCPUStatusReportsItem'
+    { _codcsriCPUUtilizationPercentageInfo = Nothing
+    , _codcsriCPUTemperatureInfo = Nothing
+    , _codcsriReportTime = Nothing
+    }
+
+
+codcsriCPUUtilizationPercentageInfo :: Lens' ChromeOSDeviceCPUStatusReportsItem [Int32]
+codcsriCPUUtilizationPercentageInfo
+  = lens _codcsriCPUUtilizationPercentageInfo
+      (\ s a ->
+         s{_codcsriCPUUtilizationPercentageInfo = a})
+      . _Default
+      . _Coerce
+
+-- | List of CPU temperature samples.
+codcsriCPUTemperatureInfo :: Lens' ChromeOSDeviceCPUStatusReportsItem [ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem]
+codcsriCPUTemperatureInfo
+  = lens _codcsriCPUTemperatureInfo
+      (\ s a -> s{_codcsriCPUTemperatureInfo = a})
+      . _Default
+      . _Coerce
+
+-- | Date and time the report was received.
+codcsriReportTime :: Lens' ChromeOSDeviceCPUStatusReportsItem (Maybe UTCTime)
+codcsriReportTime
+  = lens _codcsriReportTime
+      (\ s a -> s{_codcsriReportTime = a})
+      . mapping _DateTime
+
+instance FromJSON ChromeOSDeviceCPUStatusReportsItem
+         where
+        parseJSON
+          = withObject "ChromeOSDeviceCPUStatusReportsItem"
+              (\ o ->
+                 ChromeOSDeviceCPUStatusReportsItem' <$>
+                   (o .:? "cpuUtilizationPercentageInfo" .!= mempty) <*>
+                     (o .:? "cpuTemperatureInfo" .!= mempty)
+                     <*> (o .:? "reportTime"))
+
+instance ToJSON ChromeOSDeviceCPUStatusReportsItem
+         where
+        toJSON ChromeOSDeviceCPUStatusReportsItem'{..}
+          = object
+              (catMaybes
+                 [("cpuUtilizationPercentageInfo" .=) <$>
+                    _codcsriCPUUtilizationPercentageInfo,
+                  ("cpuTemperatureInfo" .=) <$>
+                    _codcsriCPUTemperatureInfo,
+                  ("reportTime" .=) <$> _codcsriReportTime])
+
+-- | JSON template for Member resource in Directory API.
+--
+-- /See:/ 'member' smart constructor.
+data Member =
+  Member'
+    { _memEmail            :: !(Maybe Text)
+    , _memStatus           :: !(Maybe Text)
+    , _memEtag             :: !(Maybe Text)
+    , _memKind             :: !Text
+    , _memDeliverySettings :: !(Maybe Text)
+    , _memRole             :: !(Maybe Text)
+    , _memId               :: !(Maybe Text)
+    , _memType             :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Member' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'memEmail'
+--
+-- * 'memStatus'
+--
+-- * 'memEtag'
+--
+-- * 'memKind'
+--
+-- * 'memDeliverySettings'
+--
+-- * 'memRole'
+--
+-- * 'memId'
+--
+-- * 'memType'
+member
+    :: Member
+member =
+  Member'
+    { _memEmail = Nothing
+    , _memStatus = Nothing
+    , _memEtag = Nothing
+    , _memKind = "admin#directory#member"
+    , _memDeliverySettings = Nothing
+    , _memRole = Nothing
+    , _memId = Nothing
+    , _memType = Nothing
+    }
+
+
+-- | Email of member (Read-only)
+memEmail :: Lens' Member (Maybe Text)
+memEmail = lens _memEmail (\ s a -> s{_memEmail = a})
+
+-- | Status of member (Immutable)
+memStatus :: Lens' Member (Maybe Text)
+memStatus
+  = lens _memStatus (\ s a -> s{_memStatus = a})
+
+-- | ETag of the resource.
+memEtag :: Lens' Member (Maybe Text)
+memEtag = lens _memEtag (\ s a -> s{_memEtag = a})
+
+-- | Kind of resource this is.
+memKind :: Lens' Member Text
+memKind = lens _memKind (\ s a -> s{_memKind = a})
+
+-- | Delivery settings of member
+memDeliverySettings :: Lens' Member (Maybe Text)
+memDeliverySettings
+  = lens _memDeliverySettings
+      (\ s a -> s{_memDeliverySettings = a})
+
+-- | Role of member
+memRole :: Lens' Member (Maybe Text)
+memRole = lens _memRole (\ s a -> s{_memRole = a})
+
+-- | Unique identifier of customer member (Read-only) Unique identifier of
+-- group (Read-only) Unique identifier of member (Read-only)
+memId :: Lens' Member (Maybe Text)
+memId = lens _memId (\ s a -> s{_memId = a})
+
+-- | Type of member (Immutable)
+memType :: Lens' Member (Maybe Text)
+memType = lens _memType (\ s a -> s{_memType = a})
+
+instance FromJSON Member where
+        parseJSON
+          = withObject "Member"
+              (\ o ->
+                 Member' <$>
+                   (o .:? "email") <*> (o .:? "status") <*>
+                     (o .:? "etag")
+                     <*> (o .:? "kind" .!= "admin#directory#member")
+                     <*> (o .:? "delivery_settings")
+                     <*> (o .:? "role")
+                     <*> (o .:? "id")
+                     <*> (o .:? "type"))
+
+instance ToJSON Member where
+        toJSON Member'{..}
+          = object
+              (catMaybes
+                 [("email" .=) <$> _memEmail,
+                  ("status" .=) <$> _memStatus,
+                  ("etag" .=) <$> _memEtag, Just ("kind" .= _memKind),
+                  ("delivery_settings" .=) <$> _memDeliverySettings,
+                  ("role" .=) <$> _memRole, ("id" .=) <$> _memId,
+                  ("type" .=) <$> _memType])
+
+-- | JSON template for App Access Collections Resource object in Directory
+-- API.
+--
+-- /See:/ 'appAccessCollections' smart constructor.
+data AppAccessCollections =
+  AppAccessCollections'
+    { _aacEtag                           :: !(Maybe Text)
+    , _aacResourceId                     :: !(Maybe (Textual Int64))
+    , _aacEnforceSettingsForAndroidDrive :: !(Maybe Bool)
+    , _aacResourceName                   :: !(Maybe Text)
+    , _aacKind                           :: !Text
+    , _aacTrustDomainOwnedApps           :: !(Maybe Bool)
+    , _aacBlockedAPIAccessBuckets        :: !(Maybe [Text])
+    , _aacErrorMessage                   :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AppAccessCollections' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aacEtag'
+--
+-- * 'aacResourceId'
+--
+-- * 'aacEnforceSettingsForAndroidDrive'
+--
+-- * 'aacResourceName'
+--
+-- * 'aacKind'
+--
+-- * 'aacTrustDomainOwnedApps'
+--
+-- * 'aacBlockedAPIAccessBuckets'
+--
+-- * 'aacErrorMessage'
+appAccessCollections
+    :: AppAccessCollections
+appAccessCollections =
+  AppAccessCollections'
+    { _aacEtag = Nothing
+    , _aacResourceId = Nothing
+    , _aacEnforceSettingsForAndroidDrive = Nothing
+    , _aacResourceName = Nothing
+    , _aacKind = "admin#directory#appaccesscollection"
+    , _aacTrustDomainOwnedApps = Nothing
+    , _aacBlockedAPIAccessBuckets = Nothing
+    , _aacErrorMessage = Nothing
+    }
+
+
+-- | ETag of the resource.
+aacEtag :: Lens' AppAccessCollections (Maybe Text)
+aacEtag = lens _aacEtag (\ s a -> s{_aacEtag = a})
+
+-- | Unique ID of app access collection. (Readonly)
+aacResourceId :: Lens' AppAccessCollections (Maybe Int64)
+aacResourceId
+  = lens _aacResourceId
+      (\ s a -> s{_aacResourceId = a})
+      . mapping _Coerce
+
+-- | Boolean to indicate whether to enforce app access settings on Android
+-- Drive or not.
+aacEnforceSettingsForAndroidDrive :: Lens' AppAccessCollections (Maybe Bool)
+aacEnforceSettingsForAndroidDrive
+  = lens _aacEnforceSettingsForAndroidDrive
+      (\ s a -> s{_aacEnforceSettingsForAndroidDrive = a})
+
+-- | Resource name given by the customer while creating\/updating. Should be
+-- unique under given customer.
+aacResourceName :: Lens' AppAccessCollections (Maybe Text)
+aacResourceName
+  = lens _aacResourceName
+      (\ s a -> s{_aacResourceName = a})
+
+-- | Identifies the resource as an app access collection. Value:
+-- admin#directory#appaccesscollection
+aacKind :: Lens' AppAccessCollections Text
+aacKind = lens _aacKind (\ s a -> s{_aacKind = a})
+
+-- | Boolean that indicates whether to trust domain owned apps.
+aacTrustDomainOwnedApps :: Lens' AppAccessCollections (Maybe Bool)
+aacTrustDomainOwnedApps
+  = lens _aacTrustDomainOwnedApps
+      (\ s a -> s{_aacTrustDomainOwnedApps = a})
+
+-- | List of blocked api access buckets.
+aacBlockedAPIAccessBuckets :: Lens' AppAccessCollections [Text]
+aacBlockedAPIAccessBuckets
+  = lens _aacBlockedAPIAccessBuckets
+      (\ s a -> s{_aacBlockedAPIAccessBuckets = a})
+      . _Default
+      . _Coerce
+
+-- | Error message provided by the Admin that will be shown to the user when
+-- an app is blocked.
+aacErrorMessage :: Lens' AppAccessCollections (Maybe Text)
+aacErrorMessage
+  = lens _aacErrorMessage
+      (\ s a -> s{_aacErrorMessage = a})
+
+instance FromJSON AppAccessCollections where
+        parseJSON
+          = withObject "AppAccessCollections"
+              (\ o ->
+                 AppAccessCollections' <$>
+                   (o .:? "etag") <*> (o .:? "resourceId") <*>
+                     (o .:? "enforceSettingsForAndroidDrive")
+                     <*> (o .:? "resourceName")
+                     <*>
+                     (o .:? "kind" .!=
+                        "admin#directory#appaccesscollection")
+                     <*> (o .:? "trustDomainOwnedApps")
+                     <*> (o .:? "blockedApiAccessBuckets" .!= mempty)
+                     <*> (o .:? "errorMessage"))
+
+instance ToJSON AppAccessCollections where
+        toJSON AppAccessCollections'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _aacEtag,
+                  ("resourceId" .=) <$> _aacResourceId,
+                  ("enforceSettingsForAndroidDrive" .=) <$>
+                    _aacEnforceSettingsForAndroidDrive,
+                  ("resourceName" .=) <$> _aacResourceName,
+                  Just ("kind" .= _aacKind),
+                  ("trustDomainOwnedApps" .=) <$>
+                    _aacTrustDomainOwnedApps,
+                  ("blockedApiAccessBuckets" .=) <$>
+                    _aacBlockedAPIAccessBuckets,
+                  ("errorMessage" .=) <$> _aacErrorMessage])
+
+-- | JSON template for a set of custom properties (i.e. all fields in a
+-- particular schema)
+--
+-- /See:/ 'userCustomProperties' smart constructor.
+newtype UserCustomProperties =
+  UserCustomProperties'
+    { _ucpAddtional :: HashMap Text JSONValue
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UserCustomProperties' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ucpAddtional'
+userCustomProperties
+    :: HashMap Text JSONValue -- ^ 'ucpAddtional'
+    -> UserCustomProperties
+userCustomProperties pUcpAddtional_ =
+  UserCustomProperties' {_ucpAddtional = _Coerce # pUcpAddtional_}
+
+
+ucpAddtional :: Lens' UserCustomProperties (HashMap Text JSONValue)
+ucpAddtional
+  = lens _ucpAddtional (\ s a -> s{_ucpAddtional = a})
+      . _Coerce
+
+instance FromJSON UserCustomProperties where
+        parseJSON
+          = withObject "UserCustomProperties"
+              (\ o ->
+                 UserCustomProperties' <$> (parseJSONObject o))
+
+instance ToJSON UserCustomProperties where
+        toJSON = toJSON . _ucpAddtional
+
+-- | JSON template for a language entry.
+--
+-- /See:/ 'userLanguage' smart constructor.
+data UserLanguage =
+  UserLanguage'
+    { _ulLanguageCode   :: !(Maybe Text)
+    , _ulCustomLanguage :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UserLanguage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ulLanguageCode'
+--
+-- * 'ulCustomLanguage'
+userLanguage
+    :: UserLanguage
+userLanguage =
+  UserLanguage' {_ulLanguageCode = Nothing, _ulCustomLanguage = Nothing}
+
+
+-- | Language Code. Should be used for storing Google III LanguageCode string
+-- representation for language. Illegal values cause SchemaException.
+ulLanguageCode :: Lens' UserLanguage (Maybe Text)
+ulLanguageCode
+  = lens _ulLanguageCode
+      (\ s a -> s{_ulLanguageCode = a})
+
+-- | Other language. User can provide own language name if there is no
+-- corresponding Google III language code. If this is set LanguageCode
+-- can\'t be set
+ulCustomLanguage :: Lens' UserLanguage (Maybe Text)
+ulCustomLanguage
+  = lens _ulCustomLanguage
+      (\ s a -> s{_ulCustomLanguage = a})
+
+instance FromJSON UserLanguage where
+        parseJSON
+          = withObject "UserLanguage"
+              (\ o ->
+                 UserLanguage' <$>
+                   (o .:? "languageCode") <*> (o .:? "customLanguage"))
+
+instance ToJSON UserLanguage where
+        toJSON UserLanguage'{..}
+          = object
+              (catMaybes
+                 [("languageCode" .=) <$> _ulLanguageCode,
+                  ("customLanguage" .=) <$> _ulCustomLanguage])
+
+-- | JSON template for Domain object in Directory API.
+--
+-- /See:/ 'domains' smart constructor.
+data Domains =
+  Domains'
+    { _domCreationTime  :: !(Maybe (Textual Int64))
+    , _domEtag          :: !(Maybe Text)
+    , _domKind          :: !Text
+    , _domDomainAliases :: !(Maybe [DomainAlias])
+    , _domVerified      :: !(Maybe Bool)
+    , _domDomainName    :: !(Maybe Text)
+    , _domIsPrimary     :: !(Maybe Bool)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Domains' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'domCreationTime'
+--
+-- * 'domEtag'
+--
+-- * 'domKind'
+--
+-- * 'domDomainAliases'
+--
+-- * 'domVerified'
+--
+-- * 'domDomainName'
+--
+-- * 'domIsPrimary'
+domains
+    :: Domains
+domains =
+  Domains'
+    { _domCreationTime = Nothing
+    , _domEtag = Nothing
+    , _domKind = "admin#directory#domain"
+    , _domDomainAliases = Nothing
+    , _domVerified = Nothing
+    , _domDomainName = Nothing
+    , _domIsPrimary = Nothing
+    }
+
+
+-- | Creation time of the domain. (Read-only).
+domCreationTime :: Lens' Domains (Maybe Int64)
+domCreationTime
+  = lens _domCreationTime
+      (\ s a -> s{_domCreationTime = a})
+      . mapping _Coerce
+
+-- | ETag of the resource.
+domEtag :: Lens' Domains (Maybe Text)
+domEtag = lens _domEtag (\ s a -> s{_domEtag = a})
+
+-- | Kind of resource this is.
+domKind :: Lens' Domains Text
+domKind = lens _domKind (\ s a -> s{_domKind = a})
+
+-- | List of domain alias objects. (Read-only)
+domDomainAliases :: Lens' Domains [DomainAlias]
+domDomainAliases
+  = lens _domDomainAliases
+      (\ s a -> s{_domDomainAliases = a})
+      . _Default
+      . _Coerce
+
+-- | Indicates the verification state of a domain. (Read-only).
+domVerified :: Lens' Domains (Maybe Bool)
+domVerified
+  = lens _domVerified (\ s a -> s{_domVerified = a})
+
+-- | The domain name of the customer.
+domDomainName :: Lens' Domains (Maybe Text)
+domDomainName
+  = lens _domDomainName
+      (\ s a -> s{_domDomainName = a})
+
+-- | Indicates if the domain is a primary domain (Read-only).
+domIsPrimary :: Lens' Domains (Maybe Bool)
+domIsPrimary
+  = lens _domIsPrimary (\ s a -> s{_domIsPrimary = a})
+
+instance FromJSON Domains where
+        parseJSON
+          = withObject "Domains"
+              (\ o ->
+                 Domains' <$>
+                   (o .:? "creationTime") <*> (o .:? "etag") <*>
+                     (o .:? "kind" .!= "admin#directory#domain")
+                     <*> (o .:? "domainAliases" .!= mempty)
+                     <*> (o .:? "verified")
+                     <*> (o .:? "domainName")
+                     <*> (o .:? "isPrimary"))
+
+instance ToJSON Domains where
+        toJSON Domains'{..}
+          = object
+              (catMaybes
+                 [("creationTime" .=) <$> _domCreationTime,
+                  ("etag" .=) <$> _domEtag, Just ("kind" .= _domKind),
+                  ("domainAliases" .=) <$> _domDomainAliases,
+                  ("verified" .=) <$> _domVerified,
+                  ("domainName" .=) <$> _domDomainName,
+                  ("isPrimary" .=) <$> _domIsPrimary])
+
+-- | JSON template for Calendar Resource List Response object in Directory
+-- API.
+--
+-- /See:/ 'calendarResources' smart constructor.
+data CalendarResources =
+  CalendarResources'
+    { _crsEtag          :: !(Maybe Text)
+    , _crsNextPageToken :: !(Maybe Text)
+    , _crsKind          :: !Text
+    , _crsItems         :: !(Maybe [CalendarResource])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CalendarResources' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crsEtag'
+--
+-- * 'crsNextPageToken'
+--
+-- * 'crsKind'
+--
+-- * 'crsItems'
+calendarResources
+    :: CalendarResources
+calendarResources =
+  CalendarResources'
+    { _crsEtag = Nothing
+    , _crsNextPageToken = Nothing
+    , _crsKind = "admin#directory#resources#calendars#calendarResourcesList"
+    , _crsItems = Nothing
+    }
+
+
+-- | ETag of the resource.
+crsEtag :: Lens' CalendarResources (Maybe Text)
+crsEtag = lens _crsEtag (\ s a -> s{_crsEtag = a})
+
+-- | The continuation token, used to page through large result sets. Provide
+-- this value in a subsequent request to return the next page of results.
+crsNextPageToken :: Lens' CalendarResources (Maybe Text)
+crsNextPageToken
+  = lens _crsNextPageToken
+      (\ s a -> s{_crsNextPageToken = a})
+
+-- | Identifies this as a collection of CalendarResources. This is always
+-- admin#directory#resources#calendars#calendarResourcesList.
+crsKind :: Lens' CalendarResources Text
+crsKind = lens _crsKind (\ s a -> s{_crsKind = a})
+
+-- | The CalendarResources in this page of results.
+crsItems :: Lens' CalendarResources [CalendarResource]
+crsItems
+  = lens _crsItems (\ s a -> s{_crsItems = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON CalendarResources where
+        parseJSON
+          = withObject "CalendarResources"
+              (\ o ->
+                 CalendarResources' <$>
+                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "admin#directory#resources#calendars#calendarResourcesList")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON CalendarResources where
+        toJSON CalendarResources'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _crsEtag,
+                  ("nextPageToken" .=) <$> _crsNextPageToken,
+                  Just ("kind" .= _crsKind),
+                  ("items" .=) <$> _crsItems])
+
+-- | Template for notifications list response.
+--
+-- /See:/ 'notifications' smart constructor.
+data Notifications =
+  Notifications'
+    { _notEtag                     :: !(Maybe Text)
+    , _notNextPageToken            :: !(Maybe Text)
+    , _notKind                     :: !Text
+    , _notItems                    :: !(Maybe [Notification])
+    , _notUnreadNotificationsCount :: !(Maybe (Textual Int32))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Notifications' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'notEtag'
+--
+-- * 'notNextPageToken'
+--
+-- * 'notKind'
+--
+-- * 'notItems'
+--
+-- * 'notUnreadNotificationsCount'
+notifications
+    :: Notifications
+notifications =
+  Notifications'
+    { _notEtag = Nothing
+    , _notNextPageToken = Nothing
+    , _notKind = "admin#directory#notifications"
+    , _notItems = Nothing
+    , _notUnreadNotificationsCount = Nothing
+    }
+
+
+-- | ETag of the resource.
+notEtag :: Lens' Notifications (Maybe Text)
+notEtag = lens _notEtag (\ s a -> s{_notEtag = a})
+
+-- | Token for fetching the next page of notifications.
+notNextPageToken :: Lens' Notifications (Maybe Text)
+notNextPageToken
+  = lens _notNextPageToken
+      (\ s a -> s{_notNextPageToken = a})
+
+-- | The type of the resource.
+notKind :: Lens' Notifications Text
+notKind = lens _notKind (\ s a -> s{_notKind = a})
+
+-- | List of notifications in this page.
+notItems :: Lens' Notifications [Notification]
+notItems
+  = lens _notItems (\ s a -> s{_notItems = a}) .
+      _Default
+      . _Coerce
+
+-- | Number of unread notification for the domain.
+notUnreadNotificationsCount :: Lens' Notifications (Maybe Int32)
+notUnreadNotificationsCount
+  = lens _notUnreadNotificationsCount
+      (\ s a -> s{_notUnreadNotificationsCount = a})
+      . mapping _Coerce
+
+instance FromJSON Notifications where
+        parseJSON
+          = withObject "Notifications"
+              (\ o ->
+                 Notifications' <$>
+                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "admin#directory#notifications")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "unreadNotificationsCount"))
+
+instance ToJSON Notifications where
+        toJSON Notifications'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _notEtag,
+                  ("nextPageToken" .=) <$> _notNextPageToken,
+                  Just ("kind" .= _notKind),
+                  ("items" .=) <$> _notItems,
+                  ("unreadNotificationsCount" .=) <$>
+                    _notUnreadNotificationsCount])
+
+-- | Indexing spec for a numeric field. By default, only exact match queries
+-- will be supported for numeric fields. Setting the numericIndexingSpec
+-- allows range queries to be supported.
+--
+-- /See:/ 'schemaFieldSpecNumericIndexingSpec' smart constructor.
+data SchemaFieldSpecNumericIndexingSpec =
+  SchemaFieldSpecNumericIndexingSpec'
+    { _sfsnisMaxValue :: !(Maybe (Textual Double))
+    , _sfsnisMinValue :: !(Maybe (Textual Double))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SchemaFieldSpecNumericIndexingSpec' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sfsnisMaxValue'
+--
+-- * 'sfsnisMinValue'
+schemaFieldSpecNumericIndexingSpec
+    :: SchemaFieldSpecNumericIndexingSpec
+schemaFieldSpecNumericIndexingSpec =
+  SchemaFieldSpecNumericIndexingSpec'
+    {_sfsnisMaxValue = Nothing, _sfsnisMinValue = Nothing}
+
+
+-- | Maximum value of this field. This is meant to be indicative rather than
+-- enforced. Values outside this range will still be indexed, but search
+-- may not be as performant.
+sfsnisMaxValue :: Lens' SchemaFieldSpecNumericIndexingSpec (Maybe Double)
+sfsnisMaxValue
+  = lens _sfsnisMaxValue
+      (\ s a -> s{_sfsnisMaxValue = a})
+      . mapping _Coerce
+
+-- | Minimum value of this field. This is meant to be indicative rather than
+-- enforced. Values outside this range will still be indexed, but search
+-- may not be as performant.
+sfsnisMinValue :: Lens' SchemaFieldSpecNumericIndexingSpec (Maybe Double)
+sfsnisMinValue
+  = lens _sfsnisMinValue
+      (\ s a -> s{_sfsnisMinValue = a})
+      . mapping _Coerce
+
+instance FromJSON SchemaFieldSpecNumericIndexingSpec
+         where
+        parseJSON
+          = withObject "SchemaFieldSpecNumericIndexingSpec"
+              (\ o ->
+                 SchemaFieldSpecNumericIndexingSpec' <$>
+                   (o .:? "maxValue") <*> (o .:? "minValue"))
+
+instance ToJSON SchemaFieldSpecNumericIndexingSpec
+         where
+        toJSON SchemaFieldSpecNumericIndexingSpec'{..}
+          = object
+              (catMaybes
+                 [("maxValue" .=) <$> _sfsnisMaxValue,
+                  ("minValue" .=) <$> _sfsnisMinValue])
+
+-- | JSON request template for firing commands on Mobile Device in Directory
+-- Devices API.
+--
+-- /See:/ 'mobileDeviceAction' smart constructor.
+newtype MobileDeviceAction =
+  MobileDeviceAction'
+    { _mdaAction :: Maybe Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MobileDeviceAction' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mdaAction'
+mobileDeviceAction
+    :: MobileDeviceAction
+mobileDeviceAction = MobileDeviceAction' {_mdaAction = Nothing}
+
+
+-- | Action to be taken on the Mobile Device
+mdaAction :: Lens' MobileDeviceAction (Maybe Text)
+mdaAction
+  = lens _mdaAction (\ s a -> s{_mdaAction = a})
+
+instance FromJSON MobileDeviceAction where
+        parseJSON
+          = withObject "MobileDeviceAction"
+              (\ o -> MobileDeviceAction' <$> (o .:? "action"))
+
+instance ToJSON MobileDeviceAction where
+        toJSON MobileDeviceAction'{..}
+          = object (catMaybes [("action" .=) <$> _mdaAction])
+
+-- | JSON template for FieldSpec resource for Schemas in Directory API.
+--
+-- /See:/ 'schemaFieldSpec' smart constructor.
+data SchemaFieldSpec =
+  SchemaFieldSpec'
+    { _sfsEtag                :: !(Maybe Text)
+    , _sfsKind                :: !Text
+    , _sfsNumericIndexingSpec :: !(Maybe SchemaFieldSpecNumericIndexingSpec)
+    , _sfsReadAccessType      :: !Text
+    , _sfsFieldId             :: !(Maybe Text)
+    , _sfsIndexed             :: !Bool
+    , _sfsFieldType           :: !(Maybe Text)
+    , _sfsFieldName           :: !(Maybe Text)
+    , _sfsDisplayName         :: !(Maybe Text)
+    , _sfsMultiValued         :: !(Maybe Bool)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SchemaFieldSpec' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sfsEtag'
+--
+-- * 'sfsKind'
+--
+-- * 'sfsNumericIndexingSpec'
+--
+-- * 'sfsReadAccessType'
+--
+-- * 'sfsFieldId'
+--
+-- * 'sfsIndexed'
+--
+-- * 'sfsFieldType'
+--
+-- * 'sfsFieldName'
+--
+-- * 'sfsDisplayName'
+--
+-- * 'sfsMultiValued'
+schemaFieldSpec
+    :: SchemaFieldSpec
+schemaFieldSpec =
+  SchemaFieldSpec'
+    { _sfsEtag = Nothing
+    , _sfsKind = "admin#directory#schema#fieldspec"
+    , _sfsNumericIndexingSpec = Nothing
+    , _sfsReadAccessType = "ALL_DOMAIN_USERS"
+    , _sfsFieldId = Nothing
+    , _sfsIndexed = True
+    , _sfsFieldType = Nothing
+    , _sfsFieldName = Nothing
+    , _sfsDisplayName = Nothing
+    , _sfsMultiValued = Nothing
+    }
+
+
+-- | ETag of the resource.
+sfsEtag :: Lens' SchemaFieldSpec (Maybe Text)
+sfsEtag = lens _sfsEtag (\ s a -> s{_sfsEtag = a})
+
+-- | Kind of resource this is.
+sfsKind :: Lens' SchemaFieldSpec Text
+sfsKind = lens _sfsKind (\ s a -> s{_sfsKind = a})
+
+-- | Indexing spec for a numeric field. By default, only exact match queries
+-- will be supported for numeric fields. Setting the numericIndexingSpec
+-- allows range queries to be supported.
+sfsNumericIndexingSpec :: Lens' SchemaFieldSpec (Maybe SchemaFieldSpecNumericIndexingSpec)
+sfsNumericIndexingSpec
+  = lens _sfsNumericIndexingSpec
+      (\ s a -> s{_sfsNumericIndexingSpec = a})
+
+-- | Read ACLs on the field specifying who can view values of this field.
+-- Valid values are \"ALL_DOMAIN_USERS\" and \"ADMINS_AND_SELF\".
+sfsReadAccessType :: Lens' SchemaFieldSpec Text
+sfsReadAccessType
+  = lens _sfsReadAccessType
+      (\ s a -> s{_sfsReadAccessType = a})
+
+-- | Unique identifier of Field (Read-only)
+sfsFieldId :: Lens' SchemaFieldSpec (Maybe Text)
+sfsFieldId
+  = lens _sfsFieldId (\ s a -> s{_sfsFieldId = a})
+
+-- | Boolean specifying whether the field is indexed or not.
+sfsIndexed :: Lens' SchemaFieldSpec Bool
+sfsIndexed
+  = lens _sfsIndexed (\ s a -> s{_sfsIndexed = a})
+
+-- | Type of the field.
+sfsFieldType :: Lens' SchemaFieldSpec (Maybe Text)
+sfsFieldType
+  = lens _sfsFieldType (\ s a -> s{_sfsFieldType = a})
+
+-- | Name of the field.
+sfsFieldName :: Lens' SchemaFieldSpec (Maybe Text)
+sfsFieldName
+  = lens _sfsFieldName (\ s a -> s{_sfsFieldName = a})
+
+-- | Display Name of the field.
+sfsDisplayName :: Lens' SchemaFieldSpec (Maybe Text)
+sfsDisplayName
+  = lens _sfsDisplayName
+      (\ s a -> s{_sfsDisplayName = a})
+
+-- | Boolean specifying whether this is a multi-valued field or not.
+sfsMultiValued :: Lens' SchemaFieldSpec (Maybe Bool)
+sfsMultiValued
+  = lens _sfsMultiValued
+      (\ s a -> s{_sfsMultiValued = a})
+
+instance FromJSON SchemaFieldSpec where
+        parseJSON
+          = withObject "SchemaFieldSpec"
+              (\ o ->
+                 SchemaFieldSpec' <$>
+                   (o .:? "etag") <*>
+                     (o .:? "kind" .!= "admin#directory#schema#fieldspec")
+                     <*> (o .:? "numericIndexingSpec")
+                     <*> (o .:? "readAccessType" .!= "ALL_DOMAIN_USERS")
+                     <*> (o .:? "fieldId")
+                     <*> (o .:? "indexed" .!= True)
+                     <*> (o .:? "fieldType")
+                     <*> (o .:? "fieldName")
+                     <*> (o .:? "displayName")
+                     <*> (o .:? "multiValued"))
+
+instance ToJSON SchemaFieldSpec where
+        toJSON SchemaFieldSpec'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _sfsEtag, Just ("kind" .= _sfsKind),
+                  ("numericIndexingSpec" .=) <$>
+                    _sfsNumericIndexingSpec,
+                  Just ("readAccessType" .= _sfsReadAccessType),
+                  ("fieldId" .=) <$> _sfsFieldId,
+                  Just ("indexed" .= _sfsIndexed),
+                  ("fieldType" .=) <$> _sfsFieldType,
+                  ("fieldName" .=) <$> _sfsFieldName,
+                  ("displayName" .=) <$> _sfsDisplayName,
+                  ("multiValued" .=) <$> _sfsMultiValued])
+
+-- | JSON response template for List Chrome OS Devices operation in Directory
+-- API.
+--
+-- /See:/ 'chromeOSDevices' smart constructor.
+data ChromeOSDevices =
+  ChromeOSDevices'
+    { _cosdEtag            :: !(Maybe Text)
+    , _cosdNextPageToken   :: !(Maybe Text)
+    , _cosdKind            :: !Text
+    , _cosdChromeosDevices :: !(Maybe [ChromeOSDevice])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ChromeOSDevices' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cosdEtag'
+--
+-- * 'cosdNextPageToken'
+--
+-- * 'cosdKind'
+--
+-- * 'cosdChromeosDevices'
+chromeOSDevices
+    :: ChromeOSDevices
+chromeOSDevices =
+  ChromeOSDevices'
+    { _cosdEtag = Nothing
+    , _cosdNextPageToken = Nothing
+    , _cosdKind = "admin#directory#chromeosdevices"
+    , _cosdChromeosDevices = Nothing
+    }
+
+
+-- | ETag of the resource.
+cosdEtag :: Lens' ChromeOSDevices (Maybe Text)
+cosdEtag = lens _cosdEtag (\ s a -> s{_cosdEtag = a})
+
+-- | Token used to access next page of this result.
+cosdNextPageToken :: Lens' ChromeOSDevices (Maybe Text)
+cosdNextPageToken
+  = lens _cosdNextPageToken
+      (\ s a -> s{_cosdNextPageToken = a})
+
+-- | Kind of resource this is.
+cosdKind :: Lens' ChromeOSDevices Text
+cosdKind = lens _cosdKind (\ s a -> s{_cosdKind = a})
+
+-- | List of Chrome OS Device objects.
+cosdChromeosDevices :: Lens' ChromeOSDevices [ChromeOSDevice]
+cosdChromeosDevices
+  = lens _cosdChromeosDevices
+      (\ s a -> s{_cosdChromeosDevices = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ChromeOSDevices where
+        parseJSON
+          = withObject "ChromeOSDevices"
+              (\ o ->
+                 ChromeOSDevices' <$>
+                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "admin#directory#chromeosdevices")
+                     <*> (o .:? "chromeosdevices" .!= mempty))
+
+instance ToJSON ChromeOSDevices where
+        toJSON ChromeOSDevices'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _cosdEtag,
+                  ("nextPageToken" .=) <$> _cosdNextPageToken,
+                  Just ("kind" .= _cosdKind),
+                  ("chromeosdevices" .=) <$> _cosdChromeosDevices])
+
+-- | JSON template for Has Member response in Directory API.
+--
+-- /See:/ 'membersHasMember' smart constructor.
+newtype MembersHasMember =
+  MembersHasMember'
+    { _mhmIsMember :: Maybe Bool
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MembersHasMember' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mhmIsMember'
+membersHasMember
+    :: MembersHasMember
+membersHasMember = MembersHasMember' {_mhmIsMember = Nothing}
+
+
+-- | Identifies whether the given user is a member of the group. Membership
+-- can be direct or nested.
+mhmIsMember :: Lens' MembersHasMember (Maybe Bool)
+mhmIsMember
+  = lens _mhmIsMember (\ s a -> s{_mhmIsMember = a})
+
+instance FromJSON MembersHasMember where
+        parseJSON
+          = withObject "MembersHasMember"
+              (\ o -> MembersHasMember' <$> (o .:? "isMember"))
+
+instance ToJSON MembersHasMember where
+        toJSON MembersHasMember'{..}
+          = object
+              (catMaybes [("isMember" .=) <$> _mhmIsMember])
+
+-- | JSON template for Trusted App Ids Resource object in Directory API.
+--
+-- /See:/ 'trustedAppId' smart constructor.
+data TrustedAppId =
+  TrustedAppId'
+    { _taiCertificateHashSHA256 :: !(Maybe Text)
+    , _taiEtag                  :: !(Maybe Text)
+    , _taiKind                  :: !Text
+    , _taiCertificateHashSHA1   :: !(Maybe Text)
+    , _taiAndroidPackageName    :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TrustedAppId' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'taiCertificateHashSHA256'
+--
+-- * 'taiEtag'
+--
+-- * 'taiKind'
+--
+-- * 'taiCertificateHashSHA1'
+--
+-- * 'taiAndroidPackageName'
+trustedAppId
+    :: TrustedAppId
+trustedAppId =
+  TrustedAppId'
+    { _taiCertificateHashSHA256 = Nothing
+    , _taiEtag = Nothing
+    , _taiKind = "admin#directory#trustedappid"
+    , _taiCertificateHashSHA1 = Nothing
+    , _taiAndroidPackageName = Nothing
+    }
+
+
+-- | SHA256 signature of the app certificate.
+taiCertificateHashSHA256 :: Lens' TrustedAppId (Maybe Text)
+taiCertificateHashSHA256
+  = lens _taiCertificateHashSHA256
+      (\ s a -> s{_taiCertificateHashSHA256 = a})
+
+taiEtag :: Lens' TrustedAppId (Maybe Text)
+taiEtag = lens _taiEtag (\ s a -> s{_taiEtag = a})
+
+-- | Identifies the resource as a trusted AppId.
+taiKind :: Lens' TrustedAppId Text
+taiKind = lens _taiKind (\ s a -> s{_taiKind = a})
+
+-- | SHA1 signature of the app certificate.
+taiCertificateHashSHA1 :: Lens' TrustedAppId (Maybe Text)
+taiCertificateHashSHA1
+  = lens _taiCertificateHashSHA1
+      (\ s a -> s{_taiCertificateHashSHA1 = a})
+
+-- | Android package name.
+taiAndroidPackageName :: Lens' TrustedAppId (Maybe Text)
+taiAndroidPackageName
+  = lens _taiAndroidPackageName
+      (\ s a -> s{_taiAndroidPackageName = a})
+
+instance FromJSON TrustedAppId where
+        parseJSON
+          = withObject "TrustedAppId"
+              (\ o ->
+                 TrustedAppId' <$>
+                   (o .:? "certificateHashSHA256") <*> (o .:? "etag")
+                     <*> (o .:? "kind" .!= "admin#directory#trustedappid")
+                     <*> (o .:? "certificateHashSHA1")
+                     <*> (o .:? "androidPackageName"))
+
+instance ToJSON TrustedAppId where
+        toJSON TrustedAppId'{..}
+          = object
+              (catMaybes
+                 [("certificateHashSHA256" .=) <$>
+                    _taiCertificateHashSHA256,
+                  ("etag" .=) <$> _taiEtag, Just ("kind" .= _taiKind),
+                  ("certificateHashSHA1" .=) <$>
+                    _taiCertificateHashSHA1,
+                  ("androidPackageName" .=) <$>
+                    _taiAndroidPackageName])
+
+-- | JSON template for an externalId entry.
+--
+-- /See:/ 'userExternalId' smart constructor.
+data UserExternalId =
+  UserExternalId'
+    { _ueiValue      :: !(Maybe Text)
+    , _ueiType       :: !(Maybe Text)
+    , _ueiCustomType :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UserExternalId' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ueiValue'
+--
+-- * 'ueiType'
+--
+-- * 'ueiCustomType'
+userExternalId
+    :: UserExternalId
+userExternalId =
+  UserExternalId'
+    {_ueiValue = Nothing, _ueiType = Nothing, _ueiCustomType = Nothing}
+
+
+-- | The value of the id.
+ueiValue :: Lens' UserExternalId (Maybe Text)
+ueiValue = lens _ueiValue (\ s a -> s{_ueiValue = a})
+
+-- | The type of the Id.
+ueiType :: Lens' UserExternalId (Maybe Text)
+ueiType = lens _ueiType (\ s a -> s{_ueiType = a})
+
+-- | Custom type.
+ueiCustomType :: Lens' UserExternalId (Maybe Text)
+ueiCustomType
+  = lens _ueiCustomType
+      (\ s a -> s{_ueiCustomType = a})
+
+instance FromJSON UserExternalId where
+        parseJSON
+          = withObject "UserExternalId"
+              (\ o ->
+                 UserExternalId' <$>
+                   (o .:? "value") <*> (o .:? "type") <*>
+                     (o .:? "customType"))
+
+instance ToJSON UserExternalId where
+        toJSON UserExternalId'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _ueiValue,
+                  ("type" .=) <$> _ueiType,
+                  ("customType" .=) <$> _ueiCustomType])
+
+--
+-- /See:/ 'asps' smart constructor.
+data Asps =
+  Asps'
+    { _aspEtag  :: !(Maybe Text)
+    , _aspKind  :: !Text
+    , _aspItems :: !(Maybe [Asp])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Asps' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aspEtag'
+--
+-- * 'aspKind'
+--
+-- * 'aspItems'
+asps
+    :: Asps
+asps =
+  Asps'
+    { _aspEtag = Nothing
+    , _aspKind = "admin#directory#aspList"
+    , _aspItems = Nothing
+    }
+
+
+-- | ETag of the resource.
+aspEtag :: Lens' Asps (Maybe Text)
+aspEtag = lens _aspEtag (\ s a -> s{_aspEtag = a})
+
+-- | The type of the API resource. This is always admin#directory#aspList.
+aspKind :: Lens' Asps Text
+aspKind = lens _aspKind (\ s a -> s{_aspKind = a})
+
+-- | A list of ASP resources.
+aspItems :: Lens' Asps [Asp]
+aspItems
+  = lens _aspItems (\ s a -> s{_aspItems = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON Asps where
+        parseJSON
+          = withObject "Asps"
+              (\ o ->
+                 Asps' <$>
+                   (o .:? "etag") <*>
+                     (o .:? "kind" .!= "admin#directory#aspList")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON Asps where
+        toJSON Asps'{..}
+          = object
+              (catMaybes
+                 [("etag" .=) <$> _aspEtag, Just ("kind" .= _aspKind),
+                  ("items" .=) <$> _aspItems])
+
+--
+-- /See:/ 'chromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem' smart constructor.
+data ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem =
+  ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem'
+    { _codcsrictiiTemperature :: !(Maybe (Textual Int32))
+    , _codcsrictiiLabel       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'codcsrictiiTemperature'
+--
+-- * 'codcsrictiiLabel'
+chromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem
+    :: ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem
+chromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem =
+  ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem'
+    {_codcsrictiiTemperature = Nothing, _codcsrictiiLabel = Nothing}
+
+
+-- | Temperature in Celsius degrees.
+codcsrictiiTemperature :: Lens' ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem (Maybe Int32)
+codcsrictiiTemperature
+  = lens _codcsrictiiTemperature
+      (\ s a -> s{_codcsrictiiTemperature = a})
+      . mapping _Coerce
+
+-- | CPU label
+codcsrictiiLabel :: Lens' ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem (Maybe Text)
+codcsrictiiLabel
+  = lens _codcsrictiiLabel
+      (\ s a -> s{_codcsrictiiLabel = a})
+
+instance FromJSON
+           ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem
+         where
+        parseJSON
+          = withObject
+              "ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem"
+              (\ o ->
+                 ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem'
+                   <$> (o .:? "temperature") <*> (o .:? "label"))
+
+instance ToJSON
+           ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem
+         where
+        toJSON
+          ChromeOSDeviceCPUStatusReportsItemCPUTemperatureInfoItem'{..}
+          = object
+              (catMaybes
+                 [("temperature" .=) <$> _codcsrictiiTemperature,
+                  ("label" .=) <$> _codcsrictiiLabel])
+
+--
+-- /See:/ 'roleRolePrivilegesItem' smart constructor.
+data RoleRolePrivilegesItem =
+  RoleRolePrivilegesItem'
+    { _rrpiServiceId     :: !(Maybe Text)
+    , _rrpiPrivilegeName :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'RoleRolePrivilegesItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rrpiServiceId'
+--
+-- * 'rrpiPrivilegeName'
+roleRolePrivilegesItem
+    :: RoleRolePrivilegesItem
+roleRolePrivilegesItem =
+  RoleRolePrivilegesItem'
+    {_rrpiServiceId = Nothing, _rrpiPrivilegeName = Nothing}
+
+
+-- | The obfuscated ID of the service this privilege is for.
+rrpiServiceId :: Lens' RoleRolePrivilegesItem (Maybe Text)
+rrpiServiceId
+  = lens _rrpiServiceId
+      (\ s a -> s{_rrpiServiceId = a})
+
+-- | The name of the privilege.
+rrpiPrivilegeName :: Lens' RoleRolePrivilegesItem (Maybe Text)
+rrpiPrivilegeName
+  = lens _rrpiPrivilegeName
+      (\ s a -> s{_rrpiPrivilegeName = a})
+
+instance FromJSON RoleRolePrivilegesItem where
+        parseJSON
+          = withObject "RoleRolePrivilegesItem"
+              (\ o ->
+                 RoleRolePrivilegesItem' <$>
+                   (o .:? "serviceId") <*> (o .:? "privilegeName"))
+
+instance ToJSON RoleRolePrivilegesItem where
+        toJSON RoleRolePrivilegesItem'{..}
+          = object
+              (catMaybes
+                 [("serviceId" .=) <$> _rrpiServiceId,
+                  ("privilegeName" .=) <$> _rrpiPrivilegeName])
+
+-- | JSON response template to list Domains in Directory API.
+--
+-- /See:/ 'domains2' smart constructor.
+data Domains2 =
+  Domains2'
+    { _ddEtag    :: !(Maybe Text)
+    , _ddKind    :: !Text
+    , _ddDomains :: !(Maybe [Domains])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Domains2' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddEtag'
+--
+-- * 'ddKind'
+--
+-- * 'ddDomains'
+domains2
+    :: Domains2
+domains2 =
+  Domains2'
+    { _ddEtag = Nothing
+    , _ddKind = "admin#directory#domains"
+    , _ddDomains = Nothing
+    }
+
 
 -- | ETag of the resource.
 ddEtag :: Lens' Domains2 (Maybe Text)
diff --git a/gen/Network/Google/Directory/Types/Sum.hs b/gen/Network/Google/Directory/Types/Sum.hs
--- a/gen/Network/Google/Directory/Types/Sum.hs
+++ b/gen/Network/Google/Directory/Types/Sum.hs
@@ -370,6 +370,42 @@
 instance ToJSON GroupsListOrderBy where
     toJSON = toJSONText
 
+-- | Source from which Building.coordinates are derived.
+data ResourcesBuildingsPatchCoordinatesSource
+    = ClientSpecified
+      -- ^ @CLIENT_SPECIFIED@
+      -- Building.coordinates are set to the coordinates included in the request.
+    | ResolvedFromAddress
+      -- ^ @RESOLVED_FROM_ADDRESS@
+      -- Building.coordinates are automatically populated based on the postal
+      -- address.
+    | SourceUnspecified
+      -- ^ @SOURCE_UNSPECIFIED@
+      -- Defaults to RESOLVED_FROM_ADDRESS if postal address is provided.
+      -- Otherwise, defaults to CLIENT_SPECIFIED if coordinates are provided.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ResourcesBuildingsPatchCoordinatesSource
+
+instance FromHttpApiData ResourcesBuildingsPatchCoordinatesSource where
+    parseQueryParam = \case
+        "CLIENT_SPECIFIED" -> Right ClientSpecified
+        "RESOLVED_FROM_ADDRESS" -> Right ResolvedFromAddress
+        "SOURCE_UNSPECIFIED" -> Right SourceUnspecified
+        x -> Left ("Unable to parse ResourcesBuildingsPatchCoordinatesSource from: " <> x)
+
+instance ToHttpApiData ResourcesBuildingsPatchCoordinatesSource where
+    toQueryParam = \case
+        ClientSpecified -> "CLIENT_SPECIFIED"
+        ResolvedFromAddress -> "RESOLVED_FROM_ADDRESS"
+        SourceUnspecified -> "SOURCE_UNSPECIFIED"
+
+instance FromJSON ResourcesBuildingsPatchCoordinatesSource where
+    parseJSON = parseJSONText "ResourcesBuildingsPatchCoordinatesSource"
+
+instance ToJSON ResourcesBuildingsPatchCoordinatesSource where
+    toJSON = toJSONText
+
 -- | Whether to fetch the ADMIN_VIEW or DOMAIN_PUBLIC view of the user.
 data UsersWatchViewType
     = UWVTAdminView
@@ -433,6 +469,42 @@
 instance ToJSON UsersGetProjection where
     toJSON = toJSONText
 
+-- | Source from which Building.coordinates are derived.
+data ResourcesBuildingsUpdateCoordinatesSource
+    = RBUCSClientSpecified
+      -- ^ @CLIENT_SPECIFIED@
+      -- Building.coordinates are set to the coordinates included in the request.
+    | RBUCSResolvedFromAddress
+      -- ^ @RESOLVED_FROM_ADDRESS@
+      -- Building.coordinates are automatically populated based on the postal
+      -- address.
+    | RBUCSSourceUnspecified
+      -- ^ @SOURCE_UNSPECIFIED@
+      -- Defaults to RESOLVED_FROM_ADDRESS if postal address is provided.
+      -- Otherwise, defaults to CLIENT_SPECIFIED if coordinates are provided.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ResourcesBuildingsUpdateCoordinatesSource
+
+instance FromHttpApiData ResourcesBuildingsUpdateCoordinatesSource where
+    parseQueryParam = \case
+        "CLIENT_SPECIFIED" -> Right RBUCSClientSpecified
+        "RESOLVED_FROM_ADDRESS" -> Right RBUCSResolvedFromAddress
+        "SOURCE_UNSPECIFIED" -> Right RBUCSSourceUnspecified
+        x -> Left ("Unable to parse ResourcesBuildingsUpdateCoordinatesSource from: " <> x)
+
+instance ToHttpApiData ResourcesBuildingsUpdateCoordinatesSource where
+    toQueryParam = \case
+        RBUCSClientSpecified -> "CLIENT_SPECIFIED"
+        RBUCSResolvedFromAddress -> "RESOLVED_FROM_ADDRESS"
+        RBUCSSourceUnspecified -> "SOURCE_UNSPECIFIED"
+
+instance FromJSON ResourcesBuildingsUpdateCoordinatesSource where
+    parseJSON = parseJSONText "ResourcesBuildingsUpdateCoordinatesSource"
+
+instance ToJSON ResourcesBuildingsUpdateCoordinatesSource where
+    toJSON = toJSONText
+
 -- | Restrict information returned to a set of selected fields.
 data MobileDevicesListProjection
     = MDLPBasic
@@ -549,6 +621,42 @@
     parseJSON = parseJSONText "UsersListSortOrder"
 
 instance ToJSON UsersListSortOrder where
+    toJSON = toJSONText
+
+-- | Source from which Building.coordinates are derived.
+data ResourcesBuildingsInsertCoordinatesSource
+    = RBICSClientSpecified
+      -- ^ @CLIENT_SPECIFIED@
+      -- Building.coordinates are set to the coordinates included in the request.
+    | RBICSResolvedFromAddress
+      -- ^ @RESOLVED_FROM_ADDRESS@
+      -- Building.coordinates are automatically populated based on the postal
+      -- address.
+    | RBICSSourceUnspecified
+      -- ^ @SOURCE_UNSPECIFIED@
+      -- Defaults to RESOLVED_FROM_ADDRESS if postal address is provided.
+      -- Otherwise, defaults to CLIENT_SPECIFIED if coordinates are provided.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ResourcesBuildingsInsertCoordinatesSource
+
+instance FromHttpApiData ResourcesBuildingsInsertCoordinatesSource where
+    parseQueryParam = \case
+        "CLIENT_SPECIFIED" -> Right RBICSClientSpecified
+        "RESOLVED_FROM_ADDRESS" -> Right RBICSResolvedFromAddress
+        "SOURCE_UNSPECIFIED" -> Right RBICSSourceUnspecified
+        x -> Left ("Unable to parse ResourcesBuildingsInsertCoordinatesSource from: " <> x)
+
+instance ToHttpApiData ResourcesBuildingsInsertCoordinatesSource where
+    toQueryParam = \case
+        RBICSClientSpecified -> "CLIENT_SPECIFIED"
+        RBICSResolvedFromAddress -> "RESOLVED_FROM_ADDRESS"
+        RBICSSourceUnspecified -> "SOURCE_UNSPECIFIED"
+
+instance FromJSON ResourcesBuildingsInsertCoordinatesSource where
+    parseJSON = parseJSONText "ResourcesBuildingsInsertCoordinatesSource"
+
+instance ToJSON ResourcesBuildingsInsertCoordinatesSource where
     toJSON = toJSONText
 
 -- | Whether to return results in ascending or descending order. Only of use
diff --git a/gen/Network/Google/Resource/Admin/Channels/Stop.hs b/gen/Network/Google/Resource/Admin/Channels/Stop.hs
--- a/gen/Network/Google/Resource/Admin/Channels/Stop.hs
+++ b/gen/Network/Google/Resource/Admin/Channels/Stop.hs
@@ -55,10 +55,13 @@
 -- | Stop watching resources through this channel
 --
 -- /See:/ 'channelsStop' smart constructor.
-newtype ChannelsStop = ChannelsStop'
+newtype ChannelsStop =
+  ChannelsStop'
     { _csPayload :: Channel
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ChannelsStop' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -67,10 +70,8 @@
 channelsStop
     :: Channel -- ^ 'csPayload'
     -> ChannelsStop
-channelsStop pCsPayload_ =
-    ChannelsStop'
-    { _csPayload = pCsPayload_
-    }
+channelsStop pCsPayload_ = ChannelsStop' {_csPayload = pCsPayload_}
+
 
 -- | Multipart request metadata.
 csPayload :: Lens' ChannelsStop Channel
diff --git a/gen/Network/Google/Resource/Directory/Asps/Delete.hs b/gen/Network/Google/Resource/Directory/Asps/Delete.hs
--- a/gen/Network/Google/Resource/Directory/Asps/Delete.hs
+++ b/gen/Network/Google/Resource/Directory/Asps/Delete.hs
@@ -55,11 +55,14 @@
 -- | Delete an ASP issued by a user.
 --
 -- /See:/ 'aspsDelete' smart constructor.
-data AspsDelete = AspsDelete'
+data AspsDelete =
+  AspsDelete'
     { _adCodeId  :: !(Textual Int32)
     , _adUserKey :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AspsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'adUserKey'
     -> AspsDelete
 aspsDelete pAdCodeId_ pAdUserKey_ =
-    AspsDelete'
-    { _adCodeId = _Coerce # pAdCodeId_
-    , _adUserKey = pAdUserKey_
-    }
+  AspsDelete' {_adCodeId = _Coerce # pAdCodeId_, _adUserKey = pAdUserKey_}
+
 
 -- | The unique ID of the ASP to be deleted.
 adCodeId :: Lens' AspsDelete Int32
diff --git a/gen/Network/Google/Resource/Directory/Asps/Get.hs b/gen/Network/Google/Resource/Directory/Asps/Get.hs
--- a/gen/Network/Google/Resource/Directory/Asps/Get.hs
+++ b/gen/Network/Google/Resource/Directory/Asps/Get.hs
@@ -55,11 +55,14 @@
 -- | Get information about an ASP issued by a user.
 --
 -- /See:/ 'aspsGet' smart constructor.
-data AspsGet = AspsGet'
+data AspsGet =
+  AspsGet'
     { _agCodeId  :: !(Textual Int32)
     , _agUserKey :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AspsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'agUserKey'
     -> AspsGet
 aspsGet pAgCodeId_ pAgUserKey_ =
-    AspsGet'
-    { _agCodeId = _Coerce # pAgCodeId_
-    , _agUserKey = pAgUserKey_
-    }
+  AspsGet' {_agCodeId = _Coerce # pAgCodeId_, _agUserKey = pAgUserKey_}
+
 
 -- | The unique ID of the ASP.
 agCodeId :: Lens' AspsGet Int32
diff --git a/gen/Network/Google/Resource/Directory/Asps/List.hs b/gen/Network/Google/Resource/Directory/Asps/List.hs
--- a/gen/Network/Google/Resource/Directory/Asps/List.hs
+++ b/gen/Network/Google/Resource/Directory/Asps/List.hs
@@ -53,10 +53,13 @@
 -- | List the ASPs issued by a user.
 --
 -- /See:/ 'aspsList' smart constructor.
-newtype AspsList = AspsList'
+newtype AspsList =
+  AspsList'
     { _alUserKey :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AspsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -65,10 +68,8 @@
 aspsList
     :: Text -- ^ 'alUserKey'
     -> AspsList
-aspsList pAlUserKey_ =
-    AspsList'
-    { _alUserKey = pAlUserKey_
-    }
+aspsList pAlUserKey_ = AspsList' {_alUserKey = pAlUserKey_}
+
 
 -- | Identifies the user in the API request. The value can be the user\'s
 -- primary email address, alias email address, or unique user ID.
diff --git a/gen/Network/Google/Resource/Directory/ChromeosDevices/Action.hs b/gen/Network/Google/Resource/Directory/ChromeosDevices/Action.hs
--- a/gen/Network/Google/Resource/Directory/ChromeosDevices/Action.hs
+++ b/gen/Network/Google/Resource/Directory/ChromeosDevices/Action.hs
@@ -60,12 +60,15 @@
 -- | Take action on Chrome OS Device
 --
 -- /See:/ 'chromeosDevicesAction' smart constructor.
-data ChromeosDevicesAction = ChromeosDevicesAction'
+data ChromeosDevicesAction =
+  ChromeosDevicesAction'
     { _cdaResourceId :: !Text
     , _cdaPayload    :: !ChromeOSDeviceAction
     , _cdaCustomerId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ChromeosDevicesAction' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -81,11 +84,12 @@
     -> Text -- ^ 'cdaCustomerId'
     -> ChromeosDevicesAction
 chromeosDevicesAction pCdaResourceId_ pCdaPayload_ pCdaCustomerId_ =
-    ChromeosDevicesAction'
+  ChromeosDevicesAction'
     { _cdaResourceId = pCdaResourceId_
     , _cdaPayload = pCdaPayload_
     , _cdaCustomerId = pCdaCustomerId_
     }
+
 
 -- | Immutable ID of Chrome OS Device
 cdaResourceId :: Lens' ChromeosDevicesAction Text
diff --git a/gen/Network/Google/Resource/Directory/ChromeosDevices/Get.hs b/gen/Network/Google/Resource/Directory/ChromeosDevices/Get.hs
--- a/gen/Network/Google/Resource/Directory/ChromeosDevices/Get.hs
+++ b/gen/Network/Google/Resource/Directory/ChromeosDevices/Get.hs
@@ -60,12 +60,15 @@
 -- | Retrieve Chrome OS Device
 --
 -- /See:/ 'chromeosDevicesGet' smart constructor.
-data ChromeosDevicesGet = ChromeosDevicesGet'
+data ChromeosDevicesGet =
+  ChromeosDevicesGet'
     { _cdgCustomerId :: !Text
     , _cdgDeviceId   :: !Text
     , _cdgProjection :: !(Maybe ChromeosDevicesGetProjection)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ChromeosDevicesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -80,11 +83,12 @@
     -> Text -- ^ 'cdgDeviceId'
     -> ChromeosDevicesGet
 chromeosDevicesGet pCdgCustomerId_ pCdgDeviceId_ =
-    ChromeosDevicesGet'
+  ChromeosDevicesGet'
     { _cdgCustomerId = pCdgCustomerId_
     , _cdgDeviceId = pCdgDeviceId_
     , _cdgProjection = Nothing
     }
+
 
 -- | Immutable ID of the G Suite account
 cdgCustomerId :: Lens' ChromeosDevicesGet Text
diff --git a/gen/Network/Google/Resource/Directory/ChromeosDevices/List.hs b/gen/Network/Google/Resource/Directory/ChromeosDevices/List.hs
--- a/gen/Network/Google/Resource/Directory/ChromeosDevices/List.hs
+++ b/gen/Network/Google/Resource/Directory/ChromeosDevices/List.hs
@@ -71,7 +71,8 @@
 -- | Retrieve all Chrome OS Devices of a customer (paginated)
 --
 -- /See:/ 'chromeosDevicesList' smart constructor.
-data ChromeosDevicesList = ChromeosDevicesList'
+data ChromeosDevicesList =
+  ChromeosDevicesList'
     { _cdlOrderBy     :: !(Maybe ChromeosDevicesListOrderBy)
     , _cdlOrgUnitPath :: !(Maybe Text)
     , _cdlCustomerId  :: !Text
@@ -80,8 +81,10 @@
     , _cdlProjection  :: !(Maybe ChromeosDevicesListProjection)
     , _cdlPageToken   :: !(Maybe Text)
     , _cdlMaxResults  :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ChromeosDevicesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -105,7 +108,7 @@
     :: Text -- ^ 'cdlCustomerId'
     -> ChromeosDevicesList
 chromeosDevicesList pCdlCustomerId_ =
-    ChromeosDevicesList'
+  ChromeosDevicesList'
     { _cdlOrderBy = Nothing
     , _cdlOrgUnitPath = Nothing
     , _cdlCustomerId = pCdlCustomerId_
@@ -115,6 +118,7 @@
     , _cdlPageToken = Nothing
     , _cdlMaxResults = Nothing
     }
+
 
 -- | Column to use for sorting results
 cdlOrderBy :: Lens' ChromeosDevicesList (Maybe ChromeosDevicesListOrderBy)
diff --git a/gen/Network/Google/Resource/Directory/ChromeosDevices/MoveDevicesToOu.hs b/gen/Network/Google/Resource/Directory/ChromeosDevices/MoveDevicesToOu.hs
--- a/gen/Network/Google/Resource/Directory/ChromeosDevices/MoveDevicesToOu.hs
+++ b/gen/Network/Google/Resource/Directory/ChromeosDevices/MoveDevicesToOu.hs
@@ -60,12 +60,15 @@
 -- | Move or insert multiple Chrome OS Devices to organizational unit
 --
 -- /See:/ 'chromeosDevicesMoveDevicesToOu' smart constructor.
-data ChromeosDevicesMoveDevicesToOu = ChromeosDevicesMoveDevicesToOu'
+data ChromeosDevicesMoveDevicesToOu =
+  ChromeosDevicesMoveDevicesToOu'
     { _cdmdtoPayload     :: !ChromeOSMoveDevicesToOu
     , _cdmdtoOrgUnitPath :: !Text
     , _cdmdtoCustomerId  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ChromeosDevicesMoveDevicesToOu' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -81,11 +84,12 @@
     -> Text -- ^ 'cdmdtoCustomerId'
     -> ChromeosDevicesMoveDevicesToOu
 chromeosDevicesMoveDevicesToOu pCdmdtoPayload_ pCdmdtoOrgUnitPath_ pCdmdtoCustomerId_ =
-    ChromeosDevicesMoveDevicesToOu'
+  ChromeosDevicesMoveDevicesToOu'
     { _cdmdtoPayload = pCdmdtoPayload_
     , _cdmdtoOrgUnitPath = pCdmdtoOrgUnitPath_
     , _cdmdtoCustomerId = pCdmdtoCustomerId_
     }
+
 
 -- | Multipart request metadata.
 cdmdtoPayload :: Lens' ChromeosDevicesMoveDevicesToOu ChromeOSMoveDevicesToOu
diff --git a/gen/Network/Google/Resource/Directory/ChromeosDevices/Patch.hs b/gen/Network/Google/Resource/Directory/ChromeosDevices/Patch.hs
--- a/gen/Network/Google/Resource/Directory/ChromeosDevices/Patch.hs
+++ b/gen/Network/Google/Resource/Directory/ChromeosDevices/Patch.hs
@@ -63,13 +63,16 @@
 -- | Update Chrome OS Device. This method supports patch semantics.
 --
 -- /See:/ 'chromeosDevicesPatch' smart constructor.
-data ChromeosDevicesPatch = ChromeosDevicesPatch'
+data ChromeosDevicesPatch =
+  ChromeosDevicesPatch'
     { _cdpPayload    :: !ChromeOSDevice
     , _cdpCustomerId :: !Text
     , _cdpDeviceId   :: !Text
     , _cdpProjection :: !(Maybe ChromeosDevicesPatchProjection)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ChromeosDevicesPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,12 +90,13 @@
     -> Text -- ^ 'cdpDeviceId'
     -> ChromeosDevicesPatch
 chromeosDevicesPatch pCdpPayload_ pCdpCustomerId_ pCdpDeviceId_ =
-    ChromeosDevicesPatch'
+  ChromeosDevicesPatch'
     { _cdpPayload = pCdpPayload_
     , _cdpCustomerId = pCdpCustomerId_
     , _cdpDeviceId = pCdpDeviceId_
     , _cdpProjection = Nothing
     }
+
 
 -- | Multipart request metadata.
 cdpPayload :: Lens' ChromeosDevicesPatch ChromeOSDevice
diff --git a/gen/Network/Google/Resource/Directory/ChromeosDevices/Update.hs b/gen/Network/Google/Resource/Directory/ChromeosDevices/Update.hs
--- a/gen/Network/Google/Resource/Directory/ChromeosDevices/Update.hs
+++ b/gen/Network/Google/Resource/Directory/ChromeosDevices/Update.hs
@@ -63,13 +63,16 @@
 -- | Update Chrome OS Device
 --
 -- /See:/ 'chromeosDevicesUpdate' smart constructor.
-data ChromeosDevicesUpdate = ChromeosDevicesUpdate'
+data ChromeosDevicesUpdate =
+  ChromeosDevicesUpdate'
     { _cduPayload    :: !ChromeOSDevice
     , _cduCustomerId :: !Text
     , _cduDeviceId   :: !Text
     , _cduProjection :: !(Maybe ChromeosDevicesUpdateProjection)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ChromeosDevicesUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,12 +90,13 @@
     -> Text -- ^ 'cduDeviceId'
     -> ChromeosDevicesUpdate
 chromeosDevicesUpdate pCduPayload_ pCduCustomerId_ pCduDeviceId_ =
-    ChromeosDevicesUpdate'
+  ChromeosDevicesUpdate'
     { _cduPayload = pCduPayload_
     , _cduCustomerId = pCduCustomerId_
     , _cduDeviceId = pCduDeviceId_
     , _cduProjection = Nothing
     }
+
 
 -- | Multipart request metadata.
 cduPayload :: Lens' ChromeosDevicesUpdate ChromeOSDevice
diff --git a/gen/Network/Google/Resource/Directory/Customers/Get.hs b/gen/Network/Google/Resource/Directory/Customers/Get.hs
--- a/gen/Network/Google/Resource/Directory/Customers/Get.hs
+++ b/gen/Network/Google/Resource/Directory/Customers/Get.hs
@@ -52,10 +52,13 @@
 -- | Retrieves a customer.
 --
 -- /See:/ 'customersGet' smart constructor.
-newtype CustomersGet = CustomersGet'
+newtype CustomersGet =
+  CustomersGet'
     { _cgCustomerKey :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CustomersGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -64,10 +67,8 @@
 customersGet
     :: Text -- ^ 'cgCustomerKey'
     -> CustomersGet
-customersGet pCgCustomerKey_ =
-    CustomersGet'
-    { _cgCustomerKey = pCgCustomerKey_
-    }
+customersGet pCgCustomerKey_ = CustomersGet' {_cgCustomerKey = pCgCustomerKey_}
+
 
 -- | Id of the customer to be retrieved
 cgCustomerKey :: Lens' CustomersGet Text
diff --git a/gen/Network/Google/Resource/Directory/Customers/Patch.hs b/gen/Network/Google/Resource/Directory/Customers/Patch.hs
--- a/gen/Network/Google/Resource/Directory/Customers/Patch.hs
+++ b/gen/Network/Google/Resource/Directory/Customers/Patch.hs
@@ -54,11 +54,14 @@
 -- | Updates a customer. This method supports patch semantics.
 --
 -- /See:/ 'customersPatch' smart constructor.
-data CustomersPatch = CustomersPatch'
+data CustomersPatch =
+  CustomersPatch'
     { _cpCustomerKey :: !Text
     , _cpPayload     :: !Customer
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CustomersPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -71,10 +74,8 @@
     -> Customer -- ^ 'cpPayload'
     -> CustomersPatch
 customersPatch pCpCustomerKey_ pCpPayload_ =
-    CustomersPatch'
-    { _cpCustomerKey = pCpCustomerKey_
-    , _cpPayload = pCpPayload_
-    }
+  CustomersPatch' {_cpCustomerKey = pCpCustomerKey_, _cpPayload = pCpPayload_}
+
 
 -- | Id of the customer to be updated
 cpCustomerKey :: Lens' CustomersPatch Text
diff --git a/gen/Network/Google/Resource/Directory/Customers/Update.hs b/gen/Network/Google/Resource/Directory/Customers/Update.hs
--- a/gen/Network/Google/Resource/Directory/Customers/Update.hs
+++ b/gen/Network/Google/Resource/Directory/Customers/Update.hs
@@ -54,11 +54,14 @@
 -- | Updates a customer.
 --
 -- /See:/ 'customersUpdate' smart constructor.
-data CustomersUpdate = CustomersUpdate'
+data CustomersUpdate =
+  CustomersUpdate'
     { _cuCustomerKey :: !Text
     , _cuPayload     :: !Customer
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CustomersUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -71,10 +74,8 @@
     -> Customer -- ^ 'cuPayload'
     -> CustomersUpdate
 customersUpdate pCuCustomerKey_ pCuPayload_ =
-    CustomersUpdate'
-    { _cuCustomerKey = pCuCustomerKey_
-    , _cuPayload = pCuPayload_
-    }
+  CustomersUpdate' {_cuCustomerKey = pCuCustomerKey_, _cuPayload = pCuPayload_}
+
 
 -- | Id of the customer to be updated
 cuCustomerKey :: Lens' CustomersUpdate Text
diff --git a/gen/Network/Google/Resource/Directory/DomainAliases/Delete.hs b/gen/Network/Google/Resource/Directory/DomainAliases/Delete.hs
--- a/gen/Network/Google/Resource/Directory/DomainAliases/Delete.hs
+++ b/gen/Network/Google/Resource/Directory/DomainAliases/Delete.hs
@@ -55,11 +55,14 @@
 -- | Deletes a Domain Alias of the customer.
 --
 -- /See:/ 'domainAliasesDelete' smart constructor.
-data DomainAliasesDelete = DomainAliasesDelete'
+data DomainAliasesDelete =
+  DomainAliasesDelete'
     { _dadDomainAliasName :: !Text
     , _dadCustomer        :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DomainAliasesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,9 @@
     -> Text -- ^ 'dadCustomer'
     -> DomainAliasesDelete
 domainAliasesDelete pDadDomainAliasName_ pDadCustomer_ =
-    DomainAliasesDelete'
-    { _dadDomainAliasName = pDadDomainAliasName_
-    , _dadCustomer = pDadCustomer_
-    }
+  DomainAliasesDelete'
+    {_dadDomainAliasName = pDadDomainAliasName_, _dadCustomer = pDadCustomer_}
+
 
 -- | Name of domain alias to be retrieved.
 dadDomainAliasName :: Lens' DomainAliasesDelete Text
diff --git a/gen/Network/Google/Resource/Directory/DomainAliases/Get.hs b/gen/Network/Google/Resource/Directory/DomainAliases/Get.hs
--- a/gen/Network/Google/Resource/Directory/DomainAliases/Get.hs
+++ b/gen/Network/Google/Resource/Directory/DomainAliases/Get.hs
@@ -55,11 +55,14 @@
 -- | Retrieves a domain alias of the customer.
 --
 -- /See:/ 'domainAliasesGet' smart constructor.
-data DomainAliasesGet = DomainAliasesGet'
+data DomainAliasesGet =
+  DomainAliasesGet'
     { _dagDomainAliasName :: !Text
     , _dagCustomer        :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DomainAliasesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,9 @@
     -> Text -- ^ 'dagCustomer'
     -> DomainAliasesGet
 domainAliasesGet pDagDomainAliasName_ pDagCustomer_ =
-    DomainAliasesGet'
-    { _dagDomainAliasName = pDagDomainAliasName_
-    , _dagCustomer = pDagCustomer_
-    }
+  DomainAliasesGet'
+    {_dagDomainAliasName = pDagDomainAliasName_, _dagCustomer = pDagCustomer_}
+
 
 -- | Name of domain alias to be retrieved.
 dagDomainAliasName :: Lens' DomainAliasesGet Text
diff --git a/gen/Network/Google/Resource/Directory/DomainAliases/Insert.hs b/gen/Network/Google/Resource/Directory/DomainAliases/Insert.hs
--- a/gen/Network/Google/Resource/Directory/DomainAliases/Insert.hs
+++ b/gen/Network/Google/Resource/Directory/DomainAliases/Insert.hs
@@ -56,11 +56,14 @@
 -- | Inserts a Domain alias of the customer.
 --
 -- /See:/ 'domainAliasesInsert' smart constructor.
-data DomainAliasesInsert = DomainAliasesInsert'
+data DomainAliasesInsert =
+  DomainAliasesInsert'
     { _daiPayload  :: !DomainAlias
     , _daiCustomer :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DomainAliasesInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -73,10 +76,9 @@
     -> Text -- ^ 'daiCustomer'
     -> DomainAliasesInsert
 domainAliasesInsert pDaiPayload_ pDaiCustomer_ =
-    DomainAliasesInsert'
-    { _daiPayload = pDaiPayload_
-    , _daiCustomer = pDaiCustomer_
-    }
+  DomainAliasesInsert'
+    {_daiPayload = pDaiPayload_, _daiCustomer = pDaiCustomer_}
+
 
 -- | Multipart request metadata.
 daiPayload :: Lens' DomainAliasesInsert DomainAlias
diff --git a/gen/Network/Google/Resource/Directory/DomainAliases/List.hs b/gen/Network/Google/Resource/Directory/DomainAliases/List.hs
--- a/gen/Network/Google/Resource/Directory/DomainAliases/List.hs
+++ b/gen/Network/Google/Resource/Directory/DomainAliases/List.hs
@@ -55,11 +55,14 @@
 -- | Lists the domain aliases of the customer.
 --
 -- /See:/ 'domainAliasesList' smart constructor.
-data DomainAliasesList = DomainAliasesList'
+data DomainAliasesList =
+  DomainAliasesList'
     { _dalCustomer         :: !Text
     , _dalParentDomainName :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DomainAliasesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -71,10 +74,9 @@
     :: Text -- ^ 'dalCustomer'
     -> DomainAliasesList
 domainAliasesList pDalCustomer_ =
-    DomainAliasesList'
-    { _dalCustomer = pDalCustomer_
-    , _dalParentDomainName = Nothing
-    }
+  DomainAliasesList'
+    {_dalCustomer = pDalCustomer_, _dalParentDomainName = Nothing}
+
 
 -- | Immutable ID of the G Suite account.
 dalCustomer :: Lens' DomainAliasesList Text
diff --git a/gen/Network/Google/Resource/Directory/Domains/Delete.hs b/gen/Network/Google/Resource/Directory/Domains/Delete.hs
--- a/gen/Network/Google/Resource/Directory/Domains/Delete.hs
+++ b/gen/Network/Google/Resource/Directory/Domains/Delete.hs
@@ -55,11 +55,14 @@
 -- | Deletes a domain of the customer.
 --
 -- /See:/ 'domainsDelete' smart constructor.
-data DomainsDelete = DomainsDelete'
+data DomainsDelete =
+  DomainsDelete'
     { _ddCustomer   :: !Text
     , _ddDomainName :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DomainsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'ddDomainName'
     -> DomainsDelete
 domainsDelete pDdCustomer_ pDdDomainName_ =
-    DomainsDelete'
-    { _ddCustomer = pDdCustomer_
-    , _ddDomainName = pDdDomainName_
-    }
+  DomainsDelete' {_ddCustomer = pDdCustomer_, _ddDomainName = pDdDomainName_}
+
 
 -- | Immutable ID of the G Suite account.
 ddCustomer :: Lens' DomainsDelete Text
diff --git a/gen/Network/Google/Resource/Directory/Domains/Get.hs b/gen/Network/Google/Resource/Directory/Domains/Get.hs
--- a/gen/Network/Google/Resource/Directory/Domains/Get.hs
+++ b/gen/Network/Google/Resource/Directory/Domains/Get.hs
@@ -55,11 +55,14 @@
 -- | Retrieves a domain of the customer.
 --
 -- /See:/ 'domainsGet' smart constructor.
-data DomainsGet = DomainsGet'
+data DomainsGet =
+  DomainsGet'
     { _dgCustomer   :: !Text
     , _dgDomainName :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DomainsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'dgDomainName'
     -> DomainsGet
 domainsGet pDgCustomer_ pDgDomainName_ =
-    DomainsGet'
-    { _dgCustomer = pDgCustomer_
-    , _dgDomainName = pDgDomainName_
-    }
+  DomainsGet' {_dgCustomer = pDgCustomer_, _dgDomainName = pDgDomainName_}
+
 
 -- | Immutable ID of the G Suite account.
 dgCustomer :: Lens' DomainsGet Text
diff --git a/gen/Network/Google/Resource/Directory/Domains/Insert.hs b/gen/Network/Google/Resource/Directory/Domains/Insert.hs
--- a/gen/Network/Google/Resource/Directory/Domains/Insert.hs
+++ b/gen/Network/Google/Resource/Directory/Domains/Insert.hs
@@ -55,11 +55,14 @@
 -- | Inserts a domain of the customer.
 --
 -- /See:/ 'domainsInsert' smart constructor.
-data DomainsInsert = DomainsInsert'
+data DomainsInsert =
+  DomainsInsert'
     { _diPayload  :: !Domains
     , _diCustomer :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DomainsInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'diCustomer'
     -> DomainsInsert
 domainsInsert pDiPayload_ pDiCustomer_ =
-    DomainsInsert'
-    { _diPayload = pDiPayload_
-    , _diCustomer = pDiCustomer_
-    }
+  DomainsInsert' {_diPayload = pDiPayload_, _diCustomer = pDiCustomer_}
+
 
 -- | Multipart request metadata.
 diPayload :: Lens' DomainsInsert Domains
diff --git a/gen/Network/Google/Resource/Directory/Domains/List.hs b/gen/Network/Google/Resource/Directory/Domains/List.hs
--- a/gen/Network/Google/Resource/Directory/Domains/List.hs
+++ b/gen/Network/Google/Resource/Directory/Domains/List.hs
@@ -53,10 +53,13 @@
 -- | Lists the domains of the customer.
 --
 -- /See:/ 'domainsList' smart constructor.
-newtype DomainsList = DomainsList'
+newtype DomainsList =
+  DomainsList'
     { _dlCustomer :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DomainsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -65,10 +68,8 @@
 domainsList
     :: Text -- ^ 'dlCustomer'
     -> DomainsList
-domainsList pDlCustomer_ =
-    DomainsList'
-    { _dlCustomer = pDlCustomer_
-    }
+domainsList pDlCustomer_ = DomainsList' {_dlCustomer = pDlCustomer_}
+
 
 -- | Immutable ID of the G Suite account.
 dlCustomer :: Lens' DomainsList Text
diff --git a/gen/Network/Google/Resource/Directory/Groups/Aliases/Delete.hs b/gen/Network/Google/Resource/Directory/Groups/Aliases/Delete.hs
--- a/gen/Network/Google/Resource/Directory/Groups/Aliases/Delete.hs
+++ b/gen/Network/Google/Resource/Directory/Groups/Aliases/Delete.hs
@@ -55,11 +55,14 @@
 -- | Remove a alias for the group
 --
 -- /See:/ 'groupsAliasesDelete' smart constructor.
-data GroupsAliasesDelete = GroupsAliasesDelete'
+data GroupsAliasesDelete =
+  GroupsAliasesDelete'
     { _gadGroupKey :: !Text
     , _gadAlias    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GroupsAliasesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'gadAlias'
     -> GroupsAliasesDelete
 groupsAliasesDelete pGadGroupKey_ pGadAlias_ =
-    GroupsAliasesDelete'
-    { _gadGroupKey = pGadGroupKey_
-    , _gadAlias = pGadAlias_
-    }
+  GroupsAliasesDelete' {_gadGroupKey = pGadGroupKey_, _gadAlias = pGadAlias_}
+
 
 -- | Email or immutable ID of the group
 gadGroupKey :: Lens' GroupsAliasesDelete Text
diff --git a/gen/Network/Google/Resource/Directory/Groups/Aliases/Insert.hs b/gen/Network/Google/Resource/Directory/Groups/Aliases/Insert.hs
--- a/gen/Network/Google/Resource/Directory/Groups/Aliases/Insert.hs
+++ b/gen/Network/Google/Resource/Directory/Groups/Aliases/Insert.hs
@@ -55,11 +55,14 @@
 -- | Add a alias for the group
 --
 -- /See:/ 'groupsAliasesInsert' smart constructor.
-data GroupsAliasesInsert = GroupsAliasesInsert'
+data GroupsAliasesInsert =
+  GroupsAliasesInsert'
     { _gaiGroupKey :: !Text
     , _gaiPayload  :: !Alias
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GroupsAliasesInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,9 @@
     -> Alias -- ^ 'gaiPayload'
     -> GroupsAliasesInsert
 groupsAliasesInsert pGaiGroupKey_ pGaiPayload_ =
-    GroupsAliasesInsert'
-    { _gaiGroupKey = pGaiGroupKey_
-    , _gaiPayload = pGaiPayload_
-    }
+  GroupsAliasesInsert'
+    {_gaiGroupKey = pGaiGroupKey_, _gaiPayload = pGaiPayload_}
+
 
 -- | Email or immutable ID of the group
 gaiGroupKey :: Lens' GroupsAliasesInsert Text
diff --git a/gen/Network/Google/Resource/Directory/Groups/Aliases/List.hs b/gen/Network/Google/Resource/Directory/Groups/Aliases/List.hs
--- a/gen/Network/Google/Resource/Directory/Groups/Aliases/List.hs
+++ b/gen/Network/Google/Resource/Directory/Groups/Aliases/List.hs
@@ -53,10 +53,13 @@
 -- | List all aliases for a group
 --
 -- /See:/ 'groupsAliasesList' smart constructor.
-newtype GroupsAliasesList = GroupsAliasesList'
+newtype GroupsAliasesList =
+  GroupsAliasesList'
     { _galGroupKey :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GroupsAliasesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -66,9 +69,8 @@
     :: Text -- ^ 'galGroupKey'
     -> GroupsAliasesList
 groupsAliasesList pGalGroupKey_ =
-    GroupsAliasesList'
-    { _galGroupKey = pGalGroupKey_
-    }
+  GroupsAliasesList' {_galGroupKey = pGalGroupKey_}
+
 
 -- | Email or immutable ID of the group
 galGroupKey :: Lens' GroupsAliasesList Text
diff --git a/gen/Network/Google/Resource/Directory/Groups/Delete.hs b/gen/Network/Google/Resource/Directory/Groups/Delete.hs
--- a/gen/Network/Google/Resource/Directory/Groups/Delete.hs
+++ b/gen/Network/Google/Resource/Directory/Groups/Delete.hs
@@ -52,10 +52,13 @@
 -- | Delete Group
 --
 -- /See:/ 'groupsDelete' smart constructor.
-newtype GroupsDelete = GroupsDelete'
+newtype GroupsDelete =
+  GroupsDelete'
     { _gdGroupKey :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GroupsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -64,10 +67,8 @@
 groupsDelete
     :: Text -- ^ 'gdGroupKey'
     -> GroupsDelete
-groupsDelete pGdGroupKey_ =
-    GroupsDelete'
-    { _gdGroupKey = pGdGroupKey_
-    }
+groupsDelete pGdGroupKey_ = GroupsDelete' {_gdGroupKey = pGdGroupKey_}
+
 
 -- | Email or immutable ID of the group
 gdGroupKey :: Lens' GroupsDelete Text
diff --git a/gen/Network/Google/Resource/Directory/Groups/Get.hs b/gen/Network/Google/Resource/Directory/Groups/Get.hs
--- a/gen/Network/Google/Resource/Directory/Groups/Get.hs
+++ b/gen/Network/Google/Resource/Directory/Groups/Get.hs
@@ -52,10 +52,13 @@
 -- | Retrieve Group
 --
 -- /See:/ 'groupsGet' smart constructor.
-newtype GroupsGet = GroupsGet'
+newtype GroupsGet =
+  GroupsGet'
     { _ggGroupKey :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GroupsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -64,10 +67,8 @@
 groupsGet
     :: Text -- ^ 'ggGroupKey'
     -> GroupsGet
-groupsGet pGgGroupKey_ =
-    GroupsGet'
-    { _ggGroupKey = pGgGroupKey_
-    }
+groupsGet pGgGroupKey_ = GroupsGet' {_ggGroupKey = pGgGroupKey_}
+
 
 -- | Email or immutable ID of the group
 ggGroupKey :: Lens' GroupsGet Text
diff --git a/gen/Network/Google/Resource/Directory/Groups/Insert.hs b/gen/Network/Google/Resource/Directory/Groups/Insert.hs
--- a/gen/Network/Google/Resource/Directory/Groups/Insert.hs
+++ b/gen/Network/Google/Resource/Directory/Groups/Insert.hs
@@ -52,10 +52,13 @@
 -- | Create Group
 --
 -- /See:/ 'groupsInsert' smart constructor.
-newtype GroupsInsert = GroupsInsert'
+newtype GroupsInsert =
+  GroupsInsert'
     { _giPayload :: Group
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GroupsInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -64,10 +67,8 @@
 groupsInsert
     :: Group -- ^ 'giPayload'
     -> GroupsInsert
-groupsInsert pGiPayload_ =
-    GroupsInsert'
-    { _giPayload = pGiPayload_
-    }
+groupsInsert pGiPayload_ = GroupsInsert' {_giPayload = pGiPayload_}
+
 
 -- | Multipart request metadata.
 giPayload :: Lens' GroupsInsert Group
diff --git a/gen/Network/Google/Resource/Directory/Groups/List.hs b/gen/Network/Google/Resource/Directory/Groups/List.hs
--- a/gen/Network/Google/Resource/Directory/Groups/List.hs
+++ b/gen/Network/Google/Resource/Directory/Groups/List.hs
@@ -66,7 +66,8 @@
 -- | Retrieve all groups of a domain or of a user given a userKey (paginated)
 --
 -- /See:/ 'groupsList' smart constructor.
-data GroupsList = GroupsList'
+data GroupsList =
+  GroupsList'
     { _glOrderBy    :: !(Maybe GroupsListOrderBy)
     , _glDomain     :: !(Maybe Text)
     , _glSortOrder  :: !(Maybe GroupsListSortOrder)
@@ -75,8 +76,10 @@
     , _glPageToken  :: !(Maybe Text)
     , _glUserKey    :: !(Maybe Text)
     , _glMaxResults :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GroupsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -99,7 +102,7 @@
 groupsList
     :: GroupsList
 groupsList =
-    GroupsList'
+  GroupsList'
     { _glOrderBy = Nothing
     , _glDomain = Nothing
     , _glSortOrder = Nothing
@@ -109,6 +112,7 @@
     , _glUserKey = Nothing
     , _glMaxResults = Nothing
     }
+
 
 -- | Column to use for sorting results
 glOrderBy :: Lens' GroupsList (Maybe GroupsListOrderBy)
diff --git a/gen/Network/Google/Resource/Directory/Groups/Patch.hs b/gen/Network/Google/Resource/Directory/Groups/Patch.hs
--- a/gen/Network/Google/Resource/Directory/Groups/Patch.hs
+++ b/gen/Network/Google/Resource/Directory/Groups/Patch.hs
@@ -54,11 +54,14 @@
 -- | Update Group. This method supports patch semantics.
 --
 -- /See:/ 'groupsPatch' smart constructor.
-data GroupsPatch = GroupsPatch'
+data GroupsPatch =
+  GroupsPatch'
     { _gpGroupKey :: !Text
     , _gpPayload  :: !Group
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GroupsPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -71,10 +74,8 @@
     -> Group -- ^ 'gpPayload'
     -> GroupsPatch
 groupsPatch pGpGroupKey_ pGpPayload_ =
-    GroupsPatch'
-    { _gpGroupKey = pGpGroupKey_
-    , _gpPayload = pGpPayload_
-    }
+  GroupsPatch' {_gpGroupKey = pGpGroupKey_, _gpPayload = pGpPayload_}
+
 
 -- | Email or immutable ID of the group. If ID, it should match with id of
 -- group object
diff --git a/gen/Network/Google/Resource/Directory/Groups/Update.hs b/gen/Network/Google/Resource/Directory/Groups/Update.hs
--- a/gen/Network/Google/Resource/Directory/Groups/Update.hs
+++ b/gen/Network/Google/Resource/Directory/Groups/Update.hs
@@ -54,11 +54,14 @@
 -- | Update Group
 --
 -- /See:/ 'groupsUpdate' smart constructor.
-data GroupsUpdate = GroupsUpdate'
+data GroupsUpdate =
+  GroupsUpdate'
     { _guGroupKey :: !Text
     , _guPayload  :: !Group
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GroupsUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -71,10 +74,8 @@
     -> Group -- ^ 'guPayload'
     -> GroupsUpdate
 groupsUpdate pGuGroupKey_ pGuPayload_ =
-    GroupsUpdate'
-    { _guGroupKey = pGuGroupKey_
-    , _guPayload = pGuPayload_
-    }
+  GroupsUpdate' {_guGroupKey = pGuGroupKey_, _guPayload = pGuPayload_}
+
 
 -- | Email or immutable ID of the group. If ID, it should match with id of
 -- group object
diff --git a/gen/Network/Google/Resource/Directory/Members/Delete.hs b/gen/Network/Google/Resource/Directory/Members/Delete.hs
--- a/gen/Network/Google/Resource/Directory/Members/Delete.hs
+++ b/gen/Network/Google/Resource/Directory/Members/Delete.hs
@@ -55,11 +55,14 @@
 -- | Remove membership.
 --
 -- /See:/ 'membersDelete' smart constructor.
-data MembersDelete = MembersDelete'
+data MembersDelete =
+  MembersDelete'
     { _mdMemberKey :: !Text
     , _mdGroupKey  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'MembersDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'mdGroupKey'
     -> MembersDelete
 membersDelete pMdMemberKey_ pMdGroupKey_ =
-    MembersDelete'
-    { _mdMemberKey = pMdMemberKey_
-    , _mdGroupKey = pMdGroupKey_
-    }
+  MembersDelete' {_mdMemberKey = pMdMemberKey_, _mdGroupKey = pMdGroupKey_}
+
 
 -- | Email or immutable ID of the member
 mdMemberKey :: Lens' MembersDelete Text
diff --git a/gen/Network/Google/Resource/Directory/Members/Get.hs b/gen/Network/Google/Resource/Directory/Members/Get.hs
--- a/gen/Network/Google/Resource/Directory/Members/Get.hs
+++ b/gen/Network/Google/Resource/Directory/Members/Get.hs
@@ -55,11 +55,14 @@
 -- | Retrieve Group Member
 --
 -- /See:/ 'membersGet' smart constructor.
-data MembersGet = MembersGet'
+data MembersGet =
+  MembersGet'
     { _mgMemberKey :: !Text
     , _mgGroupKey  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'MembersGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'mgGroupKey'
     -> MembersGet
 membersGet pMgMemberKey_ pMgGroupKey_ =
-    MembersGet'
-    { _mgMemberKey = pMgMemberKey_
-    , _mgGroupKey = pMgGroupKey_
-    }
+  MembersGet' {_mgMemberKey = pMgMemberKey_, _mgGroupKey = pMgGroupKey_}
+
 
 -- | Email or immutable ID of the member
 mgMemberKey :: Lens' MembersGet Text
diff --git a/gen/Network/Google/Resource/Directory/Members/HasMember.hs b/gen/Network/Google/Resource/Directory/Members/HasMember.hs
--- a/gen/Network/Google/Resource/Directory/Members/HasMember.hs
+++ b/gen/Network/Google/Resource/Directory/Members/HasMember.hs
@@ -58,11 +58,14 @@
 -- be direct or nested.
 --
 -- /See:/ 'membersHasMember'' smart constructor.
-data MembersHasMember' = MembersHasMember''
+data MembersHasMember' =
+  MembersHasMember''
     { _mhmMemberKey :: !Text
     , _mhmGroupKey  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'MembersHasMember'' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -75,10 +78,9 @@
     -> Text -- ^ 'mhmGroupKey'
     -> MembersHasMember'
 membersHasMember' pMhmMemberKey_ pMhmGroupKey_ =
-    MembersHasMember''
-    { _mhmMemberKey = pMhmMemberKey_
-    , _mhmGroupKey = pMhmGroupKey_
-    }
+  MembersHasMember''
+    {_mhmMemberKey = pMhmMemberKey_, _mhmGroupKey = pMhmGroupKey_}
+
 
 -- | Identifies the user member in the API request. The value can be the
 -- user\'s primary email address, alias, or unique ID.
diff --git a/gen/Network/Google/Resource/Directory/Members/Insert.hs b/gen/Network/Google/Resource/Directory/Members/Insert.hs
--- a/gen/Network/Google/Resource/Directory/Members/Insert.hs
+++ b/gen/Network/Google/Resource/Directory/Members/Insert.hs
@@ -55,11 +55,14 @@
 -- | Add user to the specified group.
 --
 -- /See:/ 'membersInsert' smart constructor.
-data MembersInsert = MembersInsert'
+data MembersInsert =
+  MembersInsert'
     { _miGroupKey :: !Text
     , _miPayload  :: !Member
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'MembersInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Member -- ^ 'miPayload'
     -> MembersInsert
 membersInsert pMiGroupKey_ pMiPayload_ =
-    MembersInsert'
-    { _miGroupKey = pMiGroupKey_
-    , _miPayload = pMiPayload_
-    }
+  MembersInsert' {_miGroupKey = pMiGroupKey_, _miPayload = pMiPayload_}
+
 
 -- | Email or immutable ID of the group
 miGroupKey :: Lens' MembersInsert Text
diff --git a/gen/Network/Google/Resource/Directory/Members/List.hs b/gen/Network/Google/Resource/Directory/Members/List.hs
--- a/gen/Network/Google/Resource/Directory/Members/List.hs
+++ b/gen/Network/Google/Resource/Directory/Members/List.hs
@@ -61,14 +61,17 @@
 -- | Retrieve all members in a group (paginated)
 --
 -- /See:/ 'membersList' smart constructor.
-data MembersList = MembersList'
+data MembersList =
+  MembersList'
     { _mlRoles                    :: !(Maybe Text)
     , _mlGroupKey                 :: !Text
     , _mlPageToken                :: !(Maybe Text)
     , _mlIncludeDerivedMembership :: !(Maybe Bool)
     , _mlMaxResults               :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'MembersList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -86,13 +89,14 @@
     :: Text -- ^ 'mlGroupKey'
     -> MembersList
 membersList pMlGroupKey_ =
-    MembersList'
+  MembersList'
     { _mlRoles = Nothing
     , _mlGroupKey = pMlGroupKey_
     , _mlPageToken = Nothing
     , _mlIncludeDerivedMembership = Nothing
     , _mlMaxResults = Nothing
     }
+
 
 -- | Comma separated role values to filter list results on.
 mlRoles :: Lens' MembersList (Maybe Text)
diff --git a/gen/Network/Google/Resource/Directory/Members/Patch.hs b/gen/Network/Google/Resource/Directory/Members/Patch.hs
--- a/gen/Network/Google/Resource/Directory/Members/Patch.hs
+++ b/gen/Network/Google/Resource/Directory/Members/Patch.hs
@@ -59,12 +59,15 @@
 -- patch semantics.
 --
 -- /See:/ 'membersPatch' smart constructor.
-data MembersPatch = MembersPatch'
+data MembersPatch =
+  MembersPatch'
     { _mpMemberKey :: !Text
     , _mpGroupKey  :: !Text
     , _mpPayload   :: !Member
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'MembersPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -80,11 +83,12 @@
     -> Member -- ^ 'mpPayload'
     -> MembersPatch
 membersPatch pMpMemberKey_ pMpGroupKey_ pMpPayload_ =
-    MembersPatch'
+  MembersPatch'
     { _mpMemberKey = pMpMemberKey_
     , _mpGroupKey = pMpGroupKey_
     , _mpPayload = pMpPayload_
     }
+
 
 -- | Email or immutable ID of the user. If ID, it should match with id of
 -- member object
diff --git a/gen/Network/Google/Resource/Directory/Members/Update.hs b/gen/Network/Google/Resource/Directory/Members/Update.hs
--- a/gen/Network/Google/Resource/Directory/Members/Update.hs
+++ b/gen/Network/Google/Resource/Directory/Members/Update.hs
@@ -57,12 +57,15 @@
 -- | Update membership of a user in the specified group.
 --
 -- /See:/ 'membersUpdate' smart constructor.
-data MembersUpdate = MembersUpdate'
+data MembersUpdate =
+  MembersUpdate'
     { _muMemberKey :: !Text
     , _muGroupKey  :: !Text
     , _muPayload   :: !Member
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'MembersUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -78,11 +81,12 @@
     -> Member -- ^ 'muPayload'
     -> MembersUpdate
 membersUpdate pMuMemberKey_ pMuGroupKey_ pMuPayload_ =
-    MembersUpdate'
+  MembersUpdate'
     { _muMemberKey = pMuMemberKey_
     , _muGroupKey = pMuGroupKey_
     , _muPayload = pMuPayload_
     }
+
 
 -- | Email or immutable ID of the user. If ID, it should match with id of
 -- member object
diff --git a/gen/Network/Google/Resource/Directory/MobileDevices/Action.hs b/gen/Network/Google/Resource/Directory/MobileDevices/Action.hs
--- a/gen/Network/Google/Resource/Directory/MobileDevices/Action.hs
+++ b/gen/Network/Google/Resource/Directory/MobileDevices/Action.hs
@@ -59,12 +59,15 @@
 -- | Take action on Mobile Device
 --
 -- /See:/ 'mobileDevicesAction' smart constructor.
-data MobileDevicesAction = MobileDevicesAction'
+data MobileDevicesAction =
+  MobileDevicesAction'
     { _mdaResourceId :: !Text
     , _mdaPayload    :: !MobileDeviceAction
     , _mdaCustomerId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'MobileDevicesAction' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -80,11 +83,12 @@
     -> Text -- ^ 'mdaCustomerId'
     -> MobileDevicesAction
 mobileDevicesAction pMdaResourceId_ pMdaPayload_ pMdaCustomerId_ =
-    MobileDevicesAction'
+  MobileDevicesAction'
     { _mdaResourceId = pMdaResourceId_
     , _mdaPayload = pMdaPayload_
     , _mdaCustomerId = pMdaCustomerId_
     }
+
 
 -- | Immutable ID of Mobile Device
 mdaResourceId :: Lens' MobileDevicesAction Text
diff --git a/gen/Network/Google/Resource/Directory/MobileDevices/Delete.hs b/gen/Network/Google/Resource/Directory/MobileDevices/Delete.hs
--- a/gen/Network/Google/Resource/Directory/MobileDevices/Delete.hs
+++ b/gen/Network/Google/Resource/Directory/MobileDevices/Delete.hs
@@ -56,11 +56,14 @@
 -- | Delete Mobile Device
 --
 -- /See:/ 'mobileDevicesDelete' smart constructor.
-data MobileDevicesDelete = MobileDevicesDelete'
+data MobileDevicesDelete =
+  MobileDevicesDelete'
     { _mddResourceId :: !Text
     , _mddCustomerId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'MobileDevicesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -73,10 +76,9 @@
     -> Text -- ^ 'mddCustomerId'
     -> MobileDevicesDelete
 mobileDevicesDelete pMddResourceId_ pMddCustomerId_ =
-    MobileDevicesDelete'
-    { _mddResourceId = pMddResourceId_
-    , _mddCustomerId = pMddCustomerId_
-    }
+  MobileDevicesDelete'
+    {_mddResourceId = pMddResourceId_, _mddCustomerId = pMddCustomerId_}
+
 
 -- | Immutable ID of Mobile Device
 mddResourceId :: Lens' MobileDevicesDelete Text
diff --git a/gen/Network/Google/Resource/Directory/MobileDevices/Get.hs b/gen/Network/Google/Resource/Directory/MobileDevices/Get.hs
--- a/gen/Network/Google/Resource/Directory/MobileDevices/Get.hs
+++ b/gen/Network/Google/Resource/Directory/MobileDevices/Get.hs
@@ -58,12 +58,15 @@
 -- | Retrieve Mobile Device
 --
 -- /See:/ 'mobileDevicesGet' smart constructor.
-data MobileDevicesGet = MobileDevicesGet'
+data MobileDevicesGet =
+  MobileDevicesGet'
     { _mdgResourceId :: !Text
     , _mdgCustomerId :: !Text
     , _mdgProjection :: !(Maybe MobileDevicesGetProjection)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'MobileDevicesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -78,11 +81,12 @@
     -> Text -- ^ 'mdgCustomerId'
     -> MobileDevicesGet
 mobileDevicesGet pMdgResourceId_ pMdgCustomerId_ =
-    MobileDevicesGet'
+  MobileDevicesGet'
     { _mdgResourceId = pMdgResourceId_
     , _mdgCustomerId = pMdgCustomerId_
     , _mdgProjection = Nothing
     }
+
 
 -- | Immutable ID of Mobile Device
 mdgResourceId :: Lens' MobileDevicesGet Text
diff --git a/gen/Network/Google/Resource/Directory/MobileDevices/List.hs b/gen/Network/Google/Resource/Directory/MobileDevices/List.hs
--- a/gen/Network/Google/Resource/Directory/MobileDevices/List.hs
+++ b/gen/Network/Google/Resource/Directory/MobileDevices/List.hs
@@ -68,7 +68,8 @@
 -- | Retrieve all Mobile Devices of a customer (paginated)
 --
 -- /See:/ 'mobileDevicesList' smart constructor.
-data MobileDevicesList = MobileDevicesList'
+data MobileDevicesList =
+  MobileDevicesList'
     { _mdlOrderBy    :: !(Maybe MobileDevicesListOrderBy)
     , _mdlCustomerId :: !Text
     , _mdlSortOrder  :: !(Maybe MobileDevicesListSortOrder)
@@ -76,8 +77,10 @@
     , _mdlProjection :: !(Maybe MobileDevicesListProjection)
     , _mdlPageToken  :: !(Maybe Text)
     , _mdlMaxResults :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'MobileDevicesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -99,7 +102,7 @@
     :: Text -- ^ 'mdlCustomerId'
     -> MobileDevicesList
 mobileDevicesList pMdlCustomerId_ =
-    MobileDevicesList'
+  MobileDevicesList'
     { _mdlOrderBy = Nothing
     , _mdlCustomerId = pMdlCustomerId_
     , _mdlSortOrder = Nothing
@@ -108,6 +111,7 @@
     , _mdlPageToken = Nothing
     , _mdlMaxResults = Nothing
     }
+
 
 -- | Column to use for sorting results
 mdlOrderBy :: Lens' MobileDevicesList (Maybe MobileDevicesListOrderBy)
diff --git a/gen/Network/Google/Resource/Directory/Notifications/Delete.hs b/gen/Network/Google/Resource/Directory/Notifications/Delete.hs
--- a/gen/Network/Google/Resource/Directory/Notifications/Delete.hs
+++ b/gen/Network/Google/Resource/Directory/Notifications/Delete.hs
@@ -55,11 +55,14 @@
 -- | Deletes a notification
 --
 -- /See:/ 'notificationsDelete' smart constructor.
-data NotificationsDelete = NotificationsDelete'
+data NotificationsDelete =
+  NotificationsDelete'
     { _ndCustomer       :: !Text
     , _ndNotificationId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'NotificationsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,9 @@
     -> Text -- ^ 'ndNotificationId'
     -> NotificationsDelete
 notificationsDelete pNdCustomer_ pNdNotificationId_ =
-    NotificationsDelete'
-    { _ndCustomer = pNdCustomer_
-    , _ndNotificationId = pNdNotificationId_
-    }
+  NotificationsDelete'
+    {_ndCustomer = pNdCustomer_, _ndNotificationId = pNdNotificationId_}
+
 
 -- | The unique ID for the customer\'s G Suite account. The customerId is
 -- also returned as part of the Users resource.
diff --git a/gen/Network/Google/Resource/Directory/Notifications/Get.hs b/gen/Network/Google/Resource/Directory/Notifications/Get.hs
--- a/gen/Network/Google/Resource/Directory/Notifications/Get.hs
+++ b/gen/Network/Google/Resource/Directory/Notifications/Get.hs
@@ -55,11 +55,14 @@
 -- | Retrieves a notification.
 --
 -- /See:/ 'notificationsGet' smart constructor.
-data NotificationsGet = NotificationsGet'
+data NotificationsGet =
+  NotificationsGet'
     { _ngCustomer       :: !Text
     , _ngNotificationId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'NotificationsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,9 @@
     -> Text -- ^ 'ngNotificationId'
     -> NotificationsGet
 notificationsGet pNgCustomer_ pNgNotificationId_ =
-    NotificationsGet'
-    { _ngCustomer = pNgCustomer_
-    , _ngNotificationId = pNgNotificationId_
-    }
+  NotificationsGet'
+    {_ngCustomer = pNgCustomer_, _ngNotificationId = pNgNotificationId_}
+
 
 -- | The unique ID for the customer\'s G Suite account. The customerId is
 -- also returned as part of the Users resource.
diff --git a/gen/Network/Google/Resource/Directory/Notifications/List.hs b/gen/Network/Google/Resource/Directory/Notifications/List.hs
--- a/gen/Network/Google/Resource/Directory/Notifications/List.hs
+++ b/gen/Network/Google/Resource/Directory/Notifications/List.hs
@@ -59,13 +59,16 @@
 -- | Retrieves a list of notifications.
 --
 -- /See:/ 'notificationsList' smart constructor.
-data NotificationsList = NotificationsList'
+data NotificationsList =
+  NotificationsList'
     { _nlCustomer   :: !Text
     , _nlLanguage   :: !(Maybe Text)
     , _nlPageToken  :: !(Maybe Text)
     , _nlMaxResults :: !(Maybe (Textual Word32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'NotificationsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -81,12 +84,13 @@
     :: Text -- ^ 'nlCustomer'
     -> NotificationsList
 notificationsList pNlCustomer_ =
-    NotificationsList'
+  NotificationsList'
     { _nlCustomer = pNlCustomer_
     , _nlLanguage = Nothing
     , _nlPageToken = Nothing
     , _nlMaxResults = Nothing
     }
+
 
 -- | The unique ID for the customer\'s G Suite account.
 nlCustomer :: Lens' NotificationsList Text
diff --git a/gen/Network/Google/Resource/Directory/Notifications/Patch.hs b/gen/Network/Google/Resource/Directory/Notifications/Patch.hs
--- a/gen/Network/Google/Resource/Directory/Notifications/Patch.hs
+++ b/gen/Network/Google/Resource/Directory/Notifications/Patch.hs
@@ -58,12 +58,15 @@
 -- | Updates a notification. This method supports patch semantics.
 --
 -- /See:/ 'notificationsPatch' smart constructor.
-data NotificationsPatch = NotificationsPatch'
+data NotificationsPatch =
+  NotificationsPatch'
     { _npPayload        :: !Notification
     , _npCustomer       :: !Text
     , _npNotificationId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'NotificationsPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -79,11 +82,12 @@
     -> Text -- ^ 'npNotificationId'
     -> NotificationsPatch
 notificationsPatch pNpPayload_ pNpCustomer_ pNpNotificationId_ =
-    NotificationsPatch'
+  NotificationsPatch'
     { _npPayload = pNpPayload_
     , _npCustomer = pNpCustomer_
     , _npNotificationId = pNpNotificationId_
     }
+
 
 -- | Multipart request metadata.
 npPayload :: Lens' NotificationsPatch Notification
diff --git a/gen/Network/Google/Resource/Directory/Notifications/Update.hs b/gen/Network/Google/Resource/Directory/Notifications/Update.hs
--- a/gen/Network/Google/Resource/Directory/Notifications/Update.hs
+++ b/gen/Network/Google/Resource/Directory/Notifications/Update.hs
@@ -58,12 +58,15 @@
 -- | Updates a notification.
 --
 -- /See:/ 'notificationsUpdate' smart constructor.
-data NotificationsUpdate = NotificationsUpdate'
+data NotificationsUpdate =
+  NotificationsUpdate'
     { _nuPayload        :: !Notification
     , _nuCustomer       :: !Text
     , _nuNotificationId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'NotificationsUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -79,11 +82,12 @@
     -> Text -- ^ 'nuNotificationId'
     -> NotificationsUpdate
 notificationsUpdate pNuPayload_ pNuCustomer_ pNuNotificationId_ =
-    NotificationsUpdate'
+  NotificationsUpdate'
     { _nuPayload = pNuPayload_
     , _nuCustomer = pNuCustomer_
     , _nuNotificationId = pNuNotificationId_
     }
+
 
 -- | Multipart request metadata.
 nuPayload :: Lens' NotificationsUpdate Notification
diff --git a/gen/Network/Google/Resource/Directory/OrgUnits/Delete.hs b/gen/Network/Google/Resource/Directory/OrgUnits/Delete.hs
--- a/gen/Network/Google/Resource/Directory/OrgUnits/Delete.hs
+++ b/gen/Network/Google/Resource/Directory/OrgUnits/Delete.hs
@@ -55,11 +55,14 @@
 -- | Remove organizational unit
 --
 -- /See:/ 'orgUnitsDelete' smart constructor.
-data OrgUnitsDelete = OrgUnitsDelete'
+data OrgUnitsDelete =
+  OrgUnitsDelete'
     { _oudOrgUnitPath :: ![Text]
     , _oudCustomerId  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'OrgUnitsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,11 @@
     -> Text -- ^ 'oudCustomerId'
     -> OrgUnitsDelete
 orgUnitsDelete pOudOrgUnitPath_ pOudCustomerId_ =
-    OrgUnitsDelete'
+  OrgUnitsDelete'
     { _oudOrgUnitPath = _Coerce # pOudOrgUnitPath_
     , _oudCustomerId = pOudCustomerId_
     }
+
 
 -- | Full path of the organizational unit or its ID
 oudOrgUnitPath :: Lens' OrgUnitsDelete [Text]
diff --git a/gen/Network/Google/Resource/Directory/OrgUnits/Get.hs b/gen/Network/Google/Resource/Directory/OrgUnits/Get.hs
--- a/gen/Network/Google/Resource/Directory/OrgUnits/Get.hs
+++ b/gen/Network/Google/Resource/Directory/OrgUnits/Get.hs
@@ -55,11 +55,14 @@
 -- | Retrieve organizational unit
 --
 -- /See:/ 'orgUnitsGet' smart constructor.
-data OrgUnitsGet = OrgUnitsGet'
+data OrgUnitsGet =
+  OrgUnitsGet'
     { _ougOrgUnitPath :: ![Text]
     , _ougCustomerId  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'OrgUnitsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,11 @@
     -> Text -- ^ 'ougCustomerId'
     -> OrgUnitsGet
 orgUnitsGet pOugOrgUnitPath_ pOugCustomerId_ =
-    OrgUnitsGet'
+  OrgUnitsGet'
     { _ougOrgUnitPath = _Coerce # pOugOrgUnitPath_
     , _ougCustomerId = pOugCustomerId_
     }
+
 
 -- | Full path of the organizational unit or its ID
 ougOrgUnitPath :: Lens' OrgUnitsGet [Text]
diff --git a/gen/Network/Google/Resource/Directory/OrgUnits/Insert.hs b/gen/Network/Google/Resource/Directory/OrgUnits/Insert.hs
--- a/gen/Network/Google/Resource/Directory/OrgUnits/Insert.hs
+++ b/gen/Network/Google/Resource/Directory/OrgUnits/Insert.hs
@@ -55,11 +55,14 @@
 -- | Add organizational unit
 --
 -- /See:/ 'orgUnitsInsert' smart constructor.
-data OrgUnitsInsert = OrgUnitsInsert'
+data OrgUnitsInsert =
+  OrgUnitsInsert'
     { _ouiPayload    :: !OrgUnit
     , _ouiCustomerId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'OrgUnitsInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'ouiCustomerId'
     -> OrgUnitsInsert
 orgUnitsInsert pOuiPayload_ pOuiCustomerId_ =
-    OrgUnitsInsert'
-    { _ouiPayload = pOuiPayload_
-    , _ouiCustomerId = pOuiCustomerId_
-    }
+  OrgUnitsInsert' {_ouiPayload = pOuiPayload_, _ouiCustomerId = pOuiCustomerId_}
+
 
 -- | Multipart request metadata.
 ouiPayload :: Lens' OrgUnitsInsert OrgUnit
diff --git a/gen/Network/Google/Resource/Directory/OrgUnits/List.hs b/gen/Network/Google/Resource/Directory/OrgUnits/List.hs
--- a/gen/Network/Google/Resource/Directory/OrgUnits/List.hs
+++ b/gen/Network/Google/Resource/Directory/OrgUnits/List.hs
@@ -57,12 +57,15 @@
 -- | Retrieve all organizational units
 --
 -- /See:/ 'orgUnitsList' smart constructor.
-data OrgUnitsList = OrgUnitsList'
+data OrgUnitsList =
+  OrgUnitsList'
     { _oulOrgUnitPath :: !Text
     , _oulCustomerId  :: !Text
     , _oulType        :: !(Maybe OrgUnitsListType)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'OrgUnitsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -76,11 +79,9 @@
     :: Text -- ^ 'oulCustomerId'
     -> OrgUnitsList
 orgUnitsList pOulCustomerId_ =
-    OrgUnitsList'
-    { _oulOrgUnitPath = ""
-    , _oulCustomerId = pOulCustomerId_
-    , _oulType = Nothing
-    }
+  OrgUnitsList'
+    {_oulOrgUnitPath = "", _oulCustomerId = pOulCustomerId_, _oulType = Nothing}
+
 
 -- | the URL-encoded organizational unit\'s path or its ID
 oulOrgUnitPath :: Lens' OrgUnitsList Text
diff --git a/gen/Network/Google/Resource/Directory/OrgUnits/Patch.hs b/gen/Network/Google/Resource/Directory/OrgUnits/Patch.hs
--- a/gen/Network/Google/Resource/Directory/OrgUnits/Patch.hs
+++ b/gen/Network/Google/Resource/Directory/OrgUnits/Patch.hs
@@ -57,12 +57,15 @@
 -- | Update organizational unit. This method supports patch semantics.
 --
 -- /See:/ 'orgUnitsPatch' smart constructor.
-data OrgUnitsPatch = OrgUnitsPatch'
+data OrgUnitsPatch =
+  OrgUnitsPatch'
     { _oupPayload     :: !OrgUnit
     , _oupOrgUnitPath :: ![Text]
     , _oupCustomerId  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'OrgUnitsPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -78,11 +81,12 @@
     -> Text -- ^ 'oupCustomerId'
     -> OrgUnitsPatch
 orgUnitsPatch pOupPayload_ pOupOrgUnitPath_ pOupCustomerId_ =
-    OrgUnitsPatch'
+  OrgUnitsPatch'
     { _oupPayload = pOupPayload_
     , _oupOrgUnitPath = _Coerce # pOupOrgUnitPath_
     , _oupCustomerId = pOupCustomerId_
     }
+
 
 -- | Multipart request metadata.
 oupPayload :: Lens' OrgUnitsPatch OrgUnit
diff --git a/gen/Network/Google/Resource/Directory/OrgUnits/Update.hs b/gen/Network/Google/Resource/Directory/OrgUnits/Update.hs
--- a/gen/Network/Google/Resource/Directory/OrgUnits/Update.hs
+++ b/gen/Network/Google/Resource/Directory/OrgUnits/Update.hs
@@ -57,12 +57,15 @@
 -- | Update organizational unit
 --
 -- /See:/ 'orgUnitsUpdate' smart constructor.
-data OrgUnitsUpdate = OrgUnitsUpdate'
+data OrgUnitsUpdate =
+  OrgUnitsUpdate'
     { _ouuPayload     :: !OrgUnit
     , _ouuOrgUnitPath :: ![Text]
     , _ouuCustomerId  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'OrgUnitsUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -78,11 +81,12 @@
     -> Text -- ^ 'ouuCustomerId'
     -> OrgUnitsUpdate
 orgUnitsUpdate pOuuPayload_ pOuuOrgUnitPath_ pOuuCustomerId_ =
-    OrgUnitsUpdate'
+  OrgUnitsUpdate'
     { _ouuPayload = pOuuPayload_
     , _ouuOrgUnitPath = _Coerce # pOuuOrgUnitPath_
     , _ouuCustomerId = pOuuCustomerId_
     }
+
 
 -- | Multipart request metadata.
 ouuPayload :: Lens' OrgUnitsUpdate OrgUnit
diff --git a/gen/Network/Google/Resource/Directory/Privileges/List.hs b/gen/Network/Google/Resource/Directory/Privileges/List.hs
--- a/gen/Network/Google/Resource/Directory/Privileges/List.hs
+++ b/gen/Network/Google/Resource/Directory/Privileges/List.hs
@@ -55,10 +55,13 @@
 -- | Retrieves a paginated list of all privileges for a customer.
 --
 -- /See:/ 'privilegesList' smart constructor.
-newtype PrivilegesList = PrivilegesList'
+newtype PrivilegesList =
+  PrivilegesList'
     { _plCustomer :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PrivilegesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -67,10 +70,8 @@
 privilegesList
     :: Text -- ^ 'plCustomer'
     -> PrivilegesList
-privilegesList pPlCustomer_ =
-    PrivilegesList'
-    { _plCustomer = pPlCustomer_
-    }
+privilegesList pPlCustomer_ = PrivilegesList' {_plCustomer = pPlCustomer_}
+
 
 -- | Immutable ID of the G Suite account.
 plCustomer :: Lens' PrivilegesList Text
diff --git a/gen/Network/Google/Resource/Directory/ResolvedAppAccessSettings/GetSettings.hs b/gen/Network/Google/Resource/Directory/ResolvedAppAccessSettings/GetSettings.hs
--- a/gen/Network/Google/Resource/Directory/ResolvedAppAccessSettings/GetSettings.hs
+++ b/gen/Network/Google/Resource/Directory/ResolvedAppAccessSettings/GetSettings.hs
@@ -51,17 +51,20 @@
 --
 -- /See:/ 'resolvedAppAccessSettingsGetSettings' smart constructor.
 data ResolvedAppAccessSettingsGetSettings =
-    ResolvedAppAccessSettingsGetSettings'
-    deriving (Eq,Show,Data,Typeable,Generic)
+  ResolvedAppAccessSettingsGetSettings'
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ResolvedAppAccessSettingsGetSettings' with the minimum fields required to make a request.
 --
 resolvedAppAccessSettingsGetSettings
     :: ResolvedAppAccessSettingsGetSettings
 resolvedAppAccessSettingsGetSettings = ResolvedAppAccessSettingsGetSettings'
 
+
 instance GoogleRequest
-         ResolvedAppAccessSettingsGetSettings where
+           ResolvedAppAccessSettingsGetSettings
+         where
         type Rs ResolvedAppAccessSettingsGetSettings =
              AppAccessCollections
         type Scopes ResolvedAppAccessSettingsGetSettings =
diff --git a/gen/Network/Google/Resource/Directory/ResolvedAppAccessSettings/ListTrustedApps.hs b/gen/Network/Google/Resource/Directory/ResolvedAppAccessSettings/ListTrustedApps.hs
--- a/gen/Network/Google/Resource/Directory/ResolvedAppAccessSettings/ListTrustedApps.hs
+++ b/gen/Network/Google/Resource/Directory/ResolvedAppAccessSettings/ListTrustedApps.hs
@@ -51,18 +51,21 @@
 --
 -- /See:/ 'resolvedAppAccessSettingsListTrustedApps' smart constructor.
 data ResolvedAppAccessSettingsListTrustedApps =
-    ResolvedAppAccessSettingsListTrustedApps'
-    deriving (Eq,Show,Data,Typeable,Generic)
+  ResolvedAppAccessSettingsListTrustedApps'
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ResolvedAppAccessSettingsListTrustedApps' with the minimum fields required to make a request.
 --
 resolvedAppAccessSettingsListTrustedApps
     :: ResolvedAppAccessSettingsListTrustedApps
 resolvedAppAccessSettingsListTrustedApps =
-    ResolvedAppAccessSettingsListTrustedApps'
+  ResolvedAppAccessSettingsListTrustedApps'
 
+
 instance GoogleRequest
-         ResolvedAppAccessSettingsListTrustedApps where
+           ResolvedAppAccessSettingsListTrustedApps
+         where
         type Rs ResolvedAppAccessSettingsListTrustedApps =
              TrustedApps
         type Scopes ResolvedAppAccessSettingsListTrustedApps
diff --git a/gen/Network/Google/Resource/Directory/Resources/Buildings/Delete.hs b/gen/Network/Google/Resource/Directory/Resources/Buildings/Delete.hs
--- a/gen/Network/Google/Resource/Directory/Resources/Buildings/Delete.hs
+++ b/gen/Network/Google/Resource/Directory/Resources/Buildings/Delete.hs
@@ -56,11 +56,14 @@
 -- | Deletes a building.
 --
 -- /See:/ 'resourcesBuildingsDelete' smart constructor.
-data ResourcesBuildingsDelete = ResourcesBuildingsDelete'
+data ResourcesBuildingsDelete =
+  ResourcesBuildingsDelete'
     { _rbdBuildingId :: !Text
     , _rbdCustomer   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ResourcesBuildingsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -73,10 +76,9 @@
     -> Text -- ^ 'rbdCustomer'
     -> ResourcesBuildingsDelete
 resourcesBuildingsDelete pRbdBuildingId_ pRbdCustomer_ =
-    ResourcesBuildingsDelete'
-    { _rbdBuildingId = pRbdBuildingId_
-    , _rbdCustomer = pRbdCustomer_
-    }
+  ResourcesBuildingsDelete'
+    {_rbdBuildingId = pRbdBuildingId_, _rbdCustomer = pRbdCustomer_}
+
 
 -- | The ID of the building to delete.
 rbdBuildingId :: Lens' ResourcesBuildingsDelete Text
diff --git a/gen/Network/Google/Resource/Directory/Resources/Buildings/Get.hs b/gen/Network/Google/Resource/Directory/Resources/Buildings/Get.hs
--- a/gen/Network/Google/Resource/Directory/Resources/Buildings/Get.hs
+++ b/gen/Network/Google/Resource/Directory/Resources/Buildings/Get.hs
@@ -56,11 +56,14 @@
 -- | Retrieves a building.
 --
 -- /See:/ 'resourcesBuildingsGet' smart constructor.
-data ResourcesBuildingsGet = ResourcesBuildingsGet'
+data ResourcesBuildingsGet =
+  ResourcesBuildingsGet'
     { _rbgBuildingId :: !Text
     , _rbgCustomer   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ResourcesBuildingsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -73,10 +76,9 @@
     -> Text -- ^ 'rbgCustomer'
     -> ResourcesBuildingsGet
 resourcesBuildingsGet pRbgBuildingId_ pRbgCustomer_ =
-    ResourcesBuildingsGet'
-    { _rbgBuildingId = pRbgBuildingId_
-    , _rbgCustomer = pRbgCustomer_
-    }
+  ResourcesBuildingsGet'
+    {_rbgBuildingId = pRbgBuildingId_, _rbgCustomer = pRbgCustomer_}
+
 
 -- | The unique ID of the building to retrieve.
 rbgBuildingId :: Lens' ResourcesBuildingsGet Text
diff --git a/gen/Network/Google/Resource/Directory/Resources/Buildings/Insert.hs b/gen/Network/Google/Resource/Directory/Resources/Buildings/Insert.hs
--- a/gen/Network/Google/Resource/Directory/Resources/Buildings/Insert.hs
+++ b/gen/Network/Google/Resource/Directory/Resources/Buildings/Insert.hs
@@ -35,6 +35,7 @@
     -- * Request Lenses
     , rbiPayload
     , rbiCustomer
+    , rbiCoordinatesSource
     ) where
 
 import           Network.Google.Directory.Types
@@ -50,17 +51,24 @@
              Capture "customer" Text :>
                "resources" :>
                  "buildings" :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] Building :> Post '[JSON] Building
+                   QueryParam "coordinatesSource"
+                     ResourcesBuildingsInsertCoordinatesSource
+                     :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Building :> Post '[JSON] Building
 
 -- | Inserts a building.
 --
 -- /See:/ 'resourcesBuildingsInsert' smart constructor.
-data ResourcesBuildingsInsert = ResourcesBuildingsInsert'
-    { _rbiPayload  :: !Building
-    , _rbiCustomer :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+data ResourcesBuildingsInsert =
+  ResourcesBuildingsInsert'
+    { _rbiPayload           :: !Building
+    , _rbiCustomer          :: !Text
+    , _rbiCoordinatesSource :: !ResourcesBuildingsInsertCoordinatesSource
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ResourcesBuildingsInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -68,16 +76,20 @@
 -- * 'rbiPayload'
 --
 -- * 'rbiCustomer'
+--
+-- * 'rbiCoordinatesSource'
 resourcesBuildingsInsert
     :: Building -- ^ 'rbiPayload'
     -> Text -- ^ 'rbiCustomer'
     -> ResourcesBuildingsInsert
 resourcesBuildingsInsert pRbiPayload_ pRbiCustomer_ =
-    ResourcesBuildingsInsert'
+  ResourcesBuildingsInsert'
     { _rbiPayload = pRbiPayload_
     , _rbiCustomer = pRbiCustomer_
+    , _rbiCoordinatesSource = RBICSSourceUnspecified
     }
 
+
 -- | Multipart request metadata.
 rbiPayload :: Lens' ResourcesBuildingsInsert Building
 rbiPayload
@@ -90,12 +102,20 @@
 rbiCustomer
   = lens _rbiCustomer (\ s a -> s{_rbiCustomer = a})
 
+-- | Source from which Building.coordinates are derived.
+rbiCoordinatesSource :: Lens' ResourcesBuildingsInsert ResourcesBuildingsInsertCoordinatesSource
+rbiCoordinatesSource
+  = lens _rbiCoordinatesSource
+      (\ s a -> s{_rbiCoordinatesSource = a})
+
 instance GoogleRequest ResourcesBuildingsInsert where
         type Rs ResourcesBuildingsInsert = Building
         type Scopes ResourcesBuildingsInsert =
              '["https://www.googleapis.com/auth/admin.directory.resource.calendar"]
         requestClient ResourcesBuildingsInsert'{..}
-          = go _rbiCustomer (Just AltJSON) _rbiPayload
+          = go _rbiCustomer (Just _rbiCoordinatesSource)
+              (Just AltJSON)
+              _rbiPayload
               directoryService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Directory/Resources/Buildings/List.hs b/gen/Network/Google/Resource/Directory/Resources/Buildings/List.hs
--- a/gen/Network/Google/Resource/Directory/Resources/Buildings/List.hs
+++ b/gen/Network/Google/Resource/Directory/Resources/Buildings/List.hs
@@ -58,12 +58,15 @@
 -- | Retrieves a list of buildings for an account.
 --
 -- /See:/ 'resourcesBuildingsList' smart constructor.
-data ResourcesBuildingsList = ResourcesBuildingsList'
+data ResourcesBuildingsList =
+  ResourcesBuildingsList'
     { _rblCustomer   :: !Text
     , _rblPageToken  :: !(Maybe Text)
     , _rblMaxResults :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ResourcesBuildingsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -77,11 +80,12 @@
     :: Text -- ^ 'rblCustomer'
     -> ResourcesBuildingsList
 resourcesBuildingsList pRblCustomer_ =
-    ResourcesBuildingsList'
+  ResourcesBuildingsList'
     { _rblCustomer = pRblCustomer_
     , _rblPageToken = Nothing
     , _rblMaxResults = Nothing
     }
+
 
 -- | The unique ID for the customer\'s G Suite account. As an account
 -- administrator, you can also use the my_customer alias to represent your
diff --git a/gen/Network/Google/Resource/Directory/Resources/Buildings/Patch.hs b/gen/Network/Google/Resource/Directory/Resources/Buildings/Patch.hs
--- a/gen/Network/Google/Resource/Directory/Resources/Buildings/Patch.hs
+++ b/gen/Network/Google/Resource/Directory/Resources/Buildings/Patch.hs
@@ -36,6 +36,7 @@
     , rbpBuildingId
     , rbpPayload
     , rbpCustomer
+    , rbpCoordinatesSource
     ) where
 
 import           Network.Google.Directory.Types
@@ -52,18 +53,25 @@
                "resources" :>
                  "buildings" :>
                    Capture "buildingId" Text :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] Building :> Patch '[JSON] Building
+                     QueryParam "coordinatesSource"
+                       ResourcesBuildingsPatchCoordinatesSource
+                       :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] Building :> Patch '[JSON] Building
 
 -- | Updates a building. This method supports patch semantics.
 --
 -- /See:/ 'resourcesBuildingsPatch' smart constructor.
-data ResourcesBuildingsPatch = ResourcesBuildingsPatch'
-    { _rbpBuildingId :: !Text
-    , _rbpPayload    :: !Building
-    , _rbpCustomer   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+data ResourcesBuildingsPatch =
+  ResourcesBuildingsPatch'
+    { _rbpBuildingId        :: !Text
+    , _rbpPayload           :: !Building
+    , _rbpCustomer          :: !Text
+    , _rbpCoordinatesSource :: !ResourcesBuildingsPatchCoordinatesSource
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ResourcesBuildingsPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -73,18 +81,22 @@
 -- * 'rbpPayload'
 --
 -- * 'rbpCustomer'
+--
+-- * 'rbpCoordinatesSource'
 resourcesBuildingsPatch
     :: Text -- ^ 'rbpBuildingId'
     -> Building -- ^ 'rbpPayload'
     -> Text -- ^ 'rbpCustomer'
     -> ResourcesBuildingsPatch
 resourcesBuildingsPatch pRbpBuildingId_ pRbpPayload_ pRbpCustomer_ =
-    ResourcesBuildingsPatch'
+  ResourcesBuildingsPatch'
     { _rbpBuildingId = pRbpBuildingId_
     , _rbpPayload = pRbpPayload_
     , _rbpCustomer = pRbpCustomer_
+    , _rbpCoordinatesSource = SourceUnspecified
     }
 
+
 -- | The ID of the building to update.
 rbpBuildingId :: Lens' ResourcesBuildingsPatch Text
 rbpBuildingId
@@ -103,12 +115,20 @@
 rbpCustomer
   = lens _rbpCustomer (\ s a -> s{_rbpCustomer = a})
 
+-- | Source from which Building.coordinates are derived.
+rbpCoordinatesSource :: Lens' ResourcesBuildingsPatch ResourcesBuildingsPatchCoordinatesSource
+rbpCoordinatesSource
+  = lens _rbpCoordinatesSource
+      (\ s a -> s{_rbpCoordinatesSource = a})
+
 instance GoogleRequest ResourcesBuildingsPatch where
         type Rs ResourcesBuildingsPatch = Building
         type Scopes ResourcesBuildingsPatch =
              '["https://www.googleapis.com/auth/admin.directory.resource.calendar"]
         requestClient ResourcesBuildingsPatch'{..}
-          = go _rbpCustomer _rbpBuildingId (Just AltJSON)
+          = go _rbpCustomer _rbpBuildingId
+              (Just _rbpCoordinatesSource)
+              (Just AltJSON)
               _rbpPayload
               directoryService
           where go
diff --git a/gen/Network/Google/Resource/Directory/Resources/Buildings/Update.hs b/gen/Network/Google/Resource/Directory/Resources/Buildings/Update.hs
--- a/gen/Network/Google/Resource/Directory/Resources/Buildings/Update.hs
+++ b/gen/Network/Google/Resource/Directory/Resources/Buildings/Update.hs
@@ -36,6 +36,7 @@
     , rbuBuildingId
     , rbuPayload
     , rbuCustomer
+    , rbuCoordinatesSource
     ) where
 
 import           Network.Google.Directory.Types
@@ -52,18 +53,25 @@
                "resources" :>
                  "buildings" :>
                    Capture "buildingId" Text :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] Building :> Put '[JSON] Building
+                     QueryParam "coordinatesSource"
+                       ResourcesBuildingsUpdateCoordinatesSource
+                       :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] Building :> Put '[JSON] Building
 
 -- | Updates a building.
 --
 -- /See:/ 'resourcesBuildingsUpdate' smart constructor.
-data ResourcesBuildingsUpdate = ResourcesBuildingsUpdate'
-    { _rbuBuildingId :: !Text
-    , _rbuPayload    :: !Building
-    , _rbuCustomer   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+data ResourcesBuildingsUpdate =
+  ResourcesBuildingsUpdate'
+    { _rbuBuildingId        :: !Text
+    , _rbuPayload           :: !Building
+    , _rbuCustomer          :: !Text
+    , _rbuCoordinatesSource :: !ResourcesBuildingsUpdateCoordinatesSource
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ResourcesBuildingsUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -73,18 +81,22 @@
 -- * 'rbuPayload'
 --
 -- * 'rbuCustomer'
+--
+-- * 'rbuCoordinatesSource'
 resourcesBuildingsUpdate
     :: Text -- ^ 'rbuBuildingId'
     -> Building -- ^ 'rbuPayload'
     -> Text -- ^ 'rbuCustomer'
     -> ResourcesBuildingsUpdate
 resourcesBuildingsUpdate pRbuBuildingId_ pRbuPayload_ pRbuCustomer_ =
-    ResourcesBuildingsUpdate'
+  ResourcesBuildingsUpdate'
     { _rbuBuildingId = pRbuBuildingId_
     , _rbuPayload = pRbuPayload_
     , _rbuCustomer = pRbuCustomer_
+    , _rbuCoordinatesSource = RBUCSSourceUnspecified
     }
 
+
 -- | The ID of the building to update.
 rbuBuildingId :: Lens' ResourcesBuildingsUpdate Text
 rbuBuildingId
@@ -103,12 +115,20 @@
 rbuCustomer
   = lens _rbuCustomer (\ s a -> s{_rbuCustomer = a})
 
+-- | Source from which Building.coordinates are derived.
+rbuCoordinatesSource :: Lens' ResourcesBuildingsUpdate ResourcesBuildingsUpdateCoordinatesSource
+rbuCoordinatesSource
+  = lens _rbuCoordinatesSource
+      (\ s a -> s{_rbuCoordinatesSource = a})
+
 instance GoogleRequest ResourcesBuildingsUpdate where
         type Rs ResourcesBuildingsUpdate = Building
         type Scopes ResourcesBuildingsUpdate =
              '["https://www.googleapis.com/auth/admin.directory.resource.calendar"]
         requestClient ResourcesBuildingsUpdate'{..}
-          = go _rbuCustomer _rbuBuildingId (Just AltJSON)
+          = go _rbuCustomer _rbuBuildingId
+              (Just _rbuCoordinatesSource)
+              (Just AltJSON)
               _rbuPayload
               directoryService
           where go
diff --git a/gen/Network/Google/Resource/Directory/Resources/Calendars/Delete.hs b/gen/Network/Google/Resource/Directory/Resources/Calendars/Delete.hs
--- a/gen/Network/Google/Resource/Directory/Resources/Calendars/Delete.hs
+++ b/gen/Network/Google/Resource/Directory/Resources/Calendars/Delete.hs
@@ -56,11 +56,14 @@
 -- | Deletes a calendar resource.
 --
 -- /See:/ 'resourcesCalendarsDelete' smart constructor.
-data ResourcesCalendarsDelete = ResourcesCalendarsDelete'
+data ResourcesCalendarsDelete =
+  ResourcesCalendarsDelete'
     { _rcdCustomer           :: !Text
     , _rcdCalendarResourceId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ResourcesCalendarsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -73,10 +76,11 @@
     -> Text -- ^ 'rcdCalendarResourceId'
     -> ResourcesCalendarsDelete
 resourcesCalendarsDelete pRcdCustomer_ pRcdCalendarResourceId_ =
-    ResourcesCalendarsDelete'
+  ResourcesCalendarsDelete'
     { _rcdCustomer = pRcdCustomer_
     , _rcdCalendarResourceId = pRcdCalendarResourceId_
     }
+
 
 -- | The unique ID for the customer\'s G Suite account. As an account
 -- administrator, you can also use the my_customer alias to represent your
diff --git a/gen/Network/Google/Resource/Directory/Resources/Calendars/Get.hs b/gen/Network/Google/Resource/Directory/Resources/Calendars/Get.hs
--- a/gen/Network/Google/Resource/Directory/Resources/Calendars/Get.hs
+++ b/gen/Network/Google/Resource/Directory/Resources/Calendars/Get.hs
@@ -57,11 +57,14 @@
 -- | Retrieves a calendar resource.
 --
 -- /See:/ 'resourcesCalendarsGet' smart constructor.
-data ResourcesCalendarsGet = ResourcesCalendarsGet'
+data ResourcesCalendarsGet =
+  ResourcesCalendarsGet'
     { _rcgCustomer           :: !Text
     , _rcgCalendarResourceId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ResourcesCalendarsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -74,10 +77,11 @@
     -> Text -- ^ 'rcgCalendarResourceId'
     -> ResourcesCalendarsGet
 resourcesCalendarsGet pRcgCustomer_ pRcgCalendarResourceId_ =
-    ResourcesCalendarsGet'
+  ResourcesCalendarsGet'
     { _rcgCustomer = pRcgCustomer_
     , _rcgCalendarResourceId = pRcgCalendarResourceId_
     }
+
 
 -- | The unique ID for the customer\'s G Suite account. As an account
 -- administrator, you can also use the my_customer alias to represent your
diff --git a/gen/Network/Google/Resource/Directory/Resources/Calendars/Insert.hs b/gen/Network/Google/Resource/Directory/Resources/Calendars/Insert.hs
--- a/gen/Network/Google/Resource/Directory/Resources/Calendars/Insert.hs
+++ b/gen/Network/Google/Resource/Directory/Resources/Calendars/Insert.hs
@@ -57,11 +57,14 @@
 -- | Inserts a calendar resource.
 --
 -- /See:/ 'resourcesCalendarsInsert' smart constructor.
-data ResourcesCalendarsInsert = ResourcesCalendarsInsert'
+data ResourcesCalendarsInsert =
+  ResourcesCalendarsInsert'
     { _rciPayload  :: !CalendarResource
     , _rciCustomer :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ResourcesCalendarsInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -74,10 +77,9 @@
     -> Text -- ^ 'rciCustomer'
     -> ResourcesCalendarsInsert
 resourcesCalendarsInsert pRciPayload_ pRciCustomer_ =
-    ResourcesCalendarsInsert'
-    { _rciPayload = pRciPayload_
-    , _rciCustomer = pRciCustomer_
-    }
+  ResourcesCalendarsInsert'
+    {_rciPayload = pRciPayload_, _rciCustomer = pRciCustomer_}
+
 
 -- | Multipart request metadata.
 rciPayload :: Lens' ResourcesCalendarsInsert CalendarResource
diff --git a/gen/Network/Google/Resource/Directory/Resources/Calendars/List.hs b/gen/Network/Google/Resource/Directory/Resources/Calendars/List.hs
--- a/gen/Network/Google/Resource/Directory/Resources/Calendars/List.hs
+++ b/gen/Network/Google/Resource/Directory/Resources/Calendars/List.hs
@@ -63,14 +63,17 @@
 -- | Retrieves a list of calendar resources for an account.
 --
 -- /See:/ 'resourcesCalendarsList' smart constructor.
-data ResourcesCalendarsList = ResourcesCalendarsList'
+data ResourcesCalendarsList =
+  ResourcesCalendarsList'
     { _rclOrderBy    :: !(Maybe Text)
     , _rclCustomer   :: !Text
     , _rclQuery      :: !(Maybe Text)
     , _rclPageToken  :: !(Maybe Text)
     , _rclMaxResults :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ResourcesCalendarsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -88,13 +91,14 @@
     :: Text -- ^ 'rclCustomer'
     -> ResourcesCalendarsList
 resourcesCalendarsList pRclCustomer_ =
-    ResourcesCalendarsList'
+  ResourcesCalendarsList'
     { _rclOrderBy = Nothing
     , _rclCustomer = pRclCustomer_
     , _rclQuery = Nothing
     , _rclPageToken = Nothing
     , _rclMaxResults = Nothing
     }
+
 
 -- | Field(s) to sort results by in either ascending or descending order.
 -- Supported fields include resourceId, resourceName, capacity, buildingId,
diff --git a/gen/Network/Google/Resource/Directory/Resources/Calendars/Patch.hs b/gen/Network/Google/Resource/Directory/Resources/Calendars/Patch.hs
--- a/gen/Network/Google/Resource/Directory/Resources/Calendars/Patch.hs
+++ b/gen/Network/Google/Resource/Directory/Resources/Calendars/Patch.hs
@@ -65,12 +65,15 @@
 -- supports patch semantics.
 --
 -- /See:/ 'resourcesCalendarsPatch' smart constructor.
-data ResourcesCalendarsPatch = ResourcesCalendarsPatch'
+data ResourcesCalendarsPatch =
+  ResourcesCalendarsPatch'
     { _rcpPayload            :: !CalendarResource
     , _rcpCustomer           :: !Text
     , _rcpCalendarResourceId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ResourcesCalendarsPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -86,11 +89,12 @@
     -> Text -- ^ 'rcpCalendarResourceId'
     -> ResourcesCalendarsPatch
 resourcesCalendarsPatch pRcpPayload_ pRcpCustomer_ pRcpCalendarResourceId_ =
-    ResourcesCalendarsPatch'
+  ResourcesCalendarsPatch'
     { _rcpPayload = pRcpPayload_
     , _rcpCustomer = pRcpCustomer_
     , _rcpCalendarResourceId = pRcpCalendarResourceId_
     }
+
 
 -- | Multipart request metadata.
 rcpPayload :: Lens' ResourcesCalendarsPatch CalendarResource
diff --git a/gen/Network/Google/Resource/Directory/Resources/Calendars/Update.hs b/gen/Network/Google/Resource/Directory/Resources/Calendars/Update.hs
--- a/gen/Network/Google/Resource/Directory/Resources/Calendars/Update.hs
+++ b/gen/Network/Google/Resource/Directory/Resources/Calendars/Update.hs
@@ -63,12 +63,15 @@
 -- that are not present in the request will be preserved.
 --
 -- /See:/ 'resourcesCalendarsUpdate' smart constructor.
-data ResourcesCalendarsUpdate = ResourcesCalendarsUpdate'
+data ResourcesCalendarsUpdate =
+  ResourcesCalendarsUpdate'
     { _rcuPayload            :: !CalendarResource
     , _rcuCustomer           :: !Text
     , _rcuCalendarResourceId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ResourcesCalendarsUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -84,11 +87,12 @@
     -> Text -- ^ 'rcuCalendarResourceId'
     -> ResourcesCalendarsUpdate
 resourcesCalendarsUpdate pRcuPayload_ pRcuCustomer_ pRcuCalendarResourceId_ =
-    ResourcesCalendarsUpdate'
+  ResourcesCalendarsUpdate'
     { _rcuPayload = pRcuPayload_
     , _rcuCustomer = pRcuCustomer_
     , _rcuCalendarResourceId = pRcuCalendarResourceId_
     }
+
 
 -- | Multipart request metadata.
 rcuPayload :: Lens' ResourcesCalendarsUpdate CalendarResource
diff --git a/gen/Network/Google/Resource/Directory/Resources/Features/Delete.hs b/gen/Network/Google/Resource/Directory/Resources/Features/Delete.hs
--- a/gen/Network/Google/Resource/Directory/Resources/Features/Delete.hs
+++ b/gen/Network/Google/Resource/Directory/Resources/Features/Delete.hs
@@ -56,11 +56,14 @@
 -- | Deletes a feature.
 --
 -- /See:/ 'resourcesFeaturesDelete' smart constructor.
-data ResourcesFeaturesDelete = ResourcesFeaturesDelete'
+data ResourcesFeaturesDelete =
+  ResourcesFeaturesDelete'
     { _rfdCustomer   :: !Text
     , _rfdFeatureKey :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ResourcesFeaturesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -73,10 +76,9 @@
     -> Text -- ^ 'rfdFeatureKey'
     -> ResourcesFeaturesDelete
 resourcesFeaturesDelete pRfdCustomer_ pRfdFeatureKey_ =
-    ResourcesFeaturesDelete'
-    { _rfdCustomer = pRfdCustomer_
-    , _rfdFeatureKey = pRfdFeatureKey_
-    }
+  ResourcesFeaturesDelete'
+    {_rfdCustomer = pRfdCustomer_, _rfdFeatureKey = pRfdFeatureKey_}
+
 
 -- | The unique ID for the customer\'s G Suite account. As an account
 -- administrator, you can also use the my_customer alias to represent your
diff --git a/gen/Network/Google/Resource/Directory/Resources/Features/Get.hs b/gen/Network/Google/Resource/Directory/Resources/Features/Get.hs
--- a/gen/Network/Google/Resource/Directory/Resources/Features/Get.hs
+++ b/gen/Network/Google/Resource/Directory/Resources/Features/Get.hs
@@ -56,11 +56,14 @@
 -- | Retrieves a feature.
 --
 -- /See:/ 'resourcesFeaturesGet' smart constructor.
-data ResourcesFeaturesGet = ResourcesFeaturesGet'
+data ResourcesFeaturesGet =
+  ResourcesFeaturesGet'
     { _rfgCustomer   :: !Text
     , _rfgFeatureKey :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ResourcesFeaturesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -73,10 +76,9 @@
     -> Text -- ^ 'rfgFeatureKey'
     -> ResourcesFeaturesGet
 resourcesFeaturesGet pRfgCustomer_ pRfgFeatureKey_ =
-    ResourcesFeaturesGet'
-    { _rfgCustomer = pRfgCustomer_
-    , _rfgFeatureKey = pRfgFeatureKey_
-    }
+  ResourcesFeaturesGet'
+    {_rfgCustomer = pRfgCustomer_, _rfgFeatureKey = pRfgFeatureKey_}
+
 
 -- | The unique ID for the customer\'s G Suite account. As an account
 -- administrator, you can also use the my_customer alias to represent your
diff --git a/gen/Network/Google/Resource/Directory/Resources/Features/Insert.hs b/gen/Network/Google/Resource/Directory/Resources/Features/Insert.hs
--- a/gen/Network/Google/Resource/Directory/Resources/Features/Insert.hs
+++ b/gen/Network/Google/Resource/Directory/Resources/Features/Insert.hs
@@ -56,11 +56,14 @@
 -- | Inserts a feature.
 --
 -- /See:/ 'resourcesFeaturesInsert' smart constructor.
-data ResourcesFeaturesInsert = ResourcesFeaturesInsert'
+data ResourcesFeaturesInsert =
+  ResourcesFeaturesInsert'
     { _rfiPayload  :: !Feature
     , _rfiCustomer :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ResourcesFeaturesInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -73,10 +76,9 @@
     -> Text -- ^ 'rfiCustomer'
     -> ResourcesFeaturesInsert
 resourcesFeaturesInsert pRfiPayload_ pRfiCustomer_ =
-    ResourcesFeaturesInsert'
-    { _rfiPayload = pRfiPayload_
-    , _rfiCustomer = pRfiCustomer_
-    }
+  ResourcesFeaturesInsert'
+    {_rfiPayload = pRfiPayload_, _rfiCustomer = pRfiCustomer_}
+
 
 -- | Multipart request metadata.
 rfiPayload :: Lens' ResourcesFeaturesInsert Feature
diff --git a/gen/Network/Google/Resource/Directory/Resources/Features/List.hs b/gen/Network/Google/Resource/Directory/Resources/Features/List.hs
--- a/gen/Network/Google/Resource/Directory/Resources/Features/List.hs
+++ b/gen/Network/Google/Resource/Directory/Resources/Features/List.hs
@@ -58,12 +58,15 @@
 -- | Retrieves a list of features for an account.
 --
 -- /See:/ 'resourcesFeaturesList' smart constructor.
-data ResourcesFeaturesList = ResourcesFeaturesList'
+data ResourcesFeaturesList =
+  ResourcesFeaturesList'
     { _rflCustomer   :: !Text
     , _rflPageToken  :: !(Maybe Text)
     , _rflMaxResults :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ResourcesFeaturesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -77,11 +80,12 @@
     :: Text -- ^ 'rflCustomer'
     -> ResourcesFeaturesList
 resourcesFeaturesList pRflCustomer_ =
-    ResourcesFeaturesList'
+  ResourcesFeaturesList'
     { _rflCustomer = pRflCustomer_
     , _rflPageToken = Nothing
     , _rflMaxResults = Nothing
     }
+
 
 -- | The unique ID for the customer\'s G Suite account. As an account
 -- administrator, you can also use the my_customer alias to represent your
diff --git a/gen/Network/Google/Resource/Directory/Resources/Features/Patch.hs b/gen/Network/Google/Resource/Directory/Resources/Features/Patch.hs
--- a/gen/Network/Google/Resource/Directory/Resources/Features/Patch.hs
+++ b/gen/Network/Google/Resource/Directory/Resources/Features/Patch.hs
@@ -58,12 +58,15 @@
 -- | Updates a feature. This method supports patch semantics.
 --
 -- /See:/ 'resourcesFeaturesPatch' smart constructor.
-data ResourcesFeaturesPatch = ResourcesFeaturesPatch'
+data ResourcesFeaturesPatch =
+  ResourcesFeaturesPatch'
     { _rfpPayload    :: !Feature
     , _rfpCustomer   :: !Text
     , _rfpFeatureKey :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ResourcesFeaturesPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -79,11 +82,12 @@
     -> Text -- ^ 'rfpFeatureKey'
     -> ResourcesFeaturesPatch
 resourcesFeaturesPatch pRfpPayload_ pRfpCustomer_ pRfpFeatureKey_ =
-    ResourcesFeaturesPatch'
+  ResourcesFeaturesPatch'
     { _rfpPayload = pRfpPayload_
     , _rfpCustomer = pRfpCustomer_
     , _rfpFeatureKey = pRfpFeatureKey_
     }
+
 
 -- | Multipart request metadata.
 rfpPayload :: Lens' ResourcesFeaturesPatch Feature
diff --git a/gen/Network/Google/Resource/Directory/Resources/Features/Rename.hs b/gen/Network/Google/Resource/Directory/Resources/Features/Rename.hs
--- a/gen/Network/Google/Resource/Directory/Resources/Features/Rename.hs
+++ b/gen/Network/Google/Resource/Directory/Resources/Features/Rename.hs
@@ -59,12 +59,15 @@
 -- | Renames a feature.
 --
 -- /See:/ 'resourcesFeaturesRename' smart constructor.
-data ResourcesFeaturesRename = ResourcesFeaturesRename'
+data ResourcesFeaturesRename =
+  ResourcesFeaturesRename'
     { _rfrPayload  :: !FeatureRename
     , _rfrCustomer :: !Text
     , _rfrOldName  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ResourcesFeaturesRename' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -80,11 +83,12 @@
     -> Text -- ^ 'rfrOldName'
     -> ResourcesFeaturesRename
 resourcesFeaturesRename pRfrPayload_ pRfrCustomer_ pRfrOldName_ =
-    ResourcesFeaturesRename'
+  ResourcesFeaturesRename'
     { _rfrPayload = pRfrPayload_
     , _rfrCustomer = pRfrCustomer_
     , _rfrOldName = pRfrOldName_
     }
+
 
 -- | Multipart request metadata.
 rfrPayload :: Lens' ResourcesFeaturesRename FeatureRename
diff --git a/gen/Network/Google/Resource/Directory/Resources/Features/Update.hs b/gen/Network/Google/Resource/Directory/Resources/Features/Update.hs
--- a/gen/Network/Google/Resource/Directory/Resources/Features/Update.hs
+++ b/gen/Network/Google/Resource/Directory/Resources/Features/Update.hs
@@ -58,12 +58,15 @@
 -- | Updates a feature.
 --
 -- /See:/ 'resourcesFeaturesUpdate' smart constructor.
-data ResourcesFeaturesUpdate = ResourcesFeaturesUpdate'
+data ResourcesFeaturesUpdate =
+  ResourcesFeaturesUpdate'
     { _rfuPayload    :: !Feature
     , _rfuCustomer   :: !Text
     , _rfuFeatureKey :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ResourcesFeaturesUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -79,11 +82,12 @@
     -> Text -- ^ 'rfuFeatureKey'
     -> ResourcesFeaturesUpdate
 resourcesFeaturesUpdate pRfuPayload_ pRfuCustomer_ pRfuFeatureKey_ =
-    ResourcesFeaturesUpdate'
+  ResourcesFeaturesUpdate'
     { _rfuPayload = pRfuPayload_
     , _rfuCustomer = pRfuCustomer_
     , _rfuFeatureKey = pRfuFeatureKey_
     }
+
 
 -- | Multipart request metadata.
 rfuPayload :: Lens' ResourcesFeaturesUpdate Feature
diff --git a/gen/Network/Google/Resource/Directory/RoleAssignments/Delete.hs b/gen/Network/Google/Resource/Directory/RoleAssignments/Delete.hs
--- a/gen/Network/Google/Resource/Directory/RoleAssignments/Delete.hs
+++ b/gen/Network/Google/Resource/Directory/RoleAssignments/Delete.hs
@@ -55,11 +55,14 @@
 -- | Deletes a role assignment.
 --
 -- /See:/ 'roleAssignmentsDelete' smart constructor.
-data RoleAssignmentsDelete = RoleAssignmentsDelete'
+data RoleAssignmentsDelete =
+  RoleAssignmentsDelete'
     { _radCustomer         :: !Text
     , _radRoleAssignmentId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RoleAssignmentsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,9 @@
     -> Text -- ^ 'radRoleAssignmentId'
     -> RoleAssignmentsDelete
 roleAssignmentsDelete pRadCustomer_ pRadRoleAssignmentId_ =
-    RoleAssignmentsDelete'
-    { _radCustomer = pRadCustomer_
-    , _radRoleAssignmentId = pRadRoleAssignmentId_
-    }
+  RoleAssignmentsDelete'
+    {_radCustomer = pRadCustomer_, _radRoleAssignmentId = pRadRoleAssignmentId_}
+
 
 -- | Immutable ID of the G Suite account.
 radCustomer :: Lens' RoleAssignmentsDelete Text
diff --git a/gen/Network/Google/Resource/Directory/RoleAssignments/Get.hs b/gen/Network/Google/Resource/Directory/RoleAssignments/Get.hs
--- a/gen/Network/Google/Resource/Directory/RoleAssignments/Get.hs
+++ b/gen/Network/Google/Resource/Directory/RoleAssignments/Get.hs
@@ -56,11 +56,14 @@
 -- | Retrieve a role assignment.
 --
 -- /See:/ 'roleAssignmentsGet' smart constructor.
-data RoleAssignmentsGet = RoleAssignmentsGet'
+data RoleAssignmentsGet =
+  RoleAssignmentsGet'
     { _ragCustomer         :: !Text
     , _ragRoleAssignmentId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RoleAssignmentsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -73,10 +76,9 @@
     -> Text -- ^ 'ragRoleAssignmentId'
     -> RoleAssignmentsGet
 roleAssignmentsGet pRagCustomer_ pRagRoleAssignmentId_ =
-    RoleAssignmentsGet'
-    { _ragCustomer = pRagCustomer_
-    , _ragRoleAssignmentId = pRagRoleAssignmentId_
-    }
+  RoleAssignmentsGet'
+    {_ragCustomer = pRagCustomer_, _ragRoleAssignmentId = pRagRoleAssignmentId_}
+
 
 -- | Immutable ID of the G Suite account.
 ragCustomer :: Lens' RoleAssignmentsGet Text
diff --git a/gen/Network/Google/Resource/Directory/RoleAssignments/Insert.hs b/gen/Network/Google/Resource/Directory/RoleAssignments/Insert.hs
--- a/gen/Network/Google/Resource/Directory/RoleAssignments/Insert.hs
+++ b/gen/Network/Google/Resource/Directory/RoleAssignments/Insert.hs
@@ -56,11 +56,14 @@
 -- | Creates a role assignment.
 --
 -- /See:/ 'roleAssignmentsInsert' smart constructor.
-data RoleAssignmentsInsert = RoleAssignmentsInsert'
+data RoleAssignmentsInsert =
+  RoleAssignmentsInsert'
     { _raiPayload  :: !RoleAssignment
     , _raiCustomer :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RoleAssignmentsInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -73,10 +76,9 @@
     -> Text -- ^ 'raiCustomer'
     -> RoleAssignmentsInsert
 roleAssignmentsInsert pRaiPayload_ pRaiCustomer_ =
-    RoleAssignmentsInsert'
-    { _raiPayload = pRaiPayload_
-    , _raiCustomer = pRaiCustomer_
-    }
+  RoleAssignmentsInsert'
+    {_raiPayload = pRaiPayload_, _raiCustomer = pRaiCustomer_}
+
 
 -- | Multipart request metadata.
 raiPayload :: Lens' RoleAssignmentsInsert RoleAssignment
diff --git a/gen/Network/Google/Resource/Directory/RoleAssignments/List.hs b/gen/Network/Google/Resource/Directory/RoleAssignments/List.hs
--- a/gen/Network/Google/Resource/Directory/RoleAssignments/List.hs
+++ b/gen/Network/Google/Resource/Directory/RoleAssignments/List.hs
@@ -62,14 +62,17 @@
 -- | Retrieves a paginated list of all roleAssignments.
 --
 -- /See:/ 'roleAssignmentsList' smart constructor.
-data RoleAssignmentsList = RoleAssignmentsList'
+data RoleAssignmentsList =
+  RoleAssignmentsList'
     { _ralRoleId     :: !(Maybe Text)
     , _ralCustomer   :: !Text
     , _ralPageToken  :: !(Maybe Text)
     , _ralUserKey    :: !(Maybe Text)
     , _ralMaxResults :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RoleAssignmentsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,13 +90,14 @@
     :: Text -- ^ 'ralCustomer'
     -> RoleAssignmentsList
 roleAssignmentsList pRalCustomer_ =
-    RoleAssignmentsList'
+  RoleAssignmentsList'
     { _ralRoleId = Nothing
     , _ralCustomer = pRalCustomer_
     , _ralPageToken = Nothing
     , _ralUserKey = Nothing
     , _ralMaxResults = Nothing
     }
+
 
 -- | Immutable ID of a role. If included in the request, returns only role
 -- assignments containing this role ID.
diff --git a/gen/Network/Google/Resource/Directory/Roles/Delete.hs b/gen/Network/Google/Resource/Directory/Roles/Delete.hs
--- a/gen/Network/Google/Resource/Directory/Roles/Delete.hs
+++ b/gen/Network/Google/Resource/Directory/Roles/Delete.hs
@@ -55,11 +55,14 @@
 -- | Deletes a role.
 --
 -- /See:/ 'rolesDelete' smart constructor.
-data RolesDelete = RolesDelete'
+data RolesDelete =
+  RolesDelete'
     { _rdRoleId   :: !Text
     , _rdCustomer :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RolesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'rdCustomer'
     -> RolesDelete
 rolesDelete pRdRoleId_ pRdCustomer_ =
-    RolesDelete'
-    { _rdRoleId = pRdRoleId_
-    , _rdCustomer = pRdCustomer_
-    }
+  RolesDelete' {_rdRoleId = pRdRoleId_, _rdCustomer = pRdCustomer_}
+
 
 -- | Immutable ID of the role.
 rdRoleId :: Lens' RolesDelete Text
diff --git a/gen/Network/Google/Resource/Directory/Roles/Get.hs b/gen/Network/Google/Resource/Directory/Roles/Get.hs
--- a/gen/Network/Google/Resource/Directory/Roles/Get.hs
+++ b/gen/Network/Google/Resource/Directory/Roles/Get.hs
@@ -55,11 +55,14 @@
 -- | Retrieves a role.
 --
 -- /See:/ 'rolesGet' smart constructor.
-data RolesGet = RolesGet'
+data RolesGet =
+  RolesGet'
     { _rgRoleId   :: !Text
     , _rgCustomer :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RolesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'rgCustomer'
     -> RolesGet
 rolesGet pRgRoleId_ pRgCustomer_ =
-    RolesGet'
-    { _rgRoleId = pRgRoleId_
-    , _rgCustomer = pRgCustomer_
-    }
+  RolesGet' {_rgRoleId = pRgRoleId_, _rgCustomer = pRgCustomer_}
+
 
 -- | Immutable ID of the role.
 rgRoleId :: Lens' RolesGet Text
diff --git a/gen/Network/Google/Resource/Directory/Roles/Insert.hs b/gen/Network/Google/Resource/Directory/Roles/Insert.hs
--- a/gen/Network/Google/Resource/Directory/Roles/Insert.hs
+++ b/gen/Network/Google/Resource/Directory/Roles/Insert.hs
@@ -55,11 +55,14 @@
 -- | Creates a role.
 --
 -- /See:/ 'rolesInsert' smart constructor.
-data RolesInsert = RolesInsert'
+data RolesInsert =
+  RolesInsert'
     { _riPayload  :: !Role
     , _riCustomer :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RolesInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'riCustomer'
     -> RolesInsert
 rolesInsert pRiPayload_ pRiCustomer_ =
-    RolesInsert'
-    { _riPayload = pRiPayload_
-    , _riCustomer = pRiCustomer_
-    }
+  RolesInsert' {_riPayload = pRiPayload_, _riCustomer = pRiCustomer_}
+
 
 -- | Multipart request metadata.
 riPayload :: Lens' RolesInsert Role
diff --git a/gen/Network/Google/Resource/Directory/Roles/List.hs b/gen/Network/Google/Resource/Directory/Roles/List.hs
--- a/gen/Network/Google/Resource/Directory/Roles/List.hs
+++ b/gen/Network/Google/Resource/Directory/Roles/List.hs
@@ -57,12 +57,15 @@
 -- | Retrieves a paginated list of all the roles in a domain.
 --
 -- /See:/ 'rolesList' smart constructor.
-data RolesList = RolesList'
+data RolesList =
+  RolesList'
     { _rlCustomer   :: !Text
     , _rlPageToken  :: !(Maybe Text)
     , _rlMaxResults :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RolesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -76,11 +79,12 @@
     :: Text -- ^ 'rlCustomer'
     -> RolesList
 rolesList pRlCustomer_ =
-    RolesList'
+  RolesList'
     { _rlCustomer = pRlCustomer_
     , _rlPageToken = Nothing
     , _rlMaxResults = Nothing
     }
+
 
 -- | Immutable ID of the G Suite account.
 rlCustomer :: Lens' RolesList Text
diff --git a/gen/Network/Google/Resource/Directory/Roles/Patch.hs b/gen/Network/Google/Resource/Directory/Roles/Patch.hs
--- a/gen/Network/Google/Resource/Directory/Roles/Patch.hs
+++ b/gen/Network/Google/Resource/Directory/Roles/Patch.hs
@@ -57,12 +57,15 @@
 -- | Updates a role. This method supports patch semantics.
 --
 -- /See:/ 'rolesPatch' smart constructor.
-data RolesPatch = RolesPatch'
+data RolesPatch =
+  RolesPatch'
     { _rpPayload  :: !Role
     , _rpRoleId   :: !Text
     , _rpCustomer :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RolesPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -78,11 +81,12 @@
     -> Text -- ^ 'rpCustomer'
     -> RolesPatch
 rolesPatch pRpPayload_ pRpRoleId_ pRpCustomer_ =
-    RolesPatch'
+  RolesPatch'
     { _rpPayload = pRpPayload_
     , _rpRoleId = pRpRoleId_
     , _rpCustomer = pRpCustomer_
     }
+
 
 -- | Multipart request metadata.
 rpPayload :: Lens' RolesPatch Role
diff --git a/gen/Network/Google/Resource/Directory/Roles/Update.hs b/gen/Network/Google/Resource/Directory/Roles/Update.hs
--- a/gen/Network/Google/Resource/Directory/Roles/Update.hs
+++ b/gen/Network/Google/Resource/Directory/Roles/Update.hs
@@ -57,12 +57,15 @@
 -- | Updates a role.
 --
 -- /See:/ 'rolesUpdate' smart constructor.
-data RolesUpdate = RolesUpdate'
+data RolesUpdate =
+  RolesUpdate'
     { _ruPayload  :: !Role
     , _ruRoleId   :: !Text
     , _ruCustomer :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RolesUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -78,11 +81,12 @@
     -> Text -- ^ 'ruCustomer'
     -> RolesUpdate
 rolesUpdate pRuPayload_ pRuRoleId_ pRuCustomer_ =
-    RolesUpdate'
+  RolesUpdate'
     { _ruPayload = pRuPayload_
     , _ruRoleId = pRuRoleId_
     , _ruCustomer = pRuCustomer_
     }
+
 
 -- | Multipart request metadata.
 ruPayload :: Lens' RolesUpdate Role
diff --git a/gen/Network/Google/Resource/Directory/Schemas/Delete.hs b/gen/Network/Google/Resource/Directory/Schemas/Delete.hs
--- a/gen/Network/Google/Resource/Directory/Schemas/Delete.hs
+++ b/gen/Network/Google/Resource/Directory/Schemas/Delete.hs
@@ -55,11 +55,14 @@
 -- | Delete schema
 --
 -- /See:/ 'schemasDelete' smart constructor.
-data SchemasDelete = SchemasDelete'
+data SchemasDelete =
+  SchemasDelete'
     { _sdCustomerId :: !Text
     , _sdSchemaKey  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SchemasDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'sdSchemaKey'
     -> SchemasDelete
 schemasDelete pSdCustomerId_ pSdSchemaKey_ =
-    SchemasDelete'
-    { _sdCustomerId = pSdCustomerId_
-    , _sdSchemaKey = pSdSchemaKey_
-    }
+  SchemasDelete' {_sdCustomerId = pSdCustomerId_, _sdSchemaKey = pSdSchemaKey_}
+
 
 -- | Immutable ID of the G Suite account
 sdCustomerId :: Lens' SchemasDelete Text
diff --git a/gen/Network/Google/Resource/Directory/Schemas/Get.hs b/gen/Network/Google/Resource/Directory/Schemas/Get.hs
--- a/gen/Network/Google/Resource/Directory/Schemas/Get.hs
+++ b/gen/Network/Google/Resource/Directory/Schemas/Get.hs
@@ -55,11 +55,14 @@
 -- | Retrieve schema
 --
 -- /See:/ 'schemasGet' smart constructor.
-data SchemasGet = SchemasGet'
+data SchemasGet =
+  SchemasGet'
     { _sgCustomerId :: !Text
     , _sgSchemaKey  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SchemasGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'sgSchemaKey'
     -> SchemasGet
 schemasGet pSgCustomerId_ pSgSchemaKey_ =
-    SchemasGet'
-    { _sgCustomerId = pSgCustomerId_
-    , _sgSchemaKey = pSgSchemaKey_
-    }
+  SchemasGet' {_sgCustomerId = pSgCustomerId_, _sgSchemaKey = pSgSchemaKey_}
+
 
 -- | Immutable ID of the G Suite account
 sgCustomerId :: Lens' SchemasGet Text
diff --git a/gen/Network/Google/Resource/Directory/Schemas/Insert.hs b/gen/Network/Google/Resource/Directory/Schemas/Insert.hs
--- a/gen/Network/Google/Resource/Directory/Schemas/Insert.hs
+++ b/gen/Network/Google/Resource/Directory/Schemas/Insert.hs
@@ -55,11 +55,14 @@
 -- | Create schema.
 --
 -- /See:/ 'schemasInsert' smart constructor.
-data SchemasInsert = SchemasInsert'
+data SchemasInsert =
+  SchemasInsert'
     { _siPayload    :: !Schema
     , _siCustomerId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SchemasInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'siCustomerId'
     -> SchemasInsert
 schemasInsert pSiPayload_ pSiCustomerId_ =
-    SchemasInsert'
-    { _siPayload = pSiPayload_
-    , _siCustomerId = pSiCustomerId_
-    }
+  SchemasInsert' {_siPayload = pSiPayload_, _siCustomerId = pSiCustomerId_}
+
 
 -- | Multipart request metadata.
 siPayload :: Lens' SchemasInsert Schema
diff --git a/gen/Network/Google/Resource/Directory/Schemas/List.hs b/gen/Network/Google/Resource/Directory/Schemas/List.hs
--- a/gen/Network/Google/Resource/Directory/Schemas/List.hs
+++ b/gen/Network/Google/Resource/Directory/Schemas/List.hs
@@ -53,10 +53,13 @@
 -- | Retrieve all schemas for a customer
 --
 -- /See:/ 'schemasList' smart constructor.
-newtype SchemasList = SchemasList'
+newtype SchemasList =
+  SchemasList'
     { _slCustomerId :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SchemasList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -65,10 +68,8 @@
 schemasList
     :: Text -- ^ 'slCustomerId'
     -> SchemasList
-schemasList pSlCustomerId_ =
-    SchemasList'
-    { _slCustomerId = pSlCustomerId_
-    }
+schemasList pSlCustomerId_ = SchemasList' {_slCustomerId = pSlCustomerId_}
+
 
 -- | Immutable ID of the G Suite account
 slCustomerId :: Lens' SchemasList Text
diff --git a/gen/Network/Google/Resource/Directory/Schemas/Patch.hs b/gen/Network/Google/Resource/Directory/Schemas/Patch.hs
--- a/gen/Network/Google/Resource/Directory/Schemas/Patch.hs
+++ b/gen/Network/Google/Resource/Directory/Schemas/Patch.hs
@@ -57,12 +57,15 @@
 -- | Update schema. This method supports patch semantics.
 --
 -- /See:/ 'schemasPatch' smart constructor.
-data SchemasPatch = SchemasPatch'
+data SchemasPatch =
+  SchemasPatch'
     { _spPayload    :: !Schema
     , _spCustomerId :: !Text
     , _spSchemaKey  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SchemasPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -78,11 +81,12 @@
     -> Text -- ^ 'spSchemaKey'
     -> SchemasPatch
 schemasPatch pSpPayload_ pSpCustomerId_ pSpSchemaKey_ =
-    SchemasPatch'
+  SchemasPatch'
     { _spPayload = pSpPayload_
     , _spCustomerId = pSpCustomerId_
     , _spSchemaKey = pSpSchemaKey_
     }
+
 
 -- | Multipart request metadata.
 spPayload :: Lens' SchemasPatch Schema
diff --git a/gen/Network/Google/Resource/Directory/Schemas/Update.hs b/gen/Network/Google/Resource/Directory/Schemas/Update.hs
--- a/gen/Network/Google/Resource/Directory/Schemas/Update.hs
+++ b/gen/Network/Google/Resource/Directory/Schemas/Update.hs
@@ -57,12 +57,15 @@
 -- | Update schema
 --
 -- /See:/ 'schemasUpdate' smart constructor.
-data SchemasUpdate = SchemasUpdate'
+data SchemasUpdate =
+  SchemasUpdate'
     { _suPayload    :: !Schema
     , _suCustomerId :: !Text
     , _suSchemaKey  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SchemasUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -78,11 +81,12 @@
     -> Text -- ^ 'suSchemaKey'
     -> SchemasUpdate
 schemasUpdate pSuPayload_ pSuCustomerId_ pSuSchemaKey_ =
-    SchemasUpdate'
+  SchemasUpdate'
     { _suPayload = pSuPayload_
     , _suCustomerId = pSuCustomerId_
     , _suSchemaKey = pSuSchemaKey_
     }
+
 
 -- | Multipart request metadata.
 suPayload :: Lens' SchemasUpdate Schema
diff --git a/gen/Network/Google/Resource/Directory/Tokens/Delete.hs b/gen/Network/Google/Resource/Directory/Tokens/Delete.hs
--- a/gen/Network/Google/Resource/Directory/Tokens/Delete.hs
+++ b/gen/Network/Google/Resource/Directory/Tokens/Delete.hs
@@ -55,11 +55,14 @@
 -- | Delete all access tokens issued by a user for an application.
 --
 -- /See:/ 'tokensDelete' smart constructor.
-data TokensDelete = TokensDelete'
+data TokensDelete =
+  TokensDelete'
     { _tdClientId :: !Text
     , _tdUserKey  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TokensDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'tdUserKey'
     -> TokensDelete
 tokensDelete pTdClientId_ pTdUserKey_ =
-    TokensDelete'
-    { _tdClientId = pTdClientId_
-    , _tdUserKey = pTdUserKey_
-    }
+  TokensDelete' {_tdClientId = pTdClientId_, _tdUserKey = pTdUserKey_}
+
 
 -- | The Client ID of the application the token is issued to.
 tdClientId :: Lens' TokensDelete Text
diff --git a/gen/Network/Google/Resource/Directory/Tokens/Get.hs b/gen/Network/Google/Resource/Directory/Tokens/Get.hs
--- a/gen/Network/Google/Resource/Directory/Tokens/Get.hs
+++ b/gen/Network/Google/Resource/Directory/Tokens/Get.hs
@@ -55,11 +55,14 @@
 -- | Get information about an access token issued by a user.
 --
 -- /See:/ 'tokensGet' smart constructor.
-data TokensGet = TokensGet'
+data TokensGet =
+  TokensGet'
     { _tgClientId :: !Text
     , _tgUserKey  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TokensGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'tgUserKey'
     -> TokensGet
 tokensGet pTgClientId_ pTgUserKey_ =
-    TokensGet'
-    { _tgClientId = pTgClientId_
-    , _tgUserKey = pTgUserKey_
-    }
+  TokensGet' {_tgClientId = pTgClientId_, _tgUserKey = pTgUserKey_}
+
 
 -- | The Client ID of the application the token is issued to.
 tgClientId :: Lens' TokensGet Text
diff --git a/gen/Network/Google/Resource/Directory/Tokens/List.hs b/gen/Network/Google/Resource/Directory/Tokens/List.hs
--- a/gen/Network/Google/Resource/Directory/Tokens/List.hs
+++ b/gen/Network/Google/Resource/Directory/Tokens/List.hs
@@ -55,10 +55,13 @@
 -- applications.
 --
 -- /See:/ 'tokensList' smart constructor.
-newtype TokensList = TokensList'
+newtype TokensList =
+  TokensList'
     { _tlUserKey :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TokensList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -67,10 +70,8 @@
 tokensList
     :: Text -- ^ 'tlUserKey'
     -> TokensList
-tokensList pTlUserKey_ =
-    TokensList'
-    { _tlUserKey = pTlUserKey_
-    }
+tokensList pTlUserKey_ = TokensList' {_tlUserKey = pTlUserKey_}
+
 
 -- | Identifies the user in the API request. The value can be the user\'s
 -- primary email address, alias email address, or unique user ID.
diff --git a/gen/Network/Google/Resource/Directory/Users/Aliases/Delete.hs b/gen/Network/Google/Resource/Directory/Users/Aliases/Delete.hs
--- a/gen/Network/Google/Resource/Directory/Users/Aliases/Delete.hs
+++ b/gen/Network/Google/Resource/Directory/Users/Aliases/Delete.hs
@@ -55,11 +55,14 @@
 -- | Remove a alias for the user
 --
 -- /See:/ 'usersAliasesDelete' smart constructor.
-data UsersAliasesDelete = UsersAliasesDelete'
+data UsersAliasesDelete =
+  UsersAliasesDelete'
     { _uadAlias   :: !Text
     , _uadUserKey :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UsersAliasesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'uadUserKey'
     -> UsersAliasesDelete
 usersAliasesDelete pUadAlias_ pUadUserKey_ =
-    UsersAliasesDelete'
-    { _uadAlias = pUadAlias_
-    , _uadUserKey = pUadUserKey_
-    }
+  UsersAliasesDelete' {_uadAlias = pUadAlias_, _uadUserKey = pUadUserKey_}
+
 
 -- | The alias to be removed
 uadAlias :: Lens' UsersAliasesDelete Text
diff --git a/gen/Network/Google/Resource/Directory/Users/Aliases/Insert.hs b/gen/Network/Google/Resource/Directory/Users/Aliases/Insert.hs
--- a/gen/Network/Google/Resource/Directory/Users/Aliases/Insert.hs
+++ b/gen/Network/Google/Resource/Directory/Users/Aliases/Insert.hs
@@ -55,11 +55,14 @@
 -- | Add a alias for the user
 --
 -- /See:/ 'usersAliasesInsert' smart constructor.
-data UsersAliasesInsert = UsersAliasesInsert'
+data UsersAliasesInsert =
+  UsersAliasesInsert'
     { _uaiPayload :: !Alias
     , _uaiUserKey :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UsersAliasesInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'uaiUserKey'
     -> UsersAliasesInsert
 usersAliasesInsert pUaiPayload_ pUaiUserKey_ =
-    UsersAliasesInsert'
-    { _uaiPayload = pUaiPayload_
-    , _uaiUserKey = pUaiUserKey_
-    }
+  UsersAliasesInsert' {_uaiPayload = pUaiPayload_, _uaiUserKey = pUaiUserKey_}
+
 
 -- | Multipart request metadata.
 uaiPayload :: Lens' UsersAliasesInsert Alias
diff --git a/gen/Network/Google/Resource/Directory/Users/Aliases/List.hs b/gen/Network/Google/Resource/Directory/Users/Aliases/List.hs
--- a/gen/Network/Google/Resource/Directory/Users/Aliases/List.hs
+++ b/gen/Network/Google/Resource/Directory/Users/Aliases/List.hs
@@ -55,11 +55,14 @@
 -- | List all aliases for a user
 --
 -- /See:/ 'usersAliasesList' smart constructor.
-data UsersAliasesList = UsersAliasesList'
+data UsersAliasesList =
+  UsersAliasesList'
     { _ualEvent   :: !(Maybe UsersAliasesListEvent)
     , _ualUserKey :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UsersAliasesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -71,10 +74,8 @@
     :: Text -- ^ 'ualUserKey'
     -> UsersAliasesList
 usersAliasesList pUalUserKey_ =
-    UsersAliasesList'
-    { _ualEvent = Nothing
-    , _ualUserKey = pUalUserKey_
-    }
+  UsersAliasesList' {_ualEvent = Nothing, _ualUserKey = pUalUserKey_}
+
 
 -- | Event on which subscription is intended (if subscribing)
 ualEvent :: Lens' UsersAliasesList (Maybe UsersAliasesListEvent)
diff --git a/gen/Network/Google/Resource/Directory/Users/Aliases/Watch.hs b/gen/Network/Google/Resource/Directory/Users/Aliases/Watch.hs
--- a/gen/Network/Google/Resource/Directory/Users/Aliases/Watch.hs
+++ b/gen/Network/Google/Resource/Directory/Users/Aliases/Watch.hs
@@ -58,12 +58,15 @@
 -- | Watch for changes in user aliases list
 --
 -- /See:/ 'usersAliasesWatch' smart constructor.
-data UsersAliasesWatch = UsersAliasesWatch'
+data UsersAliasesWatch =
+  UsersAliasesWatch'
     { _uawEvent   :: !(Maybe UsersAliasesWatchEvent)
     , _uawPayload :: !Channel
     , _uawUserKey :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UsersAliasesWatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -78,11 +81,12 @@
     -> Text -- ^ 'uawUserKey'
     -> UsersAliasesWatch
 usersAliasesWatch pUawPayload_ pUawUserKey_ =
-    UsersAliasesWatch'
+  UsersAliasesWatch'
     { _uawEvent = Nothing
     , _uawPayload = pUawPayload_
     , _uawUserKey = pUawUserKey_
     }
+
 
 -- | Event on which subscription is intended (if subscribing)
 uawEvent :: Lens' UsersAliasesWatch (Maybe UsersAliasesWatchEvent)
diff --git a/gen/Network/Google/Resource/Directory/Users/Delete.hs b/gen/Network/Google/Resource/Directory/Users/Delete.hs
--- a/gen/Network/Google/Resource/Directory/Users/Delete.hs
+++ b/gen/Network/Google/Resource/Directory/Users/Delete.hs
@@ -52,10 +52,13 @@
 -- | Delete user
 --
 -- /See:/ 'usersDelete' smart constructor.
-newtype UsersDelete = UsersDelete'
+newtype UsersDelete =
+  UsersDelete'
     { _udUserKey :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UsersDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -64,10 +67,8 @@
 usersDelete
     :: Text -- ^ 'udUserKey'
     -> UsersDelete
-usersDelete pUdUserKey_ =
-    UsersDelete'
-    { _udUserKey = pUdUserKey_
-    }
+usersDelete pUdUserKey_ = UsersDelete' {_udUserKey = pUdUserKey_}
+
 
 -- | Email or immutable ID of the user
 udUserKey :: Lens' UsersDelete Text
diff --git a/gen/Network/Google/Resource/Directory/Users/Get.hs b/gen/Network/Google/Resource/Directory/Users/Get.hs
--- a/gen/Network/Google/Resource/Directory/Users/Get.hs
+++ b/gen/Network/Google/Resource/Directory/Users/Get.hs
@@ -58,13 +58,16 @@
 -- | retrieve user
 --
 -- /See:/ 'usersGet' smart constructor.
-data UsersGet = UsersGet'
+data UsersGet =
+  UsersGet'
     { _ugViewType        :: !UsersGetViewType
     , _ugCustomFieldMask :: !(Maybe Text)
     , _ugProjection      :: !UsersGetProjection
     , _ugUserKey         :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UsersGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -80,12 +83,13 @@
     :: Text -- ^ 'ugUserKey'
     -> UsersGet
 usersGet pUgUserKey_ =
-    UsersGet'
+  UsersGet'
     { _ugViewType = UGVTAdminView
     , _ugCustomFieldMask = Nothing
     , _ugProjection = UGPBasic
     , _ugUserKey = pUgUserKey_
     }
+
 
 -- | Whether to fetch the ADMIN_VIEW or DOMAIN_PUBLIC view of the user.
 ugViewType :: Lens' UsersGet UsersGetViewType
diff --git a/gen/Network/Google/Resource/Directory/Users/Insert.hs b/gen/Network/Google/Resource/Directory/Users/Insert.hs
--- a/gen/Network/Google/Resource/Directory/Users/Insert.hs
+++ b/gen/Network/Google/Resource/Directory/Users/Insert.hs
@@ -52,10 +52,13 @@
 -- | create user.
 --
 -- /See:/ 'usersInsert' smart constructor.
-newtype UsersInsert = UsersInsert'
+newtype UsersInsert =
+  UsersInsert'
     { _uiPayload :: User
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UsersInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -64,10 +67,8 @@
 usersInsert
     :: User -- ^ 'uiPayload'
     -> UsersInsert
-usersInsert pUiPayload_ =
-    UsersInsert'
-    { _uiPayload = pUiPayload_
-    }
+usersInsert pUiPayload_ = UsersInsert' {_uiPayload = pUiPayload_}
+
 
 -- | Multipart request metadata.
 uiPayload :: Lens' UsersInsert User
diff --git a/gen/Network/Google/Resource/Directory/Users/List.hs b/gen/Network/Google/Resource/Directory/Users/List.hs
--- a/gen/Network/Google/Resource/Directory/Users/List.hs
+++ b/gen/Network/Google/Resource/Directory/Users/List.hs
@@ -75,7 +75,8 @@
 -- | Retrieve either deleted users or all users in a domain (paginated)
 --
 -- /See:/ 'usersList' smart constructor.
-data UsersList = UsersList'
+data UsersList =
+  UsersList'
     { _ulEvent           :: !(Maybe UsersListEvent)
     , _ulOrderBy         :: !(Maybe UsersListOrderBy)
     , _ulViewType        :: !UsersListViewType
@@ -88,8 +89,10 @@
     , _ulProjection      :: !UsersListProjection
     , _ulPageToken       :: !(Maybe Text)
     , _ulMaxResults      :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UsersList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -120,7 +123,7 @@
 usersList
     :: UsersList
 usersList =
-    UsersList'
+  UsersList'
     { _ulEvent = Nothing
     , _ulOrderBy = Nothing
     , _ulViewType = AdminView
@@ -134,6 +137,7 @@
     , _ulPageToken = Nothing
     , _ulMaxResults = Nothing
     }
+
 
 -- | Event on which subscription is intended (if subscribing)
 ulEvent :: Lens' UsersList (Maybe UsersListEvent)
diff --git a/gen/Network/Google/Resource/Directory/Users/MakeAdmin.hs b/gen/Network/Google/Resource/Directory/Users/MakeAdmin.hs
--- a/gen/Network/Google/Resource/Directory/Users/MakeAdmin.hs
+++ b/gen/Network/Google/Resource/Directory/Users/MakeAdmin.hs
@@ -55,11 +55,14 @@
 -- | change admin status of a user
 --
 -- /See:/ 'usersMakeAdmin' smart constructor.
-data UsersMakeAdmin = UsersMakeAdmin'
+data UsersMakeAdmin =
+  UsersMakeAdmin'
     { _umaPayload :: !UserMakeAdmin
     , _umaUserKey :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UsersMakeAdmin' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'umaUserKey'
     -> UsersMakeAdmin
 usersMakeAdmin pUmaPayload_ pUmaUserKey_ =
-    UsersMakeAdmin'
-    { _umaPayload = pUmaPayload_
-    , _umaUserKey = pUmaUserKey_
-    }
+  UsersMakeAdmin' {_umaPayload = pUmaPayload_, _umaUserKey = pUmaUserKey_}
+
 
 -- | Multipart request metadata.
 umaPayload :: Lens' UsersMakeAdmin UserMakeAdmin
diff --git a/gen/Network/Google/Resource/Directory/Users/Patch.hs b/gen/Network/Google/Resource/Directory/Users/Patch.hs
--- a/gen/Network/Google/Resource/Directory/Users/Patch.hs
+++ b/gen/Network/Google/Resource/Directory/Users/Patch.hs
@@ -54,11 +54,14 @@
 -- | update user. This method supports patch semantics.
 --
 -- /See:/ 'usersPatch' smart constructor.
-data UsersPatch = UsersPatch'
+data UsersPatch =
+  UsersPatch'
     { _upPayload :: !User
     , _upUserKey :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UsersPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -71,10 +74,8 @@
     -> Text -- ^ 'upUserKey'
     -> UsersPatch
 usersPatch pUpPayload_ pUpUserKey_ =
-    UsersPatch'
-    { _upPayload = pUpPayload_
-    , _upUserKey = pUpUserKey_
-    }
+  UsersPatch' {_upPayload = pUpPayload_, _upUserKey = pUpUserKey_}
+
 
 -- | Multipart request metadata.
 upPayload :: Lens' UsersPatch User
diff --git a/gen/Network/Google/Resource/Directory/Users/Photos/Delete.hs b/gen/Network/Google/Resource/Directory/Users/Photos/Delete.hs
--- a/gen/Network/Google/Resource/Directory/Users/Photos/Delete.hs
+++ b/gen/Network/Google/Resource/Directory/Users/Photos/Delete.hs
@@ -54,10 +54,13 @@
 -- | Remove photos for the user
 --
 -- /See:/ 'usersPhotosDelete' smart constructor.
-newtype UsersPhotosDelete = UsersPhotosDelete'
+newtype UsersPhotosDelete =
+  UsersPhotosDelete'
     { _updUserKey :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UsersPhotosDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -66,10 +69,8 @@
 usersPhotosDelete
     :: Text -- ^ 'updUserKey'
     -> UsersPhotosDelete
-usersPhotosDelete pUpdUserKey_ =
-    UsersPhotosDelete'
-    { _updUserKey = pUpdUserKey_
-    }
+usersPhotosDelete pUpdUserKey_ = UsersPhotosDelete' {_updUserKey = pUpdUserKey_}
+
 
 -- | Email or immutable ID of the user
 updUserKey :: Lens' UsersPhotosDelete Text
diff --git a/gen/Network/Google/Resource/Directory/Users/Photos/Get.hs b/gen/Network/Google/Resource/Directory/Users/Photos/Get.hs
--- a/gen/Network/Google/Resource/Directory/Users/Photos/Get.hs
+++ b/gen/Network/Google/Resource/Directory/Users/Photos/Get.hs
@@ -54,10 +54,13 @@
 -- | Retrieve photo of a user
 --
 -- /See:/ 'usersPhotosGet' smart constructor.
-newtype UsersPhotosGet = UsersPhotosGet'
+newtype UsersPhotosGet =
+  UsersPhotosGet'
     { _upgUserKey :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UsersPhotosGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -66,10 +69,8 @@
 usersPhotosGet
     :: Text -- ^ 'upgUserKey'
     -> UsersPhotosGet
-usersPhotosGet pUpgUserKey_ =
-    UsersPhotosGet'
-    { _upgUserKey = pUpgUserKey_
-    }
+usersPhotosGet pUpgUserKey_ = UsersPhotosGet' {_upgUserKey = pUpgUserKey_}
+
 
 -- | Email or immutable ID of the user
 upgUserKey :: Lens' UsersPhotosGet Text
diff --git a/gen/Network/Google/Resource/Directory/Users/Photos/Patch.hs b/gen/Network/Google/Resource/Directory/Users/Photos/Patch.hs
--- a/gen/Network/Google/Resource/Directory/Users/Photos/Patch.hs
+++ b/gen/Network/Google/Resource/Directory/Users/Photos/Patch.hs
@@ -56,11 +56,14 @@
 -- | Add a photo for the user. This method supports patch semantics.
 --
 -- /See:/ 'usersPhotosPatch' smart constructor.
-data UsersPhotosPatch = UsersPhotosPatch'
+data UsersPhotosPatch =
+  UsersPhotosPatch'
     { _uppPayload :: !UserPhoto
     , _uppUserKey :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UsersPhotosPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -73,10 +76,8 @@
     -> Text -- ^ 'uppUserKey'
     -> UsersPhotosPatch
 usersPhotosPatch pUppPayload_ pUppUserKey_ =
-    UsersPhotosPatch'
-    { _uppPayload = pUppPayload_
-    , _uppUserKey = pUppUserKey_
-    }
+  UsersPhotosPatch' {_uppPayload = pUppPayload_, _uppUserKey = pUppUserKey_}
+
 
 -- | Multipart request metadata.
 uppPayload :: Lens' UsersPhotosPatch UserPhoto
diff --git a/gen/Network/Google/Resource/Directory/Users/Photos/Update.hs b/gen/Network/Google/Resource/Directory/Users/Photos/Update.hs
--- a/gen/Network/Google/Resource/Directory/Users/Photos/Update.hs
+++ b/gen/Network/Google/Resource/Directory/Users/Photos/Update.hs
@@ -56,11 +56,14 @@
 -- | Add a photo for the user
 --
 -- /See:/ 'usersPhotosUpdate' smart constructor.
-data UsersPhotosUpdate = UsersPhotosUpdate'
+data UsersPhotosUpdate =
+  UsersPhotosUpdate'
     { _upuPayload :: !UserPhoto
     , _upuUserKey :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UsersPhotosUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -73,10 +76,8 @@
     -> Text -- ^ 'upuUserKey'
     -> UsersPhotosUpdate
 usersPhotosUpdate pUpuPayload_ pUpuUserKey_ =
-    UsersPhotosUpdate'
-    { _upuPayload = pUpuPayload_
-    , _upuUserKey = pUpuUserKey_
-    }
+  UsersPhotosUpdate' {_upuPayload = pUpuPayload_, _upuUserKey = pUpuUserKey_}
+
 
 -- | Multipart request metadata.
 upuPayload :: Lens' UsersPhotosUpdate UserPhoto
diff --git a/gen/Network/Google/Resource/Directory/Users/Undelete.hs b/gen/Network/Google/Resource/Directory/Users/Undelete.hs
--- a/gen/Network/Google/Resource/Directory/Users/Undelete.hs
+++ b/gen/Network/Google/Resource/Directory/Users/Undelete.hs
@@ -55,11 +55,14 @@
 -- | Undelete a deleted user
 --
 -- /See:/ 'usersUndelete' smart constructor.
-data UsersUndelete = UsersUndelete'
+data UsersUndelete =
+  UsersUndelete'
     { _uuPayload :: !UserUndelete
     , _uuUserKey :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UsersUndelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -72,10 +75,8 @@
     -> Text -- ^ 'uuUserKey'
     -> UsersUndelete
 usersUndelete pUuPayload_ pUuUserKey_ =
-    UsersUndelete'
-    { _uuPayload = pUuPayload_
-    , _uuUserKey = pUuUserKey_
-    }
+  UsersUndelete' {_uuPayload = pUuPayload_, _uuUserKey = pUuUserKey_}
+
 
 -- | Multipart request metadata.
 uuPayload :: Lens' UsersUndelete UserUndelete
diff --git a/gen/Network/Google/Resource/Directory/Users/Update.hs b/gen/Network/Google/Resource/Directory/Users/Update.hs
--- a/gen/Network/Google/Resource/Directory/Users/Update.hs
+++ b/gen/Network/Google/Resource/Directory/Users/Update.hs
@@ -54,11 +54,14 @@
 -- | update user
 --
 -- /See:/ 'usersUpdate' smart constructor.
-data UsersUpdate = UsersUpdate'
+data UsersUpdate =
+  UsersUpdate'
     { _uPayload :: !User
     , _uUserKey :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UsersUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -71,10 +74,8 @@
     -> Text -- ^ 'uUserKey'
     -> UsersUpdate
 usersUpdate pUPayload_ pUUserKey_ =
-    UsersUpdate'
-    { _uPayload = pUPayload_
-    , _uUserKey = pUUserKey_
-    }
+  UsersUpdate' {_uPayload = pUPayload_, _uUserKey = pUUserKey_}
+
 
 -- | Multipart request metadata.
 uPayload :: Lens' UsersUpdate User
diff --git a/gen/Network/Google/Resource/Directory/Users/Watch.hs b/gen/Network/Google/Resource/Directory/Users/Watch.hs
--- a/gen/Network/Google/Resource/Directory/Users/Watch.hs
+++ b/gen/Network/Google/Resource/Directory/Users/Watch.hs
@@ -78,7 +78,8 @@
 -- | Watch for changes in users list
 --
 -- /See:/ 'usersWatch' smart constructor.
-data UsersWatch = UsersWatch'
+data UsersWatch =
+  UsersWatch'
     { _uwEvent           :: !(Maybe UsersWatchEvent)
     , _uwOrderBy         :: !(Maybe UsersWatchOrderBy)
     , _uwViewType        :: !UsersWatchViewType
@@ -92,8 +93,10 @@
     , _uwProjection      :: !UsersWatchProjection
     , _uwPageToken       :: !(Maybe Text)
     , _uwMaxResults      :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UsersWatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -127,7 +130,7 @@
     :: Channel -- ^ 'uwPayload'
     -> UsersWatch
 usersWatch pUwPayload_ =
-    UsersWatch'
+  UsersWatch'
     { _uwEvent = Nothing
     , _uwOrderBy = Nothing
     , _uwViewType = UWVTAdminView
@@ -142,6 +145,7 @@
     , _uwPageToken = Nothing
     , _uwMaxResults = Nothing
     }
+
 
 -- | Event on which subscription is intended (if subscribing)
 uwEvent :: Lens' UsersWatch (Maybe UsersWatchEvent)
diff --git a/gen/Network/Google/Resource/Directory/VerificationCodes/Generate.hs b/gen/Network/Google/Resource/Directory/VerificationCodes/Generate.hs
--- a/gen/Network/Google/Resource/Directory/VerificationCodes/Generate.hs
+++ b/gen/Network/Google/Resource/Directory/VerificationCodes/Generate.hs
@@ -54,10 +54,13 @@
 -- | Generate new backup verification codes for the user.
 --
 -- /See:/ 'verificationCodesGenerate' smart constructor.
-newtype VerificationCodesGenerate = VerificationCodesGenerate'
+newtype VerificationCodesGenerate =
+  VerificationCodesGenerate'
     { _vcgUserKey :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'VerificationCodesGenerate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -67,9 +70,8 @@
     :: Text -- ^ 'vcgUserKey'
     -> VerificationCodesGenerate
 verificationCodesGenerate pVcgUserKey_ =
-    VerificationCodesGenerate'
-    { _vcgUserKey = pVcgUserKey_
-    }
+  VerificationCodesGenerate' {_vcgUserKey = pVcgUserKey_}
+
 
 -- | Email or immutable ID of the user
 vcgUserKey :: Lens' VerificationCodesGenerate Text
diff --git a/gen/Network/Google/Resource/Directory/VerificationCodes/Invalidate.hs b/gen/Network/Google/Resource/Directory/VerificationCodes/Invalidate.hs
--- a/gen/Network/Google/Resource/Directory/VerificationCodes/Invalidate.hs
+++ b/gen/Network/Google/Resource/Directory/VerificationCodes/Invalidate.hs
@@ -54,10 +54,13 @@
 -- | Invalidate the current backup verification codes for the user.
 --
 -- /See:/ 'verificationCodesInvalidate' smart constructor.
-newtype VerificationCodesInvalidate = VerificationCodesInvalidate'
+newtype VerificationCodesInvalidate =
+  VerificationCodesInvalidate'
     { _vciUserKey :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'VerificationCodesInvalidate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -67,9 +70,8 @@
     :: Text -- ^ 'vciUserKey'
     -> VerificationCodesInvalidate
 verificationCodesInvalidate pVciUserKey_ =
-    VerificationCodesInvalidate'
-    { _vciUserKey = pVciUserKey_
-    }
+  VerificationCodesInvalidate' {_vciUserKey = pVciUserKey_}
+
 
 -- | Email or immutable ID of the user
 vciUserKey :: Lens' VerificationCodesInvalidate Text
diff --git a/gen/Network/Google/Resource/Directory/VerificationCodes/List.hs b/gen/Network/Google/Resource/Directory/VerificationCodes/List.hs
--- a/gen/Network/Google/Resource/Directory/VerificationCodes/List.hs
+++ b/gen/Network/Google/Resource/Directory/VerificationCodes/List.hs
@@ -56,10 +56,13 @@
 -- specified user.
 --
 -- /See:/ 'verificationCodesList' smart constructor.
-newtype VerificationCodesList = VerificationCodesList'
+newtype VerificationCodesList =
+  VerificationCodesList'
     { _vclUserKey :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'VerificationCodesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -69,9 +72,8 @@
     :: Text -- ^ 'vclUserKey'
     -> VerificationCodesList
 verificationCodesList pVclUserKey_ =
-    VerificationCodesList'
-    { _vclUserKey = pVclUserKey_
-    }
+  VerificationCodesList' {_vclUserKey = pVclUserKey_}
+
 
 -- | Identifies the user in the API request. The value can be the user\'s
 -- primary email address, alias email address, or unique user ID.
diff --git a/gogol-admin-directory.cabal b/gogol-admin-directory.cabal
--- a/gogol-admin-directory.cabal
+++ b/gogol-admin-directory.cabal
@@ -1,5 +1,5 @@
 name:                  gogol-admin-directory
-version:               0.4.0
+version:               0.5.0
 synopsis:              Google Admin Directory SDK.
 homepage:              https://github.com/brendanhay/gogol
 bug-reports:           https://github.com/brendanhay/gogol/issues
@@ -155,5 +155,5 @@
         , Network.Google.Directory.Types.Sum
 
     build-depends:
-          gogol-core == 0.4.0.*
+          gogol-core == 0.5.0.*
         , base       >= 4.7 && < 5
