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/AndroidEnterprise.hs b/gen/Network/Google/AndroidEnterprise.hs
--- a/gen/Network/Google/AndroidEnterprise.hs
+++ b/gen/Network/Google/AndroidEnterprise.hs
@@ -65,9 +65,6 @@
     -- ** androidenterprise.enterprises.get
     , module Network.Google.Resource.AndroidEnterprise.Enterprises.Get
 
-    -- ** androidenterprise.enterprises.getAndroidDevicePolicyConfig
-    , module Network.Google.Resource.AndroidEnterprise.Enterprises.GetAndroidDevicePolicyConfig
-
     -- ** androidenterprise.enterprises.getServiceAccount
     , module Network.Google.Resource.AndroidEnterprise.Enterprises.GetServiceAccount
 
@@ -86,9 +83,6 @@
     -- ** androidenterprise.enterprises.setAccount
     , module Network.Google.Resource.AndroidEnterprise.Enterprises.SetAccount
 
-    -- ** androidenterprise.enterprises.setAndroidDevicePolicyConfig
-    , module Network.Google.Resource.AndroidEnterprise.Enterprises.SetAndroidDevicePolicyConfig
-
     -- ** androidenterprise.enterprises.setStoreLayout
     , module Network.Google.Resource.AndroidEnterprise.Enterprises.SetStoreLayout
 
@@ -409,6 +403,7 @@
     , awtsWebApps
     , awtsPermission
     , awtsStoreBuilder
+    , awtsManagedConfigurations
 
     -- ** ProductVisibility
     , ProductVisibility
@@ -509,6 +504,7 @@
     , ProductPolicy
     , productPolicy
     , ppTracks
+    , ppManagedConfiguration
     , ppTrackIds
     , ppAutoInstallPolicy
     , ppProductId
@@ -567,12 +563,6 @@
     , gllrGroupLicense
     , gllrKind
 
-    -- ** AndroidDevicePolicyConfig
-    , AndroidDevicePolicyConfig
-    , androidDevicePolicyConfig
-    , adpcState
-    , adpcKind
-
     -- ** ProductSet
     , ProductSet
     , productSet
@@ -831,6 +821,11 @@
     , ppsPermission
     , ppsProductId
 
+    -- ** AdministratorWebTokenSpecManagedConfigurations
+    , AdministratorWebTokenSpecManagedConfigurations
+    , administratorWebTokenSpecManagedConfigurations
+    , awtsmcEnabled
+
     -- ** Permission
     , Permission
     , permission
@@ -900,14 +895,12 @@
 import           Network.Google.Resource.AndroidEnterprise.Enterprises.Enroll
 import           Network.Google.Resource.AndroidEnterprise.Enterprises.GenerateSignupURL
 import           Network.Google.Resource.AndroidEnterprise.Enterprises.Get
-import           Network.Google.Resource.AndroidEnterprise.Enterprises.GetAndroidDevicePolicyConfig
 import           Network.Google.Resource.AndroidEnterprise.Enterprises.GetServiceAccount
 import           Network.Google.Resource.AndroidEnterprise.Enterprises.GetStoreLayout
 import           Network.Google.Resource.AndroidEnterprise.Enterprises.List
 import           Network.Google.Resource.AndroidEnterprise.Enterprises.PullNotificationSet
 import           Network.Google.Resource.AndroidEnterprise.Enterprises.SendTestPushNotification
 import           Network.Google.Resource.AndroidEnterprise.Enterprises.SetAccount
-import           Network.Google.Resource.AndroidEnterprise.Enterprises.SetAndroidDevicePolicyConfig
 import           Network.Google.Resource.AndroidEnterprise.Enterprises.SetStoreLayout
 import           Network.Google.Resource.AndroidEnterprise.Enterprises.Unenroll
 import           Network.Google.Resource.AndroidEnterprise.Entitlements.Delete
@@ -1021,14 +1014,12 @@
        :<|> EnterprisesListResource
        :<|> EnterprisesUnenrollResource
        :<|> EnterprisesGetStoreLayoutResource
-       :<|> EnterprisesSetAndroidDevicePolicyConfigResource
        :<|> EnterprisesSetAccountResource
        :<|> EnterprisesEnrollResource
        :<|> EnterprisesGetResource
        :<|> EnterprisesGenerateSignupURLResource
        :<|> EnterprisesSendTestPushNotificationResource
        :<|> EnterprisesSetStoreLayoutResource
-       :<|> EnterprisesGetAndroidDevicePolicyConfigResource
        :<|> EnterprisesAcknowledgeNotificationSetResource
        :<|> EnterprisesPullNotificationSetResource
        :<|> ManagedConfigurationsforUserListResource
diff --git a/gen/Network/Google/AndroidEnterprise/Types.hs b/gen/Network/Google/AndroidEnterprise/Types.hs
--- a/gen/Network/Google/AndroidEnterprise/Types.hs
+++ b/gen/Network/Google/AndroidEnterprise/Types.hs
@@ -139,6 +139,7 @@
     , awtsWebApps
     , awtsPermission
     , awtsStoreBuilder
+    , awtsManagedConfigurations
 
     -- * ProductVisibility
     , ProductVisibility
@@ -239,6 +240,7 @@
     , ProductPolicy
     , productPolicy
     , ppTracks
+    , ppManagedConfiguration
     , ppTrackIds
     , ppAutoInstallPolicy
     , ppProductId
@@ -297,12 +299,6 @@
     , gllrGroupLicense
     , gllrKind
 
-    -- * AndroidDevicePolicyConfig
-    , AndroidDevicePolicyConfig
-    , androidDevicePolicyConfig
-    , adpcState
-    , adpcKind
-
     -- * ProductSet
     , ProductSet
     , productSet
@@ -561,6 +557,11 @@
     , ppsPermission
     , ppsProductId
 
+    -- * AdministratorWebTokenSpecManagedConfigurations
+    , AdministratorWebTokenSpecManagedConfigurations
+    , administratorWebTokenSpecManagedConfigurations
+    , awtsmcEnabled
+
     -- * Permission
     , Permission
     , permission
@@ -628,4 +629,4 @@
 
 -- | Manage corporate Android devices
 androidEnterpriseScope :: Proxy '["https://www.googleapis.com/auth/androidenterprise"]
-androidEnterpriseScope = Proxy;
+androidEnterpriseScope = Proxy
diff --git a/gen/Network/Google/AndroidEnterprise/Types/Product.hs b/gen/Network/Google/AndroidEnterprise/Types/Product.hs
--- a/gen/Network/Google/AndroidEnterprise/Types/Product.hs
+++ b/gen/Network/Google/AndroidEnterprise/Types/Product.hs
@@ -36,5588 +36,5876 @@
 -- entitlements for the product.
 --
 -- /See:/ 'groupLicense' smart constructor.
-data GroupLicense = GroupLicense'
-    { _glKind            :: !Text
-    , _glNumProvisioned  :: !(Maybe (Textual Int32))
-    , _glNumPurchased    :: !(Maybe (Textual Int32))
-    , _glApproval        :: !(Maybe Text)
-    , _glPermissions     :: !(Maybe Text)
-    , _glProductId       :: !(Maybe Text)
-    , _glAcquisitionKind :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GroupLicense' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'glKind'
---
--- * 'glNumProvisioned'
---
--- * 'glNumPurchased'
---
--- * 'glApproval'
---
--- * 'glPermissions'
---
--- * 'glProductId'
---
--- * 'glAcquisitionKind'
-groupLicense
-    :: GroupLicense
-groupLicense =
-    GroupLicense'
-    { _glKind = "androidenterprise#groupLicense"
-    , _glNumProvisioned = Nothing
-    , _glNumPurchased = Nothing
-    , _glApproval = Nothing
-    , _glPermissions = Nothing
-    , _glProductId = Nothing
-    , _glAcquisitionKind = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#groupLicense\".
-glKind :: Lens' GroupLicense Text
-glKind = lens _glKind (\ s a -> s{_glKind = a})
-
--- | The total number of provisioned licenses for this product. Returned by
--- read operations, but ignored in write operations.
-glNumProvisioned :: Lens' GroupLicense (Maybe Int32)
-glNumProvisioned
-  = lens _glNumProvisioned
-      (\ s a -> s{_glNumProvisioned = a})
-      . mapping _Coerce
-
--- | The number of purchased licenses (possibly in multiple purchases). If
--- this field is omitted, then there is no limit on the number of licenses
--- that can be provisioned (for example, if the acquisition kind is
--- \"free\").
-glNumPurchased :: Lens' GroupLicense (Maybe Int32)
-glNumPurchased
-  = lens _glNumPurchased
-      (\ s a -> s{_glNumPurchased = a})
-      . mapping _Coerce
-
--- | Whether the product to which this group license relates is currently
--- approved by the enterprise. Products are approved when a group license
--- is first created, but this approval may be revoked by an enterprise
--- admin via Google Play. Unapproved products will not be visible to end
--- users in collections, and new entitlements to them should not normally
--- be created.
-glApproval :: Lens' GroupLicense (Maybe Text)
-glApproval
-  = lens _glApproval (\ s a -> s{_glApproval = a})
-
--- | The permission approval status of the product. This field is only set if
--- the product is approved. Possible states are: - \"currentApproved\", the
--- current set of permissions is approved, but additional permissions will
--- require the administrator to reapprove the product (If the product was
--- approved without specifying the approved permissions setting, then this
--- is the default behavior.), - \"needsReapproval\", the product has
--- unapproved permissions. No additional product licenses can be assigned
--- until the product is reapproved, - \"allCurrentAndFutureApproved\", the
--- current permissions are approved and any future permission updates will
--- be automatically approved without administrator review.
-glPermissions :: Lens' GroupLicense (Maybe Text)
-glPermissions
-  = lens _glPermissions
-      (\ s a -> s{_glPermissions = a})
-
--- | The ID of the product that the license is for. For example,
--- \"app:com.google.android.gm\".
-glProductId :: Lens' GroupLicense (Maybe Text)
-glProductId
-  = lens _glProductId (\ s a -> s{_glProductId = a})
-
--- | How this group license was acquired. \"bulkPurchase\" means that this
--- Grouplicenses resource was created because the enterprise purchased
--- licenses for this product; otherwise, the value is \"free\" (for free
--- products).
-glAcquisitionKind :: Lens' GroupLicense (Maybe Text)
-glAcquisitionKind
-  = lens _glAcquisitionKind
-      (\ s a -> s{_glAcquisitionKind = a})
-
-instance FromJSON GroupLicense where
-        parseJSON
-          = withObject "GroupLicense"
-              (\ o ->
-                 GroupLicense' <$>
-                   (o .:? "kind" .!= "androidenterprise#groupLicense")
-                     <*> (o .:? "numProvisioned")
-                     <*> (o .:? "numPurchased")
-                     <*> (o .:? "approval")
-                     <*> (o .:? "permissions")
-                     <*> (o .:? "productId")
-                     <*> (o .:? "acquisitionKind"))
-
-instance ToJSON GroupLicense where
-        toJSON GroupLicense'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _glKind),
-                  ("numProvisioned" .=) <$> _glNumProvisioned,
-                  ("numPurchased" .=) <$> _glNumPurchased,
-                  ("approval" .=) <$> _glApproval,
-                  ("permissions" .=) <$> _glPermissions,
-                  ("productId" .=) <$> _glProductId,
-                  ("acquisitionKind" .=) <$> _glAcquisitionKind])
-
--- | The store page resources for the enterprise.
---
--- /See:/ 'storeLayoutPagesListResponse' smart constructor.
-data StoreLayoutPagesListResponse = StoreLayoutPagesListResponse'
-    { _slplrKind :: !Text
-    , _slplrPage :: !(Maybe [StorePage])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'StoreLayoutPagesListResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'slplrKind'
---
--- * 'slplrPage'
-storeLayoutPagesListResponse
-    :: StoreLayoutPagesListResponse
-storeLayoutPagesListResponse =
-    StoreLayoutPagesListResponse'
-    { _slplrKind = "androidenterprise#storeLayoutPagesListResponse"
-    , _slplrPage = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#storeLayoutPagesListResponse\".
-slplrKind :: Lens' StoreLayoutPagesListResponse Text
-slplrKind
-  = lens _slplrKind (\ s a -> s{_slplrKind = a})
-
--- | A store page of an enterprise.
-slplrPage :: Lens' StoreLayoutPagesListResponse [StorePage]
-slplrPage
-  = lens _slplrPage (\ s a -> s{_slplrPage = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON StoreLayoutPagesListResponse where
-        parseJSON
-          = withObject "StoreLayoutPagesListResponse"
-              (\ o ->
-                 StoreLayoutPagesListResponse' <$>
-                   (o .:? "kind" .!=
-                      "androidenterprise#storeLayoutPagesListResponse")
-                     <*> (o .:? "page" .!= mempty))
-
-instance ToJSON StoreLayoutPagesListResponse where
-        toJSON StoreLayoutPagesListResponse'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _slplrKind),
-                  ("page" .=) <$> _slplrPage])
-
--- | A service account that can be used to authenticate as the enterprise to
--- API calls that require such authentication.
---
--- /See:/ 'enterpriseAccount' smart constructor.
-data EnterpriseAccount = EnterpriseAccount'
-    { _eaKind         :: !Text
-    , _eaAccountEmail :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EnterpriseAccount' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eaKind'
---
--- * 'eaAccountEmail'
-enterpriseAccount
-    :: EnterpriseAccount
-enterpriseAccount =
-    EnterpriseAccount'
-    { _eaKind = "androidenterprise#enterpriseAccount"
-    , _eaAccountEmail = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#enterpriseAccount\".
-eaKind :: Lens' EnterpriseAccount Text
-eaKind = lens _eaKind (\ s a -> s{_eaKind = a})
-
--- | The email address of the service account.
-eaAccountEmail :: Lens' EnterpriseAccount (Maybe Text)
-eaAccountEmail
-  = lens _eaAccountEmail
-      (\ s a -> s{_eaAccountEmail = a})
-
-instance FromJSON EnterpriseAccount where
-        parseJSON
-          = withObject "EnterpriseAccount"
-              (\ o ->
-                 EnterpriseAccount' <$>
-                   (o .:? "kind" .!=
-                      "androidenterprise#enterpriseAccount")
-                     <*> (o .:? "accountEmail"))
-
-instance ToJSON EnterpriseAccount where
-        toJSON EnterpriseAccount'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _eaKind),
-                  ("accountEmail" .=) <$> _eaAccountEmail])
-
--- | A typed value for the restriction.
---
--- /See:/ 'appRestrictionsSchemaRestrictionRestrictionValue' smart constructor.
-data AppRestrictionsSchemaRestrictionRestrictionValue = AppRestrictionsSchemaRestrictionRestrictionValue'
-    { _arsrrvValueMultiselect :: !(Maybe [Text])
-    , _arsrrvValueBool        :: !(Maybe Bool)
-    , _arsrrvValueInteger     :: !(Maybe (Textual Int32))
-    , _arsrrvType             :: !(Maybe Text)
-    , _arsrrvValueString      :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AppRestrictionsSchemaRestrictionRestrictionValue' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'arsrrvValueMultiselect'
---
--- * 'arsrrvValueBool'
---
--- * 'arsrrvValueInteger'
---
--- * 'arsrrvType'
---
--- * 'arsrrvValueString'
-appRestrictionsSchemaRestrictionRestrictionValue
-    :: AppRestrictionsSchemaRestrictionRestrictionValue
-appRestrictionsSchemaRestrictionRestrictionValue =
-    AppRestrictionsSchemaRestrictionRestrictionValue'
-    { _arsrrvValueMultiselect = Nothing
-    , _arsrrvValueBool = Nothing
-    , _arsrrvValueInteger = Nothing
-    , _arsrrvType = Nothing
-    , _arsrrvValueString = Nothing
-    }
-
--- | The list of string values - this will only be present if type is
--- multiselect.
-arsrrvValueMultiselect :: Lens' AppRestrictionsSchemaRestrictionRestrictionValue [Text]
-arsrrvValueMultiselect
-  = lens _arsrrvValueMultiselect
-      (\ s a -> s{_arsrrvValueMultiselect = a})
-      . _Default
-      . _Coerce
-
--- | The boolean value - this will only be present if type is bool.
-arsrrvValueBool :: Lens' AppRestrictionsSchemaRestrictionRestrictionValue (Maybe Bool)
-arsrrvValueBool
-  = lens _arsrrvValueBool
-      (\ s a -> s{_arsrrvValueBool = a})
-
--- | The integer value - this will only be present if type is integer.
-arsrrvValueInteger :: Lens' AppRestrictionsSchemaRestrictionRestrictionValue (Maybe Int32)
-arsrrvValueInteger
-  = lens _arsrrvValueInteger
-      (\ s a -> s{_arsrrvValueInteger = a})
-      . mapping _Coerce
-
--- | The type of the value being provided.
-arsrrvType :: Lens' AppRestrictionsSchemaRestrictionRestrictionValue (Maybe Text)
-arsrrvType
-  = lens _arsrrvType (\ s a -> s{_arsrrvType = a})
-
--- | The string value - this will be present for types string, choice and
--- hidden.
-arsrrvValueString :: Lens' AppRestrictionsSchemaRestrictionRestrictionValue (Maybe Text)
-arsrrvValueString
-  = lens _arsrrvValueString
-      (\ s a -> s{_arsrrvValueString = a})
-
-instance FromJSON
-         AppRestrictionsSchemaRestrictionRestrictionValue
-         where
-        parseJSON
-          = withObject
-              "AppRestrictionsSchemaRestrictionRestrictionValue"
-              (\ o ->
-                 AppRestrictionsSchemaRestrictionRestrictionValue' <$>
-                   (o .:? "valueMultiselect" .!= mempty) <*>
-                     (o .:? "valueBool")
-                     <*> (o .:? "valueInteger")
-                     <*> (o .:? "type")
-                     <*> (o .:? "valueString"))
-
-instance ToJSON
-         AppRestrictionsSchemaRestrictionRestrictionValue
-         where
-        toJSON
-          AppRestrictionsSchemaRestrictionRestrictionValue'{..}
-          = object
-              (catMaybes
-                 [("valueMultiselect" .=) <$> _arsrrvValueMultiselect,
-                  ("valueBool" .=) <$> _arsrrvValueBool,
-                  ("valueInteger" .=) <$> _arsrrvValueInteger,
-                  ("type" .=) <$> _arsrrvType,
-                  ("valueString" .=) <$> _arsrrvValueString])
-
---
--- /See:/ 'administratorWebTokenSpecPlaySearch' smart constructor.
-data AdministratorWebTokenSpecPlaySearch = AdministratorWebTokenSpecPlaySearch'
-    { _awtspsEnabled     :: !(Maybe Bool)
-    , _awtspsApproveApps :: !(Maybe Bool)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AdministratorWebTokenSpecPlaySearch' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'awtspsEnabled'
---
--- * 'awtspsApproveApps'
-administratorWebTokenSpecPlaySearch
-    :: AdministratorWebTokenSpecPlaySearch
-administratorWebTokenSpecPlaySearch =
-    AdministratorWebTokenSpecPlaySearch'
-    { _awtspsEnabled = Nothing
-    , _awtspsApproveApps = Nothing
-    }
-
--- | Whether the managed Play Search apps page is displayed. Default is true.
-awtspsEnabled :: Lens' AdministratorWebTokenSpecPlaySearch (Maybe Bool)
-awtspsEnabled
-  = lens _awtspsEnabled
-      (\ s a -> s{_awtspsEnabled = a})
-
--- | Allow access to the iframe in approve mode. Default is false.
-awtspsApproveApps :: Lens' AdministratorWebTokenSpecPlaySearch (Maybe Bool)
-awtspsApproveApps
-  = lens _awtspsApproveApps
-      (\ s a -> s{_awtspsApproveApps = a})
-
-instance FromJSON AdministratorWebTokenSpecPlaySearch
-         where
-        parseJSON
-          = withObject "AdministratorWebTokenSpecPlaySearch"
-              (\ o ->
-                 AdministratorWebTokenSpecPlaySearch' <$>
-                   (o .:? "enabled") <*> (o .:? "approveApps"))
-
-instance ToJSON AdministratorWebTokenSpecPlaySearch
-         where
-        toJSON AdministratorWebTokenSpecPlaySearch'{..}
-          = object
-              (catMaybes
-                 [("enabled" .=) <$> _awtspsEnabled,
-                  ("approveApps" .=) <$> _awtspsApproveApps])
-
--- | The state of a user\'s device, as accessed by the getState and setState
--- methods on device resources.
---
--- /See:/ 'deviceState' smart constructor.
-data DeviceState = DeviceState'
-    { _dsKind         :: !Text
-    , _dsAccountState :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DeviceState' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dsKind'
---
--- * 'dsAccountState'
-deviceState
-    :: DeviceState
-deviceState =
-    DeviceState'
-    { _dsKind = "androidenterprise#deviceState"
-    , _dsAccountState = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#deviceState\".
-dsKind :: Lens' DeviceState Text
-dsKind = lens _dsKind (\ s a -> s{_dsKind = a})
-
--- | The state of the Google account on the device. \"enabled\" indicates
--- that the Google account on the device can be used to access Google
--- services (including Google Play), while \"disabled\" means that it
--- cannot. A new device is initially in the \"disabled\" state.
-dsAccountState :: Lens' DeviceState (Maybe Text)
-dsAccountState
-  = lens _dsAccountState
-      (\ s a -> s{_dsAccountState = a})
-
-instance FromJSON DeviceState where
-        parseJSON
-          = withObject "DeviceState"
-              (\ o ->
-                 DeviceState' <$>
-                   (o .:? "kind" .!= "androidenterprise#deviceState")
-                     <*> (o .:? "accountState"))
-
-instance ToJSON DeviceState where
-        toJSON DeviceState'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _dsKind),
-                  ("accountState" .=) <$> _dsAccountState])
-
--- | The user resources for the group license.
---
--- /See:/ 'groupLicenseUsersListResponse' smart constructor.
-data GroupLicenseUsersListResponse = GroupLicenseUsersListResponse'
-    { _glulrKind :: !Text
-    , _glulrUser :: !(Maybe [User])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GroupLicenseUsersListResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'glulrKind'
---
--- * 'glulrUser'
-groupLicenseUsersListResponse
-    :: GroupLicenseUsersListResponse
-groupLicenseUsersListResponse =
-    GroupLicenseUsersListResponse'
-    { _glulrKind = "androidenterprise#groupLicenseUsersListResponse"
-    , _glulrUser = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#groupLicenseUsersListResponse\".
-glulrKind :: Lens' GroupLicenseUsersListResponse Text
-glulrKind
-  = lens _glulrKind (\ s a -> s{_glulrKind = a})
-
--- | A user of an enterprise.
-glulrUser :: Lens' GroupLicenseUsersListResponse [User]
-glulrUser
-  = lens _glulrUser (\ s a -> s{_glulrUser = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON GroupLicenseUsersListResponse where
-        parseJSON
-          = withObject "GroupLicenseUsersListResponse"
-              (\ o ->
-                 GroupLicenseUsersListResponse' <$>
-                   (o .:? "kind" .!=
-                      "androidenterprise#groupLicenseUsersListResponse")
-                     <*> (o .:? "user" .!= mempty))
-
-instance ToJSON GroupLicenseUsersListResponse where
-        toJSON GroupLicenseUsersListResponse'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _glulrKind),
-                  ("user" .=) <$> _glulrUser])
-
---
--- /See:/ 'tokenPagination' smart constructor.
-data TokenPagination = TokenPagination'
-    { _tpNextPageToken     :: !(Maybe Text)
-    , _tpPreviousPageToken :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TokenPagination' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tpNextPageToken'
---
--- * 'tpPreviousPageToken'
-tokenPagination
-    :: TokenPagination
-tokenPagination =
-    TokenPagination'
-    { _tpNextPageToken = Nothing
-    , _tpPreviousPageToken = Nothing
-    }
-
-tpNextPageToken :: Lens' TokenPagination (Maybe Text)
-tpNextPageToken
-  = lens _tpNextPageToken
-      (\ s a -> s{_tpNextPageToken = a})
-
-tpPreviousPageToken :: Lens' TokenPagination (Maybe Text)
-tpPreviousPageToken
-  = lens _tpPreviousPageToken
-      (\ s a -> s{_tpPreviousPageToken = a})
-
-instance FromJSON TokenPagination where
-        parseJSON
-          = withObject "TokenPagination"
-              (\ o ->
-                 TokenPagination' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "previousPageToken"))
-
-instance ToJSON TokenPagination where
-        toJSON TokenPagination'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _tpNextPageToken,
-                  ("previousPageToken" .=) <$> _tpPreviousPageToken])
-
---
--- /See:/ 'administratorWebTokenSpecWebApps' smart constructor.
-newtype AdministratorWebTokenSpecWebApps = AdministratorWebTokenSpecWebApps'
-    { _awtswaEnabled :: Maybe Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AdministratorWebTokenSpecWebApps' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'awtswaEnabled'
-administratorWebTokenSpecWebApps
-    :: AdministratorWebTokenSpecWebApps
-administratorWebTokenSpecWebApps =
-    AdministratorWebTokenSpecWebApps'
-    { _awtswaEnabled = Nothing
-    }
-
--- | Whether the Web Apps page is displayed. Default is true.
-awtswaEnabled :: Lens' AdministratorWebTokenSpecWebApps (Maybe Bool)
-awtswaEnabled
-  = lens _awtswaEnabled
-      (\ s a -> s{_awtswaEnabled = a})
-
-instance FromJSON AdministratorWebTokenSpecWebApps
-         where
-        parseJSON
-          = withObject "AdministratorWebTokenSpecWebApps"
-              (\ o ->
-                 AdministratorWebTokenSpecWebApps' <$>
-                   (o .:? "enabled"))
-
-instance ToJSON AdministratorWebTokenSpecWebApps
-         where
-        toJSON AdministratorWebTokenSpecWebApps'{..}
-          = object
-              (catMaybes [("enabled" .=) <$> _awtswaEnabled])
-
--- | Information on an approval URL.
---
--- /See:/ 'approvalURLInfo' smart constructor.
-data ApprovalURLInfo = ApprovalURLInfo'
-    { _auiApprovalURL :: !(Maybe Text)
-    , _auiKind        :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ApprovalURLInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'auiApprovalURL'
---
--- * 'auiKind'
-approvalURLInfo
-    :: ApprovalURLInfo
-approvalURLInfo =
-    ApprovalURLInfo'
-    { _auiApprovalURL = Nothing
-    , _auiKind = "androidenterprise#approvalUrlInfo"
-    }
-
--- | A URL that displays a product\'s permissions and that can also be used
--- to approve the product with the Products.approve call.
-auiApprovalURL :: Lens' ApprovalURLInfo (Maybe Text)
-auiApprovalURL
-  = lens _auiApprovalURL
-      (\ s a -> s{_auiApprovalURL = a})
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#approvalUrlInfo\".
-auiKind :: Lens' ApprovalURLInfo Text
-auiKind = lens _auiKind (\ s a -> s{_auiKind = a})
-
-instance FromJSON ApprovalURLInfo where
-        parseJSON
-          = withObject "ApprovalURLInfo"
-              (\ o ->
-                 ApprovalURLInfo' <$>
-                   (o .:? "approvalUrl") <*>
-                     (o .:? "kind" .!=
-                        "androidenterprise#approvalUrlInfo"))
-
-instance ToJSON ApprovalURLInfo where
-        toJSON ApprovalURLInfo'{..}
-          = object
-              (catMaybes
-                 [("approvalUrl" .=) <$> _auiApprovalURL,
-                  Just ("kind" .= _auiKind)])
-
--- | The managed configurations settings for a product.
---
--- /See:/ 'managedConfigurationsSettingsListResponse' smart constructor.
-data ManagedConfigurationsSettingsListResponse = ManagedConfigurationsSettingsListResponse'
-    { _mcslrKind                          :: !Text
-    , _mcslrManagedConfigurationsSettings :: !(Maybe [ManagedConfigurationsSettings])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ManagedConfigurationsSettingsListResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mcslrKind'
---
--- * 'mcslrManagedConfigurationsSettings'
-managedConfigurationsSettingsListResponse
-    :: ManagedConfigurationsSettingsListResponse
-managedConfigurationsSettingsListResponse =
-    ManagedConfigurationsSettingsListResponse'
-    { _mcslrKind = "androidenterprise#managedConfigurationsSettingsListResponse"
-    , _mcslrManagedConfigurationsSettings = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#managedConfigurationsSettingsListResponse\".
-mcslrKind :: Lens' ManagedConfigurationsSettingsListResponse Text
-mcslrKind
-  = lens _mcslrKind (\ s a -> s{_mcslrKind = a})
-
--- | A managed configurations settings for an app that may be assigned to a
--- group of users in an enterprise.
-mcslrManagedConfigurationsSettings :: Lens' ManagedConfigurationsSettingsListResponse [ManagedConfigurationsSettings]
-mcslrManagedConfigurationsSettings
-  = lens _mcslrManagedConfigurationsSettings
-      (\ s a -> s{_mcslrManagedConfigurationsSettings = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON
-         ManagedConfigurationsSettingsListResponse where
-        parseJSON
-          = withObject
-              "ManagedConfigurationsSettingsListResponse"
-              (\ o ->
-                 ManagedConfigurationsSettingsListResponse' <$>
-                   (o .:? "kind" .!=
-                      "androidenterprise#managedConfigurationsSettingsListResponse")
-                     <*>
-                     (o .:? "managedConfigurationsSettings" .!= mempty))
-
-instance ToJSON
-         ManagedConfigurationsSettingsListResponse where
-        toJSON ManagedConfigurationsSettingsListResponse'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _mcslrKind),
-                  ("managedConfigurationsSettings" .=) <$>
-                    _mcslrManagedConfigurationsSettings])
-
--- | A managed property of a managed configuration. The property must match
--- one of the properties in the app restrictions schema of the product.
--- Exactly one of the value fields must be populated, and it must match the
--- property\'s type in the app restrictions schema.
---
--- /See:/ 'managedProperty' smart constructor.
-data ManagedProperty = ManagedProperty'
-    { _mpValueStringArray :: !(Maybe [Text])
-    , _mpValueBool        :: !(Maybe Bool)
-    , _mpKey              :: !(Maybe Text)
-    , _mpValueBundle      :: !(Maybe ManagedPropertyBundle)
-    , _mpValueInteger     :: !(Maybe (Textual Int32))
-    , _mpValueBundleArray :: !(Maybe [ManagedPropertyBundle])
-    , _mpValueString      :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ManagedProperty' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mpValueStringArray'
---
--- * 'mpValueBool'
---
--- * 'mpKey'
---
--- * 'mpValueBundle'
---
--- * 'mpValueInteger'
---
--- * 'mpValueBundleArray'
---
--- * 'mpValueString'
-managedProperty
-    :: ManagedProperty
-managedProperty =
-    ManagedProperty'
-    { _mpValueStringArray = Nothing
-    , _mpValueBool = Nothing
-    , _mpKey = Nothing
-    , _mpValueBundle = Nothing
-    , _mpValueInteger = Nothing
-    , _mpValueBundleArray = Nothing
-    , _mpValueString = Nothing
-    }
-
--- | The list of string values - this will only be present if type of the
--- property is multiselect.
-mpValueStringArray :: Lens' ManagedProperty [Text]
-mpValueStringArray
-  = lens _mpValueStringArray
-      (\ s a -> s{_mpValueStringArray = a})
-      . _Default
-      . _Coerce
-
--- | The boolean value - this will only be present if type of the property is
--- bool.
-mpValueBool :: Lens' ManagedProperty (Maybe Bool)
-mpValueBool
-  = lens _mpValueBool (\ s a -> s{_mpValueBool = a})
-
--- | The unique key that identifies the property.
-mpKey :: Lens' ManagedProperty (Maybe Text)
-mpKey = lens _mpKey (\ s a -> s{_mpKey = a})
-
--- | The bundle of managed properties - this will only be present if type of
--- the property is bundle.
-mpValueBundle :: Lens' ManagedProperty (Maybe ManagedPropertyBundle)
-mpValueBundle
-  = lens _mpValueBundle
-      (\ s a -> s{_mpValueBundle = a})
-
--- | The integer value - this will only be present if type of the property is
--- integer.
-mpValueInteger :: Lens' ManagedProperty (Maybe Int32)
-mpValueInteger
-  = lens _mpValueInteger
-      (\ s a -> s{_mpValueInteger = a})
-      . mapping _Coerce
-
--- | The list of bundles of properties - this will only be present if type of
--- the property is bundle_array.
-mpValueBundleArray :: Lens' ManagedProperty [ManagedPropertyBundle]
-mpValueBundleArray
-  = lens _mpValueBundleArray
-      (\ s a -> s{_mpValueBundleArray = a})
-      . _Default
-      . _Coerce
-
--- | The string value - this will only be present if type of the property is
--- string, choice or hidden.
-mpValueString :: Lens' ManagedProperty (Maybe Text)
-mpValueString
-  = lens _mpValueString
-      (\ s a -> s{_mpValueString = a})
-
-instance FromJSON ManagedProperty where
-        parseJSON
-          = withObject "ManagedProperty"
-              (\ o ->
-                 ManagedProperty' <$>
-                   (o .:? "valueStringArray" .!= mempty) <*>
-                     (o .:? "valueBool")
-                     <*> (o .:? "key")
-                     <*> (o .:? "valueBundle")
-                     <*> (o .:? "valueInteger")
-                     <*> (o .:? "valueBundleArray" .!= mempty)
-                     <*> (o .:? "valueString"))
-
-instance ToJSON ManagedProperty where
-        toJSON ManagedProperty'{..}
-          = object
-              (catMaybes
-                 [("valueStringArray" .=) <$> _mpValueStringArray,
-                  ("valueBool" .=) <$> _mpValueBool,
-                  ("key" .=) <$> _mpKey,
-                  ("valueBundle" .=) <$> _mpValueBundle,
-                  ("valueInteger" .=) <$> _mpValueInteger,
-                  ("valueBundleArray" .=) <$> _mpValueBundleArray,
-                  ("valueString" .=) <$> _mpValueString])
-
--- | The store page resources for the enterprise.
---
--- /See:/ 'storeLayoutClustersListResponse' smart constructor.
-data StoreLayoutClustersListResponse = StoreLayoutClustersListResponse'
-    { _slclrCluster :: !(Maybe [StoreCluster])
-    , _slclrKind    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'StoreLayoutClustersListResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'slclrCluster'
---
--- * 'slclrKind'
-storeLayoutClustersListResponse
-    :: StoreLayoutClustersListResponse
-storeLayoutClustersListResponse =
-    StoreLayoutClustersListResponse'
-    { _slclrCluster = Nothing
-    , _slclrKind = "androidenterprise#storeLayoutClustersListResponse"
-    }
-
--- | A store cluster of an enterprise.
-slclrCluster :: Lens' StoreLayoutClustersListResponse [StoreCluster]
-slclrCluster
-  = lens _slclrCluster (\ s a -> s{_slclrCluster = a})
-      . _Default
-      . _Coerce
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#storeLayoutClustersListResponse\".
-slclrKind :: Lens' StoreLayoutClustersListResponse Text
-slclrKind
-  = lens _slclrKind (\ s a -> s{_slclrKind = a})
-
-instance FromJSON StoreLayoutClustersListResponse
-         where
-        parseJSON
-          = withObject "StoreLayoutClustersListResponse"
-              (\ o ->
-                 StoreLayoutClustersListResponse' <$>
-                   (o .:? "cluster" .!= mempty) <*>
-                     (o .:? "kind" .!=
-                        "androidenterprise#storeLayoutClustersListResponse"))
-
-instance ToJSON StoreLayoutClustersListResponse where
-        toJSON StoreLayoutClustersListResponse'{..}
-          = object
-              (catMaybes
-                 [("cluster" .=) <$> _slclrCluster,
-                  Just ("kind" .= _slclrKind)])
-
--- | A managed configuration resource contains the set of managed properties
--- defined by the app developer in the app\'s managed configurations
--- schema, as well as any configuration variables defined for the user.
---
--- /See:/ 'managedConfiguration' smart constructor.
-data ManagedConfiguration = ManagedConfiguration'
-    { _mcManagedProperty        :: !(Maybe [ManagedProperty])
-    , _mcKind                   :: !Text
-    , _mcConfigurationVariables :: !(Maybe ConfigurationVariables)
-    , _mcProductId              :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ManagedConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mcManagedProperty'
---
--- * 'mcKind'
---
--- * 'mcConfigurationVariables'
---
--- * 'mcProductId'
-managedConfiguration
-    :: ManagedConfiguration
-managedConfiguration =
-    ManagedConfiguration'
-    { _mcManagedProperty = Nothing
-    , _mcKind = "androidenterprise#managedConfiguration"
-    , _mcConfigurationVariables = Nothing
-    , _mcProductId = Nothing
-    }
-
--- | The set of managed properties for this configuration.
-mcManagedProperty :: Lens' ManagedConfiguration [ManagedProperty]
-mcManagedProperty
-  = lens _mcManagedProperty
-      (\ s a -> s{_mcManagedProperty = a})
-      . _Default
-      . _Coerce
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#managedConfiguration\".
-mcKind :: Lens' ManagedConfiguration Text
-mcKind = lens _mcKind (\ s a -> s{_mcKind = a})
-
--- | Contains the ID of the managed configuration profile and the set of
--- configuration variables (if any) defined for the user.
-mcConfigurationVariables :: Lens' ManagedConfiguration (Maybe ConfigurationVariables)
-mcConfigurationVariables
-  = lens _mcConfigurationVariables
-      (\ s a -> s{_mcConfigurationVariables = a})
-
--- | The ID of the product that the managed configuration is for, e.g.
--- \"app:com.google.android.gm\".
-mcProductId :: Lens' ManagedConfiguration (Maybe Text)
-mcProductId
-  = lens _mcProductId (\ s a -> s{_mcProductId = a})
-
-instance FromJSON ManagedConfiguration where
-        parseJSON
-          = withObject "ManagedConfiguration"
-              (\ o ->
-                 ManagedConfiguration' <$>
-                   (o .:? "managedProperty" .!= mempty) <*>
-                     (o .:? "kind" .!=
-                        "androidenterprise#managedConfiguration")
-                     <*> (o .:? "configurationVariables")
-                     <*> (o .:? "productId"))
-
-instance ToJSON ManagedConfiguration where
-        toJSON ManagedConfiguration'{..}
-          = object
-              (catMaybes
-                 [("managedProperty" .=) <$> _mcManagedProperty,
-                  Just ("kind" .= _mcKind),
-                  ("configurationVariables" .=) <$>
-                    _mcConfigurationVariables,
-                  ("productId" .=) <$> _mcProductId])
-
--- | Definition of a managed Google Play store cluster, a list of products
--- displayed as part of a store page.
---
--- /See:/ 'storeCluster' smart constructor.
-data StoreCluster = StoreCluster'
-    { _scKind        :: !Text
-    , _scName        :: !(Maybe [LocalizedText])
-    , _scOrderInPage :: !(Maybe Text)
-    , _scId          :: !(Maybe Text)
-    , _scProductId   :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'StoreCluster' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'scKind'
---
--- * 'scName'
---
--- * 'scOrderInPage'
---
--- * 'scId'
---
--- * 'scProductId'
-storeCluster
-    :: StoreCluster
-storeCluster =
-    StoreCluster'
-    { _scKind = "androidenterprise#storeCluster"
-    , _scName = Nothing
-    , _scOrderInPage = Nothing
-    , _scId = Nothing
-    , _scProductId = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#storeCluster\".
-scKind :: Lens' StoreCluster Text
-scKind = lens _scKind (\ s a -> s{_scKind = a})
-
--- | Ordered list of localized strings giving the name of this page. The text
--- displayed is the one that best matches the user locale, or the first
--- entry if there is no good match. There needs to be at least one entry.
-scName :: Lens' StoreCluster [LocalizedText]
-scName
-  = lens _scName (\ s a -> s{_scName = a}) . _Default .
-      _Coerce
-
--- | String (US-ASCII only) used to determine order of this cluster within
--- the parent page\'s elements. Page elements are sorted in lexicographic
--- order of this field. Duplicated values are allowed, but ordering between
--- elements with duplicate order is undefined. The value of this field is
--- never visible to a user, it is used solely for the purpose of defining
--- an ordering. Maximum length is 256 characters.
-scOrderInPage :: Lens' StoreCluster (Maybe Text)
-scOrderInPage
-  = lens _scOrderInPage
-      (\ s a -> s{_scOrderInPage = a})
-
--- | Unique ID of this cluster. Assigned by the server. Immutable once
--- assigned.
-scId :: Lens' StoreCluster (Maybe Text)
-scId = lens _scId (\ s a -> s{_scId = a})
-
--- | List of products in the order they are displayed in the cluster. There
--- should not be duplicates within a cluster.
-scProductId :: Lens' StoreCluster [Text]
-scProductId
-  = lens _scProductId (\ s a -> s{_scProductId = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON StoreCluster where
-        parseJSON
-          = withObject "StoreCluster"
-              (\ o ->
-                 StoreCluster' <$>
-                   (o .:? "kind" .!= "androidenterprise#storeCluster")
-                     <*> (o .:? "name" .!= mempty)
-                     <*> (o .:? "orderInPage")
-                     <*> (o .:? "id")
-                     <*> (o .:? "productId" .!= mempty))
-
-instance ToJSON StoreCluster where
-        toJSON StoreCluster'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _scKind), ("name" .=) <$> _scName,
-                  ("orderInPage" .=) <$> _scOrderInPage,
-                  ("id" .=) <$> _scId,
-                  ("productId" .=) <$> _scProductId])
-
--- | Specification for a token used to generate iframes. The token specifies
--- what data the admin is allowed to modify and the URI the iframe is
--- allowed to communiate with.
---
--- /See:/ 'administratorWebTokenSpec' smart constructor.
-data AdministratorWebTokenSpec = AdministratorWebTokenSpec'
-    { _awtsParent       :: !(Maybe Text)
-    , _awtsPrivateApps  :: !(Maybe AdministratorWebTokenSpecPrivateApps)
-    , _awtsPlaySearch   :: !(Maybe AdministratorWebTokenSpecPlaySearch)
-    , _awtsKind         :: !Text
-    , _awtsWebApps      :: !(Maybe AdministratorWebTokenSpecWebApps)
-    , _awtsPermission   :: !(Maybe [Text])
-    , _awtsStoreBuilder :: !(Maybe AdministratorWebTokenSpecStoreBuilder)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AdministratorWebTokenSpec' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'awtsParent'
---
--- * 'awtsPrivateApps'
---
--- * 'awtsPlaySearch'
---
--- * 'awtsKind'
---
--- * 'awtsWebApps'
---
--- * 'awtsPermission'
---
--- * 'awtsStoreBuilder'
-administratorWebTokenSpec
-    :: AdministratorWebTokenSpec
-administratorWebTokenSpec =
-    AdministratorWebTokenSpec'
-    { _awtsParent = Nothing
-    , _awtsPrivateApps = Nothing
-    , _awtsPlaySearch = Nothing
-    , _awtsKind = "androidenterprise#administratorWebTokenSpec"
-    , _awtsWebApps = Nothing
-    , _awtsPermission = Nothing
-    , _awtsStoreBuilder = Nothing
-    }
-
--- | The URI of the parent frame hosting the iframe. To prevent XSS, the
--- iframe may not be hosted at other URIs. This URI must be https.
-awtsParent :: Lens' AdministratorWebTokenSpec (Maybe Text)
-awtsParent
-  = lens _awtsParent (\ s a -> s{_awtsParent = a})
-
--- | Options for displaying the Private Apps page.
-awtsPrivateApps :: Lens' AdministratorWebTokenSpec (Maybe AdministratorWebTokenSpecPrivateApps)
-awtsPrivateApps
-  = lens _awtsPrivateApps
-      (\ s a -> s{_awtsPrivateApps = a})
-
--- | Options for displaying the managed Play Search apps page.
-awtsPlaySearch :: Lens' AdministratorWebTokenSpec (Maybe AdministratorWebTokenSpecPlaySearch)
-awtsPlaySearch
-  = lens _awtsPlaySearch
-      (\ s a -> s{_awtsPlaySearch = a})
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#administratorWebTokenSpec\".
-awtsKind :: Lens' AdministratorWebTokenSpec Text
-awtsKind = lens _awtsKind (\ s a -> s{_awtsKind = a})
-
--- | Options for displaying the Web Apps page.
-awtsWebApps :: Lens' AdministratorWebTokenSpec (Maybe AdministratorWebTokenSpecWebApps)
-awtsWebApps
-  = lens _awtsWebApps (\ s a -> s{_awtsWebApps = a})
-
--- | Deprecated. Use PlaySearch.approveApps.
-awtsPermission :: Lens' AdministratorWebTokenSpec [Text]
-awtsPermission
-  = lens _awtsPermission
-      (\ s a -> s{_awtsPermission = a})
-      . _Default
-      . _Coerce
-
--- | Options for displaying the Organize apps page.
-awtsStoreBuilder :: Lens' AdministratorWebTokenSpec (Maybe AdministratorWebTokenSpecStoreBuilder)
-awtsStoreBuilder
-  = lens _awtsStoreBuilder
-      (\ s a -> s{_awtsStoreBuilder = a})
-
-instance FromJSON AdministratorWebTokenSpec where
-        parseJSON
-          = withObject "AdministratorWebTokenSpec"
-              (\ o ->
-                 AdministratorWebTokenSpec' <$>
-                   (o .:? "parent") <*> (o .:? "privateApps") <*>
-                     (o .:? "playSearch")
-                     <*>
-                     (o .:? "kind" .!=
-                        "androidenterprise#administratorWebTokenSpec")
-                     <*> (o .:? "webApps")
-                     <*> (o .:? "permission" .!= mempty)
-                     <*> (o .:? "storeBuilder"))
-
-instance ToJSON AdministratorWebTokenSpec where
-        toJSON AdministratorWebTokenSpec'{..}
-          = object
-              (catMaybes
-                 [("parent" .=) <$> _awtsParent,
-                  ("privateApps" .=) <$> _awtsPrivateApps,
-                  ("playSearch" .=) <$> _awtsPlaySearch,
-                  Just ("kind" .= _awtsKind),
-                  ("webApps" .=) <$> _awtsWebApps,
-                  ("permission" .=) <$> _awtsPermission,
-                  ("storeBuilder" .=) <$> _awtsStoreBuilder])
-
--- | A product to be made visible to a user.
---
--- /See:/ 'productVisibility' smart constructor.
-data ProductVisibility = ProductVisibility'
-    { _pvTracks    :: !(Maybe [Text])
-    , _pvTrackIds  :: !(Maybe [Text])
-    , _pvProductId :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ProductVisibility' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pvTracks'
---
--- * 'pvTrackIds'
---
--- * 'pvProductId'
-productVisibility
-    :: ProductVisibility
-productVisibility =
-    ProductVisibility'
-    { _pvTracks = Nothing
-    , _pvTrackIds = Nothing
-    , _pvProductId = Nothing
-    }
-
--- | Deprecated. Use trackIds instead.
-pvTracks :: Lens' ProductVisibility [Text]
-pvTracks
-  = lens _pvTracks (\ s a -> s{_pvTracks = a}) .
-      _Default
-      . _Coerce
-
--- | Grants the user visibility to the specified product track(s), identified
--- by trackIds.
-pvTrackIds :: Lens' ProductVisibility [Text]
-pvTrackIds
-  = lens _pvTrackIds (\ s a -> s{_pvTrackIds = a}) .
-      _Default
-      . _Coerce
-
--- | The product ID to make visible to the user. Required for each item in
--- the productVisibility list.
-pvProductId :: Lens' ProductVisibility (Maybe Text)
-pvProductId
-  = lens _pvProductId (\ s a -> s{_pvProductId = a})
-
-instance FromJSON ProductVisibility where
-        parseJSON
-          = withObject "ProductVisibility"
-              (\ o ->
-                 ProductVisibility' <$>
-                   (o .:? "tracks" .!= mempty) <*>
-                     (o .:? "trackIds" .!= mempty)
-                     <*> (o .:? "productId"))
-
-instance ToJSON ProductVisibility where
-        toJSON ProductVisibility'{..}
-          = object
-              (catMaybes
-                 [("tracks" .=) <$> _pvTracks,
-                  ("trackIds" .=) <$> _pvTrackIds,
-                  ("productId" .=) <$> _pvProductId])
-
--- | A notification of one event relating to an enterprise.
---
--- /See:/ 'notification' smart constructor.
-data Notification = Notification'
-    { _nEnterpriseId                     :: !(Maybe Text)
-    , _nNewPermissionsEvent              :: !(Maybe NewPermissionsEvent)
-    , _nProductApprovalEvent             :: !(Maybe ProductApprovalEvent)
-    , _nProductAvailabilityChangeEvent   :: !(Maybe ProductAvailabilityChangeEvent)
-    , _nAppUpdateEvent                   :: !(Maybe AppUpdateEvent)
-    , _nInstallFailureEvent              :: !(Maybe InstallFailureEvent)
-    , _nNotificationType                 :: !(Maybe Text)
-    , _nAppRestrictionsSchemaChangeEvent :: !(Maybe AppRestrictionsSchemaChangeEvent)
-    , _nNewDeviceEvent                   :: !(Maybe NewDeviceEvent)
-    , _nTimestampMillis                  :: !(Maybe (Textual Int64))
-    } 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:
---
--- * 'nEnterpriseId'
---
--- * 'nNewPermissionsEvent'
---
--- * 'nProductApprovalEvent'
---
--- * 'nProductAvailabilityChangeEvent'
---
--- * 'nAppUpdateEvent'
---
--- * 'nInstallFailureEvent'
---
--- * 'nNotificationType'
---
--- * 'nAppRestrictionsSchemaChangeEvent'
---
--- * 'nNewDeviceEvent'
---
--- * 'nTimestampMillis'
-notification
-    :: Notification
-notification =
-    Notification'
-    { _nEnterpriseId = Nothing
-    , _nNewPermissionsEvent = Nothing
-    , _nProductApprovalEvent = Nothing
-    , _nProductAvailabilityChangeEvent = Nothing
-    , _nAppUpdateEvent = Nothing
-    , _nInstallFailureEvent = Nothing
-    , _nNotificationType = Nothing
-    , _nAppRestrictionsSchemaChangeEvent = Nothing
-    , _nNewDeviceEvent = Nothing
-    , _nTimestampMillis = Nothing
-    }
-
--- | The ID of the enterprise for which the notification is sent. This will
--- always be present.
-nEnterpriseId :: Lens' Notification (Maybe Text)
-nEnterpriseId
-  = lens _nEnterpriseId
-      (\ s a -> s{_nEnterpriseId = a})
-
--- | Notifications about new app permissions.
-nNewPermissionsEvent :: Lens' Notification (Maybe NewPermissionsEvent)
-nNewPermissionsEvent
-  = lens _nNewPermissionsEvent
-      (\ s a -> s{_nNewPermissionsEvent = a})
-
--- | Notifications about changes to a product\'s approval status.
-nProductApprovalEvent :: Lens' Notification (Maybe ProductApprovalEvent)
-nProductApprovalEvent
-  = lens _nProductApprovalEvent
-      (\ s a -> s{_nProductApprovalEvent = a})
-
--- | Notifications about product availability changes.
-nProductAvailabilityChangeEvent :: Lens' Notification (Maybe ProductAvailabilityChangeEvent)
-nProductAvailabilityChangeEvent
-  = lens _nProductAvailabilityChangeEvent
-      (\ s a -> s{_nProductAvailabilityChangeEvent = a})
-
--- | Notifications about app updates.
-nAppUpdateEvent :: Lens' Notification (Maybe AppUpdateEvent)
-nAppUpdateEvent
-  = lens _nAppUpdateEvent
-      (\ s a -> s{_nAppUpdateEvent = a})
-
--- | Notifications about an app installation failure.
-nInstallFailureEvent :: Lens' Notification (Maybe InstallFailureEvent)
-nInstallFailureEvent
-  = lens _nInstallFailureEvent
-      (\ s a -> s{_nInstallFailureEvent = a})
-
--- | Type of the notification.
-nNotificationType :: Lens' Notification (Maybe Text)
-nNotificationType
-  = lens _nNotificationType
-      (\ s a -> s{_nNotificationType = a})
-
--- | Notifications about new app restrictions schema changes.
-nAppRestrictionsSchemaChangeEvent :: Lens' Notification (Maybe AppRestrictionsSchemaChangeEvent)
-nAppRestrictionsSchemaChangeEvent
-  = lens _nAppRestrictionsSchemaChangeEvent
-      (\ s a -> s{_nAppRestrictionsSchemaChangeEvent = a})
-
--- | Notifications about new devices.
-nNewDeviceEvent :: Lens' Notification (Maybe NewDeviceEvent)
-nNewDeviceEvent
-  = lens _nNewDeviceEvent
-      (\ s a -> s{_nNewDeviceEvent = a})
-
--- | The time when the notification was published in milliseconds since
--- 1970-01-01T00:00:00Z. This will always be present.
-nTimestampMillis :: Lens' Notification (Maybe Int64)
-nTimestampMillis
-  = lens _nTimestampMillis
-      (\ s a -> s{_nTimestampMillis = a})
-      . mapping _Coerce
-
-instance FromJSON Notification where
-        parseJSON
-          = withObject "Notification"
-              (\ o ->
-                 Notification' <$>
-                   (o .:? "enterpriseId") <*>
-                     (o .:? "newPermissionsEvent")
-                     <*> (o .:? "productApprovalEvent")
-                     <*> (o .:? "productAvailabilityChangeEvent")
-                     <*> (o .:? "appUpdateEvent")
-                     <*> (o .:? "installFailureEvent")
-                     <*> (o .:? "notificationType")
-                     <*> (o .:? "appRestrictionsSchemaChangeEvent")
-                     <*> (o .:? "newDeviceEvent")
-                     <*> (o .:? "timestampMillis"))
-
-instance ToJSON Notification where
-        toJSON Notification'{..}
-          = object
-              (catMaybes
-                 [("enterpriseId" .=) <$> _nEnterpriseId,
-                  ("newPermissionsEvent" .=) <$> _nNewPermissionsEvent,
-                  ("productApprovalEvent" .=) <$>
-                    _nProductApprovalEvent,
-                  ("productAvailabilityChangeEvent" .=) <$>
-                    _nProductAvailabilityChangeEvent,
-                  ("appUpdateEvent" .=) <$> _nAppUpdateEvent,
-                  ("installFailureEvent" .=) <$> _nInstallFailureEvent,
-                  ("notificationType" .=) <$> _nNotificationType,
-                  ("appRestrictionsSchemaChangeEvent" .=) <$>
-                    _nAppRestrictionsSchemaChangeEvent,
-                  ("newDeviceEvent" .=) <$> _nNewDeviceEvent,
-                  ("timestampMillis" .=) <$> _nTimestampMillis])
-
---
--- /See:/ 'pageInfo' smart constructor.
-data PageInfo = PageInfo'
-    { _piResultPerPage :: !(Maybe (Textual Int32))
-    , _piTotalResults  :: !(Maybe (Textual Int32))
-    , _piStartIndex    :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PageInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'piResultPerPage'
---
--- * 'piTotalResults'
---
--- * 'piStartIndex'
-pageInfo
-    :: PageInfo
-pageInfo =
-    PageInfo'
-    { _piResultPerPage = Nothing
-    , _piTotalResults = Nothing
-    , _piStartIndex = Nothing
-    }
-
-piResultPerPage :: Lens' PageInfo (Maybe Int32)
-piResultPerPage
-  = lens _piResultPerPage
-      (\ s a -> s{_piResultPerPage = a})
-      . mapping _Coerce
-
-piTotalResults :: Lens' PageInfo (Maybe Int32)
-piTotalResults
-  = lens _piTotalResults
-      (\ s a -> s{_piTotalResults = a})
-      . mapping _Coerce
-
-piStartIndex :: Lens' PageInfo (Maybe Int32)
-piStartIndex
-  = lens _piStartIndex (\ s a -> s{_piStartIndex = a})
-      . mapping _Coerce
-
-instance FromJSON PageInfo where
-        parseJSON
-          = withObject "PageInfo"
-              (\ o ->
-                 PageInfo' <$>
-                   (o .:? "resultPerPage") <*> (o .:? "totalResults")
-                     <*> (o .:? "startIndex"))
-
-instance ToJSON PageInfo where
-        toJSON PageInfo'{..}
-          = object
-              (catMaybes
-                 [("resultPerPage" .=) <$> _piResultPerPage,
-                  ("totalResults" .=) <$> _piTotalResults,
-                  ("startIndex" .=) <$> _piStartIndex])
-
--- | A product permissions resource represents the set of permissions
--- required by a specific app and whether or not they have been accepted by
--- an enterprise admin. The API can be used to read the set of permissions,
--- and also to update the set to indicate that permissions have been
--- accepted.
---
--- /See:/ 'productPermission' smart constructor.
-data ProductPermission = ProductPermission'
-    { _ppState        :: !(Maybe Text)
-    , _ppPermissionId :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ProductPermission' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ppState'
---
--- * 'ppPermissionId'
-productPermission
-    :: ProductPermission
-productPermission =
-    ProductPermission'
-    { _ppState = Nothing
-    , _ppPermissionId = Nothing
-    }
-
--- | Whether the permission has been accepted or not.
-ppState :: Lens' ProductPermission (Maybe Text)
-ppState = lens _ppState (\ s a -> s{_ppState = a})
-
--- | An opaque string uniquely identifying the permission.
-ppPermissionId :: Lens' ProductPermission (Maybe Text)
-ppPermissionId
-  = lens _ppPermissionId
-      (\ s a -> s{_ppPermissionId = a})
-
-instance FromJSON ProductPermission where
-        parseJSON
-          = withObject "ProductPermission"
-              (\ o ->
-                 ProductPermission' <$>
-                   (o .:? "state") <*> (o .:? "permissionId"))
-
-instance ToJSON ProductPermission where
-        toJSON ProductPermission'{..}
-          = object
-              (catMaybes
-                 [("state" .=) <$> _ppState,
-                  ("permissionId" .=) <$> _ppPermissionId])
-
--- | An event generated when new permissions are added to an app.
---
--- /See:/ 'newPermissionsEvent' smart constructor.
-data NewPermissionsEvent = NewPermissionsEvent'
-    { _npeRequestedPermissions :: !(Maybe [Text])
-    , _npeApprovedPermissions  :: !(Maybe [Text])
-    , _npeProductId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NewPermissionsEvent' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'npeRequestedPermissions'
---
--- * 'npeApprovedPermissions'
---
--- * 'npeProductId'
-newPermissionsEvent
-    :: NewPermissionsEvent
-newPermissionsEvent =
-    NewPermissionsEvent'
-    { _npeRequestedPermissions = Nothing
-    , _npeApprovedPermissions = Nothing
-    , _npeProductId = Nothing
-    }
-
--- | The set of permissions that the app is currently requesting. Use
--- Permissions.Get on the EMM API to retrieve details about these
--- permissions.
-npeRequestedPermissions :: Lens' NewPermissionsEvent [Text]
-npeRequestedPermissions
-  = lens _npeRequestedPermissions
-      (\ s a -> s{_npeRequestedPermissions = a})
-      . _Default
-      . _Coerce
-
--- | The set of permissions that the enterprise admin has already approved
--- for this application. Use Permissions.Get on the EMM API to retrieve
--- details about these permissions.
-npeApprovedPermissions :: Lens' NewPermissionsEvent [Text]
-npeApprovedPermissions
-  = lens _npeApprovedPermissions
-      (\ s a -> s{_npeApprovedPermissions = a})
-      . _Default
-      . _Coerce
-
--- | The id of the product (e.g. \"app:com.google.android.gm\") for which new
--- permissions were added. This field will always be present.
-npeProductId :: Lens' NewPermissionsEvent (Maybe Text)
-npeProductId
-  = lens _npeProductId (\ s a -> s{_npeProductId = a})
-
-instance FromJSON NewPermissionsEvent where
-        parseJSON
-          = withObject "NewPermissionsEvent"
-              (\ o ->
-                 NewPermissionsEvent' <$>
-                   (o .:? "requestedPermissions" .!= mempty) <*>
-                     (o .:? "approvedPermissions" .!= mempty)
-                     <*> (o .:? "productId"))
-
-instance ToJSON NewPermissionsEvent where
-        toJSON NewPermissionsEvent'{..}
-          = object
-              (catMaybes
-                 [("requestedPermissions" .=) <$>
-                    _npeRequestedPermissions,
-                  ("approvedPermissions" .=) <$>
-                    _npeApprovedPermissions,
-                  ("productId" .=) <$> _npeProductId])
-
--- | An event generated whenever a product\'s availability changes.
---
--- /See:/ 'productAvailabilityChangeEvent' smart constructor.
-data ProductAvailabilityChangeEvent = ProductAvailabilityChangeEvent'
-    { _paceAvailabilityStatus :: !(Maybe Text)
-    , _paceProductId          :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ProductAvailabilityChangeEvent' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'paceAvailabilityStatus'
---
--- * 'paceProductId'
-productAvailabilityChangeEvent
-    :: ProductAvailabilityChangeEvent
-productAvailabilityChangeEvent =
-    ProductAvailabilityChangeEvent'
-    { _paceAvailabilityStatus = Nothing
-    , _paceProductId = Nothing
-    }
-
--- | The new state of the product. This field will always be present.
-paceAvailabilityStatus :: Lens' ProductAvailabilityChangeEvent (Maybe Text)
-paceAvailabilityStatus
-  = lens _paceAvailabilityStatus
-      (\ s a -> s{_paceAvailabilityStatus = a})
-
--- | The id of the product (e.g. \"app:com.google.android.gm\") for which the
--- product availability changed. This field will always be present.
-paceProductId :: Lens' ProductAvailabilityChangeEvent (Maybe Text)
-paceProductId
-  = lens _paceProductId
-      (\ s a -> s{_paceProductId = a})
-
-instance FromJSON ProductAvailabilityChangeEvent
-         where
-        parseJSON
-          = withObject "ProductAvailabilityChangeEvent"
-              (\ o ->
-                 ProductAvailabilityChangeEvent' <$>
-                   (o .:? "availabilityStatus") <*> (o .:? "productId"))
-
-instance ToJSON ProductAvailabilityChangeEvent where
-        toJSON ProductAvailabilityChangeEvent'{..}
-          = object
-              (catMaybes
-                 [("availabilityStatus" .=) <$>
-                    _paceAvailabilityStatus,
-                  ("productId" .=) <$> _paceProductId])
-
--- | An event generated when a product\'s approval status is changed.
---
--- /See:/ 'productApprovalEvent' smart constructor.
-data ProductApprovalEvent = ProductApprovalEvent'
-    { _paeApproved  :: !(Maybe Text)
-    , _paeProductId :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ProductApprovalEvent' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'paeApproved'
---
--- * 'paeProductId'
-productApprovalEvent
-    :: ProductApprovalEvent
-productApprovalEvent =
-    ProductApprovalEvent'
-    { _paeApproved = Nothing
-    , _paeProductId = Nothing
-    }
-
--- | Whether the product was approved or unapproved. This field will always
--- be present.
-paeApproved :: Lens' ProductApprovalEvent (Maybe Text)
-paeApproved
-  = lens _paeApproved (\ s a -> s{_paeApproved = a})
-
--- | The id of the product (e.g. \"app:com.google.android.gm\") for which the
--- approval status has changed. This field will always be present.
-paeProductId :: Lens' ProductApprovalEvent (Maybe Text)
-paeProductId
-  = lens _paeProductId (\ s a -> s{_paeProductId = a})
-
-instance FromJSON ProductApprovalEvent where
-        parseJSON
-          = withObject "ProductApprovalEvent"
-              (\ o ->
-                 ProductApprovalEvent' <$>
-                   (o .:? "approved") <*> (o .:? "productId"))
-
-instance ToJSON ProductApprovalEvent where
-        toJSON ProductApprovalEvent'{..}
-          = object
-              (catMaybes
-                 [("approved" .=) <$> _paeApproved,
-                  ("productId" .=) <$> _paeProductId])
-
--- | A Devices resource represents a mobile device managed by the EMM and
--- belonging to a specific enterprise user.
---
--- /See:/ 'device' smart constructor.
-data Device = Device'
-    { _dKind           :: !Text
-    , _dPolicy         :: !(Maybe Policy)
-    , _dManagementType :: !(Maybe Text)
-    , _dAndroidId      :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Device' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dKind'
---
--- * 'dPolicy'
---
--- * 'dManagementType'
---
--- * 'dAndroidId'
-device
-    :: Device
-device =
-    Device'
-    { _dKind = "androidenterprise#device"
-    , _dPolicy = Nothing
-    , _dManagementType = Nothing
-    , _dAndroidId = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#device\".
-dKind :: Lens' Device Text
-dKind = lens _dKind (\ s a -> s{_dKind = a})
-
--- | The policy enforced on the device.
-dPolicy :: Lens' Device (Maybe Policy)
-dPolicy = lens _dPolicy (\ s a -> s{_dPolicy = a})
-
--- | Identifies the extent to which the device is controlled by a managed
--- Google Play EMM in various deployment configurations. Possible values
--- include: - \"managedDevice\", a device that has the EMM\'s device policy
--- controller (DPC) as the device owner. - \"managedProfile\", a device
--- that has a profile managed by the DPC (DPC is profile owner) in addition
--- to a separate, personal profile that is unavailable to the DPC. -
--- \"containerApp\", no longer used (deprecated). - \"unmanagedProfile\", a
--- device that has been allowed (by the domain\'s admin, using the Admin
--- Console to enable the privilege) to use managed Google Play, but the
--- profile is itself not owned by a DPC.
-dManagementType :: Lens' Device (Maybe Text)
-dManagementType
-  = lens _dManagementType
-      (\ s a -> s{_dManagementType = a})
-
--- | The Google Play Services Android ID for the device encoded as a
--- lowercase hex string. For example, \"123456789abcdef0\".
-dAndroidId :: Lens' Device (Maybe Text)
-dAndroidId
-  = lens _dAndroidId (\ s a -> s{_dAndroidId = a})
-
-instance FromJSON Device where
-        parseJSON
-          = withObject "Device"
-              (\ o ->
-                 Device' <$>
-                   (o .:? "kind" .!= "androidenterprise#device") <*>
-                     (o .:? "policy")
-                     <*> (o .:? "managementType")
-                     <*> (o .:? "androidId"))
-
-instance ToJSON Device where
-        toJSON Device'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _dKind), ("policy" .=) <$> _dPolicy,
-                  ("managementType" .=) <$> _dManagementType,
-                  ("androidId" .=) <$> _dAndroidId])
-
--- | The Auto install constraint. Defines a set of restrictions for
--- installation. At least one of the fields must be set.
---
--- /See:/ 'autoInstallConstraint' smart constructor.
-data AutoInstallConstraint = AutoInstallConstraint'
-    { _aicChargingStateConstraint   :: !(Maybe Text)
-    , _aicDeviceIdleStateConstraint :: !(Maybe Text)
-    , _aicNetworkTypeConstraint     :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AutoInstallConstraint' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aicChargingStateConstraint'
---
--- * 'aicDeviceIdleStateConstraint'
---
--- * 'aicNetworkTypeConstraint'
-autoInstallConstraint
-    :: AutoInstallConstraint
-autoInstallConstraint =
-    AutoInstallConstraint'
-    { _aicChargingStateConstraint = Nothing
-    , _aicDeviceIdleStateConstraint = Nothing
-    , _aicNetworkTypeConstraint = Nothing
-    }
-
--- | Charging state to constrain on.
-aicChargingStateConstraint :: Lens' AutoInstallConstraint (Maybe Text)
-aicChargingStateConstraint
-  = lens _aicChargingStateConstraint
-      (\ s a -> s{_aicChargingStateConstraint = a})
-
--- | The idle state of the device to constrain on.
-aicDeviceIdleStateConstraint :: Lens' AutoInstallConstraint (Maybe Text)
-aicDeviceIdleStateConstraint
-  = lens _aicDeviceIdleStateConstraint
-      (\ s a -> s{_aicDeviceIdleStateConstraint = a})
-
--- | Network type to constrain on.
-aicNetworkTypeConstraint :: Lens' AutoInstallConstraint (Maybe Text)
-aicNetworkTypeConstraint
-  = lens _aicNetworkTypeConstraint
-      (\ s a -> s{_aicNetworkTypeConstraint = a})
-
-instance FromJSON AutoInstallConstraint where
-        parseJSON
-          = withObject "AutoInstallConstraint"
-              (\ o ->
-                 AutoInstallConstraint' <$>
-                   (o .:? "chargingStateConstraint") <*>
-                     (o .:? "deviceIdleStateConstraint")
-                     <*> (o .:? "networkTypeConstraint"))
-
-instance ToJSON AutoInstallConstraint where
-        toJSON AutoInstallConstraint'{..}
-          = object
-              (catMaybes
-                 [("chargingStateConstraint" .=) <$>
-                    _aicChargingStateConstraint,
-                  ("deviceIdleStateConstraint" .=) <$>
-                    _aicDeviceIdleStateConstraint,
-                  ("networkTypeConstraint" .=) <$>
-                    _aicNetworkTypeConstraint])
-
--- | Credentials that can be used to authenticate as a service account.
---
--- /See:/ 'serviceAccountKey' smart constructor.
-data ServiceAccountKey = ServiceAccountKey'
-    { _sakKind       :: !Text
-    , _sakData       :: !(Maybe Text)
-    , _sakId         :: !(Maybe Text)
-    , _sakType       :: !(Maybe Text)
-    , _sakPublicData :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ServiceAccountKey' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sakKind'
---
--- * 'sakData'
---
--- * 'sakId'
---
--- * 'sakType'
---
--- * 'sakPublicData'
-serviceAccountKey
-    :: ServiceAccountKey
-serviceAccountKey =
-    ServiceAccountKey'
-    { _sakKind = "androidenterprise#serviceAccountKey"
-    , _sakData = Nothing
-    , _sakId = Nothing
-    , _sakType = Nothing
-    , _sakPublicData = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#serviceAccountKey\".
-sakKind :: Lens' ServiceAccountKey Text
-sakKind = lens _sakKind (\ s a -> s{_sakKind = a})
-
--- | The body of the private key credentials file, in string format. This is
--- only populated when the ServiceAccountKey is created, and is not stored
--- by Google.
-sakData :: Lens' ServiceAccountKey (Maybe Text)
-sakData = lens _sakData (\ s a -> s{_sakData = a})
-
--- | An opaque, unique identifier for this ServiceAccountKey. Assigned by the
--- server.
-sakId :: Lens' ServiceAccountKey (Maybe Text)
-sakId = lens _sakId (\ s a -> s{_sakId = a})
-
--- | The file format of the generated key data.
-sakType :: Lens' ServiceAccountKey (Maybe Text)
-sakType = lens _sakType (\ s a -> s{_sakType = a})
-
--- | Public key data for the credentials file. This is an X.509 cert. If you
--- are using the googleCredentials key type, this is identical to the cert
--- that can be retrieved by using the X.509 cert url inside of the
--- credentials file.
-sakPublicData :: Lens' ServiceAccountKey (Maybe Text)
-sakPublicData
-  = lens _sakPublicData
-      (\ s a -> s{_sakPublicData = a})
-
-instance FromJSON ServiceAccountKey where
-        parseJSON
-          = withObject "ServiceAccountKey"
-              (\ o ->
-                 ServiceAccountKey' <$>
-                   (o .:? "kind" .!=
-                      "androidenterprise#serviceAccountKey")
-                     <*> (o .:? "data")
-                     <*> (o .:? "id")
-                     <*> (o .:? "type")
-                     <*> (o .:? "publicData"))
-
-instance ToJSON ServiceAccountKey where
-        toJSON ServiceAccountKey'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _sakKind), ("data" .=) <$> _sakData,
-                  ("id" .=) <$> _sakId, ("type" .=) <$> _sakType,
-                  ("publicData" .=) <$> _sakPublicData])
-
--- | The install resources for the device.
---
--- /See:/ 'installsListResponse' smart constructor.
-data InstallsListResponse = InstallsListResponse'
-    { _ilrKind    :: !Text
-    , _ilrInstall :: !(Maybe [Install])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstallsListResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ilrKind'
---
--- * 'ilrInstall'
-installsListResponse
-    :: InstallsListResponse
-installsListResponse =
-    InstallsListResponse'
-    { _ilrKind = "androidenterprise#installsListResponse"
-    , _ilrInstall = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#installsListResponse\".
-ilrKind :: Lens' InstallsListResponse Text
-ilrKind = lens _ilrKind (\ s a -> s{_ilrKind = a})
-
--- | An installation of an app for a user on a specific device. The existence
--- of an install implies that the user must have an entitlement to the app.
-ilrInstall :: Lens' InstallsListResponse [Install]
-ilrInstall
-  = lens _ilrInstall (\ s a -> s{_ilrInstall = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON InstallsListResponse where
-        parseJSON
-          = withObject "InstallsListResponse"
-              (\ o ->
-                 InstallsListResponse' <$>
-                   (o .:? "kind" .!=
-                      "androidenterprise#installsListResponse")
-                     <*> (o .:? "install" .!= mempty))
-
-instance ToJSON InstallsListResponse where
-        toJSON InstallsListResponse'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _ilrKind),
-                  ("install" .=) <$> _ilrInstall])
-
--- | A restriction in the App Restriction Schema represents a piece of
--- configuration that may be pre-applied.
---
--- /See:/ 'appRestrictionsSchemaRestriction' smart constructor.
-data AppRestrictionsSchemaRestriction = AppRestrictionsSchemaRestriction'
-    { _arsrRestrictionType   :: !(Maybe Text)
-    , _arsrEntry             :: !(Maybe [Text])
-    , _arsrKey               :: !(Maybe Text)
-    , _arsrEntryValue        :: !(Maybe [Text])
-    , _arsrDefaultValue      :: !(Maybe AppRestrictionsSchemaRestrictionRestrictionValue)
-    , _arsrTitle             :: !(Maybe Text)
-    , _arsrDescription       :: !(Maybe Text)
-    , _arsrNestedRestriction :: !(Maybe [AppRestrictionsSchemaRestriction])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AppRestrictionsSchemaRestriction' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'arsrRestrictionType'
---
--- * 'arsrEntry'
---
--- * 'arsrKey'
---
--- * 'arsrEntryValue'
---
--- * 'arsrDefaultValue'
---
--- * 'arsrTitle'
---
--- * 'arsrDescription'
---
--- * 'arsrNestedRestriction'
-appRestrictionsSchemaRestriction
-    :: AppRestrictionsSchemaRestriction
-appRestrictionsSchemaRestriction =
-    AppRestrictionsSchemaRestriction'
-    { _arsrRestrictionType = Nothing
-    , _arsrEntry = Nothing
-    , _arsrKey = Nothing
-    , _arsrEntryValue = Nothing
-    , _arsrDefaultValue = Nothing
-    , _arsrTitle = Nothing
-    , _arsrDescription = Nothing
-    , _arsrNestedRestriction = Nothing
-    }
-
--- | The type of the restriction.
-arsrRestrictionType :: Lens' AppRestrictionsSchemaRestriction (Maybe Text)
-arsrRestrictionType
-  = lens _arsrRestrictionType
-      (\ s a -> s{_arsrRestrictionType = a})
-
--- | For choice or multiselect restrictions, the list of possible entries\'
--- human-readable names.
-arsrEntry :: Lens' AppRestrictionsSchemaRestriction [Text]
-arsrEntry
-  = lens _arsrEntry (\ s a -> s{_arsrEntry = a}) .
-      _Default
-      . _Coerce
-
--- | The unique key that the product uses to identify the restriction, e.g.
--- \"com.google.android.gm.fieldname\".
-arsrKey :: Lens' AppRestrictionsSchemaRestriction (Maybe Text)
-arsrKey = lens _arsrKey (\ s a -> s{_arsrKey = a})
-
--- | For choice or multiselect restrictions, the list of possible entries\'
--- machine-readable values. These values should be used in the
--- configuration, either as a single string value for a choice restriction
--- or in a stringArray for a multiselect restriction.
-arsrEntryValue :: Lens' AppRestrictionsSchemaRestriction [Text]
-arsrEntryValue
-  = lens _arsrEntryValue
-      (\ s a -> s{_arsrEntryValue = a})
-      . _Default
-      . _Coerce
-
--- | The default value of the restriction. bundle and bundleArray
--- restrictions never have a default value.
-arsrDefaultValue :: Lens' AppRestrictionsSchemaRestriction (Maybe AppRestrictionsSchemaRestrictionRestrictionValue)
-arsrDefaultValue
-  = lens _arsrDefaultValue
-      (\ s a -> s{_arsrDefaultValue = a})
-
--- | The name of the restriction.
-arsrTitle :: Lens' AppRestrictionsSchemaRestriction (Maybe Text)
-arsrTitle
-  = lens _arsrTitle (\ s a -> s{_arsrTitle = a})
-
--- | A longer description of the restriction, giving more detail of what it
--- affects.
-arsrDescription :: Lens' AppRestrictionsSchemaRestriction (Maybe Text)
-arsrDescription
-  = lens _arsrDescription
-      (\ s a -> s{_arsrDescription = a})
-
--- | For bundle or bundleArray restrictions, the list of nested restrictions.
--- A bundle restriction is always nested within a bundleArray restriction,
--- and a bundleArray restriction is at most two levels deep.
-arsrNestedRestriction :: Lens' AppRestrictionsSchemaRestriction [AppRestrictionsSchemaRestriction]
-arsrNestedRestriction
-  = lens _arsrNestedRestriction
-      (\ s a -> s{_arsrNestedRestriction = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON AppRestrictionsSchemaRestriction
-         where
-        parseJSON
-          = withObject "AppRestrictionsSchemaRestriction"
-              (\ o ->
-                 AppRestrictionsSchemaRestriction' <$>
-                   (o .:? "restrictionType") <*>
-                     (o .:? "entry" .!= mempty)
-                     <*> (o .:? "key")
-                     <*> (o .:? "entryValue" .!= mempty)
-                     <*> (o .:? "defaultValue")
-                     <*> (o .:? "title")
-                     <*> (o .:? "description")
-                     <*> (o .:? "nestedRestriction" .!= mempty))
-
-instance ToJSON AppRestrictionsSchemaRestriction
-         where
-        toJSON AppRestrictionsSchemaRestriction'{..}
-          = object
-              (catMaybes
-                 [("restrictionType" .=) <$> _arsrRestrictionType,
-                  ("entry" .=) <$> _arsrEntry, ("key" .=) <$> _arsrKey,
-                  ("entryValue" .=) <$> _arsrEntryValue,
-                  ("defaultValue" .=) <$> _arsrDefaultValue,
-                  ("title" .=) <$> _arsrTitle,
-                  ("description" .=) <$> _arsrDescription,
-                  ("nestedRestriction" .=) <$> _arsrNestedRestriction])
-
--- | The policy for a product.
---
--- /See:/ 'productPolicy' smart constructor.
-data ProductPolicy = ProductPolicy'
-    { _ppTracks            :: !(Maybe [Text])
-    , _ppTrackIds          :: !(Maybe [Text])
-    , _ppAutoInstallPolicy :: !(Maybe AutoInstallPolicy)
-    , _ppProductId         :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ProductPolicy' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ppTracks'
---
--- * 'ppTrackIds'
---
--- * 'ppAutoInstallPolicy'
---
--- * 'ppProductId'
-productPolicy
-    :: ProductPolicy
-productPolicy =
-    ProductPolicy'
-    { _ppTracks = Nothing
-    , _ppTrackIds = Nothing
-    , _ppAutoInstallPolicy = Nothing
-    , _ppProductId = Nothing
-    }
-
--- | Deprecated. Use trackIds instead.
-ppTracks :: Lens' ProductPolicy [Text]
-ppTracks
-  = lens _ppTracks (\ s a -> s{_ppTracks = a}) .
-      _Default
-      . _Coerce
-
--- | Grants the device visibility to the specified product release track(s),
--- identified by trackIds. The list of release tracks of a product can be
--- obtained by calling Products.Get.
-ppTrackIds :: Lens' ProductPolicy [Text]
-ppTrackIds
-  = lens _ppTrackIds (\ s a -> s{_ppTrackIds = a}) .
-      _Default
-      . _Coerce
-
--- | The auto install policy for the product.
-ppAutoInstallPolicy :: Lens' ProductPolicy (Maybe AutoInstallPolicy)
-ppAutoInstallPolicy
-  = lens _ppAutoInstallPolicy
-      (\ s a -> s{_ppAutoInstallPolicy = a})
-
--- | The ID of the product. For example, \"app:com.google.android.gm\".
-ppProductId :: Lens' ProductPolicy (Maybe Text)
-ppProductId
-  = lens _ppProductId (\ s a -> s{_ppProductId = a})
-
-instance FromJSON ProductPolicy where
-        parseJSON
-          = withObject "ProductPolicy"
-              (\ o ->
-                 ProductPolicy' <$>
-                   (o .:? "tracks" .!= mempty) <*>
-                     (o .:? "trackIds" .!= mempty)
-                     <*> (o .:? "autoInstallPolicy")
-                     <*> (o .:? "productId"))
-
-instance ToJSON ProductPolicy where
-        toJSON ProductPolicy'{..}
-          = object
-              (catMaybes
-                 [("tracks" .=) <$> _ppTracks,
-                  ("trackIds" .=) <$> _ppTrackIds,
-                  ("autoInstallPolicy" .=) <$> _ppAutoInstallPolicy,
-                  ("productId" .=) <$> _ppProductId])
-
--- | This represents an enterprise admin who can manage the enterprise in the
--- managed Google Play store.
---
--- /See:/ 'administrator' smart constructor.
-newtype Administrator = Administrator'
-    { _aEmail :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Administrator' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aEmail'
-administrator
-    :: Administrator
-administrator =
-    Administrator'
-    { _aEmail = Nothing
-    }
-
--- | The admin\'s email address.
-aEmail :: Lens' Administrator (Maybe Text)
-aEmail = lens _aEmail (\ s a -> s{_aEmail = a})
-
-instance FromJSON Administrator where
-        parseJSON
-          = withObject "Administrator"
-              (\ o -> Administrator' <$> (o .:? "email"))
-
-instance ToJSON Administrator where
-        toJSON Administrator'{..}
-          = object (catMaybes [("email" .=) <$> _aEmail])
-
--- | The matching user resources.
---
--- /See:/ 'usersListResponse' smart constructor.
-data UsersListResponse = UsersListResponse'
-    { _ulrKind :: !Text
-    , _ulrUser :: !(Maybe [User])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UsersListResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ulrKind'
---
--- * 'ulrUser'
-usersListResponse
-    :: UsersListResponse
-usersListResponse =
-    UsersListResponse'
-    { _ulrKind = "androidenterprise#usersListResponse"
-    , _ulrUser = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#usersListResponse\".
-ulrKind :: Lens' UsersListResponse Text
-ulrKind = lens _ulrKind (\ s a -> s{_ulrKind = a})
-
--- | A user of an enterprise.
-ulrUser :: Lens' UsersListResponse [User]
-ulrUser
-  = lens _ulrUser (\ s a -> s{_ulrUser = a}) . _Default
-      . _Coerce
-
-instance FromJSON UsersListResponse where
-        parseJSON
-          = withObject "UsersListResponse"
-              (\ o ->
-                 UsersListResponse' <$>
-                   (o .:? "kind" .!=
-                      "androidenterprise#usersListResponse")
-                     <*> (o .:? "user" .!= mempty))
-
-instance ToJSON UsersListResponse where
-        toJSON UsersListResponse'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _ulrKind),
-                  ("user" .=) <$> _ulrUser])
-
---
--- /See:/ 'administratorWebTokenSpecStoreBuilder' smart constructor.
-newtype AdministratorWebTokenSpecStoreBuilder = AdministratorWebTokenSpecStoreBuilder'
-    { _awtssbEnabled :: Maybe Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AdministratorWebTokenSpecStoreBuilder' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'awtssbEnabled'
-administratorWebTokenSpecStoreBuilder
-    :: AdministratorWebTokenSpecStoreBuilder
-administratorWebTokenSpecStoreBuilder =
-    AdministratorWebTokenSpecStoreBuilder'
-    { _awtssbEnabled = Nothing
-    }
-
--- | Whether the Organize apps page is displayed. Default is true.
-awtssbEnabled :: Lens' AdministratorWebTokenSpecStoreBuilder (Maybe Bool)
-awtssbEnabled
-  = lens _awtssbEnabled
-      (\ s a -> s{_awtssbEnabled = a})
-
-instance FromJSON
-         AdministratorWebTokenSpecStoreBuilder where
-        parseJSON
-          = withObject "AdministratorWebTokenSpecStoreBuilder"
-              (\ o ->
-                 AdministratorWebTokenSpecStoreBuilder' <$>
-                   (o .:? "enabled"))
-
-instance ToJSON AdministratorWebTokenSpecStoreBuilder
-         where
-        toJSON AdministratorWebTokenSpecStoreBuilder'{..}
-          = object
-              (catMaybes [("enabled" .=) <$> _awtssbEnabled])
-
--- | An AuthenticationToken is used by the EMM\'s device policy client on a
--- device to provision the given EMM-managed user on that device.
---
--- /See:/ 'authenticationToken' smart constructor.
-data AuthenticationToken = AuthenticationToken'
-    { _atKind  :: !Text
-    , _atToken :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AuthenticationToken' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'atKind'
---
--- * 'atToken'
-authenticationToken
-    :: AuthenticationToken
-authenticationToken =
-    AuthenticationToken'
-    { _atKind = "androidenterprise#authenticationToken"
-    , _atToken = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#authenticationToken\".
-atKind :: Lens' AuthenticationToken Text
-atKind = lens _atKind (\ s a -> s{_atKind = a})
-
--- | The authentication token to be passed to the device policy client on the
--- device where it can be used to provision the account for which this
--- token was generated.
-atToken :: Lens' AuthenticationToken (Maybe Text)
-atToken = lens _atToken (\ s a -> s{_atToken = a})
-
-instance FromJSON AuthenticationToken where
-        parseJSON
-          = withObject "AuthenticationToken"
-              (\ o ->
-                 AuthenticationToken' <$>
-                   (o .:? "kind" .!=
-                      "androidenterprise#authenticationToken")
-                     <*> (o .:? "token"))
-
-instance ToJSON AuthenticationToken where
-        toJSON AuthenticationToken'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _atKind),
-                  ("token" .=) <$> _atToken])
-
--- | A managed configurations settings resource contains the set of managed
--- properties that have been configured for an Android app to be applied to
--- a set of users. The app\'s developer would have defined configurable
--- properties in the managed configurations schema.
---
--- /See:/ 'managedConfigurationsSettings' smart constructor.
-data ManagedConfigurationsSettings = ManagedConfigurationsSettings'
-    { _mcsLastUpdatedTimestampMillis :: !(Maybe (Textual Int64))
-    , _mcsManagedProperty            :: !(Maybe [ManagedProperty])
-    , _mcsKind                       :: !Text
-    , _mcsMcmId                      :: !(Maybe Text)
-    , _mcsName                       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ManagedConfigurationsSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mcsLastUpdatedTimestampMillis'
---
--- * 'mcsManagedProperty'
---
--- * 'mcsKind'
---
--- * 'mcsMcmId'
---
--- * 'mcsName'
-managedConfigurationsSettings
-    :: ManagedConfigurationsSettings
-managedConfigurationsSettings =
-    ManagedConfigurationsSettings'
-    { _mcsLastUpdatedTimestampMillis = Nothing
-    , _mcsManagedProperty = Nothing
-    , _mcsKind = "androidenterprise#managedConfigurationsSettings"
-    , _mcsMcmId = Nothing
-    , _mcsName = Nothing
-    }
-
--- | The last updated time of the managed configuration settings in
--- milliseconds since 1970-01-01T00:00:00Z.
-mcsLastUpdatedTimestampMillis :: Lens' ManagedConfigurationsSettings (Maybe Int64)
-mcsLastUpdatedTimestampMillis
-  = lens _mcsLastUpdatedTimestampMillis
-      (\ s a -> s{_mcsLastUpdatedTimestampMillis = a})
-      . mapping _Coerce
-
--- | The set of managed properties for this configuration.
-mcsManagedProperty :: Lens' ManagedConfigurationsSettings [ManagedProperty]
-mcsManagedProperty
-  = lens _mcsManagedProperty
-      (\ s a -> s{_mcsManagedProperty = a})
-      . _Default
-      . _Coerce
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#managedConfigurationsSettings\".
-mcsKind :: Lens' ManagedConfigurationsSettings Text
-mcsKind = lens _mcsKind (\ s a -> s{_mcsKind = a})
-
--- | The ID of the managed configurations settings.
-mcsMcmId :: Lens' ManagedConfigurationsSettings (Maybe Text)
-mcsMcmId = lens _mcsMcmId (\ s a -> s{_mcsMcmId = a})
-
--- | The name of the managed configurations settings.
-mcsName :: Lens' ManagedConfigurationsSettings (Maybe Text)
-mcsName = lens _mcsName (\ s a -> s{_mcsName = a})
-
-instance FromJSON ManagedConfigurationsSettings where
-        parseJSON
-          = withObject "ManagedConfigurationsSettings"
-              (\ o ->
-                 ManagedConfigurationsSettings' <$>
-                   (o .:? "lastUpdatedTimestampMillis") <*>
-                     (o .:? "managedProperty" .!= mempty)
-                     <*>
-                     (o .:? "kind" .!=
-                        "androidenterprise#managedConfigurationsSettings")
-                     <*> (o .:? "mcmId")
-                     <*> (o .:? "name"))
-
-instance ToJSON ManagedConfigurationsSettings where
-        toJSON ManagedConfigurationsSettings'{..}
-          = object
-              (catMaybes
-                 [("lastUpdatedTimestampMillis" .=) <$>
-                    _mcsLastUpdatedTimestampMillis,
-                  ("managedProperty" .=) <$> _mcsManagedProperty,
-                  Just ("kind" .= _mcsKind),
-                  ("mcmId" .=) <$> _mcsMcmId,
-                  ("name" .=) <$> _mcsName])
-
--- | This represents a single version of the app.
---
--- /See:/ 'appVersion' smart constructor.
-data AppVersion = AppVersion'
-    { _avTrack         :: !(Maybe Text)
-    , _avVersionCode   :: !(Maybe (Textual Int32))
-    , _avVersionString :: !(Maybe Text)
-    , _avTrackId       :: !(Maybe [Text])
-    , _avIsProduction  :: !(Maybe Bool)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AppVersion' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'avTrack'
---
--- * 'avVersionCode'
---
--- * 'avVersionString'
---
--- * 'avTrackId'
---
--- * 'avIsProduction'
-appVersion
-    :: AppVersion
-appVersion =
-    AppVersion'
-    { _avTrack = Nothing
-    , _avVersionCode = Nothing
-    , _avVersionString = Nothing
-    , _avTrackId = Nothing
-    , _avIsProduction = Nothing
-    }
-
--- | Deprecated, use trackId instead.
-avTrack :: Lens' AppVersion (Maybe Text)
-avTrack = lens _avTrack (\ s a -> s{_avTrack = a})
-
--- | Unique increasing identifier for the app version.
-avVersionCode :: Lens' AppVersion (Maybe Int32)
-avVersionCode
-  = lens _avVersionCode
-      (\ s a -> s{_avVersionCode = a})
-      . mapping _Coerce
-
--- | The string used in the Play store by the app developer to identify the
--- version. The string is not necessarily unique or localized (for example,
--- the string could be \"1.4\").
-avVersionString :: Lens' AppVersion (Maybe Text)
-avVersionString
-  = lens _avVersionString
-      (\ s a -> s{_avVersionString = a})
-
--- | Track ids that the app version is published in. Replaces the track field
--- (deprecated), but doesn\'t include the production track (see
--- isProduction instead).
-avTrackId :: Lens' AppVersion [Text]
-avTrackId
-  = lens _avTrackId (\ s a -> s{_avTrackId = a}) .
-      _Default
-      . _Coerce
-
--- | True if this version is a production APK.
-avIsProduction :: Lens' AppVersion (Maybe Bool)
-avIsProduction
-  = lens _avIsProduction
-      (\ s a -> s{_avIsProduction = a})
-
-instance FromJSON AppVersion where
-        parseJSON
-          = withObject "AppVersion"
-              (\ o ->
-                 AppVersion' <$>
-                   (o .:? "track") <*> (o .:? "versionCode") <*>
-                     (o .:? "versionString")
-                     <*> (o .:? "trackId" .!= mempty)
-                     <*> (o .:? "isProduction"))
-
-instance ToJSON AppVersion where
-        toJSON AppVersion'{..}
-          = object
-              (catMaybes
-                 [("track" .=) <$> _avTrack,
-                  ("versionCode" .=) <$> _avVersionCode,
-                  ("versionString" .=) <$> _avVersionString,
-                  ("trackId" .=) <$> _avTrackId,
-                  ("isProduction" .=) <$> _avIsProduction])
-
--- | A bundle of managed properties.
---
--- /See:/ 'managedPropertyBundle' smart constructor.
-newtype ManagedPropertyBundle = ManagedPropertyBundle'
-    { _mpbManagedProperty :: Maybe [ManagedProperty]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ManagedPropertyBundle' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mpbManagedProperty'
-managedPropertyBundle
-    :: ManagedPropertyBundle
-managedPropertyBundle =
-    ManagedPropertyBundle'
-    { _mpbManagedProperty = Nothing
-    }
-
--- | The list of managed properties.
-mpbManagedProperty :: Lens' ManagedPropertyBundle [ManagedProperty]
-mpbManagedProperty
-  = lens _mpbManagedProperty
-      (\ s a -> s{_mpbManagedProperty = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ManagedPropertyBundle where
-        parseJSON
-          = withObject "ManagedPropertyBundle"
-              (\ o ->
-                 ManagedPropertyBundle' <$>
-                   (o .:? "managedProperty" .!= mempty))
-
-instance ToJSON ManagedPropertyBundle where
-        toJSON ManagedPropertyBundle'{..}
-          = object
-              (catMaybes
-                 [("managedProperty" .=) <$> _mpbManagedProperty])
-
--- | The grouplicense resources for the enterprise.
---
--- /See:/ 'groupLicensesListResponse' smart constructor.
-data GroupLicensesListResponse = GroupLicensesListResponse'
-    { _gllrGroupLicense :: !(Maybe [GroupLicense])
-    , _gllrKind         :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GroupLicensesListResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gllrGroupLicense'
---
--- * 'gllrKind'
-groupLicensesListResponse
-    :: GroupLicensesListResponse
-groupLicensesListResponse =
-    GroupLicensesListResponse'
-    { _gllrGroupLicense = Nothing
-    , _gllrKind = "androidenterprise#groupLicensesListResponse"
-    }
-
--- | A group license for a product approved for use in the enterprise.
-gllrGroupLicense :: Lens' GroupLicensesListResponse [GroupLicense]
-gllrGroupLicense
-  = lens _gllrGroupLicense
-      (\ s a -> s{_gllrGroupLicense = a})
-      . _Default
-      . _Coerce
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#groupLicensesListResponse\".
-gllrKind :: Lens' GroupLicensesListResponse Text
-gllrKind = lens _gllrKind (\ s a -> s{_gllrKind = a})
-
-instance FromJSON GroupLicensesListResponse where
-        parseJSON
-          = withObject "GroupLicensesListResponse"
-              (\ o ->
-                 GroupLicensesListResponse' <$>
-                   (o .:? "groupLicense" .!= mempty) <*>
-                     (o .:? "kind" .!=
-                        "androidenterprise#groupLicensesListResponse"))
-
-instance ToJSON GroupLicensesListResponse where
-        toJSON GroupLicensesListResponse'{..}
-          = object
-              (catMaybes
-                 [("groupLicense" .=) <$> _gllrGroupLicense,
-                  Just ("kind" .= _gllrKind)])
-
--- | Deprecated and unused.
---
--- /See:/ 'androidDevicePolicyConfig' smart constructor.
-data AndroidDevicePolicyConfig = AndroidDevicePolicyConfig'
-    { _adpcState :: !(Maybe Text)
-    , _adpcKind  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AndroidDevicePolicyConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'adpcState'
---
--- * 'adpcKind'
-androidDevicePolicyConfig
-    :: AndroidDevicePolicyConfig
-androidDevicePolicyConfig =
-    AndroidDevicePolicyConfig'
-    { _adpcState = Nothing
-    , _adpcKind = "androidenterprise#androidDevicePolicyConfig"
-    }
-
--- | Deprecated and unused.
-adpcState :: Lens' AndroidDevicePolicyConfig (Maybe Text)
-adpcState
-  = lens _adpcState (\ s a -> s{_adpcState = a})
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#androidDevicePolicyConfig\".
-adpcKind :: Lens' AndroidDevicePolicyConfig Text
-adpcKind = lens _adpcKind (\ s a -> s{_adpcKind = a})
-
-instance FromJSON AndroidDevicePolicyConfig where
-        parseJSON
-          = withObject "AndroidDevicePolicyConfig"
-              (\ o ->
-                 AndroidDevicePolicyConfig' <$>
-                   (o .:? "state") <*>
-                     (o .:? "kind" .!=
-                        "androidenterprise#androidDevicePolicyConfig"))
-
-instance ToJSON AndroidDevicePolicyConfig where
-        toJSON AndroidDevicePolicyConfig'{..}
-          = object
-              (catMaybes
-                 [("state" .=) <$> _adpcState,
-                  Just ("kind" .= _adpcKind)])
-
--- | A set of products.
---
--- /See:/ 'productSet' smart constructor.
-data ProductSet = ProductSet'
-    { _psProductVisibility  :: !(Maybe [ProductVisibility])
-    , _psKind               :: !Text
-    , _psProductSetBehavior :: !(Maybe Text)
-    , _psProductId          :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ProductSet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'psProductVisibility'
---
--- * 'psKind'
---
--- * 'psProductSetBehavior'
---
--- * 'psProductId'
-productSet
-    :: ProductSet
-productSet =
-    ProductSet'
-    { _psProductVisibility = Nothing
-    , _psKind = "androidenterprise#productSet"
-    , _psProductSetBehavior = Nothing
-    , _psProductId = Nothing
-    }
-
--- | Additional list of product IDs making up the product set. Unlike the
--- productID array, in this list It\'s possible to specify which tracks
--- (alpha, beta, production) of a product are visible to the user. See
--- ProductVisibility and its fields for more information. Specifying the
--- same product ID both here and in the productId array is not allowed and
--- it will result in an error.
-psProductVisibility :: Lens' ProductSet [ProductVisibility]
-psProductVisibility
-  = lens _psProductVisibility
-      (\ s a -> s{_psProductVisibility = a})
-      . _Default
-      . _Coerce
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#productSet\".
-psKind :: Lens' ProductSet Text
-psKind = lens _psKind (\ s a -> s{_psKind = a})
-
--- | The interpretation of this product set. \"unknown\" should never be sent
--- and is ignored if received. \"whitelist\" means that the user is
--- entitled to access the product set. \"includeAll\" means that all
--- products are accessible, including products that are approved, products
--- with revoked approval, and products that have never been approved.
--- \"allApproved\" means that the user is entitled to access all products
--- that are approved for the enterprise. If the value is \"allApproved\" or
--- \"includeAll\", the productId field is ignored. If no value is provided,
--- it is interpreted as \"whitelist\" for backwards compatibility. Further
--- \"allApproved\" or \"includeAll\" does not enable automatic visibility
--- of \"alpha\" or \"beta\" tracks for Android app. Use ProductVisibility
--- to enable \"alpha\" or \"beta\" tracks per user.
-psProductSetBehavior :: Lens' ProductSet (Maybe Text)
-psProductSetBehavior
-  = lens _psProductSetBehavior
-      (\ s a -> s{_psProductSetBehavior = a})
-
--- | The list of product IDs making up the set of products.
-psProductId :: Lens' ProductSet [Text]
-psProductId
-  = lens _psProductId (\ s a -> s{_psProductId = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON ProductSet where
-        parseJSON
-          = withObject "ProductSet"
-              (\ o ->
-                 ProductSet' <$>
-                   (o .:? "productVisibility" .!= mempty) <*>
-                     (o .:? "kind" .!= "androidenterprise#productSet")
-                     <*> (o .:? "productSetBehavior")
-                     <*> (o .:? "productId" .!= mempty))
-
-instance ToJSON ProductSet where
-        toJSON ProductSet'{..}
-          = object
-              (catMaybes
-                 [("productVisibility" .=) <$> _psProductVisibility,
-                  Just ("kind" .= _psKind),
-                  ("productSetBehavior" .=) <$> _psProductSetBehavior,
-                  ("productId" .=) <$> _psProductId])
-
--- | The existence of an Installs resource indicates that an app is installed
--- on a particular device (or that an install is pending). The API can be
--- used to create an install resource using the update method. This
--- triggers the actual install of the app on the device. If the user does
--- not already have an entitlement for the app, then an attempt is made to
--- create one. If this fails (for example, because the app is not free and
--- there is no available license), then the creation of the install fails.
--- The API can also be used to update an installed app. If
--- the update method is used on an existing install, then the app will be
--- updated to the latest available version. Note that it is not possible to
--- force the installation of a specific version of an app: the version code
--- is read-only. If a user installs an app themselves (as permitted by the
--- enterprise), then again an install resource and possibly an entitlement
--- resource are automatically created. The API can also be used to delete
--- an install resource, which triggers the removal of the app from the
--- device. Note that deleting an install does not automatically remove the
--- corresponding entitlement, even if there are no remaining installs. The
--- install resource will also be deleted if the user uninstalls the app
--- themselves.
---
--- /See:/ 'install' smart constructor.
-data Install = Install'
-    { _iVersionCode  :: !(Maybe (Textual Int32))
-    , _iKind         :: !Text
-    , _iInstallState :: !(Maybe Text)
-    , _iProductId    :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Install' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iVersionCode'
---
--- * 'iKind'
---
--- * 'iInstallState'
---
--- * 'iProductId'
-install
-    :: Install
-install =
-    Install'
-    { _iVersionCode = Nothing
-    , _iKind = "androidenterprise#install"
-    , _iInstallState = Nothing
-    , _iProductId = Nothing
-    }
-
--- | The version of the installed product. Guaranteed to be set only if the
--- install state is \"installed\".
-iVersionCode :: Lens' Install (Maybe Int32)
-iVersionCode
-  = lens _iVersionCode (\ s a -> s{_iVersionCode = a})
-      . mapping _Coerce
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#install\".
-iKind :: Lens' Install Text
-iKind = lens _iKind (\ s a -> s{_iKind = a})
-
--- | Install state. The state \"installPending\" means that an install
--- request has recently been made and download to the device is in
--- progress. The state \"installed\" means that the app has been installed.
--- This field is read-only.
-iInstallState :: Lens' Install (Maybe Text)
-iInstallState
-  = lens _iInstallState
-      (\ s a -> s{_iInstallState = a})
-
--- | The ID of the product that the install is for. For example,
--- \"app:com.google.android.gm\".
-iProductId :: Lens' Install (Maybe Text)
-iProductId
-  = lens _iProductId (\ s a -> s{_iProductId = a})
-
-instance FromJSON Install where
-        parseJSON
-          = withObject "Install"
-              (\ o ->
-                 Install' <$>
-                   (o .:? "versionCode") <*>
-                     (o .:? "kind" .!= "androidenterprise#install")
-                     <*> (o .:? "installState")
-                     <*> (o .:? "productId"))
-
-instance ToJSON Install where
-        toJSON Install'{..}
-          = object
-              (catMaybes
-                 [("versionCode" .=) <$> _iVersionCode,
-                  Just ("kind" .= _iKind),
-                  ("installState" .=) <$> _iInstallState,
-                  ("productId" .=) <$> _iProductId])
-
--- | Maintenance window for managed Google Play Accounts. This allows Play
--- store to update the apps on the foreground in the designated window.
---
--- /See:/ 'maintenanceWindow' smart constructor.
-data MaintenanceWindow = MaintenanceWindow'
-    { _mwDurationMs               :: !(Maybe (Textual Int64))
-    , _mwStartTimeAfterMidnightMs :: !(Maybe (Textual Int64))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MaintenanceWindow' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mwDurationMs'
---
--- * 'mwStartTimeAfterMidnightMs'
-maintenanceWindow
-    :: MaintenanceWindow
-maintenanceWindow =
-    MaintenanceWindow'
-    { _mwDurationMs = Nothing
-    , _mwStartTimeAfterMidnightMs = Nothing
-    }
-
--- | Duration of the maintenance window, in milliseconds. The duration must
--- be between 30 minutes and 24 hours (inclusive).
-mwDurationMs :: Lens' MaintenanceWindow (Maybe Int64)
-mwDurationMs
-  = lens _mwDurationMs (\ s a -> s{_mwDurationMs = a})
-      . mapping _Coerce
-
--- | Start time of the maintenance window, in milliseconds after midnight on
--- the device. Windows can span midnight.
-mwStartTimeAfterMidnightMs :: Lens' MaintenanceWindow (Maybe Int64)
-mwStartTimeAfterMidnightMs
-  = lens _mwStartTimeAfterMidnightMs
-      (\ s a -> s{_mwStartTimeAfterMidnightMs = a})
-      . mapping _Coerce
-
-instance FromJSON MaintenanceWindow where
-        parseJSON
-          = withObject "MaintenanceWindow"
-              (\ o ->
-                 MaintenanceWindow' <$>
-                   (o .:? "durationMs") <*>
-                     (o .:? "startTimeAfterMidnightMs"))
-
-instance ToJSON MaintenanceWindow where
-        toJSON MaintenanceWindow'{..}
-          = object
-              (catMaybes
-                 [("durationMs" .=) <$> _mwDurationMs,
-                  ("startTimeAfterMidnightMs" .=) <$>
-                    _mwStartTimeAfterMidnightMs])
-
---
--- /See:/ 'serviceAccountKeysListResponse' smart constructor.
-newtype ServiceAccountKeysListResponse = ServiceAccountKeysListResponse'
-    { _saklrServiceAccountKey :: Maybe [ServiceAccountKey]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ServiceAccountKeysListResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'saklrServiceAccountKey'
-serviceAccountKeysListResponse
-    :: ServiceAccountKeysListResponse
-serviceAccountKeysListResponse =
-    ServiceAccountKeysListResponse'
-    { _saklrServiceAccountKey = Nothing
-    }
-
--- | The service account credentials.
-saklrServiceAccountKey :: Lens' ServiceAccountKeysListResponse [ServiceAccountKey]
-saklrServiceAccountKey
-  = lens _saklrServiceAccountKey
-      (\ s a -> s{_saklrServiceAccountKey = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ServiceAccountKeysListResponse
-         where
-        parseJSON
-          = withObject "ServiceAccountKeysListResponse"
-              (\ o ->
-                 ServiceAccountKeysListResponse' <$>
-                   (o .:? "serviceAccountKey" .!= mempty))
-
-instance ToJSON ServiceAccountKeysListResponse where
-        toJSON ServiceAccountKeysListResponse'{..}
-          = object
-              (catMaybes
-                 [("serviceAccountKey" .=) <$>
-                    _saklrServiceAccountKey])
-
--- | Id to name association of a track.
---
--- /See:/ 'trackInfo' smart constructor.
-data TrackInfo = TrackInfo'
-    { _tiTrackAlias :: !(Maybe Text)
-    , _tiTrackId    :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TrackInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tiTrackAlias'
---
--- * 'tiTrackId'
-trackInfo
-    :: TrackInfo
-trackInfo =
-    TrackInfo'
-    { _tiTrackAlias = Nothing
-    , _tiTrackId = Nothing
-    }
-
--- | A modifiable name for a track. This is the visible name in the play
--- developer console.
-tiTrackAlias :: Lens' TrackInfo (Maybe Text)
-tiTrackAlias
-  = lens _tiTrackAlias (\ s a -> s{_tiTrackAlias = a})
-
--- | Unmodifiable, unique track identifier. This identifier is the
--- releaseTrackId in the url of the play developer console page that
--- displays the track information.
-tiTrackId :: Lens' TrackInfo (Maybe Text)
-tiTrackId
-  = lens _tiTrackId (\ s a -> s{_tiTrackId = a})
-
-instance FromJSON TrackInfo where
-        parseJSON
-          = withObject "TrackInfo"
-              (\ o ->
-                 TrackInfo' <$>
-                   (o .:? "trackAlias") <*> (o .:? "trackId"))
-
-instance ToJSON TrackInfo where
-        toJSON TrackInfo'{..}
-          = object
-              (catMaybes
-                 [("trackAlias" .=) <$> _tiTrackAlias,
-                  ("trackId" .=) <$> _tiTrackId])
-
--- | A Users resource represents an account associated with an enterprise.
--- The account may be specific to a device or to an individual user (who
--- can then use the account across multiple devices). The account may
--- provide access to managed Google Play only, or to other Google services,
--- depending on the identity model: - The Google managed domain identity
--- model requires synchronization to Google account sources (via
--- primaryEmail). - The managed Google Play Accounts identity model
--- provides a dynamic means for enterprises to create user or device
--- accounts as needed. These accounts provide access to managed Google
--- Play.
---
--- /See:/ 'user' smart constructor.
-data User = User'
-    { _uAccountIdentifier :: !(Maybe Text)
-    , _uKind              :: !Text
-    , _uDisplayName       :: !(Maybe Text)
-    , _uId                :: !(Maybe Text)
-    , _uPrimaryEmail      :: !(Maybe Text)
-    , _uManagementType    :: !(Maybe Text)
-    , _uAccountType       :: !(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:
---
--- * 'uAccountIdentifier'
---
--- * 'uKind'
---
--- * 'uDisplayName'
---
--- * 'uId'
---
--- * 'uPrimaryEmail'
---
--- * 'uManagementType'
---
--- * 'uAccountType'
-user
-    :: User
-user =
-    User'
-    { _uAccountIdentifier = Nothing
-    , _uKind = "androidenterprise#user"
-    , _uDisplayName = Nothing
-    , _uId = Nothing
-    , _uPrimaryEmail = Nothing
-    , _uManagementType = Nothing
-    , _uAccountType = Nothing
-    }
-
--- | A unique identifier you create for this user, such as \"user342\" or
--- \"asset#44418\". Do not use personally identifiable information (PII)
--- for this property. Must always be set for EMM-managed users. Not set for
--- Google-managed users.
-uAccountIdentifier :: Lens' User (Maybe Text)
-uAccountIdentifier
-  = lens _uAccountIdentifier
-      (\ s a -> s{_uAccountIdentifier = a})
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#user\".
-uKind :: Lens' User Text
-uKind = lens _uKind (\ s a -> s{_uKind = a})
-
--- | The name that will appear in user interfaces. Setting this property is
--- optional when creating EMM-managed users. If you do set this property,
--- use something generic about the organization (such as \"Example, Inc.\")
--- or your name (as EMM). Not used for Google-managed user accounts.
-uDisplayName :: Lens' User (Maybe Text)
-uDisplayName
-  = lens _uDisplayName (\ s a -> s{_uDisplayName = a})
-
--- | The unique ID for the user.
-uId :: Lens' User (Maybe Text)
-uId = lens _uId (\ s a -> s{_uId = a})
-
--- | The user\'s primary email address, for example, \"jsmith\'example.com\".
--- Will always be set for Google managed users and not set for EMM managed
--- users.
-uPrimaryEmail :: Lens' User (Maybe Text)
-uPrimaryEmail
-  = lens _uPrimaryEmail
-      (\ s a -> s{_uPrimaryEmail = a})
-
--- | The entity that manages the user. With googleManaged users, the source
--- of truth is Google so EMMs have to make sure a Google Account exists for
--- the user. With emmManaged users, the EMM is in charge.
-uManagementType :: Lens' User (Maybe Text)
-uManagementType
-  = lens _uManagementType
-      (\ s a -> s{_uManagementType = a})
-
--- | The type of account that this user represents. A userAccount can be
--- installed on multiple devices, but a deviceAccount is specific to a
--- single device. An EMM-managed user (emmManaged) can be either type
--- (userAccount, deviceAccount), but a Google-managed user (googleManaged)
--- is always a userAccount.
-uAccountType :: Lens' User (Maybe Text)
-uAccountType
-  = lens _uAccountType (\ s a -> s{_uAccountType = a})
-
-instance FromJSON User where
-        parseJSON
-          = withObject "User"
-              (\ o ->
-                 User' <$>
-                   (o .:? "accountIdentifier") <*>
-                     (o .:? "kind" .!= "androidenterprise#user")
-                     <*> (o .:? "displayName")
-                     <*> (o .:? "id")
-                     <*> (o .:? "primaryEmail")
-                     <*> (o .:? "managementType")
-                     <*> (o .:? "accountType"))
-
-instance ToJSON User where
-        toJSON User'{..}
-          = object
-              (catMaybes
-                 [("accountIdentifier" .=) <$> _uAccountIdentifier,
-                  Just ("kind" .= _uKind),
-                  ("displayName" .=) <$> _uDisplayName,
-                  ("id" .=) <$> _uId,
-                  ("primaryEmail" .=) <$> _uPrimaryEmail,
-                  ("managementType" .=) <$> _uManagementType,
-                  ("accountType" .=) <$> _uAccountType])
-
--- | The managed configuration resources for the device.
---
--- /See:/ 'managedConfigurationsForDeviceListResponse' smart constructor.
-data ManagedConfigurationsForDeviceListResponse = ManagedConfigurationsForDeviceListResponse'
-    { _mcfdlrKind                          :: !Text
-    , _mcfdlrManagedConfigurationForDevice :: !(Maybe [ManagedConfiguration])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ManagedConfigurationsForDeviceListResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mcfdlrKind'
---
--- * 'mcfdlrManagedConfigurationForDevice'
-managedConfigurationsForDeviceListResponse
-    :: ManagedConfigurationsForDeviceListResponse
-managedConfigurationsForDeviceListResponse =
-    ManagedConfigurationsForDeviceListResponse'
-    { _mcfdlrKind = "androidenterprise#managedConfigurationsForDeviceListResponse"
-    , _mcfdlrManagedConfigurationForDevice = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#managedConfigurationsForDeviceListResponse\".
-mcfdlrKind :: Lens' ManagedConfigurationsForDeviceListResponse Text
-mcfdlrKind
-  = lens _mcfdlrKind (\ s a -> s{_mcfdlrKind = a})
-
--- | A managed configuration for an app on a specific device.
-mcfdlrManagedConfigurationForDevice :: Lens' ManagedConfigurationsForDeviceListResponse [ManagedConfiguration]
-mcfdlrManagedConfigurationForDevice
-  = lens _mcfdlrManagedConfigurationForDevice
-      (\ s a ->
-         s{_mcfdlrManagedConfigurationForDevice = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON
-         ManagedConfigurationsForDeviceListResponse where
-        parseJSON
-          = withObject
-              "ManagedConfigurationsForDeviceListResponse"
-              (\ o ->
-                 ManagedConfigurationsForDeviceListResponse' <$>
-                   (o .:? "kind" .!=
-                      "androidenterprise#managedConfigurationsForDeviceListResponse")
-                     <*>
-                     (o .:? "managedConfigurationForDevice" .!= mempty))
-
-instance ToJSON
-         ManagedConfigurationsForDeviceListResponse where
-        toJSON
-          ManagedConfigurationsForDeviceListResponse'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _mcfdlrKind),
-                  ("managedConfigurationForDevice" .=) <$>
-                    _mcfdlrManagedConfigurationForDevice])
-
---
--- /See:/ 'productsGenerateApprovalURLResponse' smart constructor.
-newtype ProductsGenerateApprovalURLResponse = ProductsGenerateApprovalURLResponse'
-    { _pgaurURL :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ProductsGenerateApprovalURLResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pgaurURL'
-productsGenerateApprovalURLResponse
-    :: ProductsGenerateApprovalURLResponse
-productsGenerateApprovalURLResponse =
-    ProductsGenerateApprovalURLResponse'
-    { _pgaurURL = Nothing
-    }
-
--- | A URL that can be rendered in an iframe to display the permissions (if
--- any) of a product. This URL can be used to approve the product only once
--- and only within 24 hours of being generated, using the Products.approve
--- call. If the product is currently unapproved and has no permissions,
--- this URL will point to an empty page. If the product is currently
--- approved, a URL will only be generated if that product has added
--- permissions since it was last approved, and the URL will only display
--- those new permissions that have not yet been accepted.
-pgaurURL :: Lens' ProductsGenerateApprovalURLResponse (Maybe Text)
-pgaurURL = lens _pgaurURL (\ s a -> s{_pgaurURL = a})
-
-instance FromJSON ProductsGenerateApprovalURLResponse
-         where
-        parseJSON
-          = withObject "ProductsGenerateApprovalURLResponse"
-              (\ o ->
-                 ProductsGenerateApprovalURLResponse' <$>
-                   (o .:? "url"))
-
-instance ToJSON ProductsGenerateApprovalURLResponse
-         where
-        toJSON ProductsGenerateApprovalURLResponse'{..}
-          = object (catMaybes [("url" .=) <$> _pgaurURL])
-
--- | Definition of a managed Google Play store page, made of a localized name
--- and links to other pages. A page also contains clusters defined as a
--- subcollection.
---
--- /See:/ 'storePage' smart constructor.
-data StorePage = StorePage'
-    { _spKind :: !Text
-    , _spLink :: !(Maybe [Text])
-    , _spName :: !(Maybe [LocalizedText])
-    , _spId   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'StorePage' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'spKind'
---
--- * 'spLink'
---
--- * 'spName'
---
--- * 'spId'
-storePage
-    :: StorePage
-storePage =
-    StorePage'
-    { _spKind = "androidenterprise#storePage"
-    , _spLink = Nothing
-    , _spName = Nothing
-    , _spId = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#storePage\".
-spKind :: Lens' StorePage Text
-spKind = lens _spKind (\ s a -> s{_spKind = a})
-
--- | Ordered list of pages a user should be able to reach from this page. The
--- list can\'t include this page. It is recommended that the basic pages
--- are created first, before adding the links between pages. The API
--- doesn\'t verify that the pages exist or the pages are reachable.
-spLink :: Lens' StorePage [Text]
-spLink
-  = lens _spLink (\ s a -> s{_spLink = a}) . _Default .
-      _Coerce
-
--- | Ordered list of localized strings giving the name of this page. The text
--- displayed is the one that best matches the user locale, or the first
--- entry if there is no good match. There needs to be at least one entry.
-spName :: Lens' StorePage [LocalizedText]
-spName
-  = lens _spName (\ s a -> s{_spName = a}) . _Default .
-      _Coerce
-
--- | Unique ID of this page. Assigned by the server. Immutable once assigned.
-spId :: Lens' StorePage (Maybe Text)
-spId = lens _spId (\ s a -> s{_spId = a})
-
-instance FromJSON StorePage where
-        parseJSON
-          = withObject "StorePage"
-              (\ o ->
-                 StorePage' <$>
-                   (o .:? "kind" .!= "androidenterprise#storePage") <*>
-                     (o .:? "link" .!= mempty)
-                     <*> (o .:? "name" .!= mempty)
-                     <*> (o .:? "id"))
-
-instance ToJSON StorePage where
-        toJSON StorePage'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _spKind), ("link" .=) <$> _spLink,
-                  ("name" .=) <$> _spName, ("id" .=) <$> _spId])
-
---
--- /See:/ 'enterprisesSendTestPushNotificationResponse' smart constructor.
-data EnterprisesSendTestPushNotificationResponse = EnterprisesSendTestPushNotificationResponse'
-    { _estpnrTopicName :: !(Maybe Text)
-    , _estpnrMessageId :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EnterprisesSendTestPushNotificationResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'estpnrTopicName'
---
--- * 'estpnrMessageId'
-enterprisesSendTestPushNotificationResponse
-    :: EnterprisesSendTestPushNotificationResponse
-enterprisesSendTestPushNotificationResponse =
-    EnterprisesSendTestPushNotificationResponse'
-    { _estpnrTopicName = Nothing
-    , _estpnrMessageId = Nothing
-    }
-
--- | The name of the Cloud Pub\/Sub topic to which notifications for this
--- enterprise\'s enrolled account will be sent.
-estpnrTopicName :: Lens' EnterprisesSendTestPushNotificationResponse (Maybe Text)
-estpnrTopicName
-  = lens _estpnrTopicName
-      (\ s a -> s{_estpnrTopicName = a})
-
--- | The message ID of the test push notification that was sent.
-estpnrMessageId :: Lens' EnterprisesSendTestPushNotificationResponse (Maybe Text)
-estpnrMessageId
-  = lens _estpnrMessageId
-      (\ s a -> s{_estpnrMessageId = a})
-
-instance FromJSON
-         EnterprisesSendTestPushNotificationResponse where
-        parseJSON
-          = withObject
-              "EnterprisesSendTestPushNotificationResponse"
-              (\ o ->
-                 EnterprisesSendTestPushNotificationResponse' <$>
-                   (o .:? "topicName") <*> (o .:? "messageId"))
-
-instance ToJSON
-         EnterprisesSendTestPushNotificationResponse where
-        toJSON
-          EnterprisesSendTestPushNotificationResponse'{..}
-          = object
-              (catMaybes
-                 [("topicName" .=) <$> _estpnrTopicName,
-                  ("messageId" .=) <$> _estpnrMessageId])
-
--- | A service account identity, including the name and credentials that can
--- be used to authenticate as the service account.
---
--- /See:/ 'serviceAccount' smart constructor.
-data ServiceAccount = ServiceAccount'
-    { _saKind :: !Text
-    , _saKey  :: !(Maybe ServiceAccountKey)
-    , _saName :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ServiceAccount' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'saKind'
---
--- * 'saKey'
---
--- * 'saName'
-serviceAccount
-    :: ServiceAccount
-serviceAccount =
-    ServiceAccount'
-    { _saKind = "androidenterprise#serviceAccount"
-    , _saKey = Nothing
-    , _saName = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#serviceAccount\".
-saKind :: Lens' ServiceAccount Text
-saKind = lens _saKind (\ s a -> s{_saKind = a})
-
--- | Credentials that can be used to authenticate as this ServiceAccount.
-saKey :: Lens' ServiceAccount (Maybe ServiceAccountKey)
-saKey = lens _saKey (\ s a -> s{_saKey = a})
-
--- | The account name of the service account, in the form of an email
--- address. Assigned by the server.
-saName :: Lens' ServiceAccount (Maybe Text)
-saName = lens _saName (\ s a -> s{_saName = a})
-
-instance FromJSON ServiceAccount where
-        parseJSON
-          = withObject "ServiceAccount"
-              (\ o ->
-                 ServiceAccount' <$>
-                   (o .:? "kind" .!= "androidenterprise#serviceAccount")
-                     <*> (o .:? "key")
-                     <*> (o .:? "name"))
-
-instance ToJSON ServiceAccount where
-        toJSON ServiceAccount'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _saKind), ("key" .=) <$> _saKey,
-                  ("name" .=) <$> _saName])
-
--- | A variable set is a key-value pair of EMM-provided placeholders and its
--- corresponding value, which is attributed to a user. For example,
--- /F//I//R//S//T//N//A//M//E//c//o//u//l//d//b//e//a//p//l//a//c//e//h//o//l//d//e//r/, /a//n//d//i//t//s//v//a//l//u//e//c//o//u//l//d//b//e//A//l//i//c//e/./P//l//a//c//e//h//o//l//d//e//r//s//s//h//o//u//l//d//s//t//a//r//t//w//i//t//h//a/′\'
--- sign and should be alphanumeric only.
---
--- /See:/ 'variableSet' smart constructor.
-data VariableSet = VariableSet'
-    { _vsKind        :: !Text
-    , _vsUserValue   :: !(Maybe Text)
-    , _vsPlaceholder :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'VariableSet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vsKind'
---
--- * 'vsUserValue'
---
--- * 'vsPlaceholder'
-variableSet
-    :: VariableSet
-variableSet =
-    VariableSet'
-    { _vsKind = "androidenterprise#variableSet"
-    , _vsUserValue = Nothing
-    , _vsPlaceholder = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#variableSet\".
-vsKind :: Lens' VariableSet Text
-vsKind = lens _vsKind (\ s a -> s{_vsKind = a})
-
--- | The value of the placeholder, specific to the user.
-vsUserValue :: Lens' VariableSet (Maybe Text)
-vsUserValue
-  = lens _vsUserValue (\ s a -> s{_vsUserValue = a})
-
--- | The placeholder string; defined by EMM.
-vsPlaceholder :: Lens' VariableSet (Maybe Text)
-vsPlaceholder
-  = lens _vsPlaceholder
-      (\ s a -> s{_vsPlaceholder = a})
-
-instance FromJSON VariableSet where
-        parseJSON
-          = withObject "VariableSet"
-              (\ o ->
-                 VariableSet' <$>
-                   (o .:? "kind" .!= "androidenterprise#variableSet")
-                     <*> (o .:? "userValue")
-                     <*> (o .:? "placeholder"))
-
-instance ToJSON VariableSet where
-        toJSON VariableSet'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _vsKind),
-                  ("userValue" .=) <$> _vsUserValue,
-                  ("placeholder" .=) <$> _vsPlaceholder])
-
--- | An event generated when a new version of an app is uploaded to Google
--- Play. Notifications are sent for new public versions only: alpha, beta,
--- or canary versions do not generate this event. To fetch up-to-date
--- version history for an app, use Products.Get on the EMM API.
---
--- /See:/ 'appUpdateEvent' smart constructor.
-newtype AppUpdateEvent = AppUpdateEvent'
-    { _aueProductId :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AppUpdateEvent' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aueProductId'
-appUpdateEvent
-    :: AppUpdateEvent
-appUpdateEvent =
-    AppUpdateEvent'
-    { _aueProductId = Nothing
-    }
-
--- | The id of the product (e.g. \"app:com.google.android.gm\") that was
--- updated. This field will always be present.
-aueProductId :: Lens' AppUpdateEvent (Maybe Text)
-aueProductId
-  = lens _aueProductId (\ s a -> s{_aueProductId = a})
-
-instance FromJSON AppUpdateEvent where
-        parseJSON
-          = withObject "AppUpdateEvent"
-              (\ o -> AppUpdateEvent' <$> (o .:? "productId"))
-
-instance ToJSON AppUpdateEvent where
-        toJSON AppUpdateEvent'{..}
-          = object
-              (catMaybes [("productId" .=) <$> _aueProductId])
-
--- | The matching enterprise resources.
---
--- /See:/ 'enterprisesListResponse' smart constructor.
-data EnterprisesListResponse = EnterprisesListResponse'
-    { _elrKind       :: !Text
-    , _elrEnterprise :: !(Maybe [Enterprise])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EnterprisesListResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'elrKind'
---
--- * 'elrEnterprise'
-enterprisesListResponse
-    :: EnterprisesListResponse
-enterprisesListResponse =
-    EnterprisesListResponse'
-    { _elrKind = "androidenterprise#enterprisesListResponse"
-    , _elrEnterprise = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#enterprisesListResponse\".
-elrKind :: Lens' EnterprisesListResponse Text
-elrKind = lens _elrKind (\ s a -> s{_elrKind = a})
-
--- | An enterprise.
-elrEnterprise :: Lens' EnterprisesListResponse [Enterprise]
-elrEnterprise
-  = lens _elrEnterprise
-      (\ s a -> s{_elrEnterprise = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON EnterprisesListResponse where
-        parseJSON
-          = withObject "EnterprisesListResponse"
-              (\ o ->
-                 EnterprisesListResponse' <$>
-                   (o .:? "kind" .!=
-                      "androidenterprise#enterprisesListResponse")
-                     <*> (o .:? "enterprise" .!= mempty))
-
-instance ToJSON EnterprisesListResponse where
-        toJSON EnterprisesListResponse'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _elrKind),
-                  ("enterprise" .=) <$> _elrEnterprise])
-
--- | A resource returned by the PullNotificationSet API, which contains a
--- collection of notifications for enterprises associated with the service
--- account authenticated for the request.
---
--- /See:/ 'notificationSet' smart constructor.
-data NotificationSet = NotificationSet'
-    { _nsNotificationSetId :: !(Maybe Text)
-    , _nsNotification      :: !(Maybe [Notification])
-    , _nsKind              :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NotificationSet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'nsNotificationSetId'
---
--- * 'nsNotification'
---
--- * 'nsKind'
-notificationSet
-    :: NotificationSet
-notificationSet =
-    NotificationSet'
-    { _nsNotificationSetId = Nothing
-    , _nsNotification = Nothing
-    , _nsKind = "androidenterprise#notificationSet"
-    }
-
--- | The notification set ID, required to mark the notification as received
--- with the Enterprises.AcknowledgeNotification API. This will be omitted
--- if no notifications are present.
-nsNotificationSetId :: Lens' NotificationSet (Maybe Text)
-nsNotificationSetId
-  = lens _nsNotificationSetId
-      (\ s a -> s{_nsNotificationSetId = a})
-
--- | The notifications received, or empty if no notifications are present.
-nsNotification :: Lens' NotificationSet [Notification]
-nsNotification
-  = lens _nsNotification
-      (\ s a -> s{_nsNotification = a})
-      . _Default
-      . _Coerce
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#notificationSet\".
-nsKind :: Lens' NotificationSet Text
-nsKind = lens _nsKind (\ s a -> s{_nsKind = a})
-
-instance FromJSON NotificationSet where
-        parseJSON
-          = withObject "NotificationSet"
-              (\ o ->
-                 NotificationSet' <$>
-                   (o .:? "notificationSetId") <*>
-                     (o .:? "notification" .!= mempty)
-                     <*>
-                     (o .:? "kind" .!=
-                        "androidenterprise#notificationSet"))
-
-instance ToJSON NotificationSet where
-        toJSON NotificationSet'{..}
-          = object
-              (catMaybes
-                 [("notificationSetId" .=) <$> _nsNotificationSetId,
-                  ("notification" .=) <$> _nsNotification,
-                  Just ("kind" .= _nsKind)])
-
--- | Represents the list of app restrictions available to be pre-configured
--- for the product.
---
--- /See:/ 'appRestrictionsSchema' smart constructor.
-data AppRestrictionsSchema = AppRestrictionsSchema'
-    { _arsKind         :: !Text
-    , _arsRestrictions :: !(Maybe [AppRestrictionsSchemaRestriction])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AppRestrictionsSchema' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'arsKind'
---
--- * 'arsRestrictions'
-appRestrictionsSchema
-    :: AppRestrictionsSchema
-appRestrictionsSchema =
-    AppRestrictionsSchema'
-    { _arsKind = "androidenterprise#appRestrictionsSchema"
-    , _arsRestrictions = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#appRestrictionsSchema\".
-arsKind :: Lens' AppRestrictionsSchema Text
-arsKind = lens _arsKind (\ s a -> s{_arsKind = a})
-
--- | The set of restrictions that make up this schema.
-arsRestrictions :: Lens' AppRestrictionsSchema [AppRestrictionsSchemaRestriction]
-arsRestrictions
-  = lens _arsRestrictions
-      (\ s a -> s{_arsRestrictions = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON AppRestrictionsSchema where
-        parseJSON
-          = withObject "AppRestrictionsSchema"
-              (\ o ->
-                 AppRestrictionsSchema' <$>
-                   (o .:? "kind" .!=
-                      "androidenterprise#appRestrictionsSchema")
-                     <*> (o .:? "restrictions" .!= mempty))
-
-instance ToJSON AppRestrictionsSchema where
-        toJSON AppRestrictionsSchema'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _arsKind),
-                  ("restrictions" .=) <$> _arsRestrictions])
-
--- | Icon for a web app.
---
--- /See:/ 'webAppIcon' smart constructor.
-newtype WebAppIcon = WebAppIcon'
-    { _waiImageData :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'WebAppIcon' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'waiImageData'
-webAppIcon
-    :: WebAppIcon
-webAppIcon =
-    WebAppIcon'
-    { _waiImageData = Nothing
-    }
-
--- | The actual bytes of the image in a base64url encoded string (c.f.
--- RFC4648, section 5 \"Base 64 Encoding with URL and Filename Safe
--- Alphabet\"). - The image type can be png or jpg. - The image should
--- ideally be square. - The image should ideally have a size of 512x512.
-waiImageData :: Lens' WebAppIcon (Maybe Text)
-waiImageData
-  = lens _waiImageData (\ s a -> s{_waiImageData = a})
-
-instance FromJSON WebAppIcon where
-        parseJSON
-          = withObject "WebAppIcon"
-              (\ o -> WebAppIcon' <$> (o .:? "imageData"))
-
-instance ToJSON WebAppIcon where
-        toJSON WebAppIcon'{..}
-          = object
-              (catMaybes [("imageData" .=) <$> _waiImageData])
-
--- | A localized string with its locale.
---
--- /See:/ 'localizedText' smart constructor.
-data LocalizedText = LocalizedText'
-    { _ltText   :: !(Maybe Text)
-    , _ltLocale :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'LocalizedText' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ltText'
---
--- * 'ltLocale'
-localizedText
-    :: LocalizedText
-localizedText =
-    LocalizedText'
-    { _ltText = Nothing
-    , _ltLocale = Nothing
-    }
-
--- | The text localized in the associated locale.
-ltText :: Lens' LocalizedText (Maybe Text)
-ltText = lens _ltText (\ s a -> s{_ltText = a})
-
--- | The BCP47 tag for a locale. (e.g. \"en-US\", \"de\").
-ltLocale :: Lens' LocalizedText (Maybe Text)
-ltLocale = lens _ltLocale (\ s a -> s{_ltLocale = a})
-
-instance FromJSON LocalizedText where
-        parseJSON
-          = withObject "LocalizedText"
-              (\ o ->
-                 LocalizedText' <$>
-                   (o .:? "text") <*> (o .:? "locale"))
-
-instance ToJSON LocalizedText where
-        toJSON LocalizedText'{..}
-          = object
-              (catMaybes
-                 [("text" .=) <$> _ltText,
-                  ("locale" .=) <$> _ltLocale])
-
--- | A UserToken is used by a user when setting up a managed device or
--- profile with their managed Google Play account on a device. When the
--- user enters their email address and token (activation code) the
--- appropriate EMM app can be automatically downloaded.
---
--- /See:/ 'userToken' smart constructor.
-data UserToken = UserToken'
-    { _utKind   :: !Text
-    , _utToken  :: !(Maybe Text)
-    , _utUserId :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserToken' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'utKind'
---
--- * 'utToken'
---
--- * 'utUserId'
-userToken
-    :: UserToken
-userToken =
-    UserToken'
-    { _utKind = "androidenterprise#userToken"
-    , _utToken = Nothing
-    , _utUserId = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#userToken\".
-utKind :: Lens' UserToken Text
-utKind = lens _utKind (\ s a -> s{_utKind = a})
-
--- | The token (activation code) to be entered by the user. This consists of
--- a sequence of decimal digits. Note that the leading digit may be 0.
-utToken :: Lens' UserToken (Maybe Text)
-utToken = lens _utToken (\ s a -> s{_utToken = a})
-
--- | The unique ID for the user.
-utUserId :: Lens' UserToken (Maybe Text)
-utUserId = lens _utUserId (\ s a -> s{_utUserId = a})
-
-instance FromJSON UserToken where
-        parseJSON
-          = withObject "UserToken"
-              (\ o ->
-                 UserToken' <$>
-                   (o .:? "kind" .!= "androidenterprise#userToken") <*>
-                     (o .:? "token")
-                     <*> (o .:? "userId"))
-
-instance ToJSON UserToken where
-        toJSON UserToken'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _utKind), ("token" .=) <$> _utToken,
-                  ("userId" .=) <$> _utUserId])
-
---
--- /See:/ 'administratorWebTokenSpecPrivateApps' smart constructor.
-newtype AdministratorWebTokenSpecPrivateApps = AdministratorWebTokenSpecPrivateApps'
-    { _awtspaEnabled :: Maybe Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AdministratorWebTokenSpecPrivateApps' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'awtspaEnabled'
-administratorWebTokenSpecPrivateApps
-    :: AdministratorWebTokenSpecPrivateApps
-administratorWebTokenSpecPrivateApps =
-    AdministratorWebTokenSpecPrivateApps'
-    { _awtspaEnabled = Nothing
-    }
-
--- | Whether the Private Apps page is displayed. Default is true.
-awtspaEnabled :: Lens' AdministratorWebTokenSpecPrivateApps (Maybe Bool)
-awtspaEnabled
-  = lens _awtspaEnabled
-      (\ s a -> s{_awtspaEnabled = a})
-
-instance FromJSON
-         AdministratorWebTokenSpecPrivateApps where
-        parseJSON
-          = withObject "AdministratorWebTokenSpecPrivateApps"
-              (\ o ->
-                 AdministratorWebTokenSpecPrivateApps' <$>
-                   (o .:? "enabled"))
-
-instance ToJSON AdministratorWebTokenSpecPrivateApps
-         where
-        toJSON AdministratorWebTokenSpecPrivateApps'{..}
-          = object
-              (catMaybes [("enabled" .=) <$> _awtspaEnabled])
-
--- | The device resources for the user.
---
--- /See:/ 'devicesListResponse' smart constructor.
-data DevicesListResponse = DevicesListResponse'
-    { _dlrKind   :: !Text
-    , _dlrDevice :: !(Maybe [Device])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DevicesListResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dlrKind'
---
--- * 'dlrDevice'
-devicesListResponse
-    :: DevicesListResponse
-devicesListResponse =
-    DevicesListResponse'
-    { _dlrKind = "androidenterprise#devicesListResponse"
-    , _dlrDevice = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#devicesListResponse\".
-dlrKind :: Lens' DevicesListResponse Text
-dlrKind = lens _dlrKind (\ s a -> s{_dlrKind = a})
-
--- | A managed device.
-dlrDevice :: Lens' DevicesListResponse [Device]
-dlrDevice
-  = lens _dlrDevice (\ s a -> s{_dlrDevice = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON DevicesListResponse where
-        parseJSON
-          = withObject "DevicesListResponse"
-              (\ o ->
-                 DevicesListResponse' <$>
-                   (o .:? "kind" .!=
-                      "androidenterprise#devicesListResponse")
-                     <*> (o .:? "device" .!= mempty))
-
-instance ToJSON DevicesListResponse where
-        toJSON DevicesListResponse'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _dlrKind),
-                  ("device" .=) <$> _dlrDevice])
-
---
--- /See:/ 'productSigningCertificate' smart constructor.
-data ProductSigningCertificate = ProductSigningCertificate'
-    { _pscCertificateHashSha256 :: !(Maybe Text)
-    , _pscCertificateHashSha1   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ProductSigningCertificate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pscCertificateHashSha256'
---
--- * 'pscCertificateHashSha1'
-productSigningCertificate
-    :: ProductSigningCertificate
-productSigningCertificate =
-    ProductSigningCertificate'
-    { _pscCertificateHashSha256 = Nothing
-    , _pscCertificateHashSha1 = Nothing
-    }
-
--- | The base64 urlsafe encoded SHA2-256 hash of the certificate.
-pscCertificateHashSha256 :: Lens' ProductSigningCertificate (Maybe Text)
-pscCertificateHashSha256
-  = lens _pscCertificateHashSha256
-      (\ s a -> s{_pscCertificateHashSha256 = a})
-
--- | The base64 urlsafe encoded SHA1 hash of the certificate. (This field is
--- deprecated in favor of SHA2-256. It should not be used and may be
--- removed at any time.)
-pscCertificateHashSha1 :: Lens' ProductSigningCertificate (Maybe Text)
-pscCertificateHashSha1
-  = lens _pscCertificateHashSha1
-      (\ s a -> s{_pscCertificateHashSha1 = a})
-
-instance FromJSON ProductSigningCertificate where
-        parseJSON
-          = withObject "ProductSigningCertificate"
-              (\ o ->
-                 ProductSigningCertificate' <$>
-                   (o .:? "certificateHashSha256") <*>
-                     (o .:? "certificateHashSha1"))
-
-instance ToJSON ProductSigningCertificate where
-        toJSON ProductSigningCertificate'{..}
-          = object
-              (catMaybes
-                 [("certificateHashSha256" .=) <$>
-                    _pscCertificateHashSha256,
-                  ("certificateHashSha1" .=) <$>
-                    _pscCertificateHashSha1])
-
--- | An Enterprises resource represents the binding between an EMM and a
--- specific organization. That binding can be instantiated in one of two
--- different ways using this API as follows: - For Google managed domain
--- customers, the process involves using Enterprises.enroll and
--- Enterprises.setAccount (in conjunction with artifacts obtained from the
--- Admin console and the Google API Console) and submitted to the EMM
--- through a more-or-less manual process. - For managed Google Play
--- Accounts customers, the process involves using
--- Enterprises.generateSignupUrl and Enterprises.completeSignup in
--- conjunction with the managed Google Play sign-up UI (Google-provided
--- mechanism) to create the binding without manual steps. As an EMM, you
--- can support either or both approaches in your EMM console. See Create an
--- Enterprise for details.
---
--- /See:/ 'enterprise' smart constructor.
-data Enterprise = Enterprise'
-    { _eKind          :: !Text
-    , _eAdministrator :: !(Maybe [Administrator])
-    , _ePrimaryDomain :: !(Maybe Text)
-    , _eName          :: !(Maybe Text)
-    , _eId            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Enterprise' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eKind'
---
--- * 'eAdministrator'
---
--- * 'ePrimaryDomain'
---
--- * 'eName'
---
--- * 'eId'
-enterprise
-    :: Enterprise
-enterprise =
-    Enterprise'
-    { _eKind = "androidenterprise#enterprise"
-    , _eAdministrator = Nothing
-    , _ePrimaryDomain = Nothing
-    , _eName = Nothing
-    , _eId = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#enterprise\".
-eKind :: Lens' Enterprise Text
-eKind = lens _eKind (\ s a -> s{_eKind = a})
-
--- | Admins of the enterprise. This is only supported for enterprises created
--- via the EMM-initiated flow.
-eAdministrator :: Lens' Enterprise [Administrator]
-eAdministrator
-  = lens _eAdministrator
-      (\ s a -> s{_eAdministrator = a})
-      . _Default
-      . _Coerce
-
--- | The enterprise\'s primary domain, such as \"example.com\".
-ePrimaryDomain :: Lens' Enterprise (Maybe Text)
-ePrimaryDomain
-  = lens _ePrimaryDomain
-      (\ s a -> s{_ePrimaryDomain = a})
-
--- | The name of the enterprise, for example, \"Example, Inc\".
-eName :: Lens' Enterprise (Maybe Text)
-eName = lens _eName (\ s a -> s{_eName = a})
-
--- | The unique ID for the enterprise.
-eId :: Lens' Enterprise (Maybe Text)
-eId = lens _eId (\ s a -> s{_eId = a})
-
-instance FromJSON Enterprise where
-        parseJSON
-          = withObject "Enterprise"
-              (\ o ->
-                 Enterprise' <$>
-                   (o .:? "kind" .!= "androidenterprise#enterprise") <*>
-                     (o .:? "administrator" .!= mempty)
-                     <*> (o .:? "primaryDomain")
-                     <*> (o .:? "name")
-                     <*> (o .:? "id"))
-
-instance ToJSON Enterprise where
-        toJSON Enterprise'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _eKind),
-                  ("administrator" .=) <$> _eAdministrator,
-                  ("primaryDomain" .=) <$> _ePrimaryDomain,
-                  ("name" .=) <$> _eName, ("id" .=) <$> _eId])
-
--- | An event generated when an app installation failed on a device
---
--- /See:/ 'installFailureEvent' smart constructor.
-data InstallFailureEvent = InstallFailureEvent'
-    { _ifeFailureReason  :: !(Maybe Text)
-    , _ifeFailureDetails :: !(Maybe Text)
-    , _ifeUserId         :: !(Maybe Text)
-    , _ifeDeviceId       :: !(Maybe Text)
-    , _ifeProductId      :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstallFailureEvent' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ifeFailureReason'
---
--- * 'ifeFailureDetails'
---
--- * 'ifeUserId'
---
--- * 'ifeDeviceId'
---
--- * 'ifeProductId'
-installFailureEvent
-    :: InstallFailureEvent
-installFailureEvent =
-    InstallFailureEvent'
-    { _ifeFailureReason = Nothing
-    , _ifeFailureDetails = Nothing
-    , _ifeUserId = Nothing
-    , _ifeDeviceId = Nothing
-    , _ifeProductId = Nothing
-    }
-
--- | The reason for the installation failure. This field will always be
--- present.
-ifeFailureReason :: Lens' InstallFailureEvent (Maybe Text)
-ifeFailureReason
-  = lens _ifeFailureReason
-      (\ s a -> s{_ifeFailureReason = a})
-
--- | Additional details on the failure if applicable.
-ifeFailureDetails :: Lens' InstallFailureEvent (Maybe Text)
-ifeFailureDetails
-  = lens _ifeFailureDetails
-      (\ s a -> s{_ifeFailureDetails = a})
-
--- | The ID of the user. This field will always be present.
-ifeUserId :: Lens' InstallFailureEvent (Maybe Text)
-ifeUserId
-  = lens _ifeUserId (\ s a -> s{_ifeUserId = a})
-
--- | The Android ID of the device. This field will always be present.
-ifeDeviceId :: Lens' InstallFailureEvent (Maybe Text)
-ifeDeviceId
-  = lens _ifeDeviceId (\ s a -> s{_ifeDeviceId = a})
-
--- | The id of the product (e.g. \"app:com.google.android.gm\") for which the
--- install failure event occured. This field will always be present.
-ifeProductId :: Lens' InstallFailureEvent (Maybe Text)
-ifeProductId
-  = lens _ifeProductId (\ s a -> s{_ifeProductId = a})
-
-instance FromJSON InstallFailureEvent where
-        parseJSON
-          = withObject "InstallFailureEvent"
-              (\ o ->
-                 InstallFailureEvent' <$>
-                   (o .:? "failureReason") <*> (o .:? "failureDetails")
-                     <*> (o .:? "userId")
-                     <*> (o .:? "deviceId")
-                     <*> (o .:? "productId"))
-
-instance ToJSON InstallFailureEvent where
-        toJSON InstallFailureEvent'{..}
-          = object
-              (catMaybes
-                 [("failureReason" .=) <$> _ifeFailureReason,
-                  ("failureDetails" .=) <$> _ifeFailureDetails,
-                  ("userId" .=) <$> _ifeUserId,
-                  ("deviceId" .=) <$> _ifeDeviceId,
-                  ("productId" .=) <$> _ifeProductId])
-
--- | The managed configuration resources for the user.
---
--- /See:/ 'managedConfigurationsForUserListResponse' smart constructor.
-data ManagedConfigurationsForUserListResponse = ManagedConfigurationsForUserListResponse'
-    { _mcfulrManagedConfigurationForUser :: !(Maybe [ManagedConfiguration])
-    , _mcfulrKind                        :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ManagedConfigurationsForUserListResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mcfulrManagedConfigurationForUser'
---
--- * 'mcfulrKind'
-managedConfigurationsForUserListResponse
-    :: ManagedConfigurationsForUserListResponse
-managedConfigurationsForUserListResponse =
-    ManagedConfigurationsForUserListResponse'
-    { _mcfulrManagedConfigurationForUser = Nothing
-    , _mcfulrKind = "androidenterprise#managedConfigurationsForUserListResponse"
-    }
-
--- | A managed configuration for an app for a specific user.
-mcfulrManagedConfigurationForUser :: Lens' ManagedConfigurationsForUserListResponse [ManagedConfiguration]
-mcfulrManagedConfigurationForUser
-  = lens _mcfulrManagedConfigurationForUser
-      (\ s a -> s{_mcfulrManagedConfigurationForUser = a})
-      . _Default
-      . _Coerce
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#managedConfigurationsForUserListResponse\".
-mcfulrKind :: Lens' ManagedConfigurationsForUserListResponse Text
-mcfulrKind
-  = lens _mcfulrKind (\ s a -> s{_mcfulrKind = a})
-
-instance FromJSON
-         ManagedConfigurationsForUserListResponse where
-        parseJSON
-          = withObject
-              "ManagedConfigurationsForUserListResponse"
-              (\ o ->
-                 ManagedConfigurationsForUserListResponse' <$>
-                   (o .:? "managedConfigurationForUser" .!= mempty) <*>
-                     (o .:? "kind" .!=
-                        "androidenterprise#managedConfigurationsForUserListResponse"))
-
-instance ToJSON
-         ManagedConfigurationsForUserListResponse where
-        toJSON ManagedConfigurationsForUserListResponse'{..}
-          = object
-              (catMaybes
-                 [("managedConfigurationForUser" .=) <$>
-                    _mcfulrManagedConfigurationForUser,
-                  Just ("kind" .= _mcfulrKind)])
-
--- | A configuration variables resource contains the managed configuration
--- settings ID to be applied to a single user, as well as the variable set
--- that is attributed to the user. The variable set will be used to replace
--- placeholders in the managed configuration settings.
---
--- /See:/ 'configurationVariables' smart constructor.
-data ConfigurationVariables = ConfigurationVariables'
-    { _cvKind        :: !Text
-    , _cvMcmId       :: !(Maybe Text)
-    , _cvVariableSet :: !(Maybe [VariableSet])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ConfigurationVariables' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cvKind'
---
--- * 'cvMcmId'
---
--- * 'cvVariableSet'
-configurationVariables
-    :: ConfigurationVariables
-configurationVariables =
-    ConfigurationVariables'
-    { _cvKind = "androidenterprise#configurationVariables"
-    , _cvMcmId = Nothing
-    , _cvVariableSet = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#configurationVariables\".
-cvKind :: Lens' ConfigurationVariables Text
-cvKind = lens _cvKind (\ s a -> s{_cvKind = a})
-
--- | The ID of the managed configurations settings.
-cvMcmId :: Lens' ConfigurationVariables (Maybe Text)
-cvMcmId = lens _cvMcmId (\ s a -> s{_cvMcmId = a})
-
--- | The variable set that is attributed to the user.
-cvVariableSet :: Lens' ConfigurationVariables [VariableSet]
-cvVariableSet
-  = lens _cvVariableSet
-      (\ s a -> s{_cvVariableSet = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ConfigurationVariables where
-        parseJSON
-          = withObject "ConfigurationVariables"
-              (\ o ->
-                 ConfigurationVariables' <$>
-                   (o .:? "kind" .!=
-                      "androidenterprise#configurationVariables")
-                     <*> (o .:? "mcmId")
-                     <*> (o .:? "variableSet" .!= mempty))
-
-instance ToJSON ConfigurationVariables where
-        toJSON ConfigurationVariables'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _cvKind), ("mcmId" .=) <$> _cvMcmId,
-                  ("variableSet" .=) <$> _cvVariableSet])
-
--- | General setting for the managed Google Play store layout, currently only
--- specifying the page to display the first time the store is opened.
---
--- /See:/ 'storeLayout' smart constructor.
-data StoreLayout = StoreLayout'
-    { _slStoreLayoutType :: !(Maybe Text)
-    , _slKind            :: !Text
-    , _slHomepageId      :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'StoreLayout' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'slStoreLayoutType'
---
--- * 'slKind'
---
--- * 'slHomepageId'
-storeLayout
-    :: StoreLayout
-storeLayout =
-    StoreLayout'
-    { _slStoreLayoutType = Nothing
-    , _slKind = "androidenterprise#storeLayout"
-    , _slHomepageId = Nothing
-    }
-
--- | The store layout type. By default, this value is set to \"basic\" if the
--- homepageId field is not set, and to \"custom\" otherwise. If set to
--- \"basic\", the layout will consist of all approved apps that have been
--- whitelisted for the user.
-slStoreLayoutType :: Lens' StoreLayout (Maybe Text)
-slStoreLayoutType
-  = lens _slStoreLayoutType
-      (\ s a -> s{_slStoreLayoutType = a})
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#storeLayout\".
-slKind :: Lens' StoreLayout Text
-slKind = lens _slKind (\ s a -> s{_slKind = a})
-
--- | The ID of the store page to be used as the homepage. The homepage is the
--- first page shown in the managed Google Play Store. Not specifying a
--- homepage is equivalent to setting the store layout type to \"basic\".
-slHomepageId :: Lens' StoreLayout (Maybe Text)
-slHomepageId
-  = lens _slHomepageId (\ s a -> s{_slHomepageId = a})
-
-instance FromJSON StoreLayout where
-        parseJSON
-          = withObject "StoreLayout"
-              (\ o ->
-                 StoreLayout' <$>
-                   (o .:? "storeLayoutType") <*>
-                     (o .:? "kind" .!= "androidenterprise#storeLayout")
-                     <*> (o .:? "homepageId"))
-
-instance ToJSON StoreLayout where
-        toJSON StoreLayout'{..}
-          = object
-              (catMaybes
-                 [("storeLayoutType" .=) <$> _slStoreLayoutType,
-                  Just ("kind" .= _slKind),
-                  ("homepageId" .=) <$> _slHomepageId])
-
--- | An event generated when a new app version is uploaded to Google Play and
--- its app restrictions schema changed. To fetch the app restrictions
--- schema for an app, use Products.getAppRestrictionsSchema on the EMM API.
---
--- /See:/ 'appRestrictionsSchemaChangeEvent' smart constructor.
-newtype AppRestrictionsSchemaChangeEvent = AppRestrictionsSchemaChangeEvent'
-    { _arsceProductId :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AppRestrictionsSchemaChangeEvent' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'arsceProductId'
-appRestrictionsSchemaChangeEvent
-    :: AppRestrictionsSchemaChangeEvent
-appRestrictionsSchemaChangeEvent =
-    AppRestrictionsSchemaChangeEvent'
-    { _arsceProductId = Nothing
-    }
-
--- | The id of the product (e.g. \"app:com.google.android.gm\") for which the
--- app restriction schema changed. This field will always be present.
-arsceProductId :: Lens' AppRestrictionsSchemaChangeEvent (Maybe Text)
-arsceProductId
-  = lens _arsceProductId
-      (\ s a -> s{_arsceProductId = a})
-
-instance FromJSON AppRestrictionsSchemaChangeEvent
-         where
-        parseJSON
-          = withObject "AppRestrictionsSchemaChangeEvent"
-              (\ o ->
-                 AppRestrictionsSchemaChangeEvent' <$>
-                   (o .:? "productId"))
-
-instance ToJSON AppRestrictionsSchemaChangeEvent
-         where
-        toJSON AppRestrictionsSchemaChangeEvent'{..}
-          = object
-              (catMaybes [("productId" .=) <$> _arsceProductId])
-
--- | An event generated when a new device is ready to be managed.
---
--- /See:/ 'newDeviceEvent' smart constructor.
-data NewDeviceEvent = NewDeviceEvent'
-    { _ndeUserId         :: !(Maybe Text)
-    , _ndeDpcPackageName :: !(Maybe Text)
-    , _ndeDeviceId       :: !(Maybe Text)
-    , _ndeManagementType :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NewDeviceEvent' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ndeUserId'
---
--- * 'ndeDpcPackageName'
---
--- * 'ndeDeviceId'
---
--- * 'ndeManagementType'
-newDeviceEvent
-    :: NewDeviceEvent
-newDeviceEvent =
-    NewDeviceEvent'
-    { _ndeUserId = Nothing
-    , _ndeDpcPackageName = Nothing
-    , _ndeDeviceId = Nothing
-    , _ndeManagementType = Nothing
-    }
-
--- | The ID of the user. This field will always be present.
-ndeUserId :: Lens' NewDeviceEvent (Maybe Text)
-ndeUserId
-  = lens _ndeUserId (\ s a -> s{_ndeUserId = a})
-
--- | Policy app on the device.
-ndeDpcPackageName :: Lens' NewDeviceEvent (Maybe Text)
-ndeDpcPackageName
-  = lens _ndeDpcPackageName
-      (\ s a -> s{_ndeDpcPackageName = a})
-
--- | The Android ID of the device. This field will always be present.
-ndeDeviceId :: Lens' NewDeviceEvent (Maybe Text)
-ndeDeviceId
-  = lens _ndeDeviceId (\ s a -> s{_ndeDeviceId = a})
-
--- | Identifies the extent to which the device is controlled by an Android
--- EMM in various deployment configurations. Possible values include: -
--- \"managedDevice\", a device where the DPC is set as device owner, -
--- \"managedProfile\", a device where the DPC is set as profile owner.
-ndeManagementType :: Lens' NewDeviceEvent (Maybe Text)
-ndeManagementType
-  = lens _ndeManagementType
-      (\ s a -> s{_ndeManagementType = a})
-
-instance FromJSON NewDeviceEvent where
-        parseJSON
-          = withObject "NewDeviceEvent"
-              (\ o ->
-                 NewDeviceEvent' <$>
-                   (o .:? "userId") <*> (o .:? "dpcPackageName") <*>
-                     (o .:? "deviceId")
-                     <*> (o .:? "managementType"))
-
-instance ToJSON NewDeviceEvent where
-        toJSON NewDeviceEvent'{..}
-          = object
-              (catMaybes
-                 [("userId" .=) <$> _ndeUserId,
-                  ("dpcPackageName" .=) <$> _ndeDpcPackageName,
-                  ("deviceId" .=) <$> _ndeDeviceId,
-                  ("managementType" .=) <$> _ndeManagementType])
-
--- | The device policy for a given managed device.
---
--- /See:/ 'policy' smart constructor.
-data Policy = Policy'
-    { _pProductAvailabilityPolicy :: !(Maybe Text)
-    , _pProductPolicy             :: !(Maybe [ProductPolicy])
-    , _pMaintenanceWindow         :: !(Maybe MaintenanceWindow)
-    , _pAutoUpdatePolicy          :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Policy' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pProductAvailabilityPolicy'
---
--- * 'pProductPolicy'
---
--- * 'pMaintenanceWindow'
---
--- * 'pAutoUpdatePolicy'
-policy
-    :: Policy
-policy =
-    Policy'
-    { _pProductAvailabilityPolicy = Nothing
-    , _pProductPolicy = Nothing
-    , _pMaintenanceWindow = Nothing
-    , _pAutoUpdatePolicy = Nothing
-    }
-
--- | The availability granted to the device for the specified products.
--- \"all\" gives the device access to all products, regardless of approval
--- status. \"all\" does not enable automatic visibility of \"alpha\" or
--- \"beta\" tracks. \"whitelist\" grants the device access the products
--- specified in productPolicy[]. Only products that are approved or
--- products that were previously approved (products with revoked approval)
--- by the enterprise can be whitelisted. If no value is provided, the
--- availability set at the user level is applied by default.
-pProductAvailabilityPolicy :: Lens' Policy (Maybe Text)
-pProductAvailabilityPolicy
-  = lens _pProductAvailabilityPolicy
-      (\ s a -> s{_pProductAvailabilityPolicy = a})
-
--- | The list of product policies.
-pProductPolicy :: Lens' Policy [ProductPolicy]
-pProductPolicy
-  = lens _pProductPolicy
-      (\ s a -> s{_pProductPolicy = a})
-      . _Default
-      . _Coerce
-
--- | The maintenance window defining when apps running in the foreground
--- should be updated.
-pMaintenanceWindow :: Lens' Policy (Maybe MaintenanceWindow)
-pMaintenanceWindow
-  = lens _pMaintenanceWindow
-      (\ s a -> s{_pMaintenanceWindow = a})
-
--- | The auto-update policy for apps installed on the device.
--- \"choiceToTheUser\" allows the device\'s user to configure the app
--- update policy. \"always\" enables auto updates. \"never\" disables auto
--- updates. \"wifiOnly\" enables auto updates only when the device is
--- connected to wifi.
-pAutoUpdatePolicy :: Lens' Policy (Maybe Text)
-pAutoUpdatePolicy
-  = lens _pAutoUpdatePolicy
-      (\ s a -> s{_pAutoUpdatePolicy = a})
-
-instance FromJSON Policy where
-        parseJSON
-          = withObject "Policy"
-              (\ o ->
-                 Policy' <$>
-                   (o .:? "productAvailabilityPolicy") <*>
-                     (o .:? "productPolicy" .!= mempty)
-                     <*> (o .:? "maintenanceWindow")
-                     <*> (o .:? "autoUpdatePolicy"))
-
-instance ToJSON Policy where
-        toJSON Policy'{..}
-          = object
-              (catMaybes
-                 [("productAvailabilityPolicy" .=) <$>
-                    _pProductAvailabilityPolicy,
-                  ("productPolicy" .=) <$> _pProductPolicy,
-                  ("maintenanceWindow" .=) <$> _pMaintenanceWindow,
-                  ("autoUpdatePolicy" .=) <$> _pAutoUpdatePolicy])
-
--- | A token authorizing an admin to access an iframe.
---
--- /See:/ 'administratorWebToken' smart constructor.
-data AdministratorWebToken = AdministratorWebToken'
-    { _awtKind  :: !Text
-    , _awtToken :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AdministratorWebToken' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'awtKind'
---
--- * 'awtToken'
-administratorWebToken
-    :: AdministratorWebToken
-administratorWebToken =
-    AdministratorWebToken'
-    { _awtKind = "androidenterprise#administratorWebToken"
-    , _awtToken = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#administratorWebToken\".
-awtKind :: Lens' AdministratorWebToken Text
-awtKind = lens _awtKind (\ s a -> s{_awtKind = a})
-
--- | An opaque token to be passed to the Play front-end to generate an
--- iframe.
-awtToken :: Lens' AdministratorWebToken (Maybe Text)
-awtToken = lens _awtToken (\ s a -> s{_awtToken = a})
-
-instance FromJSON AdministratorWebToken where
-        parseJSON
-          = withObject "AdministratorWebToken"
-              (\ o ->
-                 AdministratorWebToken' <$>
-                   (o .:? "kind" .!=
-                      "androidenterprise#administratorWebToken")
-                     <*> (o .:? "token"))
-
-instance ToJSON AdministratorWebToken where
-        toJSON AdministratorWebToken'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _awtKind),
-                  ("token" .=) <$> _awtToken])
-
--- | A resource returned by the GenerateSignupUrl API, which contains the
--- Signup URL and Completion Token.
---
--- /See:/ 'signupInfo' smart constructor.
-data SignupInfo = SignupInfo'
-    { _siCompletionToken :: !(Maybe Text)
-    , _siKind            :: !Text
-    , _siURL             :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SignupInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'siCompletionToken'
---
--- * 'siKind'
---
--- * 'siURL'
-signupInfo
-    :: SignupInfo
-signupInfo =
-    SignupInfo'
-    { _siCompletionToken = Nothing
-    , _siKind = "androidenterprise#signupInfo"
-    , _siURL = Nothing
-    }
-
--- | An opaque token that will be required, along with the Enterprise Token,
--- for obtaining the enterprise resource from CompleteSignup.
-siCompletionToken :: Lens' SignupInfo (Maybe Text)
-siCompletionToken
-  = lens _siCompletionToken
-      (\ s a -> s{_siCompletionToken = a})
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#signupInfo\".
-siKind :: Lens' SignupInfo Text
-siKind = lens _siKind (\ s a -> s{_siKind = a})
-
--- | A URL under which the Admin can sign up for an enterprise. The page
--- pointed to cannot be rendered in an iframe.
-siURL :: Lens' SignupInfo (Maybe Text)
-siURL = lens _siURL (\ s a -> s{_siURL = a})
-
-instance FromJSON SignupInfo where
-        parseJSON
-          = withObject "SignupInfo"
-              (\ o ->
-                 SignupInfo' <$>
-                   (o .:? "completionToken") <*>
-                     (o .:? "kind" .!= "androidenterprise#signupInfo")
-                     <*> (o .:? "url"))
-
-instance ToJSON SignupInfo where
-        toJSON SignupInfo'{..}
-          = object
-              (catMaybes
-                 [("completionToken" .=) <$> _siCompletionToken,
-                  Just ("kind" .= _siKind), ("url" .=) <$> _siURL])
-
--- | A Products resource represents an app in the Google Play store that is
--- available to at least some users in the enterprise. (Some apps are
--- restricted to a single enterprise, and no information about them is made
--- available outside that enterprise.) The information provided for each
--- product (localized name, icon, link to the full Google Play details
--- page) is intended to allow a basic representation of the product within
--- an EMM user interface.
---
--- /See:/ 'product' smart constructor.
-data Product = Product'
-    { _pScreenshotURLs             :: !(Maybe [Text])
-    , _pLastUpdatedTimestampMillis :: !(Maybe (Textual Int64))
-    , _pSmallIconURL               :: !(Maybe Text)
-    , _pAuthorName                 :: !(Maybe Text)
-    , _pAppTracks                  :: !(Maybe [TrackInfo])
-    , _pKind                       :: !Text
-    , _pWorkDetailsURL             :: !(Maybe Text)
-    , _pRequiresContainerApp       :: !(Maybe Bool)
-    , _pCategory                   :: !(Maybe Text)
-    , _pAppVersion                 :: !(Maybe [AppVersion])
-    , _pProductPricing             :: !(Maybe Text)
-    , _pDistributionChannel        :: !(Maybe Text)
-    , _pMinAndroidSdkVersion       :: !(Maybe (Textual Int32))
-    , _pAvailableCountries         :: !(Maybe [Text])
-    , _pAvailableTracks            :: !(Maybe [Text])
-    , _pIconURL                    :: !(Maybe Text)
-    , _pPermissions                :: !(Maybe [ProductPermission])
-    , _pTitle                      :: !(Maybe Text)
-    , _pSigningCertificate         :: !(Maybe ProductSigningCertificate)
-    , _pContentRating              :: !(Maybe Text)
-    , _pProductId                  :: !(Maybe Text)
-    , _pRecentChanges              :: !(Maybe Text)
-    , _pDescription                :: !(Maybe Text)
-    , _pDetailsURL                 :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Product' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pScreenshotURLs'
---
--- * 'pLastUpdatedTimestampMillis'
---
--- * 'pSmallIconURL'
---
--- * 'pAuthorName'
---
--- * 'pAppTracks'
---
--- * 'pKind'
---
--- * 'pWorkDetailsURL'
---
--- * 'pRequiresContainerApp'
---
--- * 'pCategory'
---
--- * 'pAppVersion'
---
--- * 'pProductPricing'
---
--- * 'pDistributionChannel'
---
--- * 'pMinAndroidSdkVersion'
---
--- * 'pAvailableCountries'
---
--- * 'pAvailableTracks'
---
--- * 'pIconURL'
---
--- * 'pPermissions'
---
--- * 'pTitle'
---
--- * 'pSigningCertificate'
---
--- * 'pContentRating'
---
--- * 'pProductId'
---
--- * 'pRecentChanges'
---
--- * 'pDescription'
---
--- * 'pDetailsURL'
-product
-    :: Product
-product =
-    Product'
-    { _pScreenshotURLs = Nothing
-    , _pLastUpdatedTimestampMillis = Nothing
-    , _pSmallIconURL = Nothing
-    , _pAuthorName = Nothing
-    , _pAppTracks = Nothing
-    , _pKind = "androidenterprise#product"
-    , _pWorkDetailsURL = Nothing
-    , _pRequiresContainerApp = Nothing
-    , _pCategory = Nothing
-    , _pAppVersion = Nothing
-    , _pProductPricing = Nothing
-    , _pDistributionChannel = Nothing
-    , _pMinAndroidSdkVersion = Nothing
-    , _pAvailableCountries = Nothing
-    , _pAvailableTracks = Nothing
-    , _pIconURL = Nothing
-    , _pPermissions = Nothing
-    , _pTitle = Nothing
-    , _pSigningCertificate = Nothing
-    , _pContentRating = Nothing
-    , _pProductId = Nothing
-    , _pRecentChanges = Nothing
-    , _pDescription = Nothing
-    , _pDetailsURL = Nothing
-    }
-
--- | A list of screenshot links representing the app.
-pScreenshotURLs :: Lens' Product [Text]
-pScreenshotURLs
-  = lens _pScreenshotURLs
-      (\ s a -> s{_pScreenshotURLs = a})
-      . _Default
-      . _Coerce
-
--- | The approximate time (within 7 days) the app was last published,
--- expressed in milliseconds since epoch.
-pLastUpdatedTimestampMillis :: Lens' Product (Maybe Int64)
-pLastUpdatedTimestampMillis
-  = lens _pLastUpdatedTimestampMillis
-      (\ s a -> s{_pLastUpdatedTimestampMillis = a})
-      . mapping _Coerce
-
--- | A link to a smaller image that can be used as an icon for the product.
--- This image is suitable for use at up to 128px x 128px.
-pSmallIconURL :: Lens' Product (Maybe Text)
-pSmallIconURL
-  = lens _pSmallIconURL
-      (\ s a -> s{_pSmallIconURL = a})
-
--- | The name of the author of the product (for example, the app developer).
-pAuthorName :: Lens' Product (Maybe Text)
-pAuthorName
-  = lens _pAuthorName (\ s a -> s{_pAuthorName = a})
-
--- | The tracks visible to the enterprise.
-pAppTracks :: Lens' Product [TrackInfo]
-pAppTracks
-  = lens _pAppTracks (\ s a -> s{_pAppTracks = a}) .
-      _Default
-      . _Coerce
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#product\".
-pKind :: Lens' Product Text
-pKind = lens _pKind (\ s a -> s{_pKind = a})
-
--- | A link to the managed Google Play details page for the product, for use
--- by an Enterprise admin.
-pWorkDetailsURL :: Lens' Product (Maybe Text)
-pWorkDetailsURL
-  = lens _pWorkDetailsURL
-      (\ s a -> s{_pWorkDetailsURL = a})
-
--- | Deprecated.
-pRequiresContainerApp :: Lens' Product (Maybe Bool)
-pRequiresContainerApp
-  = lens _pRequiresContainerApp
-      (\ s a -> s{_pRequiresContainerApp = a})
-
--- | The app category (e.g. RACING, SOCIAL, etc.)
-pCategory :: Lens' Product (Maybe Text)
-pCategory
-  = lens _pCategory (\ s a -> s{_pCategory = a})
-
--- | App versions currently available for this product.
-pAppVersion :: Lens' Product [AppVersion]
-pAppVersion
-  = lens _pAppVersion (\ s a -> s{_pAppVersion = a}) .
-      _Default
-      . _Coerce
-
--- | Whether this product is free, free with in-app purchases, or paid. If
--- the pricing is unknown, this means the product is not generally
--- available anymore (even though it might still be available to people who
--- own it).
-pProductPricing :: Lens' Product (Maybe Text)
-pProductPricing
-  = lens _pProductPricing
-      (\ s a -> s{_pProductPricing = a})
-
--- | How and to whom the package is made available. The value
--- publicGoogleHosted means that the package is available through the Play
--- store and not restricted to a specific enterprise. The value
--- privateGoogleHosted means that the package is a private app (restricted
--- to an enterprise) but hosted by Google. The value privateSelfHosted
--- means that the package is a private app (restricted to an enterprise)
--- and is privately hosted.
-pDistributionChannel :: Lens' Product (Maybe Text)
-pDistributionChannel
-  = lens _pDistributionChannel
-      (\ s a -> s{_pDistributionChannel = a})
-
--- | The minimum Android SDK necessary to run the app.
-pMinAndroidSdkVersion :: Lens' Product (Maybe Int32)
-pMinAndroidSdkVersion
-  = lens _pMinAndroidSdkVersion
-      (\ s a -> s{_pMinAndroidSdkVersion = a})
-      . mapping _Coerce
-
--- | The countries which this app is available in.
-pAvailableCountries :: Lens' Product [Text]
-pAvailableCountries
-  = lens _pAvailableCountries
-      (\ s a -> s{_pAvailableCountries = a})
-      . _Default
-      . _Coerce
-
--- | Deprecated, use appTracks instead.
-pAvailableTracks :: Lens' Product [Text]
-pAvailableTracks
-  = lens _pAvailableTracks
-      (\ s a -> s{_pAvailableTracks = a})
-      . _Default
-      . _Coerce
-
--- | A link to an image that can be used as an icon for the product. This
--- image is suitable for use at up to 512px x 512px.
-pIconURL :: Lens' Product (Maybe Text)
-pIconURL = lens _pIconURL (\ s a -> s{_pIconURL = a})
-
--- | A list of permissions required by the app.
-pPermissions :: Lens' Product [ProductPermission]
-pPermissions
-  = lens _pPermissions (\ s a -> s{_pPermissions = a})
-      . _Default
-      . _Coerce
-
--- | The name of the product.
-pTitle :: Lens' Product (Maybe Text)
-pTitle = lens _pTitle (\ s a -> s{_pTitle = a})
-
--- | The certificate used to sign this product.
-pSigningCertificate :: Lens' Product (Maybe ProductSigningCertificate)
-pSigningCertificate
-  = lens _pSigningCertificate
-      (\ s a -> s{_pSigningCertificate = a})
-
--- | The content rating for this app.
-pContentRating :: Lens' Product (Maybe Text)
-pContentRating
-  = lens _pContentRating
-      (\ s a -> s{_pContentRating = a})
-
--- | A string of the form app:. For example, app:com.google.android.gm
--- represents the Gmail app.
-pProductId :: Lens' Product (Maybe Text)
-pProductId
-  = lens _pProductId (\ s a -> s{_pProductId = a})
-
--- | A description of the recent changes made to the app.
-pRecentChanges :: Lens' Product (Maybe Text)
-pRecentChanges
-  = lens _pRecentChanges
-      (\ s a -> s{_pRecentChanges = a})
-
--- | The localized promotional description, if available.
-pDescription :: Lens' Product (Maybe Text)
-pDescription
-  = lens _pDescription (\ s a -> s{_pDescription = a})
-
--- | A link to the (consumer) Google Play details page for the product.
-pDetailsURL :: Lens' Product (Maybe Text)
-pDetailsURL
-  = lens _pDetailsURL (\ s a -> s{_pDetailsURL = a})
-
-instance FromJSON Product where
-        parseJSON
-          = withObject "Product"
-              (\ o ->
-                 Product' <$>
-                   (o .:? "screenshotUrls" .!= mempty) <*>
-                     (o .:? "lastUpdatedTimestampMillis")
-                     <*> (o .:? "smallIconUrl")
-                     <*> (o .:? "authorName")
-                     <*> (o .:? "appTracks" .!= mempty)
-                     <*> (o .:? "kind" .!= "androidenterprise#product")
-                     <*> (o .:? "workDetailsUrl")
-                     <*> (o .:? "requiresContainerApp")
-                     <*> (o .:? "category")
-                     <*> (o .:? "appVersion" .!= mempty)
-                     <*> (o .:? "productPricing")
-                     <*> (o .:? "distributionChannel")
-                     <*> (o .:? "minAndroidSdkVersion")
-                     <*> (o .:? "availableCountries" .!= mempty)
-                     <*> (o .:? "availableTracks" .!= mempty)
-                     <*> (o .:? "iconUrl")
-                     <*> (o .:? "permissions" .!= mempty)
-                     <*> (o .:? "title")
-                     <*> (o .:? "signingCertificate")
-                     <*> (o .:? "contentRating")
-                     <*> (o .:? "productId")
-                     <*> (o .:? "recentChanges")
-                     <*> (o .:? "description")
-                     <*> (o .:? "detailsUrl"))
-
-instance ToJSON Product where
-        toJSON Product'{..}
-          = object
-              (catMaybes
-                 [("screenshotUrls" .=) <$> _pScreenshotURLs,
-                  ("lastUpdatedTimestampMillis" .=) <$>
-                    _pLastUpdatedTimestampMillis,
-                  ("smallIconUrl" .=) <$> _pSmallIconURL,
-                  ("authorName" .=) <$> _pAuthorName,
-                  ("appTracks" .=) <$> _pAppTracks,
-                  Just ("kind" .= _pKind),
-                  ("workDetailsUrl" .=) <$> _pWorkDetailsURL,
-                  ("requiresContainerApp" .=) <$>
-                    _pRequiresContainerApp,
-                  ("category" .=) <$> _pCategory,
-                  ("appVersion" .=) <$> _pAppVersion,
-                  ("productPricing" .=) <$> _pProductPricing,
-                  ("distributionChannel" .=) <$> _pDistributionChannel,
-                  ("minAndroidSdkVersion" .=) <$>
-                    _pMinAndroidSdkVersion,
-                  ("availableCountries" .=) <$> _pAvailableCountries,
-                  ("availableTracks" .=) <$> _pAvailableTracks,
-                  ("iconUrl" .=) <$> _pIconURL,
-                  ("permissions" .=) <$> _pPermissions,
-                  ("title" .=) <$> _pTitle,
-                  ("signingCertificate" .=) <$> _pSigningCertificate,
-                  ("contentRating" .=) <$> _pContentRating,
-                  ("productId" .=) <$> _pProductId,
-                  ("recentChanges" .=) <$> _pRecentChanges,
-                  ("description" .=) <$> _pDescription,
-                  ("detailsUrl" .=) <$> _pDetailsURL])
-
--- | The entitlement resources for the user.
---
--- /See:/ 'entitlementsListResponse' smart constructor.
-data EntitlementsListResponse = EntitlementsListResponse'
-    { _entKind        :: !Text
-    , _entEntitlement :: !(Maybe [Entitlement])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EntitlementsListResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'entKind'
---
--- * 'entEntitlement'
-entitlementsListResponse
-    :: EntitlementsListResponse
-entitlementsListResponse =
-    EntitlementsListResponse'
-    { _entKind = "androidenterprise#entitlementsListResponse"
-    , _entEntitlement = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#entitlementsListResponse\".
-entKind :: Lens' EntitlementsListResponse Text
-entKind = lens _entKind (\ s a -> s{_entKind = a})
-
--- | An entitlement of a user to a product (e.g. an app). For example, a free
--- app that they have installed, or a paid app that they have been
--- allocated a license to.
-entEntitlement :: Lens' EntitlementsListResponse [Entitlement]
-entEntitlement
-  = lens _entEntitlement
-      (\ s a -> s{_entEntitlement = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON EntitlementsListResponse where
-        parseJSON
-          = withObject "EntitlementsListResponse"
-              (\ o ->
-                 EntitlementsListResponse' <$>
-                   (o .:? "kind" .!=
-                      "androidenterprise#entitlementsListResponse")
-                     <*> (o .:? "entitlement" .!= mempty))
-
-instance ToJSON EntitlementsListResponse where
-        toJSON EntitlementsListResponse'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _entKind),
-                  ("entitlement" .=) <$> _entEntitlement])
-
--- | Information about the permissions required by a specific app and whether
--- they have been accepted by the enterprise.
---
--- /See:/ 'productPermissions' smart constructor.
-data ProductPermissions = ProductPermissions'
-    { _ppsKind       :: !Text
-    , _ppsPermission :: !(Maybe [ProductPermission])
-    , _ppsProductId  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ProductPermissions' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ppsKind'
---
--- * 'ppsPermission'
---
--- * 'ppsProductId'
-productPermissions
-    :: ProductPermissions
-productPermissions =
-    ProductPermissions'
-    { _ppsKind = "androidenterprise#productPermissions"
-    , _ppsPermission = Nothing
-    , _ppsProductId = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#productPermissions\".
-ppsKind :: Lens' ProductPermissions Text
-ppsKind = lens _ppsKind (\ s a -> s{_ppsKind = a})
-
--- | The permissions required by the app.
-ppsPermission :: Lens' ProductPermissions [ProductPermission]
-ppsPermission
-  = lens _ppsPermission
-      (\ s a -> s{_ppsPermission = a})
-      . _Default
-      . _Coerce
-
--- | The ID of the app that the permissions relate to, e.g.
--- \"app:com.google.android.gm\".
-ppsProductId :: Lens' ProductPermissions (Maybe Text)
-ppsProductId
-  = lens _ppsProductId (\ s a -> s{_ppsProductId = a})
-
-instance FromJSON ProductPermissions where
-        parseJSON
-          = withObject "ProductPermissions"
-              (\ o ->
-                 ProductPermissions' <$>
-                   (o .:? "kind" .!=
-                      "androidenterprise#productPermissions")
-                     <*> (o .:? "permission" .!= mempty)
-                     <*> (o .:? "productId"))
-
-instance ToJSON ProductPermissions where
-        toJSON ProductPermissions'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _ppsKind),
-                  ("permission" .=) <$> _ppsPermission,
-                  ("productId" .=) <$> _ppsProductId])
-
--- | A Permissions resource represents some extra capability, to be granted
--- to an Android app, which requires explicit consent. An enterprise admin
--- must consent to these permissions on behalf of their users before an
--- entitlement for the app can be created. The permissions collection is
--- read-only. The information provided for each permission (localized name
--- and description) is intended to be used in the MDM user interface when
--- obtaining consent from the enterprise.
---
--- /See:/ 'permission' smart constructor.
-data Permission = Permission'
-    { _perKind         :: !Text
-    , _perName         :: !(Maybe Text)
-    , _perDescription  :: !(Maybe Text)
-    , _perPermissionId :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Permission' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'perKind'
---
--- * 'perName'
---
--- * 'perDescription'
---
--- * 'perPermissionId'
-permission
-    :: Permission
-permission =
-    Permission'
-    { _perKind = "androidenterprise#permission"
-    , _perName = Nothing
-    , _perDescription = Nothing
-    , _perPermissionId = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#permission\".
-perKind :: Lens' Permission Text
-perKind = lens _perKind (\ s a -> s{_perKind = a})
-
--- | The name of the permission.
-perName :: Lens' Permission (Maybe Text)
-perName = lens _perName (\ s a -> s{_perName = a})
-
--- | A longer description of the Permissions resource, giving more details of
--- what it affects.
-perDescription :: Lens' Permission (Maybe Text)
-perDescription
-  = lens _perDescription
-      (\ s a -> s{_perDescription = a})
-
--- | An opaque string uniquely identifying the permission.
-perPermissionId :: Lens' Permission (Maybe Text)
-perPermissionId
-  = lens _perPermissionId
-      (\ s a -> s{_perPermissionId = a})
-
-instance FromJSON Permission where
-        parseJSON
-          = withObject "Permission"
-              (\ o ->
-                 Permission' <$>
-                   (o .:? "kind" .!= "androidenterprise#permission") <*>
-                     (o .:? "name")
-                     <*> (o .:? "description")
-                     <*> (o .:? "permissionId"))
-
-instance ToJSON Permission where
-        toJSON Permission'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _perKind), ("name" .=) <$> _perName,
-                  ("description" .=) <$> _perDescription,
-                  ("permissionId" .=) <$> _perPermissionId])
-
--- | The web app details for an enterprise.
---
--- /See:/ 'webAppsListResponse' smart constructor.
-data WebAppsListResponse = WebAppsListResponse'
-    { _walrKind   :: !Text
-    , _walrWebApp :: !(Maybe [WebApp])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'WebAppsListResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'walrKind'
---
--- * 'walrWebApp'
-webAppsListResponse
-    :: WebAppsListResponse
-webAppsListResponse =
-    WebAppsListResponse'
-    { _walrKind = "androidenterprise#webAppsListResponse"
-    , _walrWebApp = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#webAppsListResponse\".
-walrKind :: Lens' WebAppsListResponse Text
-walrKind = lens _walrKind (\ s a -> s{_walrKind = a})
-
--- | The manifest describing a web app.
-walrWebApp :: Lens' WebAppsListResponse [WebApp]
-walrWebApp
-  = lens _walrWebApp (\ s a -> s{_walrWebApp = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON WebAppsListResponse where
-        parseJSON
-          = withObject "WebAppsListResponse"
-              (\ o ->
-                 WebAppsListResponse' <$>
-                   (o .:? "kind" .!=
-                      "androidenterprise#webAppsListResponse")
-                     <*> (o .:? "webApp" .!= mempty))
-
-instance ToJSON WebAppsListResponse where
-        toJSON WebAppsListResponse'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _walrKind),
-                  ("webApp" .=) <$> _walrWebApp])
-
---
--- /See:/ 'productsApproveRequest' smart constructor.
-data ProductsApproveRequest = ProductsApproveRequest'
-    { _parApprovalURLInfo     :: !(Maybe ApprovalURLInfo)
-    , _parApprovedPermissions :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ProductsApproveRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'parApprovalURLInfo'
---
--- * 'parApprovedPermissions'
-productsApproveRequest
-    :: ProductsApproveRequest
-productsApproveRequest =
-    ProductsApproveRequest'
-    { _parApprovalURLInfo = Nothing
-    , _parApprovedPermissions = Nothing
-    }
-
--- | The approval URL that was shown to the user. Only the permissions shown
--- to the user with that URL will be accepted, which may not be the
--- product\'s entire set of permissions. For example, the URL may only
--- display new permissions from an update after the product was approved,
--- or not include new permissions if the product was updated since the URL
--- was generated.
-parApprovalURLInfo :: Lens' ProductsApproveRequest (Maybe ApprovalURLInfo)
-parApprovalURLInfo
-  = lens _parApprovalURLInfo
-      (\ s a -> s{_parApprovalURLInfo = a})
-
--- | Sets how new permission requests for the product are handled.
--- \"allPermissions\" automatically approves all current and future
--- permissions for the product. \"currentPermissionsOnly\" approves the
--- current set of permissions for the product, but any future permissions
--- added through updates will require manual reapproval. If not specified,
--- only the current set of permissions will be approved.
-parApprovedPermissions :: Lens' ProductsApproveRequest (Maybe Text)
-parApprovedPermissions
-  = lens _parApprovedPermissions
-      (\ s a -> s{_parApprovedPermissions = a})
-
-instance FromJSON ProductsApproveRequest where
-        parseJSON
-          = withObject "ProductsApproveRequest"
-              (\ o ->
-                 ProductsApproveRequest' <$>
-                   (o .:? "approvalUrlInfo") <*>
-                     (o .:? "approvedPermissions"))
-
-instance ToJSON ProductsApproveRequest where
-        toJSON ProductsApproveRequest'{..}
-          = object
-              (catMaybes
-                 [("approvalUrlInfo" .=) <$> _parApprovalURLInfo,
-                  ("approvedPermissions" .=) <$>
-                    _parApprovedPermissions])
-
---
--- /See:/ 'autoInstallPolicy' smart constructor.
-data AutoInstallPolicy = AutoInstallPolicy'
-    { _aipAutoInstallConstraint :: !(Maybe [AutoInstallConstraint])
-    , _aipAutoInstallPriority   :: !(Maybe (Textual Int32))
-    , _aipAutoInstallMode       :: !(Maybe Text)
-    , _aipMinimumVersionCode    :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AutoInstallPolicy' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aipAutoInstallConstraint'
---
--- * 'aipAutoInstallPriority'
---
--- * 'aipAutoInstallMode'
---
--- * 'aipMinimumVersionCode'
-autoInstallPolicy
-    :: AutoInstallPolicy
-autoInstallPolicy =
-    AutoInstallPolicy'
-    { _aipAutoInstallConstraint = Nothing
-    , _aipAutoInstallPriority = Nothing
-    , _aipAutoInstallMode = Nothing
-    , _aipMinimumVersionCode = Nothing
-    }
-
--- | The constraints for the install. Currently there can be at most one
--- constraint.
-aipAutoInstallConstraint :: Lens' AutoInstallPolicy [AutoInstallConstraint]
-aipAutoInstallConstraint
-  = lens _aipAutoInstallConstraint
-      (\ s a -> s{_aipAutoInstallConstraint = a})
-      . _Default
-      . _Coerce
-
--- | The priority of the install, as an unsigned integer. Lower number means
--- higher priority.
-aipAutoInstallPriority :: Lens' AutoInstallPolicy (Maybe Int32)
-aipAutoInstallPriority
-  = lens _aipAutoInstallPriority
-      (\ s a -> s{_aipAutoInstallPriority = a})
-      . mapping _Coerce
-
--- | The auto install mode. If unset defaults to AVAILABLE.
-aipAutoInstallMode :: Lens' AutoInstallPolicy (Maybe Text)
-aipAutoInstallMode
-  = lens _aipAutoInstallMode
-      (\ s a -> s{_aipAutoInstallMode = a})
-
--- | The minimum version of the app. If a lower version of the app is
--- installed then the app will be auto-updated according to the
--- auto-install constraints, instead of waiting for the regular
--- auto-update.
-aipMinimumVersionCode :: Lens' AutoInstallPolicy (Maybe Int32)
-aipMinimumVersionCode
-  = lens _aipMinimumVersionCode
-      (\ s a -> s{_aipMinimumVersionCode = a})
-      . mapping _Coerce
-
-instance FromJSON AutoInstallPolicy where
-        parseJSON
-          = withObject "AutoInstallPolicy"
-              (\ o ->
-                 AutoInstallPolicy' <$>
-                   (o .:? "autoInstallConstraint" .!= mempty) <*>
-                     (o .:? "autoInstallPriority")
-                     <*> (o .:? "autoInstallMode")
-                     <*> (o .:? "minimumVersionCode"))
-
-instance ToJSON AutoInstallPolicy where
-        toJSON AutoInstallPolicy'{..}
-          = object
-              (catMaybes
-                 [("autoInstallConstraint" .=) <$>
-                    _aipAutoInstallConstraint,
-                  ("autoInstallPriority" .=) <$>
-                    _aipAutoInstallPriority,
-                  ("autoInstallMode" .=) <$> _aipAutoInstallMode,
-                  ("minimumVersionCode" .=) <$>
-                    _aipMinimumVersionCode])
-
--- | The presence of an Entitlements resource indicates that a user has the
--- right to use a particular app. Entitlements are user specific, not
--- device specific. This allows a user with an entitlement to an app to
--- install the app on all their devices. It\'s also possible for a user to
--- hold an entitlement to an app without installing the app on any device.
--- The API can be used to create an entitlement. As an option, you can also
--- use the API to trigger the installation of an app on all a user\'s
--- managed devices at the same time the entitlement is created. If the app
--- is free, creating the entitlement also creates a group license for that
--- app. For paid apps, creating the entitlement consumes one license, and
--- that license remains consumed until the entitlement is removed. If the
--- enterprise hasn\'t purchased enough licenses, then no entitlement is
--- created and the installation fails. An entitlement is also not created
--- for an app if the app requires permissions that the enterprise hasn\'t
--- accepted. If an entitlement is deleted, the app may be uninstalled from
--- a user\'s device. As a best practice, uninstall the app by calling
--- Installs.delete() before deleting the entitlement. Entitlements for apps
--- that a user pays for on an unmanaged profile have \"userPurchase\" as
--- the entitlement reason. These entitlements cannot be removed via the
--- API.
---
--- /See:/ 'entitlement' smart constructor.
-data Entitlement = Entitlement'
-    { _eeKind      :: !Text
-    , _eeReason    :: !(Maybe Text)
-    , _eeProductId :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Entitlement' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eeKind'
---
--- * 'eeReason'
---
--- * 'eeProductId'
-entitlement
-    :: Entitlement
-entitlement =
-    Entitlement'
-    { _eeKind = "androidenterprise#entitlement"
-    , _eeReason = Nothing
-    , _eeProductId = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#entitlement\".
-eeKind :: Lens' Entitlement Text
-eeKind = lens _eeKind (\ s a -> s{_eeKind = a})
-
--- | The reason for the entitlement. For example, \"free\" for free apps.
--- This property is temporary: it will be replaced by the acquisition kind
--- field of group licenses.
-eeReason :: Lens' Entitlement (Maybe Text)
-eeReason = lens _eeReason (\ s a -> s{_eeReason = a})
-
--- | The ID of the product that the entitlement is for. For example,
--- \"app:com.google.android.gm\".
-eeProductId :: Lens' Entitlement (Maybe Text)
-eeProductId
-  = lens _eeProductId (\ s a -> s{_eeProductId = a})
-
-instance FromJSON Entitlement where
-        parseJSON
-          = withObject "Entitlement"
-              (\ o ->
-                 Entitlement' <$>
-                   (o .:? "kind" .!= "androidenterprise#entitlement")
-                     <*> (o .:? "reason")
-                     <*> (o .:? "productId"))
-
-instance ToJSON Entitlement where
-        toJSON Entitlement'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _eeKind),
-                  ("reason" .=) <$> _eeReason,
-                  ("productId" .=) <$> _eeProductId])
-
--- | The matching products.
---
--- /See:/ 'productsListResponse' smart constructor.
-data ProductsListResponse = ProductsListResponse'
-    { _plrTokenPagination :: !(Maybe TokenPagination)
-    , _plrPageInfo        :: !(Maybe PageInfo)
-    , _plrKind            :: !Text
-    , _plrProduct         :: !(Maybe [Product])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ProductsListResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'plrTokenPagination'
---
--- * 'plrPageInfo'
---
--- * 'plrKind'
---
--- * 'plrProduct'
-productsListResponse
-    :: ProductsListResponse
-productsListResponse =
-    ProductsListResponse'
-    { _plrTokenPagination = Nothing
-    , _plrPageInfo = Nothing
-    , _plrKind = "androidenterprise#productsListResponse"
-    , _plrProduct = Nothing
-    }
-
--- | Pagination information for token pagination.
-plrTokenPagination :: Lens' ProductsListResponse (Maybe TokenPagination)
-plrTokenPagination
-  = lens _plrTokenPagination
-      (\ s a -> s{_plrTokenPagination = a})
-
--- | General pagination information.
-plrPageInfo :: Lens' ProductsListResponse (Maybe PageInfo)
-plrPageInfo
-  = lens _plrPageInfo (\ s a -> s{_plrPageInfo = a})
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"androidenterprise#productsListResponse\".
-plrKind :: Lens' ProductsListResponse Text
-plrKind = lens _plrKind (\ s a -> s{_plrKind = a})
-
--- | Information about a product (e.g. an app) in the Google Play store, for
--- display to an enterprise admin.
-plrProduct :: Lens' ProductsListResponse [Product]
-plrProduct
-  = lens _plrProduct (\ s a -> s{_plrProduct = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON ProductsListResponse where
-        parseJSON
-          = withObject "ProductsListResponse"
-              (\ o ->
-                 ProductsListResponse' <$>
-                   (o .:? "tokenPagination") <*> (o .:? "pageInfo") <*>
-                     (o .:? "kind" .!=
-                        "androidenterprise#productsListResponse")
-                     <*> (o .:? "product" .!= mempty))
-
-instance ToJSON ProductsListResponse where
-        toJSON ProductsListResponse'{..}
-          = object
-              (catMaybes
-                 [("tokenPagination" .=) <$> _plrTokenPagination,
-                  ("pageInfo" .=) <$> _plrPageInfo,
-                  Just ("kind" .= _plrKind),
-                  ("product" .=) <$> _plrProduct])
-
--- | WebApp resource info.
---
--- /See:/ 'webApp' smart constructor.
-data WebApp = WebApp'
-    { _waWebAppId    :: !(Maybe Text)
-    , _waVersionCode :: !(Maybe (Textual Int64))
-    , _waIcons       :: !(Maybe [WebAppIcon])
-    , _waStartURL    :: !(Maybe Text)
-    , _waDisplayMode :: !(Maybe Text)
-    , _waIsPublished :: !(Maybe Bool)
-    , _waTitle       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'WebApp' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'waWebAppId'
---
--- * 'waVersionCode'
---
--- * 'waIcons'
---
--- * 'waStartURL'
---
--- * 'waDisplayMode'
---
--- * 'waIsPublished'
---
--- * 'waTitle'
-webApp
-    :: WebApp
-webApp =
-    WebApp'
-    { _waWebAppId = Nothing
-    , _waVersionCode = Nothing
-    , _waIcons = Nothing
-    , _waStartURL = Nothing
-    , _waDisplayMode = Nothing
-    , _waIsPublished = Nothing
-    , _waTitle = Nothing
-    }
-
--- | The ID of the application.
-waWebAppId :: Lens' WebApp (Maybe Text)
-waWebAppId
-  = lens _waWebAppId (\ s a -> s{_waWebAppId = a})
-
--- | The current version of the app. Note that the version can automatically
--- increase during the lifetime of the web app, while Google does internal
--- housekeeping to keep the web app up-to-date.
-waVersionCode :: Lens' WebApp (Maybe Int64)
-waVersionCode
-  = lens _waVersionCode
-      (\ s a -> s{_waVersionCode = a})
-      . mapping _Coerce
-
--- | A list of icons representing this website. Must have at least one
--- element.
-waIcons :: Lens' WebApp [WebAppIcon]
-waIcons
-  = lens _waIcons (\ s a -> s{_waIcons = a}) . _Default
-      . _Coerce
-
--- | The start URL, i.e. the URL that should load when the user opens the
--- application.
-waStartURL :: Lens' WebApp (Maybe Text)
-waStartURL
-  = lens _waStartURL (\ s a -> s{_waStartURL = a})
-
--- | The display mode of the web app.
-waDisplayMode :: Lens' WebApp (Maybe Text)
-waDisplayMode
-  = lens _waDisplayMode
-      (\ s a -> s{_waDisplayMode = a})
-
--- | A flag whether the app has been published to the Play store yet.
-waIsPublished :: Lens' WebApp (Maybe Bool)
-waIsPublished
-  = lens _waIsPublished
-      (\ s a -> s{_waIsPublished = a})
-
--- | The title of the web application as displayed to the user (e.g., amongst
--- a list of other applications, or as a label for an icon).
+data GroupLicense =
+  GroupLicense'
+    { _glKind            :: !Text
+    , _glNumProvisioned  :: !(Maybe (Textual Int32))
+    , _glNumPurchased    :: !(Maybe (Textual Int32))
+    , _glApproval        :: !(Maybe Text)
+    , _glPermissions     :: !(Maybe Text)
+    , _glProductId       :: !(Maybe Text)
+    , _glAcquisitionKind :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GroupLicense' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'glKind'
+--
+-- * 'glNumProvisioned'
+--
+-- * 'glNumPurchased'
+--
+-- * 'glApproval'
+--
+-- * 'glPermissions'
+--
+-- * 'glProductId'
+--
+-- * 'glAcquisitionKind'
+groupLicense
+    :: GroupLicense
+groupLicense =
+  GroupLicense'
+    { _glKind = "androidenterprise#groupLicense"
+    , _glNumProvisioned = Nothing
+    , _glNumPurchased = Nothing
+    , _glApproval = Nothing
+    , _glPermissions = Nothing
+    , _glProductId = Nothing
+    , _glAcquisitionKind = Nothing
+    }
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#groupLicense\".
+glKind :: Lens' GroupLicense Text
+glKind = lens _glKind (\ s a -> s{_glKind = a})
+
+-- | The total number of provisioned licenses for this product. Returned by
+-- read operations, but ignored in write operations.
+glNumProvisioned :: Lens' GroupLicense (Maybe Int32)
+glNumProvisioned
+  = lens _glNumProvisioned
+      (\ s a -> s{_glNumProvisioned = a})
+      . mapping _Coerce
+
+-- | The number of purchased licenses (possibly in multiple purchases). If
+-- this field is omitted, then there is no limit on the number of licenses
+-- that can be provisioned (for example, if the acquisition kind is
+-- \"free\").
+glNumPurchased :: Lens' GroupLicense (Maybe Int32)
+glNumPurchased
+  = lens _glNumPurchased
+      (\ s a -> s{_glNumPurchased = a})
+      . mapping _Coerce
+
+-- | Whether the product to which this group license relates is currently
+-- approved by the enterprise. Products are approved when a group license
+-- is first created, but this approval may be revoked by an enterprise
+-- admin via Google Play. Unapproved products will not be visible to end
+-- users in collections, and new entitlements to them should not normally
+-- be created.
+glApproval :: Lens' GroupLicense (Maybe Text)
+glApproval
+  = lens _glApproval (\ s a -> s{_glApproval = a})
+
+-- | The permission approval status of the product. This field is only set if
+-- the product is approved. Possible states are: - \"currentApproved\", the
+-- current set of permissions is approved, but additional permissions will
+-- require the administrator to reapprove the product (If the product was
+-- approved without specifying the approved permissions setting, then this
+-- is the default behavior.), - \"needsReapproval\", the product has
+-- unapproved permissions. No additional product licenses can be assigned
+-- until the product is reapproved, - \"allCurrentAndFutureApproved\", the
+-- current permissions are approved and any future permission updates will
+-- be automatically approved without administrator review.
+glPermissions :: Lens' GroupLicense (Maybe Text)
+glPermissions
+  = lens _glPermissions
+      (\ s a -> s{_glPermissions = a})
+
+-- | The ID of the product that the license is for. For example,
+-- \"app:com.google.android.gm\".
+glProductId :: Lens' GroupLicense (Maybe Text)
+glProductId
+  = lens _glProductId (\ s a -> s{_glProductId = a})
+
+-- | How this group license was acquired. \"bulkPurchase\" means that this
+-- Grouplicenses resource was created because the enterprise purchased
+-- licenses for this product; otherwise, the value is \"free\" (for free
+-- products).
+glAcquisitionKind :: Lens' GroupLicense (Maybe Text)
+glAcquisitionKind
+  = lens _glAcquisitionKind
+      (\ s a -> s{_glAcquisitionKind = a})
+
+instance FromJSON GroupLicense where
+        parseJSON
+          = withObject "GroupLicense"
+              (\ o ->
+                 GroupLicense' <$>
+                   (o .:? "kind" .!= "androidenterprise#groupLicense")
+                     <*> (o .:? "numProvisioned")
+                     <*> (o .:? "numPurchased")
+                     <*> (o .:? "approval")
+                     <*> (o .:? "permissions")
+                     <*> (o .:? "productId")
+                     <*> (o .:? "acquisitionKind"))
+
+instance ToJSON GroupLicense where
+        toJSON GroupLicense'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _glKind),
+                  ("numProvisioned" .=) <$> _glNumProvisioned,
+                  ("numPurchased" .=) <$> _glNumPurchased,
+                  ("approval" .=) <$> _glApproval,
+                  ("permissions" .=) <$> _glPermissions,
+                  ("productId" .=) <$> _glProductId,
+                  ("acquisitionKind" .=) <$> _glAcquisitionKind])
+
+-- | The store page resources for the enterprise.
+--
+-- /See:/ 'storeLayoutPagesListResponse' smart constructor.
+data StoreLayoutPagesListResponse =
+  StoreLayoutPagesListResponse'
+    { _slplrKind :: !Text
+    , _slplrPage :: !(Maybe [StorePage])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StoreLayoutPagesListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slplrKind'
+--
+-- * 'slplrPage'
+storeLayoutPagesListResponse
+    :: StoreLayoutPagesListResponse
+storeLayoutPagesListResponse =
+  StoreLayoutPagesListResponse'
+    { _slplrKind = "androidenterprise#storeLayoutPagesListResponse"
+    , _slplrPage = Nothing
+    }
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#storeLayoutPagesListResponse\".
+slplrKind :: Lens' StoreLayoutPagesListResponse Text
+slplrKind
+  = lens _slplrKind (\ s a -> s{_slplrKind = a})
+
+-- | A store page of an enterprise.
+slplrPage :: Lens' StoreLayoutPagesListResponse [StorePage]
+slplrPage
+  = lens _slplrPage (\ s a -> s{_slplrPage = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON StoreLayoutPagesListResponse where
+        parseJSON
+          = withObject "StoreLayoutPagesListResponse"
+              (\ o ->
+                 StoreLayoutPagesListResponse' <$>
+                   (o .:? "kind" .!=
+                      "androidenterprise#storeLayoutPagesListResponse")
+                     <*> (o .:? "page" .!= mempty))
+
+instance ToJSON StoreLayoutPagesListResponse where
+        toJSON StoreLayoutPagesListResponse'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _slplrKind),
+                  ("page" .=) <$> _slplrPage])
+
+-- | A service account that can be used to authenticate as the enterprise to
+-- API calls that require such authentication.
+--
+-- /See:/ 'enterpriseAccount' smart constructor.
+data EnterpriseAccount =
+  EnterpriseAccount'
+    { _eaKind         :: !Text
+    , _eaAccountEmail :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'EnterpriseAccount' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eaKind'
+--
+-- * 'eaAccountEmail'
+enterpriseAccount
+    :: EnterpriseAccount
+enterpriseAccount =
+  EnterpriseAccount'
+    {_eaKind = "androidenterprise#enterpriseAccount", _eaAccountEmail = Nothing}
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#enterpriseAccount\".
+eaKind :: Lens' EnterpriseAccount Text
+eaKind = lens _eaKind (\ s a -> s{_eaKind = a})
+
+-- | The email address of the service account.
+eaAccountEmail :: Lens' EnterpriseAccount (Maybe Text)
+eaAccountEmail
+  = lens _eaAccountEmail
+      (\ s a -> s{_eaAccountEmail = a})
+
+instance FromJSON EnterpriseAccount where
+        parseJSON
+          = withObject "EnterpriseAccount"
+              (\ o ->
+                 EnterpriseAccount' <$>
+                   (o .:? "kind" .!=
+                      "androidenterprise#enterpriseAccount")
+                     <*> (o .:? "accountEmail"))
+
+instance ToJSON EnterpriseAccount where
+        toJSON EnterpriseAccount'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _eaKind),
+                  ("accountEmail" .=) <$> _eaAccountEmail])
+
+-- | A typed value for the restriction.
+--
+-- /See:/ 'appRestrictionsSchemaRestrictionRestrictionValue' smart constructor.
+data AppRestrictionsSchemaRestrictionRestrictionValue =
+  AppRestrictionsSchemaRestrictionRestrictionValue'
+    { _arsrrvValueMultiselect :: !(Maybe [Text])
+    , _arsrrvValueBool        :: !(Maybe Bool)
+    , _arsrrvValueInteger     :: !(Maybe (Textual Int32))
+    , _arsrrvType             :: !(Maybe Text)
+    , _arsrrvValueString      :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AppRestrictionsSchemaRestrictionRestrictionValue' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'arsrrvValueMultiselect'
+--
+-- * 'arsrrvValueBool'
+--
+-- * 'arsrrvValueInteger'
+--
+-- * 'arsrrvType'
+--
+-- * 'arsrrvValueString'
+appRestrictionsSchemaRestrictionRestrictionValue
+    :: AppRestrictionsSchemaRestrictionRestrictionValue
+appRestrictionsSchemaRestrictionRestrictionValue =
+  AppRestrictionsSchemaRestrictionRestrictionValue'
+    { _arsrrvValueMultiselect = Nothing
+    , _arsrrvValueBool = Nothing
+    , _arsrrvValueInteger = Nothing
+    , _arsrrvType = Nothing
+    , _arsrrvValueString = Nothing
+    }
+
+
+-- | The list of string values - this will only be present if type is
+-- multiselect.
+arsrrvValueMultiselect :: Lens' AppRestrictionsSchemaRestrictionRestrictionValue [Text]
+arsrrvValueMultiselect
+  = lens _arsrrvValueMultiselect
+      (\ s a -> s{_arsrrvValueMultiselect = a})
+      . _Default
+      . _Coerce
+
+-- | The boolean value - this will only be present if type is bool.
+arsrrvValueBool :: Lens' AppRestrictionsSchemaRestrictionRestrictionValue (Maybe Bool)
+arsrrvValueBool
+  = lens _arsrrvValueBool
+      (\ s a -> s{_arsrrvValueBool = a})
+
+-- | The integer value - this will only be present if type is integer.
+arsrrvValueInteger :: Lens' AppRestrictionsSchemaRestrictionRestrictionValue (Maybe Int32)
+arsrrvValueInteger
+  = lens _arsrrvValueInteger
+      (\ s a -> s{_arsrrvValueInteger = a})
+      . mapping _Coerce
+
+-- | The type of the value being provided.
+arsrrvType :: Lens' AppRestrictionsSchemaRestrictionRestrictionValue (Maybe Text)
+arsrrvType
+  = lens _arsrrvType (\ s a -> s{_arsrrvType = a})
+
+-- | The string value - this will be present for types string, choice and
+-- hidden.
+arsrrvValueString :: Lens' AppRestrictionsSchemaRestrictionRestrictionValue (Maybe Text)
+arsrrvValueString
+  = lens _arsrrvValueString
+      (\ s a -> s{_arsrrvValueString = a})
+
+instance FromJSON
+           AppRestrictionsSchemaRestrictionRestrictionValue
+         where
+        parseJSON
+          = withObject
+              "AppRestrictionsSchemaRestrictionRestrictionValue"
+              (\ o ->
+                 AppRestrictionsSchemaRestrictionRestrictionValue' <$>
+                   (o .:? "valueMultiselect" .!= mempty) <*>
+                     (o .:? "valueBool")
+                     <*> (o .:? "valueInteger")
+                     <*> (o .:? "type")
+                     <*> (o .:? "valueString"))
+
+instance ToJSON
+           AppRestrictionsSchemaRestrictionRestrictionValue
+         where
+        toJSON
+          AppRestrictionsSchemaRestrictionRestrictionValue'{..}
+          = object
+              (catMaybes
+                 [("valueMultiselect" .=) <$> _arsrrvValueMultiselect,
+                  ("valueBool" .=) <$> _arsrrvValueBool,
+                  ("valueInteger" .=) <$> _arsrrvValueInteger,
+                  ("type" .=) <$> _arsrrvType,
+                  ("valueString" .=) <$> _arsrrvValueString])
+
+--
+-- /See:/ 'administratorWebTokenSpecPlaySearch' smart constructor.
+data AdministratorWebTokenSpecPlaySearch =
+  AdministratorWebTokenSpecPlaySearch'
+    { _awtspsEnabled     :: !(Maybe Bool)
+    , _awtspsApproveApps :: !(Maybe Bool)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AdministratorWebTokenSpecPlaySearch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'awtspsEnabled'
+--
+-- * 'awtspsApproveApps'
+administratorWebTokenSpecPlaySearch
+    :: AdministratorWebTokenSpecPlaySearch
+administratorWebTokenSpecPlaySearch =
+  AdministratorWebTokenSpecPlaySearch'
+    {_awtspsEnabled = Nothing, _awtspsApproveApps = Nothing}
+
+
+-- | Whether the managed Play Search apps page is displayed. Default is true.
+awtspsEnabled :: Lens' AdministratorWebTokenSpecPlaySearch (Maybe Bool)
+awtspsEnabled
+  = lens _awtspsEnabled
+      (\ s a -> s{_awtspsEnabled = a})
+
+-- | Allow access to the iframe in approve mode. Default is false.
+awtspsApproveApps :: Lens' AdministratorWebTokenSpecPlaySearch (Maybe Bool)
+awtspsApproveApps
+  = lens _awtspsApproveApps
+      (\ s a -> s{_awtspsApproveApps = a})
+
+instance FromJSON AdministratorWebTokenSpecPlaySearch
+         where
+        parseJSON
+          = withObject "AdministratorWebTokenSpecPlaySearch"
+              (\ o ->
+                 AdministratorWebTokenSpecPlaySearch' <$>
+                   (o .:? "enabled") <*> (o .:? "approveApps"))
+
+instance ToJSON AdministratorWebTokenSpecPlaySearch
+         where
+        toJSON AdministratorWebTokenSpecPlaySearch'{..}
+          = object
+              (catMaybes
+                 [("enabled" .=) <$> _awtspsEnabled,
+                  ("approveApps" .=) <$> _awtspsApproveApps])
+
+-- | The state of a user\'s device, as accessed by the getState and setState
+-- methods on device resources.
+--
+-- /See:/ 'deviceState' smart constructor.
+data DeviceState =
+  DeviceState'
+    { _dsKind         :: !Text
+    , _dsAccountState :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DeviceState' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dsKind'
+--
+-- * 'dsAccountState'
+deviceState
+    :: DeviceState
+deviceState =
+  DeviceState'
+    {_dsKind = "androidenterprise#deviceState", _dsAccountState = Nothing}
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#deviceState\".
+dsKind :: Lens' DeviceState Text
+dsKind = lens _dsKind (\ s a -> s{_dsKind = a})
+
+-- | The state of the Google account on the device. \"enabled\" indicates
+-- that the Google account on the device can be used to access Google
+-- services (including Google Play), while \"disabled\" means that it
+-- cannot. A new device is initially in the \"disabled\" state.
+dsAccountState :: Lens' DeviceState (Maybe Text)
+dsAccountState
+  = lens _dsAccountState
+      (\ s a -> s{_dsAccountState = a})
+
+instance FromJSON DeviceState where
+        parseJSON
+          = withObject "DeviceState"
+              (\ o ->
+                 DeviceState' <$>
+                   (o .:? "kind" .!= "androidenterprise#deviceState")
+                     <*> (o .:? "accountState"))
+
+instance ToJSON DeviceState where
+        toJSON DeviceState'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _dsKind),
+                  ("accountState" .=) <$> _dsAccountState])
+
+-- | The user resources for the group license.
+--
+-- /See:/ 'groupLicenseUsersListResponse' smart constructor.
+data GroupLicenseUsersListResponse =
+  GroupLicenseUsersListResponse'
+    { _glulrKind :: !Text
+    , _glulrUser :: !(Maybe [User])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GroupLicenseUsersListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'glulrKind'
+--
+-- * 'glulrUser'
+groupLicenseUsersListResponse
+    :: GroupLicenseUsersListResponse
+groupLicenseUsersListResponse =
+  GroupLicenseUsersListResponse'
+    { _glulrKind = "androidenterprise#groupLicenseUsersListResponse"
+    , _glulrUser = Nothing
+    }
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#groupLicenseUsersListResponse\".
+glulrKind :: Lens' GroupLicenseUsersListResponse Text
+glulrKind
+  = lens _glulrKind (\ s a -> s{_glulrKind = a})
+
+-- | A user of an enterprise.
+glulrUser :: Lens' GroupLicenseUsersListResponse [User]
+glulrUser
+  = lens _glulrUser (\ s a -> s{_glulrUser = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON GroupLicenseUsersListResponse where
+        parseJSON
+          = withObject "GroupLicenseUsersListResponse"
+              (\ o ->
+                 GroupLicenseUsersListResponse' <$>
+                   (o .:? "kind" .!=
+                      "androidenterprise#groupLicenseUsersListResponse")
+                     <*> (o .:? "user" .!= mempty))
+
+instance ToJSON GroupLicenseUsersListResponse where
+        toJSON GroupLicenseUsersListResponse'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _glulrKind),
+                  ("user" .=) <$> _glulrUser])
+
+--
+-- /See:/ 'tokenPagination' smart constructor.
+data TokenPagination =
+  TokenPagination'
+    { _tpNextPageToken     :: !(Maybe Text)
+    , _tpPreviousPageToken :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TokenPagination' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpNextPageToken'
+--
+-- * 'tpPreviousPageToken'
+tokenPagination
+    :: TokenPagination
+tokenPagination =
+  TokenPagination' {_tpNextPageToken = Nothing, _tpPreviousPageToken = Nothing}
+
+
+tpNextPageToken :: Lens' TokenPagination (Maybe Text)
+tpNextPageToken
+  = lens _tpNextPageToken
+      (\ s a -> s{_tpNextPageToken = a})
+
+tpPreviousPageToken :: Lens' TokenPagination (Maybe Text)
+tpPreviousPageToken
+  = lens _tpPreviousPageToken
+      (\ s a -> s{_tpPreviousPageToken = a})
+
+instance FromJSON TokenPagination where
+        parseJSON
+          = withObject "TokenPagination"
+              (\ o ->
+                 TokenPagination' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "previousPageToken"))
+
+instance ToJSON TokenPagination where
+        toJSON TokenPagination'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _tpNextPageToken,
+                  ("previousPageToken" .=) <$> _tpPreviousPageToken])
+
+--
+-- /See:/ 'administratorWebTokenSpecWebApps' smart constructor.
+newtype AdministratorWebTokenSpecWebApps =
+  AdministratorWebTokenSpecWebApps'
+    { _awtswaEnabled :: Maybe Bool
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AdministratorWebTokenSpecWebApps' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'awtswaEnabled'
+administratorWebTokenSpecWebApps
+    :: AdministratorWebTokenSpecWebApps
+administratorWebTokenSpecWebApps =
+  AdministratorWebTokenSpecWebApps' {_awtswaEnabled = Nothing}
+
+
+-- | Whether the Web Apps page is displayed. Default is true.
+awtswaEnabled :: Lens' AdministratorWebTokenSpecWebApps (Maybe Bool)
+awtswaEnabled
+  = lens _awtswaEnabled
+      (\ s a -> s{_awtswaEnabled = a})
+
+instance FromJSON AdministratorWebTokenSpecWebApps
+         where
+        parseJSON
+          = withObject "AdministratorWebTokenSpecWebApps"
+              (\ o ->
+                 AdministratorWebTokenSpecWebApps' <$>
+                   (o .:? "enabled"))
+
+instance ToJSON AdministratorWebTokenSpecWebApps
+         where
+        toJSON AdministratorWebTokenSpecWebApps'{..}
+          = object
+              (catMaybes [("enabled" .=) <$> _awtswaEnabled])
+
+-- | Information on an approval URL.
+--
+-- /See:/ 'approvalURLInfo' smart constructor.
+data ApprovalURLInfo =
+  ApprovalURLInfo'
+    { _auiApprovalURL :: !(Maybe Text)
+    , _auiKind        :: !Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ApprovalURLInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'auiApprovalURL'
+--
+-- * 'auiKind'
+approvalURLInfo
+    :: ApprovalURLInfo
+approvalURLInfo =
+  ApprovalURLInfo'
+    {_auiApprovalURL = Nothing, _auiKind = "androidenterprise#approvalUrlInfo"}
+
+
+-- | A URL that displays a product\'s permissions and that can also be used
+-- to approve the product with the Products.approve call.
+auiApprovalURL :: Lens' ApprovalURLInfo (Maybe Text)
+auiApprovalURL
+  = lens _auiApprovalURL
+      (\ s a -> s{_auiApprovalURL = a})
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#approvalUrlInfo\".
+auiKind :: Lens' ApprovalURLInfo Text
+auiKind = lens _auiKind (\ s a -> s{_auiKind = a})
+
+instance FromJSON ApprovalURLInfo where
+        parseJSON
+          = withObject "ApprovalURLInfo"
+              (\ o ->
+                 ApprovalURLInfo' <$>
+                   (o .:? "approvalUrl") <*>
+                     (o .:? "kind" .!=
+                        "androidenterprise#approvalUrlInfo"))
+
+instance ToJSON ApprovalURLInfo where
+        toJSON ApprovalURLInfo'{..}
+          = object
+              (catMaybes
+                 [("approvalUrl" .=) <$> _auiApprovalURL,
+                  Just ("kind" .= _auiKind)])
+
+-- | The managed configurations settings for a product.
+--
+-- /See:/ 'managedConfigurationsSettingsListResponse' smart constructor.
+data ManagedConfigurationsSettingsListResponse =
+  ManagedConfigurationsSettingsListResponse'
+    { _mcslrKind                          :: !Text
+    , _mcslrManagedConfigurationsSettings :: !(Maybe [ManagedConfigurationsSettings])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ManagedConfigurationsSettingsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mcslrKind'
+--
+-- * 'mcslrManagedConfigurationsSettings'
+managedConfigurationsSettingsListResponse
+    :: ManagedConfigurationsSettingsListResponse
+managedConfigurationsSettingsListResponse =
+  ManagedConfigurationsSettingsListResponse'
+    { _mcslrKind = "androidenterprise#managedConfigurationsSettingsListResponse"
+    , _mcslrManagedConfigurationsSettings = Nothing
+    }
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#managedConfigurationsSettingsListResponse\".
+mcslrKind :: Lens' ManagedConfigurationsSettingsListResponse Text
+mcslrKind
+  = lens _mcslrKind (\ s a -> s{_mcslrKind = a})
+
+-- | A managed configurations settings for an app that may be assigned to a
+-- group of users in an enterprise.
+mcslrManagedConfigurationsSettings :: Lens' ManagedConfigurationsSettingsListResponse [ManagedConfigurationsSettings]
+mcslrManagedConfigurationsSettings
+  = lens _mcslrManagedConfigurationsSettings
+      (\ s a -> s{_mcslrManagedConfigurationsSettings = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+           ManagedConfigurationsSettingsListResponse
+         where
+        parseJSON
+          = withObject
+              "ManagedConfigurationsSettingsListResponse"
+              (\ o ->
+                 ManagedConfigurationsSettingsListResponse' <$>
+                   (o .:? "kind" .!=
+                      "androidenterprise#managedConfigurationsSettingsListResponse")
+                     <*>
+                     (o .:? "managedConfigurationsSettings" .!= mempty))
+
+instance ToJSON
+           ManagedConfigurationsSettingsListResponse
+         where
+        toJSON ManagedConfigurationsSettingsListResponse'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _mcslrKind),
+                  ("managedConfigurationsSettings" .=) <$>
+                    _mcslrManagedConfigurationsSettings])
+
+-- | A managed property of a managed configuration. The property must match
+-- one of the properties in the app restrictions schema of the product.
+-- Exactly one of the value fields must be populated, and it must match the
+-- property\'s type in the app restrictions schema.
+--
+-- /See:/ 'managedProperty' smart constructor.
+data ManagedProperty =
+  ManagedProperty'
+    { _mpValueStringArray :: !(Maybe [Text])
+    , _mpValueBool        :: !(Maybe Bool)
+    , _mpKey              :: !(Maybe Text)
+    , _mpValueBundle      :: !(Maybe ManagedPropertyBundle)
+    , _mpValueInteger     :: !(Maybe (Textual Int32))
+    , _mpValueBundleArray :: !(Maybe [ManagedPropertyBundle])
+    , _mpValueString      :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ManagedProperty' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpValueStringArray'
+--
+-- * 'mpValueBool'
+--
+-- * 'mpKey'
+--
+-- * 'mpValueBundle'
+--
+-- * 'mpValueInteger'
+--
+-- * 'mpValueBundleArray'
+--
+-- * 'mpValueString'
+managedProperty
+    :: ManagedProperty
+managedProperty =
+  ManagedProperty'
+    { _mpValueStringArray = Nothing
+    , _mpValueBool = Nothing
+    , _mpKey = Nothing
+    , _mpValueBundle = Nothing
+    , _mpValueInteger = Nothing
+    , _mpValueBundleArray = Nothing
+    , _mpValueString = Nothing
+    }
+
+
+-- | The list of string values - this will only be present if type of the
+-- property is multiselect.
+mpValueStringArray :: Lens' ManagedProperty [Text]
+mpValueStringArray
+  = lens _mpValueStringArray
+      (\ s a -> s{_mpValueStringArray = a})
+      . _Default
+      . _Coerce
+
+-- | The boolean value - this will only be present if type of the property is
+-- bool.
+mpValueBool :: Lens' ManagedProperty (Maybe Bool)
+mpValueBool
+  = lens _mpValueBool (\ s a -> s{_mpValueBool = a})
+
+-- | The unique key that identifies the property.
+mpKey :: Lens' ManagedProperty (Maybe Text)
+mpKey = lens _mpKey (\ s a -> s{_mpKey = a})
+
+-- | The bundle of managed properties - this will only be present if type of
+-- the property is bundle.
+mpValueBundle :: Lens' ManagedProperty (Maybe ManagedPropertyBundle)
+mpValueBundle
+  = lens _mpValueBundle
+      (\ s a -> s{_mpValueBundle = a})
+
+-- | The integer value - this will only be present if type of the property is
+-- integer.
+mpValueInteger :: Lens' ManagedProperty (Maybe Int32)
+mpValueInteger
+  = lens _mpValueInteger
+      (\ s a -> s{_mpValueInteger = a})
+      . mapping _Coerce
+
+-- | The list of bundles of properties - this will only be present if type of
+-- the property is bundle_array.
+mpValueBundleArray :: Lens' ManagedProperty [ManagedPropertyBundle]
+mpValueBundleArray
+  = lens _mpValueBundleArray
+      (\ s a -> s{_mpValueBundleArray = a})
+      . _Default
+      . _Coerce
+
+-- | The string value - this will only be present if type of the property is
+-- string, choice or hidden.
+mpValueString :: Lens' ManagedProperty (Maybe Text)
+mpValueString
+  = lens _mpValueString
+      (\ s a -> s{_mpValueString = a})
+
+instance FromJSON ManagedProperty where
+        parseJSON
+          = withObject "ManagedProperty"
+              (\ o ->
+                 ManagedProperty' <$>
+                   (o .:? "valueStringArray" .!= mempty) <*>
+                     (o .:? "valueBool")
+                     <*> (o .:? "key")
+                     <*> (o .:? "valueBundle")
+                     <*> (o .:? "valueInteger")
+                     <*> (o .:? "valueBundleArray" .!= mempty)
+                     <*> (o .:? "valueString"))
+
+instance ToJSON ManagedProperty where
+        toJSON ManagedProperty'{..}
+          = object
+              (catMaybes
+                 [("valueStringArray" .=) <$> _mpValueStringArray,
+                  ("valueBool" .=) <$> _mpValueBool,
+                  ("key" .=) <$> _mpKey,
+                  ("valueBundle" .=) <$> _mpValueBundle,
+                  ("valueInteger" .=) <$> _mpValueInteger,
+                  ("valueBundleArray" .=) <$> _mpValueBundleArray,
+                  ("valueString" .=) <$> _mpValueString])
+
+-- | The store page resources for the enterprise.
+--
+-- /See:/ 'storeLayoutClustersListResponse' smart constructor.
+data StoreLayoutClustersListResponse =
+  StoreLayoutClustersListResponse'
+    { _slclrCluster :: !(Maybe [StoreCluster])
+    , _slclrKind    :: !Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StoreLayoutClustersListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slclrCluster'
+--
+-- * 'slclrKind'
+storeLayoutClustersListResponse
+    :: StoreLayoutClustersListResponse
+storeLayoutClustersListResponse =
+  StoreLayoutClustersListResponse'
+    { _slclrCluster = Nothing
+    , _slclrKind = "androidenterprise#storeLayoutClustersListResponse"
+    }
+
+
+-- | A store cluster of an enterprise.
+slclrCluster :: Lens' StoreLayoutClustersListResponse [StoreCluster]
+slclrCluster
+  = lens _slclrCluster (\ s a -> s{_slclrCluster = a})
+      . _Default
+      . _Coerce
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#storeLayoutClustersListResponse\".
+slclrKind :: Lens' StoreLayoutClustersListResponse Text
+slclrKind
+  = lens _slclrKind (\ s a -> s{_slclrKind = a})
+
+instance FromJSON StoreLayoutClustersListResponse
+         where
+        parseJSON
+          = withObject "StoreLayoutClustersListResponse"
+              (\ o ->
+                 StoreLayoutClustersListResponse' <$>
+                   (o .:? "cluster" .!= mempty) <*>
+                     (o .:? "kind" .!=
+                        "androidenterprise#storeLayoutClustersListResponse"))
+
+instance ToJSON StoreLayoutClustersListResponse where
+        toJSON StoreLayoutClustersListResponse'{..}
+          = object
+              (catMaybes
+                 [("cluster" .=) <$> _slclrCluster,
+                  Just ("kind" .= _slclrKind)])
+
+-- | A managed configuration resource contains the set of managed properties
+-- defined by the app developer in the app\'s managed configurations
+-- schema, as well as any configuration variables defined for the user.
+--
+-- /See:/ 'managedConfiguration' smart constructor.
+data ManagedConfiguration =
+  ManagedConfiguration'
+    { _mcManagedProperty        :: !(Maybe [ManagedProperty])
+    , _mcKind                   :: !Text
+    , _mcConfigurationVariables :: !(Maybe ConfigurationVariables)
+    , _mcProductId              :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ManagedConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mcManagedProperty'
+--
+-- * 'mcKind'
+--
+-- * 'mcConfigurationVariables'
+--
+-- * 'mcProductId'
+managedConfiguration
+    :: ManagedConfiguration
+managedConfiguration =
+  ManagedConfiguration'
+    { _mcManagedProperty = Nothing
+    , _mcKind = "androidenterprise#managedConfiguration"
+    , _mcConfigurationVariables = Nothing
+    , _mcProductId = Nothing
+    }
+
+
+-- | The set of managed properties for this configuration.
+mcManagedProperty :: Lens' ManagedConfiguration [ManagedProperty]
+mcManagedProperty
+  = lens _mcManagedProperty
+      (\ s a -> s{_mcManagedProperty = a})
+      . _Default
+      . _Coerce
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#managedConfiguration\".
+mcKind :: Lens' ManagedConfiguration Text
+mcKind = lens _mcKind (\ s a -> s{_mcKind = a})
+
+-- | Contains the ID of the managed configuration profile and the set of
+-- configuration variables (if any) defined for the user.
+mcConfigurationVariables :: Lens' ManagedConfiguration (Maybe ConfigurationVariables)
+mcConfigurationVariables
+  = lens _mcConfigurationVariables
+      (\ s a -> s{_mcConfigurationVariables = a})
+
+-- | The ID of the product that the managed configuration is for, e.g.
+-- \"app:com.google.android.gm\".
+mcProductId :: Lens' ManagedConfiguration (Maybe Text)
+mcProductId
+  = lens _mcProductId (\ s a -> s{_mcProductId = a})
+
+instance FromJSON ManagedConfiguration where
+        parseJSON
+          = withObject "ManagedConfiguration"
+              (\ o ->
+                 ManagedConfiguration' <$>
+                   (o .:? "managedProperty" .!= mempty) <*>
+                     (o .:? "kind" .!=
+                        "androidenterprise#managedConfiguration")
+                     <*> (o .:? "configurationVariables")
+                     <*> (o .:? "productId"))
+
+instance ToJSON ManagedConfiguration where
+        toJSON ManagedConfiguration'{..}
+          = object
+              (catMaybes
+                 [("managedProperty" .=) <$> _mcManagedProperty,
+                  Just ("kind" .= _mcKind),
+                  ("configurationVariables" .=) <$>
+                    _mcConfigurationVariables,
+                  ("productId" .=) <$> _mcProductId])
+
+-- | Definition of a managed Google Play store cluster, a list of products
+-- displayed as part of a store page.
+--
+-- /See:/ 'storeCluster' smart constructor.
+data StoreCluster =
+  StoreCluster'
+    { _scKind        :: !Text
+    , _scName        :: !(Maybe [LocalizedText])
+    , _scOrderInPage :: !(Maybe Text)
+    , _scId          :: !(Maybe Text)
+    , _scProductId   :: !(Maybe [Text])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StoreCluster' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'scKind'
+--
+-- * 'scName'
+--
+-- * 'scOrderInPage'
+--
+-- * 'scId'
+--
+-- * 'scProductId'
+storeCluster
+    :: StoreCluster
+storeCluster =
+  StoreCluster'
+    { _scKind = "androidenterprise#storeCluster"
+    , _scName = Nothing
+    , _scOrderInPage = Nothing
+    , _scId = Nothing
+    , _scProductId = Nothing
+    }
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#storeCluster\".
+scKind :: Lens' StoreCluster Text
+scKind = lens _scKind (\ s a -> s{_scKind = a})
+
+-- | Ordered list of localized strings giving the name of this page. The text
+-- displayed is the one that best matches the user locale, or the first
+-- entry if there is no good match. There needs to be at least one entry.
+scName :: Lens' StoreCluster [LocalizedText]
+scName
+  = lens _scName (\ s a -> s{_scName = a}) . _Default .
+      _Coerce
+
+-- | String (US-ASCII only) used to determine order of this cluster within
+-- the parent page\'s elements. Page elements are sorted in lexicographic
+-- order of this field. Duplicated values are allowed, but ordering between
+-- elements with duplicate order is undefined. The value of this field is
+-- never visible to a user, it is used solely for the purpose of defining
+-- an ordering. Maximum length is 256 characters.
+scOrderInPage :: Lens' StoreCluster (Maybe Text)
+scOrderInPage
+  = lens _scOrderInPage
+      (\ s a -> s{_scOrderInPage = a})
+
+-- | Unique ID of this cluster. Assigned by the server. Immutable once
+-- assigned.
+scId :: Lens' StoreCluster (Maybe Text)
+scId = lens _scId (\ s a -> s{_scId = a})
+
+-- | List of products in the order they are displayed in the cluster. There
+-- should not be duplicates within a cluster.
+scProductId :: Lens' StoreCluster [Text]
+scProductId
+  = lens _scProductId (\ s a -> s{_scProductId = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON StoreCluster where
+        parseJSON
+          = withObject "StoreCluster"
+              (\ o ->
+                 StoreCluster' <$>
+                   (o .:? "kind" .!= "androidenterprise#storeCluster")
+                     <*> (o .:? "name" .!= mempty)
+                     <*> (o .:? "orderInPage")
+                     <*> (o .:? "id")
+                     <*> (o .:? "productId" .!= mempty))
+
+instance ToJSON StoreCluster where
+        toJSON StoreCluster'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _scKind), ("name" .=) <$> _scName,
+                  ("orderInPage" .=) <$> _scOrderInPage,
+                  ("id" .=) <$> _scId,
+                  ("productId" .=) <$> _scProductId])
+
+-- | Specification for a token used to generate iframes. The token specifies
+-- what data the admin is allowed to modify and the URI the iframe is
+-- allowed to communiate with.
+--
+-- /See:/ 'administratorWebTokenSpec' smart constructor.
+data AdministratorWebTokenSpec =
+  AdministratorWebTokenSpec'
+    { _awtsParent                :: !(Maybe Text)
+    , _awtsPrivateApps           :: !(Maybe AdministratorWebTokenSpecPrivateApps)
+    , _awtsPlaySearch            :: !(Maybe AdministratorWebTokenSpecPlaySearch)
+    , _awtsKind                  :: !Text
+    , _awtsWebApps               :: !(Maybe AdministratorWebTokenSpecWebApps)
+    , _awtsPermission            :: !(Maybe [Text])
+    , _awtsStoreBuilder          :: !(Maybe AdministratorWebTokenSpecStoreBuilder)
+    , _awtsManagedConfigurations :: !(Maybe AdministratorWebTokenSpecManagedConfigurations)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AdministratorWebTokenSpec' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'awtsParent'
+--
+-- * 'awtsPrivateApps'
+--
+-- * 'awtsPlaySearch'
+--
+-- * 'awtsKind'
+--
+-- * 'awtsWebApps'
+--
+-- * 'awtsPermission'
+--
+-- * 'awtsStoreBuilder'
+--
+-- * 'awtsManagedConfigurations'
+administratorWebTokenSpec
+    :: AdministratorWebTokenSpec
+administratorWebTokenSpec =
+  AdministratorWebTokenSpec'
+    { _awtsParent = Nothing
+    , _awtsPrivateApps = Nothing
+    , _awtsPlaySearch = Nothing
+    , _awtsKind = "androidenterprise#administratorWebTokenSpec"
+    , _awtsWebApps = Nothing
+    , _awtsPermission = Nothing
+    , _awtsStoreBuilder = Nothing
+    , _awtsManagedConfigurations = Nothing
+    }
+
+
+-- | The URI of the parent frame hosting the iframe. To prevent XSS, the
+-- iframe may not be hosted at other URIs. This URI must be https.
+awtsParent :: Lens' AdministratorWebTokenSpec (Maybe Text)
+awtsParent
+  = lens _awtsParent (\ s a -> s{_awtsParent = a})
+
+-- | Options for displaying the Private Apps page.
+awtsPrivateApps :: Lens' AdministratorWebTokenSpec (Maybe AdministratorWebTokenSpecPrivateApps)
+awtsPrivateApps
+  = lens _awtsPrivateApps
+      (\ s a -> s{_awtsPrivateApps = a})
+
+-- | Options for displaying the managed Play Search apps page.
+awtsPlaySearch :: Lens' AdministratorWebTokenSpec (Maybe AdministratorWebTokenSpecPlaySearch)
+awtsPlaySearch
+  = lens _awtsPlaySearch
+      (\ s a -> s{_awtsPlaySearch = a})
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#administratorWebTokenSpec\".
+awtsKind :: Lens' AdministratorWebTokenSpec Text
+awtsKind = lens _awtsKind (\ s a -> s{_awtsKind = a})
+
+-- | Options for displaying the Web Apps page.
+awtsWebApps :: Lens' AdministratorWebTokenSpec (Maybe AdministratorWebTokenSpecWebApps)
+awtsWebApps
+  = lens _awtsWebApps (\ s a -> s{_awtsWebApps = a})
+
+-- | Deprecated. Use PlaySearch.approveApps.
+awtsPermission :: Lens' AdministratorWebTokenSpec [Text]
+awtsPermission
+  = lens _awtsPermission
+      (\ s a -> s{_awtsPermission = a})
+      . _Default
+      . _Coerce
+
+-- | Options for displaying the Organize apps page.
+awtsStoreBuilder :: Lens' AdministratorWebTokenSpec (Maybe AdministratorWebTokenSpecStoreBuilder)
+awtsStoreBuilder
+  = lens _awtsStoreBuilder
+      (\ s a -> s{_awtsStoreBuilder = a})
+
+-- | Options for displaying the Managed Configuration page.
+awtsManagedConfigurations :: Lens' AdministratorWebTokenSpec (Maybe AdministratorWebTokenSpecManagedConfigurations)
+awtsManagedConfigurations
+  = lens _awtsManagedConfigurations
+      (\ s a -> s{_awtsManagedConfigurations = a})
+
+instance FromJSON AdministratorWebTokenSpec where
+        parseJSON
+          = withObject "AdministratorWebTokenSpec"
+              (\ o ->
+                 AdministratorWebTokenSpec' <$>
+                   (o .:? "parent") <*> (o .:? "privateApps") <*>
+                     (o .:? "playSearch")
+                     <*>
+                     (o .:? "kind" .!=
+                        "androidenterprise#administratorWebTokenSpec")
+                     <*> (o .:? "webApps")
+                     <*> (o .:? "permission" .!= mempty)
+                     <*> (o .:? "storeBuilder")
+                     <*> (o .:? "managedConfigurations"))
+
+instance ToJSON AdministratorWebTokenSpec where
+        toJSON AdministratorWebTokenSpec'{..}
+          = object
+              (catMaybes
+                 [("parent" .=) <$> _awtsParent,
+                  ("privateApps" .=) <$> _awtsPrivateApps,
+                  ("playSearch" .=) <$> _awtsPlaySearch,
+                  Just ("kind" .= _awtsKind),
+                  ("webApps" .=) <$> _awtsWebApps,
+                  ("permission" .=) <$> _awtsPermission,
+                  ("storeBuilder" .=) <$> _awtsStoreBuilder,
+                  ("managedConfigurations" .=) <$>
+                    _awtsManagedConfigurations])
+
+-- | A product to be made visible to a user.
+--
+-- /See:/ 'productVisibility' smart constructor.
+data ProductVisibility =
+  ProductVisibility'
+    { _pvTracks    :: !(Maybe [Text])
+    , _pvTrackIds  :: !(Maybe [Text])
+    , _pvProductId :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProductVisibility' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pvTracks'
+--
+-- * 'pvTrackIds'
+--
+-- * 'pvProductId'
+productVisibility
+    :: ProductVisibility
+productVisibility =
+  ProductVisibility'
+    {_pvTracks = Nothing, _pvTrackIds = Nothing, _pvProductId = Nothing}
+
+
+-- | Deprecated. Use trackIds instead.
+pvTracks :: Lens' ProductVisibility [Text]
+pvTracks
+  = lens _pvTracks (\ s a -> s{_pvTracks = a}) .
+      _Default
+      . _Coerce
+
+-- | Grants the user visibility to the specified product track(s), identified
+-- by trackIds.
+pvTrackIds :: Lens' ProductVisibility [Text]
+pvTrackIds
+  = lens _pvTrackIds (\ s a -> s{_pvTrackIds = a}) .
+      _Default
+      . _Coerce
+
+-- | The product ID to make visible to the user. Required for each item in
+-- the productVisibility list.
+pvProductId :: Lens' ProductVisibility (Maybe Text)
+pvProductId
+  = lens _pvProductId (\ s a -> s{_pvProductId = a})
+
+instance FromJSON ProductVisibility where
+        parseJSON
+          = withObject "ProductVisibility"
+              (\ o ->
+                 ProductVisibility' <$>
+                   (o .:? "tracks" .!= mempty) <*>
+                     (o .:? "trackIds" .!= mempty)
+                     <*> (o .:? "productId"))
+
+instance ToJSON ProductVisibility where
+        toJSON ProductVisibility'{..}
+          = object
+              (catMaybes
+                 [("tracks" .=) <$> _pvTracks,
+                  ("trackIds" .=) <$> _pvTrackIds,
+                  ("productId" .=) <$> _pvProductId])
+
+-- | A notification of one event relating to an enterprise.
+--
+-- /See:/ 'notification' smart constructor.
+data Notification =
+  Notification'
+    { _nEnterpriseId                     :: !(Maybe Text)
+    , _nNewPermissionsEvent              :: !(Maybe NewPermissionsEvent)
+    , _nProductApprovalEvent             :: !(Maybe ProductApprovalEvent)
+    , _nProductAvailabilityChangeEvent   :: !(Maybe ProductAvailabilityChangeEvent)
+    , _nAppUpdateEvent                   :: !(Maybe AppUpdateEvent)
+    , _nInstallFailureEvent              :: !(Maybe InstallFailureEvent)
+    , _nNotificationType                 :: !(Maybe Text)
+    , _nAppRestrictionsSchemaChangeEvent :: !(Maybe AppRestrictionsSchemaChangeEvent)
+    , _nNewDeviceEvent                   :: !(Maybe NewDeviceEvent)
+    , _nTimestampMillis                  :: !(Maybe (Textual Int64))
+    }
+  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:
+--
+-- * 'nEnterpriseId'
+--
+-- * 'nNewPermissionsEvent'
+--
+-- * 'nProductApprovalEvent'
+--
+-- * 'nProductAvailabilityChangeEvent'
+--
+-- * 'nAppUpdateEvent'
+--
+-- * 'nInstallFailureEvent'
+--
+-- * 'nNotificationType'
+--
+-- * 'nAppRestrictionsSchemaChangeEvent'
+--
+-- * 'nNewDeviceEvent'
+--
+-- * 'nTimestampMillis'
+notification
+    :: Notification
+notification =
+  Notification'
+    { _nEnterpriseId = Nothing
+    , _nNewPermissionsEvent = Nothing
+    , _nProductApprovalEvent = Nothing
+    , _nProductAvailabilityChangeEvent = Nothing
+    , _nAppUpdateEvent = Nothing
+    , _nInstallFailureEvent = Nothing
+    , _nNotificationType = Nothing
+    , _nAppRestrictionsSchemaChangeEvent = Nothing
+    , _nNewDeviceEvent = Nothing
+    , _nTimestampMillis = Nothing
+    }
+
+
+-- | The ID of the enterprise for which the notification is sent. This will
+-- always be present.
+nEnterpriseId :: Lens' Notification (Maybe Text)
+nEnterpriseId
+  = lens _nEnterpriseId
+      (\ s a -> s{_nEnterpriseId = a})
+
+-- | Notifications about new app permissions.
+nNewPermissionsEvent :: Lens' Notification (Maybe NewPermissionsEvent)
+nNewPermissionsEvent
+  = lens _nNewPermissionsEvent
+      (\ s a -> s{_nNewPermissionsEvent = a})
+
+-- | Notifications about changes to a product\'s approval status.
+nProductApprovalEvent :: Lens' Notification (Maybe ProductApprovalEvent)
+nProductApprovalEvent
+  = lens _nProductApprovalEvent
+      (\ s a -> s{_nProductApprovalEvent = a})
+
+-- | Notifications about product availability changes.
+nProductAvailabilityChangeEvent :: Lens' Notification (Maybe ProductAvailabilityChangeEvent)
+nProductAvailabilityChangeEvent
+  = lens _nProductAvailabilityChangeEvent
+      (\ s a -> s{_nProductAvailabilityChangeEvent = a})
+
+-- | Notifications about app updates.
+nAppUpdateEvent :: Lens' Notification (Maybe AppUpdateEvent)
+nAppUpdateEvent
+  = lens _nAppUpdateEvent
+      (\ s a -> s{_nAppUpdateEvent = a})
+
+-- | Notifications about an app installation failure.
+nInstallFailureEvent :: Lens' Notification (Maybe InstallFailureEvent)
+nInstallFailureEvent
+  = lens _nInstallFailureEvent
+      (\ s a -> s{_nInstallFailureEvent = a})
+
+-- | Type of the notification.
+nNotificationType :: Lens' Notification (Maybe Text)
+nNotificationType
+  = lens _nNotificationType
+      (\ s a -> s{_nNotificationType = a})
+
+-- | Notifications about new app restrictions schema changes.
+nAppRestrictionsSchemaChangeEvent :: Lens' Notification (Maybe AppRestrictionsSchemaChangeEvent)
+nAppRestrictionsSchemaChangeEvent
+  = lens _nAppRestrictionsSchemaChangeEvent
+      (\ s a -> s{_nAppRestrictionsSchemaChangeEvent = a})
+
+-- | Notifications about new devices.
+nNewDeviceEvent :: Lens' Notification (Maybe NewDeviceEvent)
+nNewDeviceEvent
+  = lens _nNewDeviceEvent
+      (\ s a -> s{_nNewDeviceEvent = a})
+
+-- | The time when the notification was published in milliseconds since
+-- 1970-01-01T00:00:00Z. This will always be present.
+nTimestampMillis :: Lens' Notification (Maybe Int64)
+nTimestampMillis
+  = lens _nTimestampMillis
+      (\ s a -> s{_nTimestampMillis = a})
+      . mapping _Coerce
+
+instance FromJSON Notification where
+        parseJSON
+          = withObject "Notification"
+              (\ o ->
+                 Notification' <$>
+                   (o .:? "enterpriseId") <*>
+                     (o .:? "newPermissionsEvent")
+                     <*> (o .:? "productApprovalEvent")
+                     <*> (o .:? "productAvailabilityChangeEvent")
+                     <*> (o .:? "appUpdateEvent")
+                     <*> (o .:? "installFailureEvent")
+                     <*> (o .:? "notificationType")
+                     <*> (o .:? "appRestrictionsSchemaChangeEvent")
+                     <*> (o .:? "newDeviceEvent")
+                     <*> (o .:? "timestampMillis"))
+
+instance ToJSON Notification where
+        toJSON Notification'{..}
+          = object
+              (catMaybes
+                 [("enterpriseId" .=) <$> _nEnterpriseId,
+                  ("newPermissionsEvent" .=) <$> _nNewPermissionsEvent,
+                  ("productApprovalEvent" .=) <$>
+                    _nProductApprovalEvent,
+                  ("productAvailabilityChangeEvent" .=) <$>
+                    _nProductAvailabilityChangeEvent,
+                  ("appUpdateEvent" .=) <$> _nAppUpdateEvent,
+                  ("installFailureEvent" .=) <$> _nInstallFailureEvent,
+                  ("notificationType" .=) <$> _nNotificationType,
+                  ("appRestrictionsSchemaChangeEvent" .=) <$>
+                    _nAppRestrictionsSchemaChangeEvent,
+                  ("newDeviceEvent" .=) <$> _nNewDeviceEvent,
+                  ("timestampMillis" .=) <$> _nTimestampMillis])
+
+--
+-- /See:/ 'pageInfo' smart constructor.
+data PageInfo =
+  PageInfo'
+    { _piResultPerPage :: !(Maybe (Textual Int32))
+    , _piTotalResults  :: !(Maybe (Textual Int32))
+    , _piStartIndex    :: !(Maybe (Textual Int32))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PageInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'piResultPerPage'
+--
+-- * 'piTotalResults'
+--
+-- * 'piStartIndex'
+pageInfo
+    :: PageInfo
+pageInfo =
+  PageInfo'
+    { _piResultPerPage = Nothing
+    , _piTotalResults = Nothing
+    , _piStartIndex = Nothing
+    }
+
+
+piResultPerPage :: Lens' PageInfo (Maybe Int32)
+piResultPerPage
+  = lens _piResultPerPage
+      (\ s a -> s{_piResultPerPage = a})
+      . mapping _Coerce
+
+piTotalResults :: Lens' PageInfo (Maybe Int32)
+piTotalResults
+  = lens _piTotalResults
+      (\ s a -> s{_piTotalResults = a})
+      . mapping _Coerce
+
+piStartIndex :: Lens' PageInfo (Maybe Int32)
+piStartIndex
+  = lens _piStartIndex (\ s a -> s{_piStartIndex = a})
+      . mapping _Coerce
+
+instance FromJSON PageInfo where
+        parseJSON
+          = withObject "PageInfo"
+              (\ o ->
+                 PageInfo' <$>
+                   (o .:? "resultPerPage") <*> (o .:? "totalResults")
+                     <*> (o .:? "startIndex"))
+
+instance ToJSON PageInfo where
+        toJSON PageInfo'{..}
+          = object
+              (catMaybes
+                 [("resultPerPage" .=) <$> _piResultPerPage,
+                  ("totalResults" .=) <$> _piTotalResults,
+                  ("startIndex" .=) <$> _piStartIndex])
+
+-- | A product permissions resource represents the set of permissions
+-- required by a specific app and whether or not they have been accepted by
+-- an enterprise admin. The API can be used to read the set of permissions,
+-- and also to update the set to indicate that permissions have been
+-- accepted.
+--
+-- /See:/ 'productPermission' smart constructor.
+data ProductPermission =
+  ProductPermission'
+    { _ppState        :: !(Maybe Text)
+    , _ppPermissionId :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProductPermission' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ppState'
+--
+-- * 'ppPermissionId'
+productPermission
+    :: ProductPermission
+productPermission =
+  ProductPermission' {_ppState = Nothing, _ppPermissionId = Nothing}
+
+
+-- | Whether the permission has been accepted or not.
+ppState :: Lens' ProductPermission (Maybe Text)
+ppState = lens _ppState (\ s a -> s{_ppState = a})
+
+-- | An opaque string uniquely identifying the permission.
+ppPermissionId :: Lens' ProductPermission (Maybe Text)
+ppPermissionId
+  = lens _ppPermissionId
+      (\ s a -> s{_ppPermissionId = a})
+
+instance FromJSON ProductPermission where
+        parseJSON
+          = withObject "ProductPermission"
+              (\ o ->
+                 ProductPermission' <$>
+                   (o .:? "state") <*> (o .:? "permissionId"))
+
+instance ToJSON ProductPermission where
+        toJSON ProductPermission'{..}
+          = object
+              (catMaybes
+                 [("state" .=) <$> _ppState,
+                  ("permissionId" .=) <$> _ppPermissionId])
+
+-- | An event generated when new permissions are added to an app.
+--
+-- /See:/ 'newPermissionsEvent' smart constructor.
+data NewPermissionsEvent =
+  NewPermissionsEvent'
+    { _npeRequestedPermissions :: !(Maybe [Text])
+    , _npeApprovedPermissions  :: !(Maybe [Text])
+    , _npeProductId            :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NewPermissionsEvent' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'npeRequestedPermissions'
+--
+-- * 'npeApprovedPermissions'
+--
+-- * 'npeProductId'
+newPermissionsEvent
+    :: NewPermissionsEvent
+newPermissionsEvent =
+  NewPermissionsEvent'
+    { _npeRequestedPermissions = Nothing
+    , _npeApprovedPermissions = Nothing
+    , _npeProductId = Nothing
+    }
+
+
+-- | The set of permissions that the app is currently requesting. Use
+-- Permissions.Get on the EMM API to retrieve details about these
+-- permissions.
+npeRequestedPermissions :: Lens' NewPermissionsEvent [Text]
+npeRequestedPermissions
+  = lens _npeRequestedPermissions
+      (\ s a -> s{_npeRequestedPermissions = a})
+      . _Default
+      . _Coerce
+
+-- | The set of permissions that the enterprise admin has already approved
+-- for this application. Use Permissions.Get on the EMM API to retrieve
+-- details about these permissions.
+npeApprovedPermissions :: Lens' NewPermissionsEvent [Text]
+npeApprovedPermissions
+  = lens _npeApprovedPermissions
+      (\ s a -> s{_npeApprovedPermissions = a})
+      . _Default
+      . _Coerce
+
+-- | The id of the product (e.g. \"app:com.google.android.gm\") for which new
+-- permissions were added. This field will always be present.
+npeProductId :: Lens' NewPermissionsEvent (Maybe Text)
+npeProductId
+  = lens _npeProductId (\ s a -> s{_npeProductId = a})
+
+instance FromJSON NewPermissionsEvent where
+        parseJSON
+          = withObject "NewPermissionsEvent"
+              (\ o ->
+                 NewPermissionsEvent' <$>
+                   (o .:? "requestedPermissions" .!= mempty) <*>
+                     (o .:? "approvedPermissions" .!= mempty)
+                     <*> (o .:? "productId"))
+
+instance ToJSON NewPermissionsEvent where
+        toJSON NewPermissionsEvent'{..}
+          = object
+              (catMaybes
+                 [("requestedPermissions" .=) <$>
+                    _npeRequestedPermissions,
+                  ("approvedPermissions" .=) <$>
+                    _npeApprovedPermissions,
+                  ("productId" .=) <$> _npeProductId])
+
+-- | An event generated whenever a product\'s availability changes.
+--
+-- /See:/ 'productAvailabilityChangeEvent' smart constructor.
+data ProductAvailabilityChangeEvent =
+  ProductAvailabilityChangeEvent'
+    { _paceAvailabilityStatus :: !(Maybe Text)
+    , _paceProductId          :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProductAvailabilityChangeEvent' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'paceAvailabilityStatus'
+--
+-- * 'paceProductId'
+productAvailabilityChangeEvent
+    :: ProductAvailabilityChangeEvent
+productAvailabilityChangeEvent =
+  ProductAvailabilityChangeEvent'
+    {_paceAvailabilityStatus = Nothing, _paceProductId = Nothing}
+
+
+-- | The new state of the product. This field will always be present.
+paceAvailabilityStatus :: Lens' ProductAvailabilityChangeEvent (Maybe Text)
+paceAvailabilityStatus
+  = lens _paceAvailabilityStatus
+      (\ s a -> s{_paceAvailabilityStatus = a})
+
+-- | The id of the product (e.g. \"app:com.google.android.gm\") for which the
+-- product availability changed. This field will always be present.
+paceProductId :: Lens' ProductAvailabilityChangeEvent (Maybe Text)
+paceProductId
+  = lens _paceProductId
+      (\ s a -> s{_paceProductId = a})
+
+instance FromJSON ProductAvailabilityChangeEvent
+         where
+        parseJSON
+          = withObject "ProductAvailabilityChangeEvent"
+              (\ o ->
+                 ProductAvailabilityChangeEvent' <$>
+                   (o .:? "availabilityStatus") <*> (o .:? "productId"))
+
+instance ToJSON ProductAvailabilityChangeEvent where
+        toJSON ProductAvailabilityChangeEvent'{..}
+          = object
+              (catMaybes
+                 [("availabilityStatus" .=) <$>
+                    _paceAvailabilityStatus,
+                  ("productId" .=) <$> _paceProductId])
+
+-- | An event generated when a product\'s approval status is changed.
+--
+-- /See:/ 'productApprovalEvent' smart constructor.
+data ProductApprovalEvent =
+  ProductApprovalEvent'
+    { _paeApproved  :: !(Maybe Text)
+    , _paeProductId :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProductApprovalEvent' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'paeApproved'
+--
+-- * 'paeProductId'
+productApprovalEvent
+    :: ProductApprovalEvent
+productApprovalEvent =
+  ProductApprovalEvent' {_paeApproved = Nothing, _paeProductId = Nothing}
+
+
+-- | Whether the product was approved or unapproved. This field will always
+-- be present.
+paeApproved :: Lens' ProductApprovalEvent (Maybe Text)
+paeApproved
+  = lens _paeApproved (\ s a -> s{_paeApproved = a})
+
+-- | The id of the product (e.g. \"app:com.google.android.gm\") for which the
+-- approval status has changed. This field will always be present.
+paeProductId :: Lens' ProductApprovalEvent (Maybe Text)
+paeProductId
+  = lens _paeProductId (\ s a -> s{_paeProductId = a})
+
+instance FromJSON ProductApprovalEvent where
+        parseJSON
+          = withObject "ProductApprovalEvent"
+              (\ o ->
+                 ProductApprovalEvent' <$>
+                   (o .:? "approved") <*> (o .:? "productId"))
+
+instance ToJSON ProductApprovalEvent where
+        toJSON ProductApprovalEvent'{..}
+          = object
+              (catMaybes
+                 [("approved" .=) <$> _paeApproved,
+                  ("productId" .=) <$> _paeProductId])
+
+-- | A Devices resource represents a mobile device managed by the EMM and
+-- belonging to a specific enterprise user.
+--
+-- /See:/ 'device' smart constructor.
+data Device =
+  Device'
+    { _dKind           :: !Text
+    , _dPolicy         :: !(Maybe Policy)
+    , _dManagementType :: !(Maybe Text)
+    , _dAndroidId      :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Device' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dKind'
+--
+-- * 'dPolicy'
+--
+-- * 'dManagementType'
+--
+-- * 'dAndroidId'
+device
+    :: Device
+device =
+  Device'
+    { _dKind = "androidenterprise#device"
+    , _dPolicy = Nothing
+    , _dManagementType = Nothing
+    , _dAndroidId = Nothing
+    }
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#device\".
+dKind :: Lens' Device Text
+dKind = lens _dKind (\ s a -> s{_dKind = a})
+
+-- | The policy enforced on the device.
+dPolicy :: Lens' Device (Maybe Policy)
+dPolicy = lens _dPolicy (\ s a -> s{_dPolicy = a})
+
+-- | Identifies the extent to which the device is controlled by a managed
+-- Google Play EMM in various deployment configurations. Possible values
+-- include: - \"managedDevice\", a device that has the EMM\'s device policy
+-- controller (DPC) as the device owner. - \"managedProfile\", a device
+-- that has a profile managed by the DPC (DPC is profile owner) in addition
+-- to a separate, personal profile that is unavailable to the DPC. -
+-- \"containerApp\", no longer used (deprecated). - \"unmanagedProfile\", a
+-- device that has been allowed (by the domain\'s admin, using the Admin
+-- Console to enable the privilege) to use managed Google Play, but the
+-- profile is itself not owned by a DPC.
+dManagementType :: Lens' Device (Maybe Text)
+dManagementType
+  = lens _dManagementType
+      (\ s a -> s{_dManagementType = a})
+
+-- | The Google Play Services Android ID for the device encoded as a
+-- lowercase hex string. For example, \"123456789abcdef0\".
+dAndroidId :: Lens' Device (Maybe Text)
+dAndroidId
+  = lens _dAndroidId (\ s a -> s{_dAndroidId = a})
+
+instance FromJSON Device where
+        parseJSON
+          = withObject "Device"
+              (\ o ->
+                 Device' <$>
+                   (o .:? "kind" .!= "androidenterprise#device") <*>
+                     (o .:? "policy")
+                     <*> (o .:? "managementType")
+                     <*> (o .:? "androidId"))
+
+instance ToJSON Device where
+        toJSON Device'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _dKind), ("policy" .=) <$> _dPolicy,
+                  ("managementType" .=) <$> _dManagementType,
+                  ("androidId" .=) <$> _dAndroidId])
+
+-- | The auto-install constraint. Defines a set of restrictions for
+-- installation. At least one of the fields must be set.
+--
+-- /See:/ 'autoInstallConstraint' smart constructor.
+data AutoInstallConstraint =
+  AutoInstallConstraint'
+    { _aicChargingStateConstraint   :: !(Maybe Text)
+    , _aicDeviceIdleStateConstraint :: !(Maybe Text)
+    , _aicNetworkTypeConstraint     :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AutoInstallConstraint' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aicChargingStateConstraint'
+--
+-- * 'aicDeviceIdleStateConstraint'
+--
+-- * 'aicNetworkTypeConstraint'
+autoInstallConstraint
+    :: AutoInstallConstraint
+autoInstallConstraint =
+  AutoInstallConstraint'
+    { _aicChargingStateConstraint = Nothing
+    , _aicDeviceIdleStateConstraint = Nothing
+    , _aicNetworkTypeConstraint = Nothing
+    }
+
+
+-- | Charging state constraint.
+aicChargingStateConstraint :: Lens' AutoInstallConstraint (Maybe Text)
+aicChargingStateConstraint
+  = lens _aicChargingStateConstraint
+      (\ s a -> s{_aicChargingStateConstraint = a})
+
+-- | Device idle state constraint.
+aicDeviceIdleStateConstraint :: Lens' AutoInstallConstraint (Maybe Text)
+aicDeviceIdleStateConstraint
+  = lens _aicDeviceIdleStateConstraint
+      (\ s a -> s{_aicDeviceIdleStateConstraint = a})
+
+-- | Network type constraint.
+aicNetworkTypeConstraint :: Lens' AutoInstallConstraint (Maybe Text)
+aicNetworkTypeConstraint
+  = lens _aicNetworkTypeConstraint
+      (\ s a -> s{_aicNetworkTypeConstraint = a})
+
+instance FromJSON AutoInstallConstraint where
+        parseJSON
+          = withObject "AutoInstallConstraint"
+              (\ o ->
+                 AutoInstallConstraint' <$>
+                   (o .:? "chargingStateConstraint") <*>
+                     (o .:? "deviceIdleStateConstraint")
+                     <*> (o .:? "networkTypeConstraint"))
+
+instance ToJSON AutoInstallConstraint where
+        toJSON AutoInstallConstraint'{..}
+          = object
+              (catMaybes
+                 [("chargingStateConstraint" .=) <$>
+                    _aicChargingStateConstraint,
+                  ("deviceIdleStateConstraint" .=) <$>
+                    _aicDeviceIdleStateConstraint,
+                  ("networkTypeConstraint" .=) <$>
+                    _aicNetworkTypeConstraint])
+
+-- | Credentials that can be used to authenticate as a service account.
+--
+-- /See:/ 'serviceAccountKey' smart constructor.
+data ServiceAccountKey =
+  ServiceAccountKey'
+    { _sakKind       :: !Text
+    , _sakData       :: !(Maybe Text)
+    , _sakId         :: !(Maybe Text)
+    , _sakType       :: !(Maybe Text)
+    , _sakPublicData :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ServiceAccountKey' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sakKind'
+--
+-- * 'sakData'
+--
+-- * 'sakId'
+--
+-- * 'sakType'
+--
+-- * 'sakPublicData'
+serviceAccountKey
+    :: ServiceAccountKey
+serviceAccountKey =
+  ServiceAccountKey'
+    { _sakKind = "androidenterprise#serviceAccountKey"
+    , _sakData = Nothing
+    , _sakId = Nothing
+    , _sakType = Nothing
+    , _sakPublicData = Nothing
+    }
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#serviceAccountKey\".
+sakKind :: Lens' ServiceAccountKey Text
+sakKind = lens _sakKind (\ s a -> s{_sakKind = a})
+
+-- | The body of the private key credentials file, in string format. This is
+-- only populated when the ServiceAccountKey is created, and is not stored
+-- by Google.
+sakData :: Lens' ServiceAccountKey (Maybe Text)
+sakData = lens _sakData (\ s a -> s{_sakData = a})
+
+-- | An opaque, unique identifier for this ServiceAccountKey. Assigned by the
+-- server.
+sakId :: Lens' ServiceAccountKey (Maybe Text)
+sakId = lens _sakId (\ s a -> s{_sakId = a})
+
+-- | The file format of the generated key data.
+sakType :: Lens' ServiceAccountKey (Maybe Text)
+sakType = lens _sakType (\ s a -> s{_sakType = a})
+
+-- | Public key data for the credentials file. This is an X.509 cert. If you
+-- are using the googleCredentials key type, this is identical to the cert
+-- that can be retrieved by using the X.509 cert url inside of the
+-- credentials file.
+sakPublicData :: Lens' ServiceAccountKey (Maybe Text)
+sakPublicData
+  = lens _sakPublicData
+      (\ s a -> s{_sakPublicData = a})
+
+instance FromJSON ServiceAccountKey where
+        parseJSON
+          = withObject "ServiceAccountKey"
+              (\ o ->
+                 ServiceAccountKey' <$>
+                   (o .:? "kind" .!=
+                      "androidenterprise#serviceAccountKey")
+                     <*> (o .:? "data")
+                     <*> (o .:? "id")
+                     <*> (o .:? "type")
+                     <*> (o .:? "publicData"))
+
+instance ToJSON ServiceAccountKey where
+        toJSON ServiceAccountKey'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _sakKind), ("data" .=) <$> _sakData,
+                  ("id" .=) <$> _sakId, ("type" .=) <$> _sakType,
+                  ("publicData" .=) <$> _sakPublicData])
+
+-- | The install resources for the device.
+--
+-- /See:/ 'installsListResponse' smart constructor.
+data InstallsListResponse =
+  InstallsListResponse'
+    { _ilrKind    :: !Text
+    , _ilrInstall :: !(Maybe [Install])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstallsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ilrKind'
+--
+-- * 'ilrInstall'
+installsListResponse
+    :: InstallsListResponse
+installsListResponse =
+  InstallsListResponse'
+    {_ilrKind = "androidenterprise#installsListResponse", _ilrInstall = Nothing}
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#installsListResponse\".
+ilrKind :: Lens' InstallsListResponse Text
+ilrKind = lens _ilrKind (\ s a -> s{_ilrKind = a})
+
+-- | An installation of an app for a user on a specific device. The existence
+-- of an install implies that the user must have an entitlement to the app.
+ilrInstall :: Lens' InstallsListResponse [Install]
+ilrInstall
+  = lens _ilrInstall (\ s a -> s{_ilrInstall = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON InstallsListResponse where
+        parseJSON
+          = withObject "InstallsListResponse"
+              (\ o ->
+                 InstallsListResponse' <$>
+                   (o .:? "kind" .!=
+                      "androidenterprise#installsListResponse")
+                     <*> (o .:? "install" .!= mempty))
+
+instance ToJSON InstallsListResponse where
+        toJSON InstallsListResponse'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _ilrKind),
+                  ("install" .=) <$> _ilrInstall])
+
+-- | A restriction in the App Restriction Schema represents a piece of
+-- configuration that may be pre-applied.
+--
+-- /See:/ 'appRestrictionsSchemaRestriction' smart constructor.
+data AppRestrictionsSchemaRestriction =
+  AppRestrictionsSchemaRestriction'
+    { _arsrRestrictionType   :: !(Maybe Text)
+    , _arsrEntry             :: !(Maybe [Text])
+    , _arsrKey               :: !(Maybe Text)
+    , _arsrEntryValue        :: !(Maybe [Text])
+    , _arsrDefaultValue      :: !(Maybe AppRestrictionsSchemaRestrictionRestrictionValue)
+    , _arsrTitle             :: !(Maybe Text)
+    , _arsrDescription       :: !(Maybe Text)
+    , _arsrNestedRestriction :: !(Maybe [AppRestrictionsSchemaRestriction])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AppRestrictionsSchemaRestriction' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'arsrRestrictionType'
+--
+-- * 'arsrEntry'
+--
+-- * 'arsrKey'
+--
+-- * 'arsrEntryValue'
+--
+-- * 'arsrDefaultValue'
+--
+-- * 'arsrTitle'
+--
+-- * 'arsrDescription'
+--
+-- * 'arsrNestedRestriction'
+appRestrictionsSchemaRestriction
+    :: AppRestrictionsSchemaRestriction
+appRestrictionsSchemaRestriction =
+  AppRestrictionsSchemaRestriction'
+    { _arsrRestrictionType = Nothing
+    , _arsrEntry = Nothing
+    , _arsrKey = Nothing
+    , _arsrEntryValue = Nothing
+    , _arsrDefaultValue = Nothing
+    , _arsrTitle = Nothing
+    , _arsrDescription = Nothing
+    , _arsrNestedRestriction = Nothing
+    }
+
+
+-- | The type of the restriction.
+arsrRestrictionType :: Lens' AppRestrictionsSchemaRestriction (Maybe Text)
+arsrRestrictionType
+  = lens _arsrRestrictionType
+      (\ s a -> s{_arsrRestrictionType = a})
+
+-- | For choice or multiselect restrictions, the list of possible entries\'
+-- human-readable names.
+arsrEntry :: Lens' AppRestrictionsSchemaRestriction [Text]
+arsrEntry
+  = lens _arsrEntry (\ s a -> s{_arsrEntry = a}) .
+      _Default
+      . _Coerce
+
+-- | The unique key that the product uses to identify the restriction, e.g.
+-- \"com.google.android.gm.fieldname\".
+arsrKey :: Lens' AppRestrictionsSchemaRestriction (Maybe Text)
+arsrKey = lens _arsrKey (\ s a -> s{_arsrKey = a})
+
+-- | For choice or multiselect restrictions, the list of possible entries\'
+-- machine-readable values. These values should be used in the
+-- configuration, either as a single string value for a choice restriction
+-- or in a stringArray for a multiselect restriction.
+arsrEntryValue :: Lens' AppRestrictionsSchemaRestriction [Text]
+arsrEntryValue
+  = lens _arsrEntryValue
+      (\ s a -> s{_arsrEntryValue = a})
+      . _Default
+      . _Coerce
+
+-- | The default value of the restriction. bundle and bundleArray
+-- restrictions never have a default value.
+arsrDefaultValue :: Lens' AppRestrictionsSchemaRestriction (Maybe AppRestrictionsSchemaRestrictionRestrictionValue)
+arsrDefaultValue
+  = lens _arsrDefaultValue
+      (\ s a -> s{_arsrDefaultValue = a})
+
+-- | The name of the restriction.
+arsrTitle :: Lens' AppRestrictionsSchemaRestriction (Maybe Text)
+arsrTitle
+  = lens _arsrTitle (\ s a -> s{_arsrTitle = a})
+
+-- | A longer description of the restriction, giving more detail of what it
+-- affects.
+arsrDescription :: Lens' AppRestrictionsSchemaRestriction (Maybe Text)
+arsrDescription
+  = lens _arsrDescription
+      (\ s a -> s{_arsrDescription = a})
+
+-- | For bundle or bundleArray restrictions, the list of nested restrictions.
+-- A bundle restriction is always nested within a bundleArray restriction,
+-- and a bundleArray restriction is at most two levels deep.
+arsrNestedRestriction :: Lens' AppRestrictionsSchemaRestriction [AppRestrictionsSchemaRestriction]
+arsrNestedRestriction
+  = lens _arsrNestedRestriction
+      (\ s a -> s{_arsrNestedRestriction = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON AppRestrictionsSchemaRestriction
+         where
+        parseJSON
+          = withObject "AppRestrictionsSchemaRestriction"
+              (\ o ->
+                 AppRestrictionsSchemaRestriction' <$>
+                   (o .:? "restrictionType") <*>
+                     (o .:? "entry" .!= mempty)
+                     <*> (o .:? "key")
+                     <*> (o .:? "entryValue" .!= mempty)
+                     <*> (o .:? "defaultValue")
+                     <*> (o .:? "title")
+                     <*> (o .:? "description")
+                     <*> (o .:? "nestedRestriction" .!= mempty))
+
+instance ToJSON AppRestrictionsSchemaRestriction
+         where
+        toJSON AppRestrictionsSchemaRestriction'{..}
+          = object
+              (catMaybes
+                 [("restrictionType" .=) <$> _arsrRestrictionType,
+                  ("entry" .=) <$> _arsrEntry, ("key" .=) <$> _arsrKey,
+                  ("entryValue" .=) <$> _arsrEntryValue,
+                  ("defaultValue" .=) <$> _arsrDefaultValue,
+                  ("title" .=) <$> _arsrTitle,
+                  ("description" .=) <$> _arsrDescription,
+                  ("nestedRestriction" .=) <$> _arsrNestedRestriction])
+
+-- | The policy for a product.
+--
+-- /See:/ 'productPolicy' smart constructor.
+data ProductPolicy =
+  ProductPolicy'
+    { _ppTracks               :: !(Maybe [Text])
+    , _ppManagedConfiguration :: !(Maybe ManagedConfiguration)
+    , _ppTrackIds             :: !(Maybe [Text])
+    , _ppAutoInstallPolicy    :: !(Maybe AutoInstallPolicy)
+    , _ppProductId            :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProductPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ppTracks'
+--
+-- * 'ppManagedConfiguration'
+--
+-- * 'ppTrackIds'
+--
+-- * 'ppAutoInstallPolicy'
+--
+-- * 'ppProductId'
+productPolicy
+    :: ProductPolicy
+productPolicy =
+  ProductPolicy'
+    { _ppTracks = Nothing
+    , _ppManagedConfiguration = Nothing
+    , _ppTrackIds = Nothing
+    , _ppAutoInstallPolicy = Nothing
+    , _ppProductId = Nothing
+    }
+
+
+-- | Deprecated. Use trackIds instead.
+ppTracks :: Lens' ProductPolicy [Text]
+ppTracks
+  = lens _ppTracks (\ s a -> s{_ppTracks = a}) .
+      _Default
+      . _Coerce
+
+-- | The managed configuration for the product.
+ppManagedConfiguration :: Lens' ProductPolicy (Maybe ManagedConfiguration)
+ppManagedConfiguration
+  = lens _ppManagedConfiguration
+      (\ s a -> s{_ppManagedConfiguration = a})
+
+-- | Grants the device visibility to the specified product release track(s),
+-- identified by trackIds. The list of release tracks of a product can be
+-- obtained by calling Products.Get.
+ppTrackIds :: Lens' ProductPolicy [Text]
+ppTrackIds
+  = lens _ppTrackIds (\ s a -> s{_ppTrackIds = a}) .
+      _Default
+      . _Coerce
+
+-- | The auto-install policy for the product.
+ppAutoInstallPolicy :: Lens' ProductPolicy (Maybe AutoInstallPolicy)
+ppAutoInstallPolicy
+  = lens _ppAutoInstallPolicy
+      (\ s a -> s{_ppAutoInstallPolicy = a})
+
+-- | The ID of the product. For example, \"app:com.google.android.gm\".
+ppProductId :: Lens' ProductPolicy (Maybe Text)
+ppProductId
+  = lens _ppProductId (\ s a -> s{_ppProductId = a})
+
+instance FromJSON ProductPolicy where
+        parseJSON
+          = withObject "ProductPolicy"
+              (\ o ->
+                 ProductPolicy' <$>
+                   (o .:? "tracks" .!= mempty) <*>
+                     (o .:? "managedConfiguration")
+                     <*> (o .:? "trackIds" .!= mempty)
+                     <*> (o .:? "autoInstallPolicy")
+                     <*> (o .:? "productId"))
+
+instance ToJSON ProductPolicy where
+        toJSON ProductPolicy'{..}
+          = object
+              (catMaybes
+                 [("tracks" .=) <$> _ppTracks,
+                  ("managedConfiguration" .=) <$>
+                    _ppManagedConfiguration,
+                  ("trackIds" .=) <$> _ppTrackIds,
+                  ("autoInstallPolicy" .=) <$> _ppAutoInstallPolicy,
+                  ("productId" .=) <$> _ppProductId])
+
+-- | This represents an enterprise admin who can manage the enterprise in the
+-- managed Google Play store.
+--
+-- /See:/ 'administrator' smart constructor.
+newtype Administrator =
+  Administrator'
+    { _aEmail :: Maybe Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Administrator' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aEmail'
+administrator
+    :: Administrator
+administrator = Administrator' {_aEmail = Nothing}
+
+
+-- | The admin\'s email address.
+aEmail :: Lens' Administrator (Maybe Text)
+aEmail = lens _aEmail (\ s a -> s{_aEmail = a})
+
+instance FromJSON Administrator where
+        parseJSON
+          = withObject "Administrator"
+              (\ o -> Administrator' <$> (o .:? "email"))
+
+instance ToJSON Administrator where
+        toJSON Administrator'{..}
+          = object (catMaybes [("email" .=) <$> _aEmail])
+
+-- | The matching user resources.
+--
+-- /See:/ 'usersListResponse' smart constructor.
+data UsersListResponse =
+  UsersListResponse'
+    { _ulrKind :: !Text
+    , _ulrUser :: !(Maybe [User])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UsersListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ulrKind'
+--
+-- * 'ulrUser'
+usersListResponse
+    :: UsersListResponse
+usersListResponse =
+  UsersListResponse'
+    {_ulrKind = "androidenterprise#usersListResponse", _ulrUser = Nothing}
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#usersListResponse\".
+ulrKind :: Lens' UsersListResponse Text
+ulrKind = lens _ulrKind (\ s a -> s{_ulrKind = a})
+
+-- | A user of an enterprise.
+ulrUser :: Lens' UsersListResponse [User]
+ulrUser
+  = lens _ulrUser (\ s a -> s{_ulrUser = a}) . _Default
+      . _Coerce
+
+instance FromJSON UsersListResponse where
+        parseJSON
+          = withObject "UsersListResponse"
+              (\ o ->
+                 UsersListResponse' <$>
+                   (o .:? "kind" .!=
+                      "androidenterprise#usersListResponse")
+                     <*> (o .:? "user" .!= mempty))
+
+instance ToJSON UsersListResponse where
+        toJSON UsersListResponse'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _ulrKind),
+                  ("user" .=) <$> _ulrUser])
+
+--
+-- /See:/ 'administratorWebTokenSpecStoreBuilder' smart constructor.
+newtype AdministratorWebTokenSpecStoreBuilder =
+  AdministratorWebTokenSpecStoreBuilder'
+    { _awtssbEnabled :: Maybe Bool
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AdministratorWebTokenSpecStoreBuilder' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'awtssbEnabled'
+administratorWebTokenSpecStoreBuilder
+    :: AdministratorWebTokenSpecStoreBuilder
+administratorWebTokenSpecStoreBuilder =
+  AdministratorWebTokenSpecStoreBuilder' {_awtssbEnabled = Nothing}
+
+
+-- | Whether the Organize apps page is displayed. Default is true.
+awtssbEnabled :: Lens' AdministratorWebTokenSpecStoreBuilder (Maybe Bool)
+awtssbEnabled
+  = lens _awtssbEnabled
+      (\ s a -> s{_awtssbEnabled = a})
+
+instance FromJSON
+           AdministratorWebTokenSpecStoreBuilder
+         where
+        parseJSON
+          = withObject "AdministratorWebTokenSpecStoreBuilder"
+              (\ o ->
+                 AdministratorWebTokenSpecStoreBuilder' <$>
+                   (o .:? "enabled"))
+
+instance ToJSON AdministratorWebTokenSpecStoreBuilder
+         where
+        toJSON AdministratorWebTokenSpecStoreBuilder'{..}
+          = object
+              (catMaybes [("enabled" .=) <$> _awtssbEnabled])
+
+-- | An AuthenticationToken is used by the EMM\'s device policy client on a
+-- device to provision the given EMM-managed user on that device.
+--
+-- /See:/ 'authenticationToken' smart constructor.
+data AuthenticationToken =
+  AuthenticationToken'
+    { _atKind  :: !Text
+    , _atToken :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AuthenticationToken' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atKind'
+--
+-- * 'atToken'
+authenticationToken
+    :: AuthenticationToken
+authenticationToken =
+  AuthenticationToken'
+    {_atKind = "androidenterprise#authenticationToken", _atToken = Nothing}
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#authenticationToken\".
+atKind :: Lens' AuthenticationToken Text
+atKind = lens _atKind (\ s a -> s{_atKind = a})
+
+-- | The authentication token to be passed to the device policy client on the
+-- device where it can be used to provision the account for which this
+-- token was generated.
+atToken :: Lens' AuthenticationToken (Maybe Text)
+atToken = lens _atToken (\ s a -> s{_atToken = a})
+
+instance FromJSON AuthenticationToken where
+        parseJSON
+          = withObject "AuthenticationToken"
+              (\ o ->
+                 AuthenticationToken' <$>
+                   (o .:? "kind" .!=
+                      "androidenterprise#authenticationToken")
+                     <*> (o .:? "token"))
+
+instance ToJSON AuthenticationToken where
+        toJSON AuthenticationToken'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _atKind),
+                  ("token" .=) <$> _atToken])
+
+-- | A managed configurations settings resource contains the set of managed
+-- properties that have been configured for an Android app to be applied to
+-- a set of users. The app\'s developer would have defined configurable
+-- properties in the managed configurations schema.
+--
+-- /See:/ 'managedConfigurationsSettings' smart constructor.
+data ManagedConfigurationsSettings =
+  ManagedConfigurationsSettings'
+    { _mcsLastUpdatedTimestampMillis :: !(Maybe (Textual Int64))
+    , _mcsManagedProperty            :: !(Maybe [ManagedProperty])
+    , _mcsKind                       :: !Text
+    , _mcsMcmId                      :: !(Maybe Text)
+    , _mcsName                       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ManagedConfigurationsSettings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mcsLastUpdatedTimestampMillis'
+--
+-- * 'mcsManagedProperty'
+--
+-- * 'mcsKind'
+--
+-- * 'mcsMcmId'
+--
+-- * 'mcsName'
+managedConfigurationsSettings
+    :: ManagedConfigurationsSettings
+managedConfigurationsSettings =
+  ManagedConfigurationsSettings'
+    { _mcsLastUpdatedTimestampMillis = Nothing
+    , _mcsManagedProperty = Nothing
+    , _mcsKind = "androidenterprise#managedConfigurationsSettings"
+    , _mcsMcmId = Nothing
+    , _mcsName = Nothing
+    }
+
+
+-- | The last updated time of the managed configuration settings in
+-- milliseconds since 1970-01-01T00:00:00Z.
+mcsLastUpdatedTimestampMillis :: Lens' ManagedConfigurationsSettings (Maybe Int64)
+mcsLastUpdatedTimestampMillis
+  = lens _mcsLastUpdatedTimestampMillis
+      (\ s a -> s{_mcsLastUpdatedTimestampMillis = a})
+      . mapping _Coerce
+
+-- | The set of managed properties for this configuration.
+mcsManagedProperty :: Lens' ManagedConfigurationsSettings [ManagedProperty]
+mcsManagedProperty
+  = lens _mcsManagedProperty
+      (\ s a -> s{_mcsManagedProperty = a})
+      . _Default
+      . _Coerce
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#managedConfigurationsSettings\".
+mcsKind :: Lens' ManagedConfigurationsSettings Text
+mcsKind = lens _mcsKind (\ s a -> s{_mcsKind = a})
+
+-- | The ID of the managed configurations settings.
+mcsMcmId :: Lens' ManagedConfigurationsSettings (Maybe Text)
+mcsMcmId = lens _mcsMcmId (\ s a -> s{_mcsMcmId = a})
+
+-- | The name of the managed configurations settings.
+mcsName :: Lens' ManagedConfigurationsSettings (Maybe Text)
+mcsName = lens _mcsName (\ s a -> s{_mcsName = a})
+
+instance FromJSON ManagedConfigurationsSettings where
+        parseJSON
+          = withObject "ManagedConfigurationsSettings"
+              (\ o ->
+                 ManagedConfigurationsSettings' <$>
+                   (o .:? "lastUpdatedTimestampMillis") <*>
+                     (o .:? "managedProperty" .!= mempty)
+                     <*>
+                     (o .:? "kind" .!=
+                        "androidenterprise#managedConfigurationsSettings")
+                     <*> (o .:? "mcmId")
+                     <*> (o .:? "name"))
+
+instance ToJSON ManagedConfigurationsSettings where
+        toJSON ManagedConfigurationsSettings'{..}
+          = object
+              (catMaybes
+                 [("lastUpdatedTimestampMillis" .=) <$>
+                    _mcsLastUpdatedTimestampMillis,
+                  ("managedProperty" .=) <$> _mcsManagedProperty,
+                  Just ("kind" .= _mcsKind),
+                  ("mcmId" .=) <$> _mcsMcmId,
+                  ("name" .=) <$> _mcsName])
+
+-- | This represents a single version of the app.
+--
+-- /See:/ 'appVersion' smart constructor.
+data AppVersion =
+  AppVersion'
+    { _avTrack         :: !(Maybe Text)
+    , _avVersionCode   :: !(Maybe (Textual Int32))
+    , _avVersionString :: !(Maybe Text)
+    , _avTrackId       :: !(Maybe [Text])
+    , _avIsProduction  :: !(Maybe Bool)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AppVersion' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'avTrack'
+--
+-- * 'avVersionCode'
+--
+-- * 'avVersionString'
+--
+-- * 'avTrackId'
+--
+-- * 'avIsProduction'
+appVersion
+    :: AppVersion
+appVersion =
+  AppVersion'
+    { _avTrack = Nothing
+    , _avVersionCode = Nothing
+    , _avVersionString = Nothing
+    , _avTrackId = Nothing
+    , _avIsProduction = Nothing
+    }
+
+
+-- | Deprecated, use trackId instead.
+avTrack :: Lens' AppVersion (Maybe Text)
+avTrack = lens _avTrack (\ s a -> s{_avTrack = a})
+
+-- | Unique increasing identifier for the app version.
+avVersionCode :: Lens' AppVersion (Maybe Int32)
+avVersionCode
+  = lens _avVersionCode
+      (\ s a -> s{_avVersionCode = a})
+      . mapping _Coerce
+
+-- | The string used in the Play store by the app developer to identify the
+-- version. The string is not necessarily unique or localized (for example,
+-- the string could be \"1.4\").
+avVersionString :: Lens' AppVersion (Maybe Text)
+avVersionString
+  = lens _avVersionString
+      (\ s a -> s{_avVersionString = a})
+
+-- | Track ids that the app version is published in. Replaces the track field
+-- (deprecated), but doesn\'t include the production track (see
+-- isProduction instead).
+avTrackId :: Lens' AppVersion [Text]
+avTrackId
+  = lens _avTrackId (\ s a -> s{_avTrackId = a}) .
+      _Default
+      . _Coerce
+
+-- | True if this version is a production APK.
+avIsProduction :: Lens' AppVersion (Maybe Bool)
+avIsProduction
+  = lens _avIsProduction
+      (\ s a -> s{_avIsProduction = a})
+
+instance FromJSON AppVersion where
+        parseJSON
+          = withObject "AppVersion"
+              (\ o ->
+                 AppVersion' <$>
+                   (o .:? "track") <*> (o .:? "versionCode") <*>
+                     (o .:? "versionString")
+                     <*> (o .:? "trackId" .!= mempty)
+                     <*> (o .:? "isProduction"))
+
+instance ToJSON AppVersion where
+        toJSON AppVersion'{..}
+          = object
+              (catMaybes
+                 [("track" .=) <$> _avTrack,
+                  ("versionCode" .=) <$> _avVersionCode,
+                  ("versionString" .=) <$> _avVersionString,
+                  ("trackId" .=) <$> _avTrackId,
+                  ("isProduction" .=) <$> _avIsProduction])
+
+-- | A bundle of managed properties.
+--
+-- /See:/ 'managedPropertyBundle' smart constructor.
+newtype ManagedPropertyBundle =
+  ManagedPropertyBundle'
+    { _mpbManagedProperty :: Maybe [ManagedProperty]
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ManagedPropertyBundle' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpbManagedProperty'
+managedPropertyBundle
+    :: ManagedPropertyBundle
+managedPropertyBundle = ManagedPropertyBundle' {_mpbManagedProperty = Nothing}
+
+
+-- | The list of managed properties.
+mpbManagedProperty :: Lens' ManagedPropertyBundle [ManagedProperty]
+mpbManagedProperty
+  = lens _mpbManagedProperty
+      (\ s a -> s{_mpbManagedProperty = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ManagedPropertyBundle where
+        parseJSON
+          = withObject "ManagedPropertyBundle"
+              (\ o ->
+                 ManagedPropertyBundle' <$>
+                   (o .:? "managedProperty" .!= mempty))
+
+instance ToJSON ManagedPropertyBundle where
+        toJSON ManagedPropertyBundle'{..}
+          = object
+              (catMaybes
+                 [("managedProperty" .=) <$> _mpbManagedProperty])
+
+-- | The grouplicense resources for the enterprise.
+--
+-- /See:/ 'groupLicensesListResponse' smart constructor.
+data GroupLicensesListResponse =
+  GroupLicensesListResponse'
+    { _gllrGroupLicense :: !(Maybe [GroupLicense])
+    , _gllrKind         :: !Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GroupLicensesListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gllrGroupLicense'
+--
+-- * 'gllrKind'
+groupLicensesListResponse
+    :: GroupLicensesListResponse
+groupLicensesListResponse =
+  GroupLicensesListResponse'
+    { _gllrGroupLicense = Nothing
+    , _gllrKind = "androidenterprise#groupLicensesListResponse"
+    }
+
+
+-- | A group license for a product approved for use in the enterprise.
+gllrGroupLicense :: Lens' GroupLicensesListResponse [GroupLicense]
+gllrGroupLicense
+  = lens _gllrGroupLicense
+      (\ s a -> s{_gllrGroupLicense = a})
+      . _Default
+      . _Coerce
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#groupLicensesListResponse\".
+gllrKind :: Lens' GroupLicensesListResponse Text
+gllrKind = lens _gllrKind (\ s a -> s{_gllrKind = a})
+
+instance FromJSON GroupLicensesListResponse where
+        parseJSON
+          = withObject "GroupLicensesListResponse"
+              (\ o ->
+                 GroupLicensesListResponse' <$>
+                   (o .:? "groupLicense" .!= mempty) <*>
+                     (o .:? "kind" .!=
+                        "androidenterprise#groupLicensesListResponse"))
+
+instance ToJSON GroupLicensesListResponse where
+        toJSON GroupLicensesListResponse'{..}
+          = object
+              (catMaybes
+                 [("groupLicense" .=) <$> _gllrGroupLicense,
+                  Just ("kind" .= _gllrKind)])
+
+-- | A set of products.
+--
+-- /See:/ 'productSet' smart constructor.
+data ProductSet =
+  ProductSet'
+    { _psProductVisibility  :: !(Maybe [ProductVisibility])
+    , _psKind               :: !Text
+    , _psProductSetBehavior :: !(Maybe Text)
+    , _psProductId          :: !(Maybe [Text])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProductSet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'psProductVisibility'
+--
+-- * 'psKind'
+--
+-- * 'psProductSetBehavior'
+--
+-- * 'psProductId'
+productSet
+    :: ProductSet
+productSet =
+  ProductSet'
+    { _psProductVisibility = Nothing
+    , _psKind = "androidenterprise#productSet"
+    , _psProductSetBehavior = Nothing
+    , _psProductId = Nothing
+    }
+
+
+-- | Additional list of product IDs making up the product set. Unlike the
+-- productID array, in this list It\'s possible to specify which tracks
+-- (alpha, beta, production) of a product are visible to the user. See
+-- ProductVisibility and its fields for more information. Specifying the
+-- same product ID both here and in the productId array is not allowed and
+-- it will result in an error.
+psProductVisibility :: Lens' ProductSet [ProductVisibility]
+psProductVisibility
+  = lens _psProductVisibility
+      (\ s a -> s{_psProductVisibility = a})
+      . _Default
+      . _Coerce
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#productSet\".
+psKind :: Lens' ProductSet Text
+psKind = lens _psKind (\ s a -> s{_psKind = a})
+
+-- | The interpretation of this product set. \"unknown\" should never be sent
+-- and is ignored if received. \"whitelist\" means that the user is
+-- entitled to access the product set. \"includeAll\" means that all
+-- products are accessible, including products that are approved, products
+-- with revoked approval, and products that have never been approved.
+-- \"allApproved\" means that the user is entitled to access all products
+-- that are approved for the enterprise. If the value is \"allApproved\" or
+-- \"includeAll\", the productId field is ignored. If no value is provided,
+-- it is interpreted as \"whitelist\" for backwards compatibility. Further
+-- \"allApproved\" or \"includeAll\" does not enable automatic visibility
+-- of \"alpha\" or \"beta\" tracks for Android app. Use ProductVisibility
+-- to enable \"alpha\" or \"beta\" tracks per user.
+psProductSetBehavior :: Lens' ProductSet (Maybe Text)
+psProductSetBehavior
+  = lens _psProductSetBehavior
+      (\ s a -> s{_psProductSetBehavior = a})
+
+-- | The list of product IDs making up the set of products.
+psProductId :: Lens' ProductSet [Text]
+psProductId
+  = lens _psProductId (\ s a -> s{_psProductId = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ProductSet where
+        parseJSON
+          = withObject "ProductSet"
+              (\ o ->
+                 ProductSet' <$>
+                   (o .:? "productVisibility" .!= mempty) <*>
+                     (o .:? "kind" .!= "androidenterprise#productSet")
+                     <*> (o .:? "productSetBehavior")
+                     <*> (o .:? "productId" .!= mempty))
+
+instance ToJSON ProductSet where
+        toJSON ProductSet'{..}
+          = object
+              (catMaybes
+                 [("productVisibility" .=) <$> _psProductVisibility,
+                  Just ("kind" .= _psKind),
+                  ("productSetBehavior" .=) <$> _psProductSetBehavior,
+                  ("productId" .=) <$> _psProductId])
+
+-- | The existence of an Installs resource indicates that an app is installed
+-- on a particular device (or that an install is pending). The API can be
+-- used to create an install resource using the update method. This
+-- triggers the actual install of the app on the device. If the user does
+-- not already have an entitlement for the app, then an attempt is made to
+-- create one. If this fails (for example, because the app is not free and
+-- there is no available license), then the creation of the install fails.
+-- The API can also be used to update an installed app. If
+-- the update method is used on an existing install, then the app will be
+-- updated to the latest available version. Note that it is not possible to
+-- force the installation of a specific version of an app: the version code
+-- is read-only. If a user installs an app themselves (as permitted by the
+-- enterprise), then again an install resource and possibly an entitlement
+-- resource are automatically created. The API can also be used to delete
+-- an install resource, which triggers the removal of the app from the
+-- device. Note that deleting an install does not automatically remove the
+-- corresponding entitlement, even if there are no remaining installs. The
+-- install resource will also be deleted if the user uninstalls the app
+-- themselves.
+--
+-- /See:/ 'install' smart constructor.
+data Install =
+  Install'
+    { _iVersionCode  :: !(Maybe (Textual Int32))
+    , _iKind         :: !Text
+    , _iInstallState :: !(Maybe Text)
+    , _iProductId    :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Install' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iVersionCode'
+--
+-- * 'iKind'
+--
+-- * 'iInstallState'
+--
+-- * 'iProductId'
+install
+    :: Install
+install =
+  Install'
+    { _iVersionCode = Nothing
+    , _iKind = "androidenterprise#install"
+    , _iInstallState = Nothing
+    , _iProductId = Nothing
+    }
+
+
+-- | The version of the installed product. Guaranteed to be set only if the
+-- install state is \"installed\".
+iVersionCode :: Lens' Install (Maybe Int32)
+iVersionCode
+  = lens _iVersionCode (\ s a -> s{_iVersionCode = a})
+      . mapping _Coerce
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#install\".
+iKind :: Lens' Install Text
+iKind = lens _iKind (\ s a -> s{_iKind = a})
+
+-- | Install state. The state \"installPending\" means that an install
+-- request has recently been made and download to the device is in
+-- progress. The state \"installed\" means that the app has been installed.
+-- This field is read-only.
+iInstallState :: Lens' Install (Maybe Text)
+iInstallState
+  = lens _iInstallState
+      (\ s a -> s{_iInstallState = a})
+
+-- | The ID of the product that the install is for. For example,
+-- \"app:com.google.android.gm\".
+iProductId :: Lens' Install (Maybe Text)
+iProductId
+  = lens _iProductId (\ s a -> s{_iProductId = a})
+
+instance FromJSON Install where
+        parseJSON
+          = withObject "Install"
+              (\ o ->
+                 Install' <$>
+                   (o .:? "versionCode") <*>
+                     (o .:? "kind" .!= "androidenterprise#install")
+                     <*> (o .:? "installState")
+                     <*> (o .:? "productId"))
+
+instance ToJSON Install where
+        toJSON Install'{..}
+          = object
+              (catMaybes
+                 [("versionCode" .=) <$> _iVersionCode,
+                  Just ("kind" .= _iKind),
+                  ("installState" .=) <$> _iInstallState,
+                  ("productId" .=) <$> _iProductId])
+
+-- | Maintenance window for managed Google Play Accounts. This allows Play
+-- store to update the apps on the foreground in the designated window.
+--
+-- /See:/ 'maintenanceWindow' smart constructor.
+data MaintenanceWindow =
+  MaintenanceWindow'
+    { _mwDurationMs               :: !(Maybe (Textual Int64))
+    , _mwStartTimeAfterMidnightMs :: !(Maybe (Textual Int64))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MaintenanceWindow' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwDurationMs'
+--
+-- * 'mwStartTimeAfterMidnightMs'
+maintenanceWindow
+    :: MaintenanceWindow
+maintenanceWindow =
+  MaintenanceWindow'
+    {_mwDurationMs = Nothing, _mwStartTimeAfterMidnightMs = Nothing}
+
+
+-- | Duration of the maintenance window, in milliseconds. The duration must
+-- be between 30 minutes and 24 hours (inclusive).
+mwDurationMs :: Lens' MaintenanceWindow (Maybe Int64)
+mwDurationMs
+  = lens _mwDurationMs (\ s a -> s{_mwDurationMs = a})
+      . mapping _Coerce
+
+-- | Start time of the maintenance window, in milliseconds after midnight on
+-- the device. Windows can span midnight.
+mwStartTimeAfterMidnightMs :: Lens' MaintenanceWindow (Maybe Int64)
+mwStartTimeAfterMidnightMs
+  = lens _mwStartTimeAfterMidnightMs
+      (\ s a -> s{_mwStartTimeAfterMidnightMs = a})
+      . mapping _Coerce
+
+instance FromJSON MaintenanceWindow where
+        parseJSON
+          = withObject "MaintenanceWindow"
+              (\ o ->
+                 MaintenanceWindow' <$>
+                   (o .:? "durationMs") <*>
+                     (o .:? "startTimeAfterMidnightMs"))
+
+instance ToJSON MaintenanceWindow where
+        toJSON MaintenanceWindow'{..}
+          = object
+              (catMaybes
+                 [("durationMs" .=) <$> _mwDurationMs,
+                  ("startTimeAfterMidnightMs" .=) <$>
+                    _mwStartTimeAfterMidnightMs])
+
+--
+-- /See:/ 'serviceAccountKeysListResponse' smart constructor.
+newtype ServiceAccountKeysListResponse =
+  ServiceAccountKeysListResponse'
+    { _saklrServiceAccountKey :: Maybe [ServiceAccountKey]
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ServiceAccountKeysListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'saklrServiceAccountKey'
+serviceAccountKeysListResponse
+    :: ServiceAccountKeysListResponse
+serviceAccountKeysListResponse =
+  ServiceAccountKeysListResponse' {_saklrServiceAccountKey = Nothing}
+
+
+-- | The service account credentials.
+saklrServiceAccountKey :: Lens' ServiceAccountKeysListResponse [ServiceAccountKey]
+saklrServiceAccountKey
+  = lens _saklrServiceAccountKey
+      (\ s a -> s{_saklrServiceAccountKey = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ServiceAccountKeysListResponse
+         where
+        parseJSON
+          = withObject "ServiceAccountKeysListResponse"
+              (\ o ->
+                 ServiceAccountKeysListResponse' <$>
+                   (o .:? "serviceAccountKey" .!= mempty))
+
+instance ToJSON ServiceAccountKeysListResponse where
+        toJSON ServiceAccountKeysListResponse'{..}
+          = object
+              (catMaybes
+                 [("serviceAccountKey" .=) <$>
+                    _saklrServiceAccountKey])
+
+-- | Id to name association of a track.
+--
+-- /See:/ 'trackInfo' smart constructor.
+data TrackInfo =
+  TrackInfo'
+    { _tiTrackAlias :: !(Maybe Text)
+    , _tiTrackId    :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TrackInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tiTrackAlias'
+--
+-- * 'tiTrackId'
+trackInfo
+    :: TrackInfo
+trackInfo = TrackInfo' {_tiTrackAlias = Nothing, _tiTrackId = Nothing}
+
+
+-- | A modifiable name for a track. This is the visible name in the play
+-- developer console.
+tiTrackAlias :: Lens' TrackInfo (Maybe Text)
+tiTrackAlias
+  = lens _tiTrackAlias (\ s a -> s{_tiTrackAlias = a})
+
+-- | Unmodifiable, unique track identifier. This identifier is the
+-- releaseTrackId in the url of the play developer console page that
+-- displays the track information.
+tiTrackId :: Lens' TrackInfo (Maybe Text)
+tiTrackId
+  = lens _tiTrackId (\ s a -> s{_tiTrackId = a})
+
+instance FromJSON TrackInfo where
+        parseJSON
+          = withObject "TrackInfo"
+              (\ o ->
+                 TrackInfo' <$>
+                   (o .:? "trackAlias") <*> (o .:? "trackId"))
+
+instance ToJSON TrackInfo where
+        toJSON TrackInfo'{..}
+          = object
+              (catMaybes
+                 [("trackAlias" .=) <$> _tiTrackAlias,
+                  ("trackId" .=) <$> _tiTrackId])
+
+-- | A Users resource represents an account associated with an enterprise.
+-- The account may be specific to a device or to an individual user (who
+-- can then use the account across multiple devices). The account may
+-- provide access to managed Google Play only, or to other Google services,
+-- depending on the identity model: - The Google managed domain identity
+-- model requires synchronization to Google account sources (via
+-- primaryEmail). - The managed Google Play Accounts identity model
+-- provides a dynamic means for enterprises to create user or device
+-- accounts as needed. These accounts provide access to managed Google
+-- Play.
+--
+-- /See:/ 'user' smart constructor.
+data User =
+  User'
+    { _uAccountIdentifier :: !(Maybe Text)
+    , _uKind              :: !Text
+    , _uDisplayName       :: !(Maybe Text)
+    , _uId                :: !(Maybe Text)
+    , _uPrimaryEmail      :: !(Maybe Text)
+    , _uManagementType    :: !(Maybe Text)
+    , _uAccountType       :: !(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:
+--
+-- * 'uAccountIdentifier'
+--
+-- * 'uKind'
+--
+-- * 'uDisplayName'
+--
+-- * 'uId'
+--
+-- * 'uPrimaryEmail'
+--
+-- * 'uManagementType'
+--
+-- * 'uAccountType'
+user
+    :: User
+user =
+  User'
+    { _uAccountIdentifier = Nothing
+    , _uKind = "androidenterprise#user"
+    , _uDisplayName = Nothing
+    , _uId = Nothing
+    , _uPrimaryEmail = Nothing
+    , _uManagementType = Nothing
+    , _uAccountType = Nothing
+    }
+
+
+-- | A unique identifier you create for this user, such as \"user342\" or
+-- \"asset#44418\". Do not use personally identifiable information (PII)
+-- for this property. Must always be set for EMM-managed users. Not set for
+-- Google-managed users.
+uAccountIdentifier :: Lens' User (Maybe Text)
+uAccountIdentifier
+  = lens _uAccountIdentifier
+      (\ s a -> s{_uAccountIdentifier = a})
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#user\".
+uKind :: Lens' User Text
+uKind = lens _uKind (\ s a -> s{_uKind = a})
+
+-- | The name that will appear in user interfaces. Setting this property is
+-- optional when creating EMM-managed users. If you do set this property,
+-- use something generic about the organization (such as \"Example, Inc.\")
+-- or your name (as EMM). Not used for Google-managed user accounts.
+uDisplayName :: Lens' User (Maybe Text)
+uDisplayName
+  = lens _uDisplayName (\ s a -> s{_uDisplayName = a})
+
+-- | The unique ID for the user.
+uId :: Lens' User (Maybe Text)
+uId = lens _uId (\ s a -> s{_uId = a})
+
+-- | The user\'s primary email address, for example, \"jsmith\'example.com\".
+-- Will always be set for Google managed users and not set for EMM managed
+-- users.
+uPrimaryEmail :: Lens' User (Maybe Text)
+uPrimaryEmail
+  = lens _uPrimaryEmail
+      (\ s a -> s{_uPrimaryEmail = a})
+
+-- | The entity that manages the user. With googleManaged users, the source
+-- of truth is Google so EMMs have to make sure a Google Account exists for
+-- the user. With emmManaged users, the EMM is in charge.
+uManagementType :: Lens' User (Maybe Text)
+uManagementType
+  = lens _uManagementType
+      (\ s a -> s{_uManagementType = a})
+
+-- | The type of account that this user represents. A userAccount can be
+-- installed on multiple devices, but a deviceAccount is specific to a
+-- single device. An EMM-managed user (emmManaged) can be either type
+-- (userAccount, deviceAccount), but a Google-managed user (googleManaged)
+-- is always a userAccount.
+uAccountType :: Lens' User (Maybe Text)
+uAccountType
+  = lens _uAccountType (\ s a -> s{_uAccountType = a})
+
+instance FromJSON User where
+        parseJSON
+          = withObject "User"
+              (\ o ->
+                 User' <$>
+                   (o .:? "accountIdentifier") <*>
+                     (o .:? "kind" .!= "androidenterprise#user")
+                     <*> (o .:? "displayName")
+                     <*> (o .:? "id")
+                     <*> (o .:? "primaryEmail")
+                     <*> (o .:? "managementType")
+                     <*> (o .:? "accountType"))
+
+instance ToJSON User where
+        toJSON User'{..}
+          = object
+              (catMaybes
+                 [("accountIdentifier" .=) <$> _uAccountIdentifier,
+                  Just ("kind" .= _uKind),
+                  ("displayName" .=) <$> _uDisplayName,
+                  ("id" .=) <$> _uId,
+                  ("primaryEmail" .=) <$> _uPrimaryEmail,
+                  ("managementType" .=) <$> _uManagementType,
+                  ("accountType" .=) <$> _uAccountType])
+
+-- | The managed configuration resources for the device.
+--
+-- /See:/ 'managedConfigurationsForDeviceListResponse' smart constructor.
+data ManagedConfigurationsForDeviceListResponse =
+  ManagedConfigurationsForDeviceListResponse'
+    { _mcfdlrKind                          :: !Text
+    , _mcfdlrManagedConfigurationForDevice :: !(Maybe [ManagedConfiguration])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ManagedConfigurationsForDeviceListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mcfdlrKind'
+--
+-- * 'mcfdlrManagedConfigurationForDevice'
+managedConfigurationsForDeviceListResponse
+    :: ManagedConfigurationsForDeviceListResponse
+managedConfigurationsForDeviceListResponse =
+  ManagedConfigurationsForDeviceListResponse'
+    { _mcfdlrKind =
+        "androidenterprise#managedConfigurationsForDeviceListResponse"
+    , _mcfdlrManagedConfigurationForDevice = Nothing
+    }
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#managedConfigurationsForDeviceListResponse\".
+mcfdlrKind :: Lens' ManagedConfigurationsForDeviceListResponse Text
+mcfdlrKind
+  = lens _mcfdlrKind (\ s a -> s{_mcfdlrKind = a})
+
+-- | A managed configuration for an app on a specific device.
+mcfdlrManagedConfigurationForDevice :: Lens' ManagedConfigurationsForDeviceListResponse [ManagedConfiguration]
+mcfdlrManagedConfigurationForDevice
+  = lens _mcfdlrManagedConfigurationForDevice
+      (\ s a ->
+         s{_mcfdlrManagedConfigurationForDevice = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+           ManagedConfigurationsForDeviceListResponse
+         where
+        parseJSON
+          = withObject
+              "ManagedConfigurationsForDeviceListResponse"
+              (\ o ->
+                 ManagedConfigurationsForDeviceListResponse' <$>
+                   (o .:? "kind" .!=
+                      "androidenterprise#managedConfigurationsForDeviceListResponse")
+                     <*>
+                     (o .:? "managedConfigurationForDevice" .!= mempty))
+
+instance ToJSON
+           ManagedConfigurationsForDeviceListResponse
+         where
+        toJSON
+          ManagedConfigurationsForDeviceListResponse'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _mcfdlrKind),
+                  ("managedConfigurationForDevice" .=) <$>
+                    _mcfdlrManagedConfigurationForDevice])
+
+--
+-- /See:/ 'productsGenerateApprovalURLResponse' smart constructor.
+newtype ProductsGenerateApprovalURLResponse =
+  ProductsGenerateApprovalURLResponse'
+    { _pgaurURL :: Maybe Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProductsGenerateApprovalURLResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pgaurURL'
+productsGenerateApprovalURLResponse
+    :: ProductsGenerateApprovalURLResponse
+productsGenerateApprovalURLResponse =
+  ProductsGenerateApprovalURLResponse' {_pgaurURL = Nothing}
+
+
+-- | A URL that can be rendered in an iframe to display the permissions (if
+-- any) of a product. This URL can be used to approve the product only once
+-- and only within 24 hours of being generated, using the Products.approve
+-- call. If the product is currently unapproved and has no permissions,
+-- this URL will point to an empty page. If the product is currently
+-- approved, a URL will only be generated if that product has added
+-- permissions since it was last approved, and the URL will only display
+-- those new permissions that have not yet been accepted.
+pgaurURL :: Lens' ProductsGenerateApprovalURLResponse (Maybe Text)
+pgaurURL = lens _pgaurURL (\ s a -> s{_pgaurURL = a})
+
+instance FromJSON ProductsGenerateApprovalURLResponse
+         where
+        parseJSON
+          = withObject "ProductsGenerateApprovalURLResponse"
+              (\ o ->
+                 ProductsGenerateApprovalURLResponse' <$>
+                   (o .:? "url"))
+
+instance ToJSON ProductsGenerateApprovalURLResponse
+         where
+        toJSON ProductsGenerateApprovalURLResponse'{..}
+          = object (catMaybes [("url" .=) <$> _pgaurURL])
+
+-- | Definition of a managed Google Play store page, made of a localized name
+-- and links to other pages. A page also contains clusters defined as a
+-- subcollection.
+--
+-- /See:/ 'storePage' smart constructor.
+data StorePage =
+  StorePage'
+    { _spKind :: !Text
+    , _spLink :: !(Maybe [Text])
+    , _spName :: !(Maybe [LocalizedText])
+    , _spId   :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StorePage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spKind'
+--
+-- * 'spLink'
+--
+-- * 'spName'
+--
+-- * 'spId'
+storePage
+    :: StorePage
+storePage =
+  StorePage'
+    { _spKind = "androidenterprise#storePage"
+    , _spLink = Nothing
+    , _spName = Nothing
+    , _spId = Nothing
+    }
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#storePage\".
+spKind :: Lens' StorePage Text
+spKind = lens _spKind (\ s a -> s{_spKind = a})
+
+-- | Ordered list of pages a user should be able to reach from this page. The
+-- list can\'t include this page. It is recommended that the basic pages
+-- are created first, before adding the links between pages. The API
+-- doesn\'t verify that the pages exist or the pages are reachable.
+spLink :: Lens' StorePage [Text]
+spLink
+  = lens _spLink (\ s a -> s{_spLink = a}) . _Default .
+      _Coerce
+
+-- | Ordered list of localized strings giving the name of this page. The text
+-- displayed is the one that best matches the user locale, or the first
+-- entry if there is no good match. There needs to be at least one entry.
+spName :: Lens' StorePage [LocalizedText]
+spName
+  = lens _spName (\ s a -> s{_spName = a}) . _Default .
+      _Coerce
+
+-- | Unique ID of this page. Assigned by the server. Immutable once assigned.
+spId :: Lens' StorePage (Maybe Text)
+spId = lens _spId (\ s a -> s{_spId = a})
+
+instance FromJSON StorePage where
+        parseJSON
+          = withObject "StorePage"
+              (\ o ->
+                 StorePage' <$>
+                   (o .:? "kind" .!= "androidenterprise#storePage") <*>
+                     (o .:? "link" .!= mempty)
+                     <*> (o .:? "name" .!= mempty)
+                     <*> (o .:? "id"))
+
+instance ToJSON StorePage where
+        toJSON StorePage'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _spKind), ("link" .=) <$> _spLink,
+                  ("name" .=) <$> _spName, ("id" .=) <$> _spId])
+
+--
+-- /See:/ 'enterprisesSendTestPushNotificationResponse' smart constructor.
+data EnterprisesSendTestPushNotificationResponse =
+  EnterprisesSendTestPushNotificationResponse'
+    { _estpnrTopicName :: !(Maybe Text)
+    , _estpnrMessageId :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'EnterprisesSendTestPushNotificationResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'estpnrTopicName'
+--
+-- * 'estpnrMessageId'
+enterprisesSendTestPushNotificationResponse
+    :: EnterprisesSendTestPushNotificationResponse
+enterprisesSendTestPushNotificationResponse =
+  EnterprisesSendTestPushNotificationResponse'
+    {_estpnrTopicName = Nothing, _estpnrMessageId = Nothing}
+
+
+-- | The name of the Cloud Pub\/Sub topic to which notifications for this
+-- enterprise\'s enrolled account will be sent.
+estpnrTopicName :: Lens' EnterprisesSendTestPushNotificationResponse (Maybe Text)
+estpnrTopicName
+  = lens _estpnrTopicName
+      (\ s a -> s{_estpnrTopicName = a})
+
+-- | The message ID of the test push notification that was sent.
+estpnrMessageId :: Lens' EnterprisesSendTestPushNotificationResponse (Maybe Text)
+estpnrMessageId
+  = lens _estpnrMessageId
+      (\ s a -> s{_estpnrMessageId = a})
+
+instance FromJSON
+           EnterprisesSendTestPushNotificationResponse
+         where
+        parseJSON
+          = withObject
+              "EnterprisesSendTestPushNotificationResponse"
+              (\ o ->
+                 EnterprisesSendTestPushNotificationResponse' <$>
+                   (o .:? "topicName") <*> (o .:? "messageId"))
+
+instance ToJSON
+           EnterprisesSendTestPushNotificationResponse
+         where
+        toJSON
+          EnterprisesSendTestPushNotificationResponse'{..}
+          = object
+              (catMaybes
+                 [("topicName" .=) <$> _estpnrTopicName,
+                  ("messageId" .=) <$> _estpnrMessageId])
+
+-- | A service account identity, including the name and credentials that can
+-- be used to authenticate as the service account.
+--
+-- /See:/ 'serviceAccount' smart constructor.
+data ServiceAccount =
+  ServiceAccount'
+    { _saKind :: !Text
+    , _saKey  :: !(Maybe ServiceAccountKey)
+    , _saName :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ServiceAccount' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'saKind'
+--
+-- * 'saKey'
+--
+-- * 'saName'
+serviceAccount
+    :: ServiceAccount
+serviceAccount =
+  ServiceAccount'
+    { _saKind = "androidenterprise#serviceAccount"
+    , _saKey = Nothing
+    , _saName = Nothing
+    }
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#serviceAccount\".
+saKind :: Lens' ServiceAccount Text
+saKind = lens _saKind (\ s a -> s{_saKind = a})
+
+-- | Credentials that can be used to authenticate as this ServiceAccount.
+saKey :: Lens' ServiceAccount (Maybe ServiceAccountKey)
+saKey = lens _saKey (\ s a -> s{_saKey = a})
+
+-- | The account name of the service account, in the form of an email
+-- address. Assigned by the server.
+saName :: Lens' ServiceAccount (Maybe Text)
+saName = lens _saName (\ s a -> s{_saName = a})
+
+instance FromJSON ServiceAccount where
+        parseJSON
+          = withObject "ServiceAccount"
+              (\ o ->
+                 ServiceAccount' <$>
+                   (o .:? "kind" .!= "androidenterprise#serviceAccount")
+                     <*> (o .:? "key")
+                     <*> (o .:? "name"))
+
+instance ToJSON ServiceAccount where
+        toJSON ServiceAccount'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _saKind), ("key" .=) <$> _saKey,
+                  ("name" .=) <$> _saName])
+
+-- | A variable set is a key-value pair of EMM-provided placeholders and its
+-- corresponding value, which is attributed to a user. For example,
+-- $FIRSTNAME could be a placeholder, and its value could be Alice.
+-- Placeholders should start with a \'$\' sign and should be alphanumeric
+-- only.
+--
+-- /See:/ 'variableSet' smart constructor.
+data VariableSet =
+  VariableSet'
+    { _vsKind        :: !Text
+    , _vsUserValue   :: !(Maybe Text)
+    , _vsPlaceholder :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'VariableSet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vsKind'
+--
+-- * 'vsUserValue'
+--
+-- * 'vsPlaceholder'
+variableSet
+    :: VariableSet
+variableSet =
+  VariableSet'
+    { _vsKind = "androidenterprise#variableSet"
+    , _vsUserValue = Nothing
+    , _vsPlaceholder = Nothing
+    }
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#variableSet\".
+vsKind :: Lens' VariableSet Text
+vsKind = lens _vsKind (\ s a -> s{_vsKind = a})
+
+-- | The value of the placeholder, specific to the user.
+vsUserValue :: Lens' VariableSet (Maybe Text)
+vsUserValue
+  = lens _vsUserValue (\ s a -> s{_vsUserValue = a})
+
+-- | The placeholder string; defined by EMM.
+vsPlaceholder :: Lens' VariableSet (Maybe Text)
+vsPlaceholder
+  = lens _vsPlaceholder
+      (\ s a -> s{_vsPlaceholder = a})
+
+instance FromJSON VariableSet where
+        parseJSON
+          = withObject "VariableSet"
+              (\ o ->
+                 VariableSet' <$>
+                   (o .:? "kind" .!= "androidenterprise#variableSet")
+                     <*> (o .:? "userValue")
+                     <*> (o .:? "placeholder"))
+
+instance ToJSON VariableSet where
+        toJSON VariableSet'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _vsKind),
+                  ("userValue" .=) <$> _vsUserValue,
+                  ("placeholder" .=) <$> _vsPlaceholder])
+
+-- | An event generated when a new version of an app is uploaded to Google
+-- Play. Notifications are sent for new public versions only: alpha, beta,
+-- or canary versions do not generate this event. To fetch up-to-date
+-- version history for an app, use Products.Get on the EMM API.
+--
+-- /See:/ 'appUpdateEvent' smart constructor.
+newtype AppUpdateEvent =
+  AppUpdateEvent'
+    { _aueProductId :: Maybe Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AppUpdateEvent' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aueProductId'
+appUpdateEvent
+    :: AppUpdateEvent
+appUpdateEvent = AppUpdateEvent' {_aueProductId = Nothing}
+
+
+-- | The id of the product (e.g. \"app:com.google.android.gm\") that was
+-- updated. This field will always be present.
+aueProductId :: Lens' AppUpdateEvent (Maybe Text)
+aueProductId
+  = lens _aueProductId (\ s a -> s{_aueProductId = a})
+
+instance FromJSON AppUpdateEvent where
+        parseJSON
+          = withObject "AppUpdateEvent"
+              (\ o -> AppUpdateEvent' <$> (o .:? "productId"))
+
+instance ToJSON AppUpdateEvent where
+        toJSON AppUpdateEvent'{..}
+          = object
+              (catMaybes [("productId" .=) <$> _aueProductId])
+
+-- | The matching enterprise resources.
+--
+-- /See:/ 'enterprisesListResponse' smart constructor.
+data EnterprisesListResponse =
+  EnterprisesListResponse'
+    { _elrKind       :: !Text
+    , _elrEnterprise :: !(Maybe [Enterprise])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'EnterprisesListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'elrKind'
+--
+-- * 'elrEnterprise'
+enterprisesListResponse
+    :: EnterprisesListResponse
+enterprisesListResponse =
+  EnterprisesListResponse'
+    { _elrKind = "androidenterprise#enterprisesListResponse"
+    , _elrEnterprise = Nothing
+    }
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#enterprisesListResponse\".
+elrKind :: Lens' EnterprisesListResponse Text
+elrKind = lens _elrKind (\ s a -> s{_elrKind = a})
+
+-- | An enterprise.
+elrEnterprise :: Lens' EnterprisesListResponse [Enterprise]
+elrEnterprise
+  = lens _elrEnterprise
+      (\ s a -> s{_elrEnterprise = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON EnterprisesListResponse where
+        parseJSON
+          = withObject "EnterprisesListResponse"
+              (\ o ->
+                 EnterprisesListResponse' <$>
+                   (o .:? "kind" .!=
+                      "androidenterprise#enterprisesListResponse")
+                     <*> (o .:? "enterprise" .!= mempty))
+
+instance ToJSON EnterprisesListResponse where
+        toJSON EnterprisesListResponse'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _elrKind),
+                  ("enterprise" .=) <$> _elrEnterprise])
+
+-- | A resource returned by the PullNotificationSet API, which contains a
+-- collection of notifications for enterprises associated with the service
+-- account authenticated for the request.
+--
+-- /See:/ 'notificationSet' smart constructor.
+data NotificationSet =
+  NotificationSet'
+    { _nsNotificationSetId :: !(Maybe Text)
+    , _nsNotification      :: !(Maybe [Notification])
+    , _nsKind              :: !Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NotificationSet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nsNotificationSetId'
+--
+-- * 'nsNotification'
+--
+-- * 'nsKind'
+notificationSet
+    :: NotificationSet
+notificationSet =
+  NotificationSet'
+    { _nsNotificationSetId = Nothing
+    , _nsNotification = Nothing
+    , _nsKind = "androidenterprise#notificationSet"
+    }
+
+
+-- | The notification set ID, required to mark the notification as received
+-- with the Enterprises.AcknowledgeNotification API. This will be omitted
+-- if no notifications are present.
+nsNotificationSetId :: Lens' NotificationSet (Maybe Text)
+nsNotificationSetId
+  = lens _nsNotificationSetId
+      (\ s a -> s{_nsNotificationSetId = a})
+
+-- | The notifications received, or empty if no notifications are present.
+nsNotification :: Lens' NotificationSet [Notification]
+nsNotification
+  = lens _nsNotification
+      (\ s a -> s{_nsNotification = a})
+      . _Default
+      . _Coerce
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#notificationSet\".
+nsKind :: Lens' NotificationSet Text
+nsKind = lens _nsKind (\ s a -> s{_nsKind = a})
+
+instance FromJSON NotificationSet where
+        parseJSON
+          = withObject "NotificationSet"
+              (\ o ->
+                 NotificationSet' <$>
+                   (o .:? "notificationSetId") <*>
+                     (o .:? "notification" .!= mempty)
+                     <*>
+                     (o .:? "kind" .!=
+                        "androidenterprise#notificationSet"))
+
+instance ToJSON NotificationSet where
+        toJSON NotificationSet'{..}
+          = object
+              (catMaybes
+                 [("notificationSetId" .=) <$> _nsNotificationSetId,
+                  ("notification" .=) <$> _nsNotification,
+                  Just ("kind" .= _nsKind)])
+
+-- | Represents the list of app restrictions available to be pre-configured
+-- for the product.
+--
+-- /See:/ 'appRestrictionsSchema' smart constructor.
+data AppRestrictionsSchema =
+  AppRestrictionsSchema'
+    { _arsKind         :: !Text
+    , _arsRestrictions :: !(Maybe [AppRestrictionsSchemaRestriction])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AppRestrictionsSchema' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'arsKind'
+--
+-- * 'arsRestrictions'
+appRestrictionsSchema
+    :: AppRestrictionsSchema
+appRestrictionsSchema =
+  AppRestrictionsSchema'
+    { _arsKind = "androidenterprise#appRestrictionsSchema"
+    , _arsRestrictions = Nothing
+    }
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#appRestrictionsSchema\".
+arsKind :: Lens' AppRestrictionsSchema Text
+arsKind = lens _arsKind (\ s a -> s{_arsKind = a})
+
+-- | The set of restrictions that make up this schema.
+arsRestrictions :: Lens' AppRestrictionsSchema [AppRestrictionsSchemaRestriction]
+arsRestrictions
+  = lens _arsRestrictions
+      (\ s a -> s{_arsRestrictions = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON AppRestrictionsSchema where
+        parseJSON
+          = withObject "AppRestrictionsSchema"
+              (\ o ->
+                 AppRestrictionsSchema' <$>
+                   (o .:? "kind" .!=
+                      "androidenterprise#appRestrictionsSchema")
+                     <*> (o .:? "restrictions" .!= mempty))
+
+instance ToJSON AppRestrictionsSchema where
+        toJSON AppRestrictionsSchema'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _arsKind),
+                  ("restrictions" .=) <$> _arsRestrictions])
+
+-- | Icon for a web app.
+--
+-- /See:/ 'webAppIcon' smart constructor.
+newtype WebAppIcon =
+  WebAppIcon'
+    { _waiImageData :: Maybe Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'WebAppIcon' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'waiImageData'
+webAppIcon
+    :: WebAppIcon
+webAppIcon = WebAppIcon' {_waiImageData = Nothing}
+
+
+-- | The actual bytes of the image in a base64url encoded string (c.f.
+-- RFC4648, section 5 \"Base 64 Encoding with URL and Filename Safe
+-- Alphabet\"). - The image type can be png or jpg. - The image should
+-- ideally be square. - The image should ideally have a size of 512x512.
+waiImageData :: Lens' WebAppIcon (Maybe Text)
+waiImageData
+  = lens _waiImageData (\ s a -> s{_waiImageData = a})
+
+instance FromJSON WebAppIcon where
+        parseJSON
+          = withObject "WebAppIcon"
+              (\ o -> WebAppIcon' <$> (o .:? "imageData"))
+
+instance ToJSON WebAppIcon where
+        toJSON WebAppIcon'{..}
+          = object
+              (catMaybes [("imageData" .=) <$> _waiImageData])
+
+-- | A localized string with its locale.
+--
+-- /See:/ 'localizedText' smart constructor.
+data LocalizedText =
+  LocalizedText'
+    { _ltText   :: !(Maybe Text)
+    , _ltLocale :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'LocalizedText' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ltText'
+--
+-- * 'ltLocale'
+localizedText
+    :: LocalizedText
+localizedText = LocalizedText' {_ltText = Nothing, _ltLocale = Nothing}
+
+
+-- | The text localized in the associated locale.
+ltText :: Lens' LocalizedText (Maybe Text)
+ltText = lens _ltText (\ s a -> s{_ltText = a})
+
+-- | The BCP47 tag for a locale. (e.g. \"en-US\", \"de\").
+ltLocale :: Lens' LocalizedText (Maybe Text)
+ltLocale = lens _ltLocale (\ s a -> s{_ltLocale = a})
+
+instance FromJSON LocalizedText where
+        parseJSON
+          = withObject "LocalizedText"
+              (\ o ->
+                 LocalizedText' <$>
+                   (o .:? "text") <*> (o .:? "locale"))
+
+instance ToJSON LocalizedText where
+        toJSON LocalizedText'{..}
+          = object
+              (catMaybes
+                 [("text" .=) <$> _ltText,
+                  ("locale" .=) <$> _ltLocale])
+
+-- | A UserToken is used by a user when setting up a managed device or
+-- profile with their managed Google Play account on a device. When the
+-- user enters their email address and token (activation code) the
+-- appropriate EMM app can be automatically downloaded.
+--
+-- /See:/ 'userToken' smart constructor.
+data UserToken =
+  UserToken'
+    { _utKind   :: !Text
+    , _utToken  :: !(Maybe Text)
+    , _utUserId :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UserToken' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'utKind'
+--
+-- * 'utToken'
+--
+-- * 'utUserId'
+userToken
+    :: UserToken
+userToken =
+  UserToken'
+    { _utKind = "androidenterprise#userToken"
+    , _utToken = Nothing
+    , _utUserId = Nothing
+    }
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#userToken\".
+utKind :: Lens' UserToken Text
+utKind = lens _utKind (\ s a -> s{_utKind = a})
+
+-- | The token (activation code) to be entered by the user. This consists of
+-- a sequence of decimal digits. Note that the leading digit may be 0.
+utToken :: Lens' UserToken (Maybe Text)
+utToken = lens _utToken (\ s a -> s{_utToken = a})
+
+-- | The unique ID for the user.
+utUserId :: Lens' UserToken (Maybe Text)
+utUserId = lens _utUserId (\ s a -> s{_utUserId = a})
+
+instance FromJSON UserToken where
+        parseJSON
+          = withObject "UserToken"
+              (\ o ->
+                 UserToken' <$>
+                   (o .:? "kind" .!= "androidenterprise#userToken") <*>
+                     (o .:? "token")
+                     <*> (o .:? "userId"))
+
+instance ToJSON UserToken where
+        toJSON UserToken'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _utKind), ("token" .=) <$> _utToken,
+                  ("userId" .=) <$> _utUserId])
+
+--
+-- /See:/ 'administratorWebTokenSpecPrivateApps' smart constructor.
+newtype AdministratorWebTokenSpecPrivateApps =
+  AdministratorWebTokenSpecPrivateApps'
+    { _awtspaEnabled :: Maybe Bool
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AdministratorWebTokenSpecPrivateApps' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'awtspaEnabled'
+administratorWebTokenSpecPrivateApps
+    :: AdministratorWebTokenSpecPrivateApps
+administratorWebTokenSpecPrivateApps =
+  AdministratorWebTokenSpecPrivateApps' {_awtspaEnabled = Nothing}
+
+
+-- | Whether the Private Apps page is displayed. Default is true.
+awtspaEnabled :: Lens' AdministratorWebTokenSpecPrivateApps (Maybe Bool)
+awtspaEnabled
+  = lens _awtspaEnabled
+      (\ s a -> s{_awtspaEnabled = a})
+
+instance FromJSON
+           AdministratorWebTokenSpecPrivateApps
+         where
+        parseJSON
+          = withObject "AdministratorWebTokenSpecPrivateApps"
+              (\ o ->
+                 AdministratorWebTokenSpecPrivateApps' <$>
+                   (o .:? "enabled"))
+
+instance ToJSON AdministratorWebTokenSpecPrivateApps
+         where
+        toJSON AdministratorWebTokenSpecPrivateApps'{..}
+          = object
+              (catMaybes [("enabled" .=) <$> _awtspaEnabled])
+
+-- | The device resources for the user.
+--
+-- /See:/ 'devicesListResponse' smart constructor.
+data DevicesListResponse =
+  DevicesListResponse'
+    { _dlrKind   :: !Text
+    , _dlrDevice :: !(Maybe [Device])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DevicesListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dlrKind'
+--
+-- * 'dlrDevice'
+devicesListResponse
+    :: DevicesListResponse
+devicesListResponse =
+  DevicesListResponse'
+    {_dlrKind = "androidenterprise#devicesListResponse", _dlrDevice = Nothing}
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#devicesListResponse\".
+dlrKind :: Lens' DevicesListResponse Text
+dlrKind = lens _dlrKind (\ s a -> s{_dlrKind = a})
+
+-- | A managed device.
+dlrDevice :: Lens' DevicesListResponse [Device]
+dlrDevice
+  = lens _dlrDevice (\ s a -> s{_dlrDevice = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON DevicesListResponse where
+        parseJSON
+          = withObject "DevicesListResponse"
+              (\ o ->
+                 DevicesListResponse' <$>
+                   (o .:? "kind" .!=
+                      "androidenterprise#devicesListResponse")
+                     <*> (o .:? "device" .!= mempty))
+
+instance ToJSON DevicesListResponse where
+        toJSON DevicesListResponse'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _dlrKind),
+                  ("device" .=) <$> _dlrDevice])
+
+--
+-- /See:/ 'productSigningCertificate' smart constructor.
+data ProductSigningCertificate =
+  ProductSigningCertificate'
+    { _pscCertificateHashSha256 :: !(Maybe Text)
+    , _pscCertificateHashSha1   :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProductSigningCertificate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pscCertificateHashSha256'
+--
+-- * 'pscCertificateHashSha1'
+productSigningCertificate
+    :: ProductSigningCertificate
+productSigningCertificate =
+  ProductSigningCertificate'
+    {_pscCertificateHashSha256 = Nothing, _pscCertificateHashSha1 = Nothing}
+
+
+-- | The base64 urlsafe encoded SHA2-256 hash of the certificate.
+pscCertificateHashSha256 :: Lens' ProductSigningCertificate (Maybe Text)
+pscCertificateHashSha256
+  = lens _pscCertificateHashSha256
+      (\ s a -> s{_pscCertificateHashSha256 = a})
+
+-- | The base64 urlsafe encoded SHA1 hash of the certificate. (This field is
+-- deprecated in favor of SHA2-256. It should not be used and may be
+-- removed at any time.)
+pscCertificateHashSha1 :: Lens' ProductSigningCertificate (Maybe Text)
+pscCertificateHashSha1
+  = lens _pscCertificateHashSha1
+      (\ s a -> s{_pscCertificateHashSha1 = a})
+
+instance FromJSON ProductSigningCertificate where
+        parseJSON
+          = withObject "ProductSigningCertificate"
+              (\ o ->
+                 ProductSigningCertificate' <$>
+                   (o .:? "certificateHashSha256") <*>
+                     (o .:? "certificateHashSha1"))
+
+instance ToJSON ProductSigningCertificate where
+        toJSON ProductSigningCertificate'{..}
+          = object
+              (catMaybes
+                 [("certificateHashSha256" .=) <$>
+                    _pscCertificateHashSha256,
+                  ("certificateHashSha1" .=) <$>
+                    _pscCertificateHashSha1])
+
+-- | An Enterprises resource represents the binding between an EMM and a
+-- specific organization. That binding can be instantiated in one of two
+-- different ways using this API as follows: - For Google managed domain
+-- customers, the process involves using Enterprises.enroll and
+-- Enterprises.setAccount (in conjunction with artifacts obtained from the
+-- Admin console and the Google API Console) and submitted to the EMM
+-- through a more-or-less manual process. - For managed Google Play
+-- Accounts customers, the process involves using
+-- Enterprises.generateSignupUrl and Enterprises.completeSignup in
+-- conjunction with the managed Google Play sign-up UI (Google-provided
+-- mechanism) to create the binding without manual steps. As an EMM, you
+-- can support either or both approaches in your EMM console. See Create an
+-- Enterprise for details.
+--
+-- /See:/ 'enterprise' smart constructor.
+data Enterprise =
+  Enterprise'
+    { _eKind          :: !Text
+    , _eAdministrator :: !(Maybe [Administrator])
+    , _ePrimaryDomain :: !(Maybe Text)
+    , _eName          :: !(Maybe Text)
+    , _eId            :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Enterprise' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eKind'
+--
+-- * 'eAdministrator'
+--
+-- * 'ePrimaryDomain'
+--
+-- * 'eName'
+--
+-- * 'eId'
+enterprise
+    :: Enterprise
+enterprise =
+  Enterprise'
+    { _eKind = "androidenterprise#enterprise"
+    , _eAdministrator = Nothing
+    , _ePrimaryDomain = Nothing
+    , _eName = Nothing
+    , _eId = Nothing
+    }
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#enterprise\".
+eKind :: Lens' Enterprise Text
+eKind = lens _eKind (\ s a -> s{_eKind = a})
+
+-- | Admins of the enterprise. This is only supported for enterprises created
+-- via the EMM-initiated flow.
+eAdministrator :: Lens' Enterprise [Administrator]
+eAdministrator
+  = lens _eAdministrator
+      (\ s a -> s{_eAdministrator = a})
+      . _Default
+      . _Coerce
+
+-- | The enterprise\'s primary domain, such as \"example.com\".
+ePrimaryDomain :: Lens' Enterprise (Maybe Text)
+ePrimaryDomain
+  = lens _ePrimaryDomain
+      (\ s a -> s{_ePrimaryDomain = a})
+
+-- | The name of the enterprise, for example, \"Example, Inc\".
+eName :: Lens' Enterprise (Maybe Text)
+eName = lens _eName (\ s a -> s{_eName = a})
+
+-- | The unique ID for the enterprise.
+eId :: Lens' Enterprise (Maybe Text)
+eId = lens _eId (\ s a -> s{_eId = a})
+
+instance FromJSON Enterprise where
+        parseJSON
+          = withObject "Enterprise"
+              (\ o ->
+                 Enterprise' <$>
+                   (o .:? "kind" .!= "androidenterprise#enterprise") <*>
+                     (o .:? "administrator" .!= mempty)
+                     <*> (o .:? "primaryDomain")
+                     <*> (o .:? "name")
+                     <*> (o .:? "id"))
+
+instance ToJSON Enterprise where
+        toJSON Enterprise'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _eKind),
+                  ("administrator" .=) <$> _eAdministrator,
+                  ("primaryDomain" .=) <$> _ePrimaryDomain,
+                  ("name" .=) <$> _eName, ("id" .=) <$> _eId])
+
+-- | An event generated when an app installation failed on a device
+--
+-- /See:/ 'installFailureEvent' smart constructor.
+data InstallFailureEvent =
+  InstallFailureEvent'
+    { _ifeFailureReason  :: !(Maybe Text)
+    , _ifeFailureDetails :: !(Maybe Text)
+    , _ifeUserId         :: !(Maybe Text)
+    , _ifeDeviceId       :: !(Maybe Text)
+    , _ifeProductId      :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstallFailureEvent' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ifeFailureReason'
+--
+-- * 'ifeFailureDetails'
+--
+-- * 'ifeUserId'
+--
+-- * 'ifeDeviceId'
+--
+-- * 'ifeProductId'
+installFailureEvent
+    :: InstallFailureEvent
+installFailureEvent =
+  InstallFailureEvent'
+    { _ifeFailureReason = Nothing
+    , _ifeFailureDetails = Nothing
+    , _ifeUserId = Nothing
+    , _ifeDeviceId = Nothing
+    , _ifeProductId = Nothing
+    }
+
+
+-- | The reason for the installation failure. This field will always be
+-- present.
+ifeFailureReason :: Lens' InstallFailureEvent (Maybe Text)
+ifeFailureReason
+  = lens _ifeFailureReason
+      (\ s a -> s{_ifeFailureReason = a})
+
+-- | Additional details on the failure if applicable.
+ifeFailureDetails :: Lens' InstallFailureEvent (Maybe Text)
+ifeFailureDetails
+  = lens _ifeFailureDetails
+      (\ s a -> s{_ifeFailureDetails = a})
+
+-- | The ID of the user. This field will always be present.
+ifeUserId :: Lens' InstallFailureEvent (Maybe Text)
+ifeUserId
+  = lens _ifeUserId (\ s a -> s{_ifeUserId = a})
+
+-- | The Android ID of the device. This field will always be present.
+ifeDeviceId :: Lens' InstallFailureEvent (Maybe Text)
+ifeDeviceId
+  = lens _ifeDeviceId (\ s a -> s{_ifeDeviceId = a})
+
+-- | The id of the product (e.g. \"app:com.google.android.gm\") for which the
+-- install failure event occured. This field will always be present.
+ifeProductId :: Lens' InstallFailureEvent (Maybe Text)
+ifeProductId
+  = lens _ifeProductId (\ s a -> s{_ifeProductId = a})
+
+instance FromJSON InstallFailureEvent where
+        parseJSON
+          = withObject "InstallFailureEvent"
+              (\ o ->
+                 InstallFailureEvent' <$>
+                   (o .:? "failureReason") <*> (o .:? "failureDetails")
+                     <*> (o .:? "userId")
+                     <*> (o .:? "deviceId")
+                     <*> (o .:? "productId"))
+
+instance ToJSON InstallFailureEvent where
+        toJSON InstallFailureEvent'{..}
+          = object
+              (catMaybes
+                 [("failureReason" .=) <$> _ifeFailureReason,
+                  ("failureDetails" .=) <$> _ifeFailureDetails,
+                  ("userId" .=) <$> _ifeUserId,
+                  ("deviceId" .=) <$> _ifeDeviceId,
+                  ("productId" .=) <$> _ifeProductId])
+
+-- | The managed configuration resources for the user.
+--
+-- /See:/ 'managedConfigurationsForUserListResponse' smart constructor.
+data ManagedConfigurationsForUserListResponse =
+  ManagedConfigurationsForUserListResponse'
+    { _mcfulrManagedConfigurationForUser :: !(Maybe [ManagedConfiguration])
+    , _mcfulrKind                        :: !Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ManagedConfigurationsForUserListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mcfulrManagedConfigurationForUser'
+--
+-- * 'mcfulrKind'
+managedConfigurationsForUserListResponse
+    :: ManagedConfigurationsForUserListResponse
+managedConfigurationsForUserListResponse =
+  ManagedConfigurationsForUserListResponse'
+    { _mcfulrManagedConfigurationForUser = Nothing
+    , _mcfulrKind = "androidenterprise#managedConfigurationsForUserListResponse"
+    }
+
+
+-- | A managed configuration for an app for a specific user.
+mcfulrManagedConfigurationForUser :: Lens' ManagedConfigurationsForUserListResponse [ManagedConfiguration]
+mcfulrManagedConfigurationForUser
+  = lens _mcfulrManagedConfigurationForUser
+      (\ s a -> s{_mcfulrManagedConfigurationForUser = a})
+      . _Default
+      . _Coerce
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#managedConfigurationsForUserListResponse\".
+mcfulrKind :: Lens' ManagedConfigurationsForUserListResponse Text
+mcfulrKind
+  = lens _mcfulrKind (\ s a -> s{_mcfulrKind = a})
+
+instance FromJSON
+           ManagedConfigurationsForUserListResponse
+         where
+        parseJSON
+          = withObject
+              "ManagedConfigurationsForUserListResponse"
+              (\ o ->
+                 ManagedConfigurationsForUserListResponse' <$>
+                   (o .:? "managedConfigurationForUser" .!= mempty) <*>
+                     (o .:? "kind" .!=
+                        "androidenterprise#managedConfigurationsForUserListResponse"))
+
+instance ToJSON
+           ManagedConfigurationsForUserListResponse
+         where
+        toJSON ManagedConfigurationsForUserListResponse'{..}
+          = object
+              (catMaybes
+                 [("managedConfigurationForUser" .=) <$>
+                    _mcfulrManagedConfigurationForUser,
+                  Just ("kind" .= _mcfulrKind)])
+
+-- | A configuration variables resource contains the managed configuration
+-- settings ID to be applied to a single user, as well as the variable set
+-- that is attributed to the user. The variable set will be used to replace
+-- placeholders in the managed configuration settings.
+--
+-- /See:/ 'configurationVariables' smart constructor.
+data ConfigurationVariables =
+  ConfigurationVariables'
+    { _cvKind        :: !Text
+    , _cvMcmId       :: !(Maybe Text)
+    , _cvVariableSet :: !(Maybe [VariableSet])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ConfigurationVariables' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cvKind'
+--
+-- * 'cvMcmId'
+--
+-- * 'cvVariableSet'
+configurationVariables
+    :: ConfigurationVariables
+configurationVariables =
+  ConfigurationVariables'
+    { _cvKind = "androidenterprise#configurationVariables"
+    , _cvMcmId = Nothing
+    , _cvVariableSet = Nothing
+    }
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#configurationVariables\".
+cvKind :: Lens' ConfigurationVariables Text
+cvKind = lens _cvKind (\ s a -> s{_cvKind = a})
+
+-- | The ID of the managed configurations settings.
+cvMcmId :: Lens' ConfigurationVariables (Maybe Text)
+cvMcmId = lens _cvMcmId (\ s a -> s{_cvMcmId = a})
+
+-- | The variable set that is attributed to the user.
+cvVariableSet :: Lens' ConfigurationVariables [VariableSet]
+cvVariableSet
+  = lens _cvVariableSet
+      (\ s a -> s{_cvVariableSet = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ConfigurationVariables where
+        parseJSON
+          = withObject "ConfigurationVariables"
+              (\ o ->
+                 ConfigurationVariables' <$>
+                   (o .:? "kind" .!=
+                      "androidenterprise#configurationVariables")
+                     <*> (o .:? "mcmId")
+                     <*> (o .:? "variableSet" .!= mempty))
+
+instance ToJSON ConfigurationVariables where
+        toJSON ConfigurationVariables'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _cvKind), ("mcmId" .=) <$> _cvMcmId,
+                  ("variableSet" .=) <$> _cvVariableSet])
+
+-- | General setting for the managed Google Play store layout, currently only
+-- specifying the page to display the first time the store is opened.
+--
+-- /See:/ 'storeLayout' smart constructor.
+data StoreLayout =
+  StoreLayout'
+    { _slStoreLayoutType :: !(Maybe Text)
+    , _slKind            :: !Text
+    , _slHomepageId      :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StoreLayout' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slStoreLayoutType'
+--
+-- * 'slKind'
+--
+-- * 'slHomepageId'
+storeLayout
+    :: StoreLayout
+storeLayout =
+  StoreLayout'
+    { _slStoreLayoutType = Nothing
+    , _slKind = "androidenterprise#storeLayout"
+    , _slHomepageId = Nothing
+    }
+
+
+-- | The store layout type. By default, this value is set to \"basic\" if the
+-- homepageId field is not set, and to \"custom\" otherwise. If set to
+-- \"basic\", the layout will consist of all approved apps that have been
+-- whitelisted for the user.
+slStoreLayoutType :: Lens' StoreLayout (Maybe Text)
+slStoreLayoutType
+  = lens _slStoreLayoutType
+      (\ s a -> s{_slStoreLayoutType = a})
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#storeLayout\".
+slKind :: Lens' StoreLayout Text
+slKind = lens _slKind (\ s a -> s{_slKind = a})
+
+-- | The ID of the store page to be used as the homepage. The homepage is the
+-- first page shown in the managed Google Play Store. Not specifying a
+-- homepage is equivalent to setting the store layout type to \"basic\".
+slHomepageId :: Lens' StoreLayout (Maybe Text)
+slHomepageId
+  = lens _slHomepageId (\ s a -> s{_slHomepageId = a})
+
+instance FromJSON StoreLayout where
+        parseJSON
+          = withObject "StoreLayout"
+              (\ o ->
+                 StoreLayout' <$>
+                   (o .:? "storeLayoutType") <*>
+                     (o .:? "kind" .!= "androidenterprise#storeLayout")
+                     <*> (o .:? "homepageId"))
+
+instance ToJSON StoreLayout where
+        toJSON StoreLayout'{..}
+          = object
+              (catMaybes
+                 [("storeLayoutType" .=) <$> _slStoreLayoutType,
+                  Just ("kind" .= _slKind),
+                  ("homepageId" .=) <$> _slHomepageId])
+
+-- | An event generated when a new app version is uploaded to Google Play and
+-- its app restrictions schema changed. To fetch the app restrictions
+-- schema for an app, use Products.getAppRestrictionsSchema on the EMM API.
+--
+-- /See:/ 'appRestrictionsSchemaChangeEvent' smart constructor.
+newtype AppRestrictionsSchemaChangeEvent =
+  AppRestrictionsSchemaChangeEvent'
+    { _arsceProductId :: Maybe Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AppRestrictionsSchemaChangeEvent' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'arsceProductId'
+appRestrictionsSchemaChangeEvent
+    :: AppRestrictionsSchemaChangeEvent
+appRestrictionsSchemaChangeEvent =
+  AppRestrictionsSchemaChangeEvent' {_arsceProductId = Nothing}
+
+
+-- | The id of the product (e.g. \"app:com.google.android.gm\") for which the
+-- app restriction schema changed. This field will always be present.
+arsceProductId :: Lens' AppRestrictionsSchemaChangeEvent (Maybe Text)
+arsceProductId
+  = lens _arsceProductId
+      (\ s a -> s{_arsceProductId = a})
+
+instance FromJSON AppRestrictionsSchemaChangeEvent
+         where
+        parseJSON
+          = withObject "AppRestrictionsSchemaChangeEvent"
+              (\ o ->
+                 AppRestrictionsSchemaChangeEvent' <$>
+                   (o .:? "productId"))
+
+instance ToJSON AppRestrictionsSchemaChangeEvent
+         where
+        toJSON AppRestrictionsSchemaChangeEvent'{..}
+          = object
+              (catMaybes [("productId" .=) <$> _arsceProductId])
+
+-- | An event generated when a new device is ready to be managed.
+--
+-- /See:/ 'newDeviceEvent' smart constructor.
+data NewDeviceEvent =
+  NewDeviceEvent'
+    { _ndeUserId         :: !(Maybe Text)
+    , _ndeDpcPackageName :: !(Maybe Text)
+    , _ndeDeviceId       :: !(Maybe Text)
+    , _ndeManagementType :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NewDeviceEvent' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ndeUserId'
+--
+-- * 'ndeDpcPackageName'
+--
+-- * 'ndeDeviceId'
+--
+-- * 'ndeManagementType'
+newDeviceEvent
+    :: NewDeviceEvent
+newDeviceEvent =
+  NewDeviceEvent'
+    { _ndeUserId = Nothing
+    , _ndeDpcPackageName = Nothing
+    , _ndeDeviceId = Nothing
+    , _ndeManagementType = Nothing
+    }
+
+
+-- | The ID of the user. This field will always be present.
+ndeUserId :: Lens' NewDeviceEvent (Maybe Text)
+ndeUserId
+  = lens _ndeUserId (\ s a -> s{_ndeUserId = a})
+
+-- | Policy app on the device.
+ndeDpcPackageName :: Lens' NewDeviceEvent (Maybe Text)
+ndeDpcPackageName
+  = lens _ndeDpcPackageName
+      (\ s a -> s{_ndeDpcPackageName = a})
+
+-- | The Android ID of the device. This field will always be present.
+ndeDeviceId :: Lens' NewDeviceEvent (Maybe Text)
+ndeDeviceId
+  = lens _ndeDeviceId (\ s a -> s{_ndeDeviceId = a})
+
+-- | Identifies the extent to which the device is controlled by an Android
+-- EMM in various deployment configurations. Possible values include: -
+-- \"managedDevice\", a device where the DPC is set as device owner, -
+-- \"managedProfile\", a device where the DPC is set as profile owner.
+ndeManagementType :: Lens' NewDeviceEvent (Maybe Text)
+ndeManagementType
+  = lens _ndeManagementType
+      (\ s a -> s{_ndeManagementType = a})
+
+instance FromJSON NewDeviceEvent where
+        parseJSON
+          = withObject "NewDeviceEvent"
+              (\ o ->
+                 NewDeviceEvent' <$>
+                   (o .:? "userId") <*> (o .:? "dpcPackageName") <*>
+                     (o .:? "deviceId")
+                     <*> (o .:? "managementType"))
+
+instance ToJSON NewDeviceEvent where
+        toJSON NewDeviceEvent'{..}
+          = object
+              (catMaybes
+                 [("userId" .=) <$> _ndeUserId,
+                  ("dpcPackageName" .=) <$> _ndeDpcPackageName,
+                  ("deviceId" .=) <$> _ndeDeviceId,
+                  ("managementType" .=) <$> _ndeManagementType])
+
+-- | The device policy for a given managed device.
+--
+-- /See:/ 'policy' smart constructor.
+data Policy =
+  Policy'
+    { _pProductAvailabilityPolicy :: !(Maybe Text)
+    , _pProductPolicy             :: !(Maybe [ProductPolicy])
+    , _pMaintenanceWindow         :: !(Maybe MaintenanceWindow)
+    , _pAutoUpdatePolicy          :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Policy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pProductAvailabilityPolicy'
+--
+-- * 'pProductPolicy'
+--
+-- * 'pMaintenanceWindow'
+--
+-- * 'pAutoUpdatePolicy'
+policy
+    :: Policy
+policy =
+  Policy'
+    { _pProductAvailabilityPolicy = Nothing
+    , _pProductPolicy = Nothing
+    , _pMaintenanceWindow = Nothing
+    , _pAutoUpdatePolicy = Nothing
+    }
+
+
+-- | The availability granted to the device for the specified products.
+-- \"all\" gives the device access to all products, regardless of approval
+-- status. \"all\" does not enable automatic visibility of \"alpha\" or
+-- \"beta\" tracks. \"whitelist\" grants the device access the products
+-- specified in productPolicy[]. Only products that are approved or
+-- products that were previously approved (products with revoked approval)
+-- by the enterprise can be whitelisted. If no value is provided, the
+-- availability set at the user level is applied by default.
+pProductAvailabilityPolicy :: Lens' Policy (Maybe Text)
+pProductAvailabilityPolicy
+  = lens _pProductAvailabilityPolicy
+      (\ s a -> s{_pProductAvailabilityPolicy = a})
+
+-- | The list of product policies.
+pProductPolicy :: Lens' Policy [ProductPolicy]
+pProductPolicy
+  = lens _pProductPolicy
+      (\ s a -> s{_pProductPolicy = a})
+      . _Default
+      . _Coerce
+
+-- | The maintenance window defining when apps running in the foreground
+-- should be updated.
+pMaintenanceWindow :: Lens' Policy (Maybe MaintenanceWindow)
+pMaintenanceWindow
+  = lens _pMaintenanceWindow
+      (\ s a -> s{_pMaintenanceWindow = a})
+
+-- | The auto-update policy for apps installed on the device.
+-- \"choiceToTheUser\" allows the device\'s user to configure the app
+-- update policy. \"always\" enables auto updates. \"never\" disables auto
+-- updates. \"wifiOnly\" enables auto updates only when the device is
+-- connected to wifi.
+pAutoUpdatePolicy :: Lens' Policy (Maybe Text)
+pAutoUpdatePolicy
+  = lens _pAutoUpdatePolicy
+      (\ s a -> s{_pAutoUpdatePolicy = a})
+
+instance FromJSON Policy where
+        parseJSON
+          = withObject "Policy"
+              (\ o ->
+                 Policy' <$>
+                   (o .:? "productAvailabilityPolicy") <*>
+                     (o .:? "productPolicy" .!= mempty)
+                     <*> (o .:? "maintenanceWindow")
+                     <*> (o .:? "autoUpdatePolicy"))
+
+instance ToJSON Policy where
+        toJSON Policy'{..}
+          = object
+              (catMaybes
+                 [("productAvailabilityPolicy" .=) <$>
+                    _pProductAvailabilityPolicy,
+                  ("productPolicy" .=) <$> _pProductPolicy,
+                  ("maintenanceWindow" .=) <$> _pMaintenanceWindow,
+                  ("autoUpdatePolicy" .=) <$> _pAutoUpdatePolicy])
+
+-- | A token authorizing an admin to access an iframe.
+--
+-- /See:/ 'administratorWebToken' smart constructor.
+data AdministratorWebToken =
+  AdministratorWebToken'
+    { _awtKind  :: !Text
+    , _awtToken :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AdministratorWebToken' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'awtKind'
+--
+-- * 'awtToken'
+administratorWebToken
+    :: AdministratorWebToken
+administratorWebToken =
+  AdministratorWebToken'
+    {_awtKind = "androidenterprise#administratorWebToken", _awtToken = Nothing}
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#administratorWebToken\".
+awtKind :: Lens' AdministratorWebToken Text
+awtKind = lens _awtKind (\ s a -> s{_awtKind = a})
+
+-- | An opaque token to be passed to the Play front-end to generate an
+-- iframe.
+awtToken :: Lens' AdministratorWebToken (Maybe Text)
+awtToken = lens _awtToken (\ s a -> s{_awtToken = a})
+
+instance FromJSON AdministratorWebToken where
+        parseJSON
+          = withObject "AdministratorWebToken"
+              (\ o ->
+                 AdministratorWebToken' <$>
+                   (o .:? "kind" .!=
+                      "androidenterprise#administratorWebToken")
+                     <*> (o .:? "token"))
+
+instance ToJSON AdministratorWebToken where
+        toJSON AdministratorWebToken'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _awtKind),
+                  ("token" .=) <$> _awtToken])
+
+-- | A resource returned by the GenerateSignupUrl API, which contains the
+-- Signup URL and Completion Token.
+--
+-- /See:/ 'signupInfo' smart constructor.
+data SignupInfo =
+  SignupInfo'
+    { _siCompletionToken :: !(Maybe Text)
+    , _siKind            :: !Text
+    , _siURL             :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SignupInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'siCompletionToken'
+--
+-- * 'siKind'
+--
+-- * 'siURL'
+signupInfo
+    :: SignupInfo
+signupInfo =
+  SignupInfo'
+    { _siCompletionToken = Nothing
+    , _siKind = "androidenterprise#signupInfo"
+    , _siURL = Nothing
+    }
+
+
+-- | An opaque token that will be required, along with the Enterprise Token,
+-- for obtaining the enterprise resource from CompleteSignup.
+siCompletionToken :: Lens' SignupInfo (Maybe Text)
+siCompletionToken
+  = lens _siCompletionToken
+      (\ s a -> s{_siCompletionToken = a})
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#signupInfo\".
+siKind :: Lens' SignupInfo Text
+siKind = lens _siKind (\ s a -> s{_siKind = a})
+
+-- | A URL under which the Admin can sign up for an enterprise. The page
+-- pointed to cannot be rendered in an iframe.
+siURL :: Lens' SignupInfo (Maybe Text)
+siURL = lens _siURL (\ s a -> s{_siURL = a})
+
+instance FromJSON SignupInfo where
+        parseJSON
+          = withObject "SignupInfo"
+              (\ o ->
+                 SignupInfo' <$>
+                   (o .:? "completionToken") <*>
+                     (o .:? "kind" .!= "androidenterprise#signupInfo")
+                     <*> (o .:? "url"))
+
+instance ToJSON SignupInfo where
+        toJSON SignupInfo'{..}
+          = object
+              (catMaybes
+                 [("completionToken" .=) <$> _siCompletionToken,
+                  Just ("kind" .= _siKind), ("url" .=) <$> _siURL])
+
+-- | A Products resource represents an app in the Google Play store that is
+-- available to at least some users in the enterprise. (Some apps are
+-- restricted to a single enterprise, and no information about them is made
+-- available outside that enterprise.) The information provided for each
+-- product (localized name, icon, link to the full Google Play details
+-- page) is intended to allow a basic representation of the product within
+-- an EMM user interface.
+--
+-- /See:/ 'product' smart constructor.
+data Product =
+  Product'
+    { _pScreenshotURLs             :: !(Maybe [Text])
+    , _pLastUpdatedTimestampMillis :: !(Maybe (Textual Int64))
+    , _pSmallIconURL               :: !(Maybe Text)
+    , _pAuthorName                 :: !(Maybe Text)
+    , _pAppTracks                  :: !(Maybe [TrackInfo])
+    , _pKind                       :: !Text
+    , _pWorkDetailsURL             :: !(Maybe Text)
+    , _pRequiresContainerApp       :: !(Maybe Bool)
+    , _pCategory                   :: !(Maybe Text)
+    , _pAppVersion                 :: !(Maybe [AppVersion])
+    , _pProductPricing             :: !(Maybe Text)
+    , _pDistributionChannel        :: !(Maybe Text)
+    , _pMinAndroidSdkVersion       :: !(Maybe (Textual Int32))
+    , _pAvailableCountries         :: !(Maybe [Text])
+    , _pAvailableTracks            :: !(Maybe [Text])
+    , _pIconURL                    :: !(Maybe Text)
+    , _pPermissions                :: !(Maybe [ProductPermission])
+    , _pTitle                      :: !(Maybe Text)
+    , _pSigningCertificate         :: !(Maybe ProductSigningCertificate)
+    , _pContentRating              :: !(Maybe Text)
+    , _pProductId                  :: !(Maybe Text)
+    , _pRecentChanges              :: !(Maybe Text)
+    , _pDescription                :: !(Maybe Text)
+    , _pDetailsURL                 :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Product' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pScreenshotURLs'
+--
+-- * 'pLastUpdatedTimestampMillis'
+--
+-- * 'pSmallIconURL'
+--
+-- * 'pAuthorName'
+--
+-- * 'pAppTracks'
+--
+-- * 'pKind'
+--
+-- * 'pWorkDetailsURL'
+--
+-- * 'pRequiresContainerApp'
+--
+-- * 'pCategory'
+--
+-- * 'pAppVersion'
+--
+-- * 'pProductPricing'
+--
+-- * 'pDistributionChannel'
+--
+-- * 'pMinAndroidSdkVersion'
+--
+-- * 'pAvailableCountries'
+--
+-- * 'pAvailableTracks'
+--
+-- * 'pIconURL'
+--
+-- * 'pPermissions'
+--
+-- * 'pTitle'
+--
+-- * 'pSigningCertificate'
+--
+-- * 'pContentRating'
+--
+-- * 'pProductId'
+--
+-- * 'pRecentChanges'
+--
+-- * 'pDescription'
+--
+-- * 'pDetailsURL'
+product
+    :: Product
+product =
+  Product'
+    { _pScreenshotURLs = Nothing
+    , _pLastUpdatedTimestampMillis = Nothing
+    , _pSmallIconURL = Nothing
+    , _pAuthorName = Nothing
+    , _pAppTracks = Nothing
+    , _pKind = "androidenterprise#product"
+    , _pWorkDetailsURL = Nothing
+    , _pRequiresContainerApp = Nothing
+    , _pCategory = Nothing
+    , _pAppVersion = Nothing
+    , _pProductPricing = Nothing
+    , _pDistributionChannel = Nothing
+    , _pMinAndroidSdkVersion = Nothing
+    , _pAvailableCountries = Nothing
+    , _pAvailableTracks = Nothing
+    , _pIconURL = Nothing
+    , _pPermissions = Nothing
+    , _pTitle = Nothing
+    , _pSigningCertificate = Nothing
+    , _pContentRating = Nothing
+    , _pProductId = Nothing
+    , _pRecentChanges = Nothing
+    , _pDescription = Nothing
+    , _pDetailsURL = Nothing
+    }
+
+
+-- | A list of screenshot links representing the app.
+pScreenshotURLs :: Lens' Product [Text]
+pScreenshotURLs
+  = lens _pScreenshotURLs
+      (\ s a -> s{_pScreenshotURLs = a})
+      . _Default
+      . _Coerce
+
+-- | The approximate time (within 7 days) the app was last published,
+-- expressed in milliseconds since epoch.
+pLastUpdatedTimestampMillis :: Lens' Product (Maybe Int64)
+pLastUpdatedTimestampMillis
+  = lens _pLastUpdatedTimestampMillis
+      (\ s a -> s{_pLastUpdatedTimestampMillis = a})
+      . mapping _Coerce
+
+-- | A link to a smaller image that can be used as an icon for the product.
+-- This image is suitable for use at up to 128px x 128px.
+pSmallIconURL :: Lens' Product (Maybe Text)
+pSmallIconURL
+  = lens _pSmallIconURL
+      (\ s a -> s{_pSmallIconURL = a})
+
+-- | The name of the author of the product (for example, the app developer).
+pAuthorName :: Lens' Product (Maybe Text)
+pAuthorName
+  = lens _pAuthorName (\ s a -> s{_pAuthorName = a})
+
+-- | The tracks visible to the enterprise.
+pAppTracks :: Lens' Product [TrackInfo]
+pAppTracks
+  = lens _pAppTracks (\ s a -> s{_pAppTracks = a}) .
+      _Default
+      . _Coerce
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#product\".
+pKind :: Lens' Product Text
+pKind = lens _pKind (\ s a -> s{_pKind = a})
+
+-- | A link to the managed Google Play details page for the product, for use
+-- by an Enterprise admin.
+pWorkDetailsURL :: Lens' Product (Maybe Text)
+pWorkDetailsURL
+  = lens _pWorkDetailsURL
+      (\ s a -> s{_pWorkDetailsURL = a})
+
+-- | Deprecated.
+pRequiresContainerApp :: Lens' Product (Maybe Bool)
+pRequiresContainerApp
+  = lens _pRequiresContainerApp
+      (\ s a -> s{_pRequiresContainerApp = a})
+
+-- | The app category (e.g. RACING, SOCIAL, etc.)
+pCategory :: Lens' Product (Maybe Text)
+pCategory
+  = lens _pCategory (\ s a -> s{_pCategory = a})
+
+-- | App versions currently available for this product.
+pAppVersion :: Lens' Product [AppVersion]
+pAppVersion
+  = lens _pAppVersion (\ s a -> s{_pAppVersion = a}) .
+      _Default
+      . _Coerce
+
+-- | Whether this product is free, free with in-app purchases, or paid. If
+-- the pricing is unknown, this means the product is not generally
+-- available anymore (even though it might still be available to people who
+-- own it).
+pProductPricing :: Lens' Product (Maybe Text)
+pProductPricing
+  = lens _pProductPricing
+      (\ s a -> s{_pProductPricing = a})
+
+-- | How and to whom the package is made available. The value
+-- publicGoogleHosted means that the package is available through the Play
+-- store and not restricted to a specific enterprise. The value
+-- privateGoogleHosted means that the package is a private app (restricted
+-- to an enterprise) but hosted by Google. The value privateSelfHosted
+-- means that the package is a private app (restricted to an enterprise)
+-- and is privately hosted.
+pDistributionChannel :: Lens' Product (Maybe Text)
+pDistributionChannel
+  = lens _pDistributionChannel
+      (\ s a -> s{_pDistributionChannel = a})
+
+-- | The minimum Android SDK necessary to run the app.
+pMinAndroidSdkVersion :: Lens' Product (Maybe Int32)
+pMinAndroidSdkVersion
+  = lens _pMinAndroidSdkVersion
+      (\ s a -> s{_pMinAndroidSdkVersion = a})
+      . mapping _Coerce
+
+-- | The countries which this app is available in.
+pAvailableCountries :: Lens' Product [Text]
+pAvailableCountries
+  = lens _pAvailableCountries
+      (\ s a -> s{_pAvailableCountries = a})
+      . _Default
+      . _Coerce
+
+-- | Deprecated, use appTracks instead.
+pAvailableTracks :: Lens' Product [Text]
+pAvailableTracks
+  = lens _pAvailableTracks
+      (\ s a -> s{_pAvailableTracks = a})
+      . _Default
+      . _Coerce
+
+-- | A link to an image that can be used as an icon for the product. This
+-- image is suitable for use at up to 512px x 512px.
+pIconURL :: Lens' Product (Maybe Text)
+pIconURL = lens _pIconURL (\ s a -> s{_pIconURL = a})
+
+-- | A list of permissions required by the app.
+pPermissions :: Lens' Product [ProductPermission]
+pPermissions
+  = lens _pPermissions (\ s a -> s{_pPermissions = a})
+      . _Default
+      . _Coerce
+
+-- | The name of the product.
+pTitle :: Lens' Product (Maybe Text)
+pTitle = lens _pTitle (\ s a -> s{_pTitle = a})
+
+-- | The certificate used to sign this product.
+pSigningCertificate :: Lens' Product (Maybe ProductSigningCertificate)
+pSigningCertificate
+  = lens _pSigningCertificate
+      (\ s a -> s{_pSigningCertificate = a})
+
+-- | The content rating for this app.
+pContentRating :: Lens' Product (Maybe Text)
+pContentRating
+  = lens _pContentRating
+      (\ s a -> s{_pContentRating = a})
+
+-- | A string of the form app:. For example, app:com.google.android.gm
+-- represents the Gmail app.
+pProductId :: Lens' Product (Maybe Text)
+pProductId
+  = lens _pProductId (\ s a -> s{_pProductId = a})
+
+-- | A description of the recent changes made to the app.
+pRecentChanges :: Lens' Product (Maybe Text)
+pRecentChanges
+  = lens _pRecentChanges
+      (\ s a -> s{_pRecentChanges = a})
+
+-- | The localized promotional description, if available.
+pDescription :: Lens' Product (Maybe Text)
+pDescription
+  = lens _pDescription (\ s a -> s{_pDescription = a})
+
+-- | A link to the (consumer) Google Play details page for the product.
+pDetailsURL :: Lens' Product (Maybe Text)
+pDetailsURL
+  = lens _pDetailsURL (\ s a -> s{_pDetailsURL = a})
+
+instance FromJSON Product where
+        parseJSON
+          = withObject "Product"
+              (\ o ->
+                 Product' <$>
+                   (o .:? "screenshotUrls" .!= mempty) <*>
+                     (o .:? "lastUpdatedTimestampMillis")
+                     <*> (o .:? "smallIconUrl")
+                     <*> (o .:? "authorName")
+                     <*> (o .:? "appTracks" .!= mempty)
+                     <*> (o .:? "kind" .!= "androidenterprise#product")
+                     <*> (o .:? "workDetailsUrl")
+                     <*> (o .:? "requiresContainerApp")
+                     <*> (o .:? "category")
+                     <*> (o .:? "appVersion" .!= mempty)
+                     <*> (o .:? "productPricing")
+                     <*> (o .:? "distributionChannel")
+                     <*> (o .:? "minAndroidSdkVersion")
+                     <*> (o .:? "availableCountries" .!= mempty)
+                     <*> (o .:? "availableTracks" .!= mempty)
+                     <*> (o .:? "iconUrl")
+                     <*> (o .:? "permissions" .!= mempty)
+                     <*> (o .:? "title")
+                     <*> (o .:? "signingCertificate")
+                     <*> (o .:? "contentRating")
+                     <*> (o .:? "productId")
+                     <*> (o .:? "recentChanges")
+                     <*> (o .:? "description")
+                     <*> (o .:? "detailsUrl"))
+
+instance ToJSON Product where
+        toJSON Product'{..}
+          = object
+              (catMaybes
+                 [("screenshotUrls" .=) <$> _pScreenshotURLs,
+                  ("lastUpdatedTimestampMillis" .=) <$>
+                    _pLastUpdatedTimestampMillis,
+                  ("smallIconUrl" .=) <$> _pSmallIconURL,
+                  ("authorName" .=) <$> _pAuthorName,
+                  ("appTracks" .=) <$> _pAppTracks,
+                  Just ("kind" .= _pKind),
+                  ("workDetailsUrl" .=) <$> _pWorkDetailsURL,
+                  ("requiresContainerApp" .=) <$>
+                    _pRequiresContainerApp,
+                  ("category" .=) <$> _pCategory,
+                  ("appVersion" .=) <$> _pAppVersion,
+                  ("productPricing" .=) <$> _pProductPricing,
+                  ("distributionChannel" .=) <$> _pDistributionChannel,
+                  ("minAndroidSdkVersion" .=) <$>
+                    _pMinAndroidSdkVersion,
+                  ("availableCountries" .=) <$> _pAvailableCountries,
+                  ("availableTracks" .=) <$> _pAvailableTracks,
+                  ("iconUrl" .=) <$> _pIconURL,
+                  ("permissions" .=) <$> _pPermissions,
+                  ("title" .=) <$> _pTitle,
+                  ("signingCertificate" .=) <$> _pSigningCertificate,
+                  ("contentRating" .=) <$> _pContentRating,
+                  ("productId" .=) <$> _pProductId,
+                  ("recentChanges" .=) <$> _pRecentChanges,
+                  ("description" .=) <$> _pDescription,
+                  ("detailsUrl" .=) <$> _pDetailsURL])
+
+-- | The entitlement resources for the user.
+--
+-- /See:/ 'entitlementsListResponse' smart constructor.
+data EntitlementsListResponse =
+  EntitlementsListResponse'
+    { _entKind        :: !Text
+    , _entEntitlement :: !(Maybe [Entitlement])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'EntitlementsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'entKind'
+--
+-- * 'entEntitlement'
+entitlementsListResponse
+    :: EntitlementsListResponse
+entitlementsListResponse =
+  EntitlementsListResponse'
+    { _entKind = "androidenterprise#entitlementsListResponse"
+    , _entEntitlement = Nothing
+    }
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#entitlementsListResponse\".
+entKind :: Lens' EntitlementsListResponse Text
+entKind = lens _entKind (\ s a -> s{_entKind = a})
+
+-- | An entitlement of a user to a product (e.g. an app). For example, a free
+-- app that they have installed, or a paid app that they have been
+-- allocated a license to.
+entEntitlement :: Lens' EntitlementsListResponse [Entitlement]
+entEntitlement
+  = lens _entEntitlement
+      (\ s a -> s{_entEntitlement = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON EntitlementsListResponse where
+        parseJSON
+          = withObject "EntitlementsListResponse"
+              (\ o ->
+                 EntitlementsListResponse' <$>
+                   (o .:? "kind" .!=
+                      "androidenterprise#entitlementsListResponse")
+                     <*> (o .:? "entitlement" .!= mempty))
+
+instance ToJSON EntitlementsListResponse where
+        toJSON EntitlementsListResponse'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _entKind),
+                  ("entitlement" .=) <$> _entEntitlement])
+
+-- | Information about the permissions required by a specific app and whether
+-- they have been accepted by the enterprise.
+--
+-- /See:/ 'productPermissions' smart constructor.
+data ProductPermissions =
+  ProductPermissions'
+    { _ppsKind       :: !Text
+    , _ppsPermission :: !(Maybe [ProductPermission])
+    , _ppsProductId  :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProductPermissions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ppsKind'
+--
+-- * 'ppsPermission'
+--
+-- * 'ppsProductId'
+productPermissions
+    :: ProductPermissions
+productPermissions =
+  ProductPermissions'
+    { _ppsKind = "androidenterprise#productPermissions"
+    , _ppsPermission = Nothing
+    , _ppsProductId = Nothing
+    }
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#productPermissions\".
+ppsKind :: Lens' ProductPermissions Text
+ppsKind = lens _ppsKind (\ s a -> s{_ppsKind = a})
+
+-- | The permissions required by the app.
+ppsPermission :: Lens' ProductPermissions [ProductPermission]
+ppsPermission
+  = lens _ppsPermission
+      (\ s a -> s{_ppsPermission = a})
+      . _Default
+      . _Coerce
+
+-- | The ID of the app that the permissions relate to, e.g.
+-- \"app:com.google.android.gm\".
+ppsProductId :: Lens' ProductPermissions (Maybe Text)
+ppsProductId
+  = lens _ppsProductId (\ s a -> s{_ppsProductId = a})
+
+instance FromJSON ProductPermissions where
+        parseJSON
+          = withObject "ProductPermissions"
+              (\ o ->
+                 ProductPermissions' <$>
+                   (o .:? "kind" .!=
+                      "androidenterprise#productPermissions")
+                     <*> (o .:? "permission" .!= mempty)
+                     <*> (o .:? "productId"))
+
+instance ToJSON ProductPermissions where
+        toJSON ProductPermissions'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _ppsKind),
+                  ("permission" .=) <$> _ppsPermission,
+                  ("productId" .=) <$> _ppsProductId])
+
+--
+-- /See:/ 'administratorWebTokenSpecManagedConfigurations' smart constructor.
+newtype AdministratorWebTokenSpecManagedConfigurations =
+  AdministratorWebTokenSpecManagedConfigurations'
+    { _awtsmcEnabled :: Maybe Bool
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AdministratorWebTokenSpecManagedConfigurations' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'awtsmcEnabled'
+administratorWebTokenSpecManagedConfigurations
+    :: AdministratorWebTokenSpecManagedConfigurations
+administratorWebTokenSpecManagedConfigurations =
+  AdministratorWebTokenSpecManagedConfigurations' {_awtsmcEnabled = Nothing}
+
+
+-- | Whether the Managed Configuration page is displayed. Default is true.
+awtsmcEnabled :: Lens' AdministratorWebTokenSpecManagedConfigurations (Maybe Bool)
+awtsmcEnabled
+  = lens _awtsmcEnabled
+      (\ s a -> s{_awtsmcEnabled = a})
+
+instance FromJSON
+           AdministratorWebTokenSpecManagedConfigurations
+         where
+        parseJSON
+          = withObject
+              "AdministratorWebTokenSpecManagedConfigurations"
+              (\ o ->
+                 AdministratorWebTokenSpecManagedConfigurations' <$>
+                   (o .:? "enabled"))
+
+instance ToJSON
+           AdministratorWebTokenSpecManagedConfigurations
+         where
+        toJSON
+          AdministratorWebTokenSpecManagedConfigurations'{..}
+          = object
+              (catMaybes [("enabled" .=) <$> _awtsmcEnabled])
+
+-- | A Permissions resource represents some extra capability, to be granted
+-- to an Android app, which requires explicit consent. An enterprise admin
+-- must consent to these permissions on behalf of their users before an
+-- entitlement for the app can be created. The permissions collection is
+-- read-only. The information provided for each permission (localized name
+-- and description) is intended to be used in the MDM user interface when
+-- obtaining consent from the enterprise.
+--
+-- /See:/ 'permission' smart constructor.
+data Permission =
+  Permission'
+    { _perKind         :: !Text
+    , _perName         :: !(Maybe Text)
+    , _perDescription  :: !(Maybe Text)
+    , _perPermissionId :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Permission' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'perKind'
+--
+-- * 'perName'
+--
+-- * 'perDescription'
+--
+-- * 'perPermissionId'
+permission
+    :: Permission
+permission =
+  Permission'
+    { _perKind = "androidenterprise#permission"
+    , _perName = Nothing
+    , _perDescription = Nothing
+    , _perPermissionId = Nothing
+    }
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#permission\".
+perKind :: Lens' Permission Text
+perKind = lens _perKind (\ s a -> s{_perKind = a})
+
+-- | The name of the permission.
+perName :: Lens' Permission (Maybe Text)
+perName = lens _perName (\ s a -> s{_perName = a})
+
+-- | A longer description of the Permissions resource, giving more details of
+-- what it affects.
+perDescription :: Lens' Permission (Maybe Text)
+perDescription
+  = lens _perDescription
+      (\ s a -> s{_perDescription = a})
+
+-- | An opaque string uniquely identifying the permission.
+perPermissionId :: Lens' Permission (Maybe Text)
+perPermissionId
+  = lens _perPermissionId
+      (\ s a -> s{_perPermissionId = a})
+
+instance FromJSON Permission where
+        parseJSON
+          = withObject "Permission"
+              (\ o ->
+                 Permission' <$>
+                   (o .:? "kind" .!= "androidenterprise#permission") <*>
+                     (o .:? "name")
+                     <*> (o .:? "description")
+                     <*> (o .:? "permissionId"))
+
+instance ToJSON Permission where
+        toJSON Permission'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _perKind), ("name" .=) <$> _perName,
+                  ("description" .=) <$> _perDescription,
+                  ("permissionId" .=) <$> _perPermissionId])
+
+-- | The web app details for an enterprise.
+--
+-- /See:/ 'webAppsListResponse' smart constructor.
+data WebAppsListResponse =
+  WebAppsListResponse'
+    { _walrKind   :: !Text
+    , _walrWebApp :: !(Maybe [WebApp])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'WebAppsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'walrKind'
+--
+-- * 'walrWebApp'
+webAppsListResponse
+    :: WebAppsListResponse
+webAppsListResponse =
+  WebAppsListResponse'
+    {_walrKind = "androidenterprise#webAppsListResponse", _walrWebApp = Nothing}
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#webAppsListResponse\".
+walrKind :: Lens' WebAppsListResponse Text
+walrKind = lens _walrKind (\ s a -> s{_walrKind = a})
+
+-- | The manifest describing a web app.
+walrWebApp :: Lens' WebAppsListResponse [WebApp]
+walrWebApp
+  = lens _walrWebApp (\ s a -> s{_walrWebApp = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON WebAppsListResponse where
+        parseJSON
+          = withObject "WebAppsListResponse"
+              (\ o ->
+                 WebAppsListResponse' <$>
+                   (o .:? "kind" .!=
+                      "androidenterprise#webAppsListResponse")
+                     <*> (o .:? "webApp" .!= mempty))
+
+instance ToJSON WebAppsListResponse where
+        toJSON WebAppsListResponse'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _walrKind),
+                  ("webApp" .=) <$> _walrWebApp])
+
+--
+-- /See:/ 'productsApproveRequest' smart constructor.
+data ProductsApproveRequest =
+  ProductsApproveRequest'
+    { _parApprovalURLInfo     :: !(Maybe ApprovalURLInfo)
+    , _parApprovedPermissions :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProductsApproveRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'parApprovalURLInfo'
+--
+-- * 'parApprovedPermissions'
+productsApproveRequest
+    :: ProductsApproveRequest
+productsApproveRequest =
+  ProductsApproveRequest'
+    {_parApprovalURLInfo = Nothing, _parApprovedPermissions = Nothing}
+
+
+-- | The approval URL that was shown to the user. Only the permissions shown
+-- to the user with that URL will be accepted, which may not be the
+-- product\'s entire set of permissions. For example, the URL may only
+-- display new permissions from an update after the product was approved,
+-- or not include new permissions if the product was updated since the URL
+-- was generated.
+parApprovalURLInfo :: Lens' ProductsApproveRequest (Maybe ApprovalURLInfo)
+parApprovalURLInfo
+  = lens _parApprovalURLInfo
+      (\ s a -> s{_parApprovalURLInfo = a})
+
+-- | Sets how new permission requests for the product are handled.
+-- \"allPermissions\" automatically approves all current and future
+-- permissions for the product. \"currentPermissionsOnly\" approves the
+-- current set of permissions for the product, but any future permissions
+-- added through updates will require manual reapproval. If not specified,
+-- only the current set of permissions will be approved.
+parApprovedPermissions :: Lens' ProductsApproveRequest (Maybe Text)
+parApprovedPermissions
+  = lens _parApprovedPermissions
+      (\ s a -> s{_parApprovedPermissions = a})
+
+instance FromJSON ProductsApproveRequest where
+        parseJSON
+          = withObject "ProductsApproveRequest"
+              (\ o ->
+                 ProductsApproveRequest' <$>
+                   (o .:? "approvalUrlInfo") <*>
+                     (o .:? "approvedPermissions"))
+
+instance ToJSON ProductsApproveRequest where
+        toJSON ProductsApproveRequest'{..}
+          = object
+              (catMaybes
+                 [("approvalUrlInfo" .=) <$> _parApprovalURLInfo,
+                  ("approvedPermissions" .=) <$>
+                    _parApprovedPermissions])
+
+--
+-- /See:/ 'autoInstallPolicy' smart constructor.
+data AutoInstallPolicy =
+  AutoInstallPolicy'
+    { _aipAutoInstallConstraint :: !(Maybe [AutoInstallConstraint])
+    , _aipAutoInstallPriority   :: !(Maybe (Textual Int32))
+    , _aipAutoInstallMode       :: !(Maybe Text)
+    , _aipMinimumVersionCode    :: !(Maybe (Textual Int32))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AutoInstallPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aipAutoInstallConstraint'
+--
+-- * 'aipAutoInstallPriority'
+--
+-- * 'aipAutoInstallMode'
+--
+-- * 'aipMinimumVersionCode'
+autoInstallPolicy
+    :: AutoInstallPolicy
+autoInstallPolicy =
+  AutoInstallPolicy'
+    { _aipAutoInstallConstraint = Nothing
+    , _aipAutoInstallPriority = Nothing
+    , _aipAutoInstallMode = Nothing
+    , _aipMinimumVersionCode = Nothing
+    }
+
+
+-- | The constraints for auto-installing the app. You can specify a maximum
+-- of one constraint.
+aipAutoInstallConstraint :: Lens' AutoInstallPolicy [AutoInstallConstraint]
+aipAutoInstallConstraint
+  = lens _aipAutoInstallConstraint
+      (\ s a -> s{_aipAutoInstallConstraint = a})
+      . _Default
+      . _Coerce
+
+-- | The priority of the install, as an unsigned integer. A lower number
+-- means higher priority.
+aipAutoInstallPriority :: Lens' AutoInstallPolicy (Maybe Int32)
+aipAutoInstallPriority
+  = lens _aipAutoInstallPriority
+      (\ s a -> s{_aipAutoInstallPriority = a})
+      . mapping _Coerce
+
+-- | The auto-install mode. If unset defaults to \"doNotAutoInstall\".
+aipAutoInstallMode :: Lens' AutoInstallPolicy (Maybe Text)
+aipAutoInstallMode
+  = lens _aipAutoInstallMode
+      (\ s a -> s{_aipAutoInstallMode = a})
+
+-- | The minimum version of the app. If a lower version of the app is
+-- installed, then the app will be auto-updated according to the
+-- auto-install constraints, instead of waiting for the regular
+-- auto-update.
+aipMinimumVersionCode :: Lens' AutoInstallPolicy (Maybe Int32)
+aipMinimumVersionCode
+  = lens _aipMinimumVersionCode
+      (\ s a -> s{_aipMinimumVersionCode = a})
+      . mapping _Coerce
+
+instance FromJSON AutoInstallPolicy where
+        parseJSON
+          = withObject "AutoInstallPolicy"
+              (\ o ->
+                 AutoInstallPolicy' <$>
+                   (o .:? "autoInstallConstraint" .!= mempty) <*>
+                     (o .:? "autoInstallPriority")
+                     <*> (o .:? "autoInstallMode")
+                     <*> (o .:? "minimumVersionCode"))
+
+instance ToJSON AutoInstallPolicy where
+        toJSON AutoInstallPolicy'{..}
+          = object
+              (catMaybes
+                 [("autoInstallConstraint" .=) <$>
+                    _aipAutoInstallConstraint,
+                  ("autoInstallPriority" .=) <$>
+                    _aipAutoInstallPriority,
+                  ("autoInstallMode" .=) <$> _aipAutoInstallMode,
+                  ("minimumVersionCode" .=) <$>
+                    _aipMinimumVersionCode])
+
+-- | The presence of an Entitlements resource indicates that a user has the
+-- right to use a particular app. Entitlements are user specific, not
+-- device specific. This allows a user with an entitlement to an app to
+-- install the app on all their devices. It\'s also possible for a user to
+-- hold an entitlement to an app without installing the app on any device.
+-- The API can be used to create an entitlement. As an option, you can also
+-- use the API to trigger the installation of an app on all a user\'s
+-- managed devices at the same time the entitlement is created. If the app
+-- is free, creating the entitlement also creates a group license for that
+-- app. For paid apps, creating the entitlement consumes one license, and
+-- that license remains consumed until the entitlement is removed. If the
+-- enterprise hasn\'t purchased enough licenses, then no entitlement is
+-- created and the installation fails. An entitlement is also not created
+-- for an app if the app requires permissions that the enterprise hasn\'t
+-- accepted. If an entitlement is deleted, the app may be uninstalled from
+-- a user\'s device. As a best practice, uninstall the app by calling
+-- Installs.delete() before deleting the entitlement. Entitlements for apps
+-- that a user pays for on an unmanaged profile have \"userPurchase\" as
+-- the entitlement reason. These entitlements cannot be removed via the
+-- API.
+--
+-- /See:/ 'entitlement' smart constructor.
+data Entitlement =
+  Entitlement'
+    { _eeKind      :: !Text
+    , _eeReason    :: !(Maybe Text)
+    , _eeProductId :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Entitlement' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eeKind'
+--
+-- * 'eeReason'
+--
+-- * 'eeProductId'
+entitlement
+    :: Entitlement
+entitlement =
+  Entitlement'
+    { _eeKind = "androidenterprise#entitlement"
+    , _eeReason = Nothing
+    , _eeProductId = Nothing
+    }
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#entitlement\".
+eeKind :: Lens' Entitlement Text
+eeKind = lens _eeKind (\ s a -> s{_eeKind = a})
+
+-- | The reason for the entitlement. For example, \"free\" for free apps.
+-- This property is temporary: it will be replaced by the acquisition kind
+-- field of group licenses.
+eeReason :: Lens' Entitlement (Maybe Text)
+eeReason = lens _eeReason (\ s a -> s{_eeReason = a})
+
+-- | The ID of the product that the entitlement is for. For example,
+-- \"app:com.google.android.gm\".
+eeProductId :: Lens' Entitlement (Maybe Text)
+eeProductId
+  = lens _eeProductId (\ s a -> s{_eeProductId = a})
+
+instance FromJSON Entitlement where
+        parseJSON
+          = withObject "Entitlement"
+              (\ o ->
+                 Entitlement' <$>
+                   (o .:? "kind" .!= "androidenterprise#entitlement")
+                     <*> (o .:? "reason")
+                     <*> (o .:? "productId"))
+
+instance ToJSON Entitlement where
+        toJSON Entitlement'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _eeKind),
+                  ("reason" .=) <$> _eeReason,
+                  ("productId" .=) <$> _eeProductId])
+
+-- | The matching products.
+--
+-- /See:/ 'productsListResponse' smart constructor.
+data ProductsListResponse =
+  ProductsListResponse'
+    { _plrTokenPagination :: !(Maybe TokenPagination)
+    , _plrPageInfo        :: !(Maybe PageInfo)
+    , _plrKind            :: !Text
+    , _plrProduct         :: !(Maybe [Product])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProductsListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plrTokenPagination'
+--
+-- * 'plrPageInfo'
+--
+-- * 'plrKind'
+--
+-- * 'plrProduct'
+productsListResponse
+    :: ProductsListResponse
+productsListResponse =
+  ProductsListResponse'
+    { _plrTokenPagination = Nothing
+    , _plrPageInfo = Nothing
+    , _plrKind = "androidenterprise#productsListResponse"
+    , _plrProduct = Nothing
+    }
+
+
+-- | Pagination information for token pagination.
+plrTokenPagination :: Lens' ProductsListResponse (Maybe TokenPagination)
+plrTokenPagination
+  = lens _plrTokenPagination
+      (\ s a -> s{_plrTokenPagination = a})
+
+-- | General pagination information.
+plrPageInfo :: Lens' ProductsListResponse (Maybe PageInfo)
+plrPageInfo
+  = lens _plrPageInfo (\ s a -> s{_plrPageInfo = a})
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"androidenterprise#productsListResponse\".
+plrKind :: Lens' ProductsListResponse Text
+plrKind = lens _plrKind (\ s a -> s{_plrKind = a})
+
+-- | Information about a product (e.g. an app) in the Google Play store, for
+-- display to an enterprise admin.
+plrProduct :: Lens' ProductsListResponse [Product]
+plrProduct
+  = lens _plrProduct (\ s a -> s{_plrProduct = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ProductsListResponse where
+        parseJSON
+          = withObject "ProductsListResponse"
+              (\ o ->
+                 ProductsListResponse' <$>
+                   (o .:? "tokenPagination") <*> (o .:? "pageInfo") <*>
+                     (o .:? "kind" .!=
+                        "androidenterprise#productsListResponse")
+                     <*> (o .:? "product" .!= mempty))
+
+instance ToJSON ProductsListResponse where
+        toJSON ProductsListResponse'{..}
+          = object
+              (catMaybes
+                 [("tokenPagination" .=) <$> _plrTokenPagination,
+                  ("pageInfo" .=) <$> _plrPageInfo,
+                  Just ("kind" .= _plrKind),
+                  ("product" .=) <$> _plrProduct])
+
+-- | A WebApps resource represents a web app created for an enterprise. Web
+-- apps are published to managed Google Play and can be distributed like
+-- other Android apps. On a user\'s device, a web app opens its specified
+-- URL.
+--
+-- /See:/ 'webApp' smart constructor.
+data WebApp =
+  WebApp'
+    { _waWebAppId    :: !(Maybe Text)
+    , _waVersionCode :: !(Maybe (Textual Int64))
+    , _waIcons       :: !(Maybe [WebAppIcon])
+    , _waStartURL    :: !(Maybe Text)
+    , _waDisplayMode :: !(Maybe Text)
+    , _waIsPublished :: !(Maybe Bool)
+    , _waTitle       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'WebApp' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'waWebAppId'
+--
+-- * 'waVersionCode'
+--
+-- * 'waIcons'
+--
+-- * 'waStartURL'
+--
+-- * 'waDisplayMode'
+--
+-- * 'waIsPublished'
+--
+-- * 'waTitle'
+webApp
+    :: WebApp
+webApp =
+  WebApp'
+    { _waWebAppId = Nothing
+    , _waVersionCode = Nothing
+    , _waIcons = Nothing
+    , _waStartURL = Nothing
+    , _waDisplayMode = Nothing
+    , _waIsPublished = Nothing
+    , _waTitle = Nothing
+    }
+
+
+-- | The ID of the application. A string of the form \"app:\" where the
+-- package name always starts with the prefix
+-- \"com.google.enterprise.webapp.\" followed by a random id.
+waWebAppId :: Lens' WebApp (Maybe Text)
+waWebAppId
+  = lens _waWebAppId (\ s a -> s{_waWebAppId = a})
+
+-- | The current version of the app. Note that the version can automatically
+-- increase during the lifetime of the web app, while Google does internal
+-- housekeeping to keep the web app up-to-date.
+waVersionCode :: Lens' WebApp (Maybe Int64)
+waVersionCode
+  = lens _waVersionCode
+      (\ s a -> s{_waVersionCode = a})
+      . mapping _Coerce
+
+-- | A list of icons representing this website. If absent, a default icon
+-- (for create) or the current icon (for update) will be used.
+waIcons :: Lens' WebApp [WebAppIcon]
+waIcons
+  = lens _waIcons (\ s a -> s{_waIcons = a}) . _Default
+      . _Coerce
+
+-- | The start URL, i.e. the URL that should load when the user opens the
+-- application.
+waStartURL :: Lens' WebApp (Maybe Text)
+waStartURL
+  = lens _waStartURL (\ s a -> s{_waStartURL = a})
+
+-- | The display mode of the web app. Possible values include: -
+-- \"minimalUi\", the device\'s status bar, navigation bar, the app\'s URL,
+-- and a refresh button are visible when the app is open. For HTTP URLs,
+-- you can only select this option. - \"standalone\", the device\'s status
+-- bar and navigation bar are visible when the app is open. -
+-- \"fullScreen\", the app opens in full screen mode, hiding the device\'s
+-- status and navigation bars. All browser UI elements, page URL, system
+-- status bar and back button are not visible, and the web app takes up the
+-- entirety of the available display area.
+waDisplayMode :: Lens' WebApp (Maybe Text)
+waDisplayMode
+  = lens _waDisplayMode
+      (\ s a -> s{_waDisplayMode = a})
+
+-- | A flag whether the app has been published to the Play store yet.
+waIsPublished :: Lens' WebApp (Maybe Bool)
+waIsPublished
+  = lens _waIsPublished
+      (\ s a -> s{_waIsPublished = a})
+
+-- | The title of the web app as displayed to the user (e.g., amongst a list
+-- of other applications, or as a label for an icon).
 waTitle :: Lens' WebApp (Maybe Text)
 waTitle = lens _waTitle (\ s a -> s{_waTitle = a})
 
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Devices/Get.hs b/gen/Network/Google/Resource/AndroidEnterprise/Devices/Get.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Devices/Get.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Devices/Get.hs
@@ -57,12 +57,15 @@
 -- | Retrieves the details of a device.
 --
 -- /See:/ 'devicesGet' smart constructor.
-data DevicesGet = DevicesGet'
+data DevicesGet =
+  DevicesGet'
     { _dgEnterpriseId :: !Text
     , _dgUserId       :: !Text
     , _dgDeviceId     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DevicesGet' 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 -- ^ 'dgDeviceId'
     -> DevicesGet
 devicesGet pDgEnterpriseId_ pDgUserId_ pDgDeviceId_ =
-    DevicesGet'
+  DevicesGet'
     { _dgEnterpriseId = pDgEnterpriseId_
     , _dgUserId = pDgUserId_
     , _dgDeviceId = pDgDeviceId_
     }
+
 
 -- | The ID of the enterprise.
 dgEnterpriseId :: Lens' DevicesGet Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Devices/GetState.hs b/gen/Network/Google/Resource/AndroidEnterprise/Devices/GetState.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Devices/GetState.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Devices/GetState.hs
@@ -66,12 +66,15 @@
 -- services. This is only supported for Google-managed users.
 --
 -- /See:/ 'devicesGetState' smart constructor.
-data DevicesGetState = DevicesGetState'
+data DevicesGetState =
+  DevicesGetState'
     { _dgsEnterpriseId :: !Text
     , _dgsUserId       :: !Text
     , _dgsDeviceId     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DevicesGetState' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,11 +90,12 @@
     -> Text -- ^ 'dgsDeviceId'
     -> DevicesGetState
 devicesGetState pDgsEnterpriseId_ pDgsUserId_ pDgsDeviceId_ =
-    DevicesGetState'
+  DevicesGetState'
     { _dgsEnterpriseId = pDgsEnterpriseId_
     , _dgsUserId = pDgsUserId_
     , _dgsDeviceId = pDgsDeviceId_
     }
+
 
 -- | The ID of the enterprise.
 dgsEnterpriseId :: Lens' DevicesGetState Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Devices/List.hs b/gen/Network/Google/Resource/AndroidEnterprise/Devices/List.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Devices/List.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Devices/List.hs
@@ -56,11 +56,14 @@
 -- | Retrieves the IDs of all of a user\'s devices.
 --
 -- /See:/ 'devicesList' smart constructor.
-data DevicesList = DevicesList'
+data DevicesList =
+  DevicesList'
     { _dlEnterpriseId :: !Text
     , _dlUserId       :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DevicesList' 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 -- ^ 'dlUserId'
     -> DevicesList
 devicesList pDlEnterpriseId_ pDlUserId_ =
-    DevicesList'
-    { _dlEnterpriseId = pDlEnterpriseId_
-    , _dlUserId = pDlUserId_
-    }
+  DevicesList' {_dlEnterpriseId = pDlEnterpriseId_, _dlUserId = pDlUserId_}
+
 
 -- | The ID of the enterprise.
 dlEnterpriseId :: Lens' DevicesList Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Devices/Patch.hs b/gen/Network/Google/Resource/AndroidEnterprise/Devices/Patch.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Devices/Patch.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Devices/Patch.hs
@@ -61,14 +61,17 @@
 -- | Updates the device policy. This method supports patch semantics.
 --
 -- /See:/ 'devicesPatch' smart constructor.
-data DevicesPatch = DevicesPatch'
+data DevicesPatch =
+  DevicesPatch'
     { _dpUpdateMask   :: !(Maybe Text)
     , _dpEnterpriseId :: !Text
     , _dpPayload      :: !Device
     , _dpUserId       :: !Text
     , _dpDeviceId     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DevicesPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -89,13 +92,14 @@
     -> Text -- ^ 'dpDeviceId'
     -> DevicesPatch
 devicesPatch pDpEnterpriseId_ pDpPayload_ pDpUserId_ pDpDeviceId_ =
-    DevicesPatch'
+  DevicesPatch'
     { _dpUpdateMask = Nothing
     , _dpEnterpriseId = pDpEnterpriseId_
     , _dpPayload = pDpPayload_
     , _dpUserId = pDpUserId_
     , _dpDeviceId = pDpDeviceId_
     }
+
 
 -- | Mask that identifies which fields to update. If not set, all modifiable
 -- fields will be modified. When set in a query parameter, this field
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Devices/SetState.hs b/gen/Network/Google/Resource/AndroidEnterprise/Devices/SetState.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Devices/SetState.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Devices/SetState.hs
@@ -69,13 +69,16 @@
 -- services. This is only supported for Google-managed users.
 --
 -- /See:/ 'devicesSetState' smart constructor.
-data DevicesSetState = DevicesSetState'
+data DevicesSetState =
+  DevicesSetState'
     { _dssEnterpriseId :: !Text
     , _dssPayload      :: !DeviceState
     , _dssUserId       :: !Text
     , _dssDeviceId     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DevicesSetState' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -94,12 +97,13 @@
     -> Text -- ^ 'dssDeviceId'
     -> DevicesSetState
 devicesSetState pDssEnterpriseId_ pDssPayload_ pDssUserId_ pDssDeviceId_ =
-    DevicesSetState'
+  DevicesSetState'
     { _dssEnterpriseId = pDssEnterpriseId_
     , _dssPayload = pDssPayload_
     , _dssUserId = pDssUserId_
     , _dssDeviceId = pDssDeviceId_
     }
+
 
 -- | The ID of the enterprise.
 dssEnterpriseId :: Lens' DevicesSetState Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Devices/Update.hs b/gen/Network/Google/Resource/AndroidEnterprise/Devices/Update.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Devices/Update.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Devices/Update.hs
@@ -61,14 +61,17 @@
 -- | Updates the device policy
 --
 -- /See:/ 'devicesUpdate' smart constructor.
-data DevicesUpdate = DevicesUpdate'
+data DevicesUpdate =
+  DevicesUpdate'
     { _duUpdateMask   :: !(Maybe Text)
     , _duEnterpriseId :: !Text
     , _duPayload      :: !Device
     , _duUserId       :: !Text
     , _duDeviceId     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DevicesUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -89,13 +92,14 @@
     -> Text -- ^ 'duDeviceId'
     -> DevicesUpdate
 devicesUpdate pDuEnterpriseId_ pDuPayload_ pDuUserId_ pDuDeviceId_ =
-    DevicesUpdate'
+  DevicesUpdate'
     { _duUpdateMask = Nothing
     , _duEnterpriseId = pDuEnterpriseId_
     , _duPayload = pDuPayload_
     , _duUserId = pDuUserId_
     , _duDeviceId = pDuDeviceId_
     }
+
 
 -- | Mask that identifies which fields to update. If not set, all modifiable
 -- fields will be modified. When set in a query parameter, this field
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/AcknowledgeNotificationSet.hs b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/AcknowledgeNotificationSet.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/AcknowledgeNotificationSet.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/AcknowledgeNotificationSet.hs
@@ -56,10 +56,13 @@
 -- returning the same notifications.
 --
 -- /See:/ 'enterprisesAcknowledgeNotificationSet' smart constructor.
-newtype EnterprisesAcknowledgeNotificationSet = EnterprisesAcknowledgeNotificationSet'
+newtype EnterprisesAcknowledgeNotificationSet =
+  EnterprisesAcknowledgeNotificationSet'
     { _eansNotificationSetId :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EnterprisesAcknowledgeNotificationSet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -68,10 +71,9 @@
 enterprisesAcknowledgeNotificationSet
     :: EnterprisesAcknowledgeNotificationSet
 enterprisesAcknowledgeNotificationSet =
-    EnterprisesAcknowledgeNotificationSet'
-    { _eansNotificationSetId = Nothing
-    }
+  EnterprisesAcknowledgeNotificationSet' {_eansNotificationSetId = Nothing}
 
+
 -- | The notification set ID as returned by Enterprises.PullNotificationSet.
 -- This must be provided.
 eansNotificationSetId :: Lens' EnterprisesAcknowledgeNotificationSet (Maybe Text)
@@ -80,7 +82,8 @@
       (\ s a -> s{_eansNotificationSetId = a})
 
 instance GoogleRequest
-         EnterprisesAcknowledgeNotificationSet where
+           EnterprisesAcknowledgeNotificationSet
+         where
         type Rs EnterprisesAcknowledgeNotificationSet = ()
         type Scopes EnterprisesAcknowledgeNotificationSet =
              '["https://www.googleapis.com/auth/androidenterprise"]
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/CompleteSignup.hs b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/CompleteSignup.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/CompleteSignup.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/CompleteSignup.hs
@@ -58,11 +58,14 @@
 -- given Enterprise Token.
 --
 -- /See:/ 'enterprisesCompleteSignup' smart constructor.
-data EnterprisesCompleteSignup = EnterprisesCompleteSignup'
+data EnterprisesCompleteSignup =
+  EnterprisesCompleteSignup'
     { _ecsCompletionToken :: !(Maybe Text)
     , _ecsEnterpriseToken :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EnterprisesCompleteSignup' 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 @@
 enterprisesCompleteSignup
     :: EnterprisesCompleteSignup
 enterprisesCompleteSignup =
-    EnterprisesCompleteSignup'
-    { _ecsCompletionToken = Nothing
-    , _ecsEnterpriseToken = Nothing
-    }
+  EnterprisesCompleteSignup'
+    {_ecsCompletionToken = Nothing, _ecsEnterpriseToken = Nothing}
+
 
 -- | The Completion token initially returned by GenerateSignupUrl.
 ecsCompletionToken :: Lens' EnterprisesCompleteSignup (Maybe Text)
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/CreateWebToken.hs b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/CreateWebToken.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/CreateWebToken.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/CreateWebToken.hs
@@ -61,11 +61,14 @@
 -- API documentation for further information.
 --
 -- /See:/ 'enterprisesCreateWebToken' smart constructor.
-data EnterprisesCreateWebToken = EnterprisesCreateWebToken'
+data EnterprisesCreateWebToken =
+  EnterprisesCreateWebToken'
     { _ecwtEnterpriseId :: !Text
     , _ecwtPayload      :: !AdministratorWebTokenSpec
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EnterprisesCreateWebToken' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -78,10 +81,9 @@
     -> AdministratorWebTokenSpec -- ^ 'ecwtPayload'
     -> EnterprisesCreateWebToken
 enterprisesCreateWebToken pEcwtEnterpriseId_ pEcwtPayload_ =
-    EnterprisesCreateWebToken'
-    { _ecwtEnterpriseId = pEcwtEnterpriseId_
-    , _ecwtPayload = pEcwtPayload_
-    }
+  EnterprisesCreateWebToken'
+    {_ecwtEnterpriseId = pEcwtEnterpriseId_, _ecwtPayload = pEcwtPayload_}
+
 
 -- | The ID of the enterprise.
 ecwtEnterpriseId :: Lens' EnterprisesCreateWebToken Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/Enroll.hs b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/Enroll.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/Enroll.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/Enroll.hs
@@ -54,11 +54,14 @@
 -- | Enrolls an enterprise with the calling EMM.
 --
 -- /See:/ 'enterprisesEnroll' smart constructor.
-data EnterprisesEnroll = EnterprisesEnroll'
+data EnterprisesEnroll =
+  EnterprisesEnroll'
     { _eeToken   :: !Text
     , _eePayload :: !Enterprise
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EnterprisesEnroll' 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 @@
     -> Enterprise -- ^ 'eePayload'
     -> EnterprisesEnroll
 enterprisesEnroll pEeToken_ pEePayload_ =
-    EnterprisesEnroll'
-    { _eeToken = pEeToken_
-    , _eePayload = pEePayload_
-    }
+  EnterprisesEnroll' {_eeToken = pEeToken_, _eePayload = pEePayload_}
+
 
 -- | The token provided by the enterprise to register the EMM.
 eeToken :: Lens' EnterprisesEnroll Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/GenerateSignupURL.hs b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/GenerateSignupURL.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/GenerateSignupURL.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/GenerateSignupURL.hs
@@ -52,10 +52,13 @@
 -- | Generates a sign-up URL.
 --
 -- /See:/ 'enterprisesGenerateSignupURL' smart constructor.
-newtype EnterprisesGenerateSignupURL = EnterprisesGenerateSignupURL'
+newtype EnterprisesGenerateSignupURL =
+  EnterprisesGenerateSignupURL'
     { _egsuCallbackURL :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EnterprisesGenerateSignupURL' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -64,9 +67,8 @@
 enterprisesGenerateSignupURL
     :: EnterprisesGenerateSignupURL
 enterprisesGenerateSignupURL =
-    EnterprisesGenerateSignupURL'
-    { _egsuCallbackURL = Nothing
-    }
+  EnterprisesGenerateSignupURL' {_egsuCallbackURL = Nothing}
+
 
 -- | The callback URL to which the Admin will be redirected after
 -- successfully creating an enterprise. Before redirecting there the system
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/Get.hs b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/Get.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/Get.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/Get.hs
@@ -51,10 +51,13 @@
 -- | Retrieves the name and domain of an enterprise.
 --
 -- /See:/ 'enterprisesGet' smart constructor.
-newtype EnterprisesGet = EnterprisesGet'
+newtype EnterprisesGet =
+  EnterprisesGet'
     { _eEnterpriseId :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EnterprisesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -64,9 +67,8 @@
     :: Text -- ^ 'eEnterpriseId'
     -> EnterprisesGet
 enterprisesGet pEEnterpriseId_ =
-    EnterprisesGet'
-    { _eEnterpriseId = pEEnterpriseId_
-    }
+  EnterprisesGet' {_eEnterpriseId = pEEnterpriseId_}
+
 
 -- | The ID of the enterprise.
 eEnterpriseId :: Lens' EnterprisesGet Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/GetAndroidDevicePolicyConfig.hs b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/GetAndroidDevicePolicyConfig.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/GetAndroidDevicePolicyConfig.hs
+++ /dev/null
@@ -1,95 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.AndroidEnterprise.Enterprises.GetAndroidDevicePolicyConfig
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deprecated and unused.
---
--- /See:/ <https://developers.google.com/android/work/play/emm-api Google Play EMM API Reference> for @androidenterprise.enterprises.getAndroidDevicePolicyConfig@.
-module Network.Google.Resource.AndroidEnterprise.Enterprises.GetAndroidDevicePolicyConfig
-    (
-    -- * REST Resource
-      EnterprisesGetAndroidDevicePolicyConfigResource
-
-    -- * Creating a Request
-    , enterprisesGetAndroidDevicePolicyConfig
-    , EnterprisesGetAndroidDevicePolicyConfig
-
-    -- * Request Lenses
-    , egadpcEnterpriseId
-    ) where
-
-import           Network.Google.AndroidEnterprise.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidenterprise.enterprises.getAndroidDevicePolicyConfig@ method which the
--- 'EnterprisesGetAndroidDevicePolicyConfig' request conforms to.
-type EnterprisesGetAndroidDevicePolicyConfigResource
-     =
-     "androidenterprise" :>
-       "v1" :>
-         "enterprises" :>
-           Capture "enterpriseId" Text :>
-             "androidDevicePolicyConfig" :>
-               QueryParam "alt" AltJSON :>
-                 Get '[JSON] AndroidDevicePolicyConfig
-
--- | Deprecated and unused.
---
--- /See:/ 'enterprisesGetAndroidDevicePolicyConfig' smart constructor.
-newtype EnterprisesGetAndroidDevicePolicyConfig = EnterprisesGetAndroidDevicePolicyConfig'
-    { _egadpcEnterpriseId :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EnterprisesGetAndroidDevicePolicyConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'egadpcEnterpriseId'
-enterprisesGetAndroidDevicePolicyConfig
-    :: Text -- ^ 'egadpcEnterpriseId'
-    -> EnterprisesGetAndroidDevicePolicyConfig
-enterprisesGetAndroidDevicePolicyConfig pEgadpcEnterpriseId_ =
-    EnterprisesGetAndroidDevicePolicyConfig'
-    { _egadpcEnterpriseId = pEgadpcEnterpriseId_
-    }
-
--- | The ID of the enterprise.
-egadpcEnterpriseId :: Lens' EnterprisesGetAndroidDevicePolicyConfig Text
-egadpcEnterpriseId
-  = lens _egadpcEnterpriseId
-      (\ s a -> s{_egadpcEnterpriseId = a})
-
-instance GoogleRequest
-         EnterprisesGetAndroidDevicePolicyConfig where
-        type Rs EnterprisesGetAndroidDevicePolicyConfig =
-             AndroidDevicePolicyConfig
-        type Scopes EnterprisesGetAndroidDevicePolicyConfig =
-             '["https://www.googleapis.com/auth/androidenterprise"]
-        requestClient
-          EnterprisesGetAndroidDevicePolicyConfig'{..}
-          = go _egadpcEnterpriseId (Just AltJSON)
-              androidEnterpriseService
-          where go
-                  = buildClient
-                      (Proxy ::
-                         Proxy
-                           EnterprisesGetAndroidDevicePolicyConfigResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/GetServiceAccount.hs b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/GetServiceAccount.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/GetServiceAccount.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/GetServiceAccount.hs
@@ -77,11 +77,14 @@
 -- the serviceAccountKeys resource.
 --
 -- /See:/ 'enterprisesGetServiceAccount' smart constructor.
-data EnterprisesGetServiceAccount = EnterprisesGetServiceAccount'
+data EnterprisesGetServiceAccount =
+  EnterprisesGetServiceAccount'
     { _egsaKeyType      :: !(Maybe EnterprisesGetServiceAccountKeyType)
     , _egsaEnterpriseId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EnterprisesGetServiceAccount' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -93,10 +96,9 @@
     :: Text -- ^ 'egsaEnterpriseId'
     -> EnterprisesGetServiceAccount
 enterprisesGetServiceAccount pEgsaEnterpriseId_ =
-    EnterprisesGetServiceAccount'
-    { _egsaKeyType = Nothing
-    , _egsaEnterpriseId = pEgsaEnterpriseId_
-    }
+  EnterprisesGetServiceAccount'
+    {_egsaKeyType = Nothing, _egsaEnterpriseId = pEgsaEnterpriseId_}
+
 
 -- | The type of credential to return with the service account. Required.
 egsaKeyType :: Lens' EnterprisesGetServiceAccount (Maybe EnterprisesGetServiceAccountKeyType)
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/GetStoreLayout.hs b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/GetStoreLayout.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/GetStoreLayout.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/GetStoreLayout.hs
@@ -54,10 +54,13 @@
 -- been set, returns \"basic\" as the store layout type and no homepage.
 --
 -- /See:/ 'enterprisesGetStoreLayout' smart constructor.
-newtype EnterprisesGetStoreLayout = EnterprisesGetStoreLayout'
+newtype EnterprisesGetStoreLayout =
+  EnterprisesGetStoreLayout'
     { _egslEnterpriseId :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EnterprisesGetStoreLayout' 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 -- ^ 'egslEnterpriseId'
     -> EnterprisesGetStoreLayout
 enterprisesGetStoreLayout pEgslEnterpriseId_ =
-    EnterprisesGetStoreLayout'
-    { _egslEnterpriseId = pEgslEnterpriseId_
-    }
+  EnterprisesGetStoreLayout' {_egslEnterpriseId = pEgslEnterpriseId_}
+
 
 -- | The ID of the enterprise.
 egslEnterpriseId :: Lens' EnterprisesGetStoreLayout Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/List.hs b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/List.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/List.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/List.hs
@@ -60,10 +60,13 @@
 -- Enterprises.generateSignupUrl call.
 --
 -- /See:/ 'enterprisesList' smart constructor.
-newtype EnterprisesList = EnterprisesList'
+newtype EnterprisesList =
+  EnterprisesList'
     { _elDomain :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EnterprisesList' 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 @@
 enterprisesList
     :: Text -- ^ 'elDomain'
     -> EnterprisesList
-enterprisesList pElDomain_ =
-    EnterprisesList'
-    { _elDomain = pElDomain_
-    }
+enterprisesList pElDomain_ = EnterprisesList' {_elDomain = pElDomain_}
+
 
 -- | The exact primary domain name of the enterprise to look up.
 elDomain :: Lens' EnterprisesList Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/PullNotificationSet.hs b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/PullNotificationSet.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/PullNotificationSet.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/PullNotificationSet.hs
@@ -81,10 +81,13 @@
 -- may return more notifications once they become available.
 --
 -- /See:/ 'enterprisesPullNotificationSet' smart constructor.
-newtype EnterprisesPullNotificationSet = EnterprisesPullNotificationSet'
+newtype EnterprisesPullNotificationSet =
+  EnterprisesPullNotificationSet'
     { _epnsRequestMode :: Maybe EnterprisesPullNotificationSetRequestMode
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EnterprisesPullNotificationSet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -93,9 +96,8 @@
 enterprisesPullNotificationSet
     :: EnterprisesPullNotificationSet
 enterprisesPullNotificationSet =
-    EnterprisesPullNotificationSet'
-    { _epnsRequestMode = Nothing
-    }
+  EnterprisesPullNotificationSet' {_epnsRequestMode = Nothing}
+
 
 -- | The request mode for pulling notifications. Specifying
 -- waitForNotifications will cause the request to block and wait until one
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/SendTestPushNotification.hs b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/SendTestPushNotification.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/SendTestPushNotification.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/SendTestPushNotification.hs
@@ -56,10 +56,13 @@
 -- Google Cloud Pub\/Sub service for this enterprise.
 --
 -- /See:/ 'enterprisesSendTestPushNotification' smart constructor.
-newtype EnterprisesSendTestPushNotification = EnterprisesSendTestPushNotification'
+newtype EnterprisesSendTestPushNotification =
+  EnterprisesSendTestPushNotification'
     { _estpnEnterpriseId :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EnterprisesSendTestPushNotification' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -69,10 +72,10 @@
     :: Text -- ^ 'estpnEnterpriseId'
     -> EnterprisesSendTestPushNotification
 enterprisesSendTestPushNotification pEstpnEnterpriseId_ =
-    EnterprisesSendTestPushNotification'
-    { _estpnEnterpriseId = pEstpnEnterpriseId_
-    }
+  EnterprisesSendTestPushNotification'
+    {_estpnEnterpriseId = pEstpnEnterpriseId_}
 
+
 -- | The ID of the enterprise.
 estpnEnterpriseId :: Lens' EnterprisesSendTestPushNotification Text
 estpnEnterpriseId
@@ -80,7 +83,8 @@
       (\ s a -> s{_estpnEnterpriseId = a})
 
 instance GoogleRequest
-         EnterprisesSendTestPushNotification where
+           EnterprisesSendTestPushNotification
+         where
         type Rs EnterprisesSendTestPushNotification =
              EnterprisesSendTestPushNotificationResponse
         type Scopes EnterprisesSendTestPushNotification =
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/SetAccount.hs b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/SetAccount.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/SetAccount.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/SetAccount.hs
@@ -57,11 +57,14 @@
 -- enterprise.
 --
 -- /See:/ 'enterprisesSetAccount' smart constructor.
-data EnterprisesSetAccount = EnterprisesSetAccount'
+data EnterprisesSetAccount =
+  EnterprisesSetAccount'
     { _esaEnterpriseId :: !Text
     , _esaPayload      :: !EnterpriseAccount
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EnterprisesSetAccount' 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 @@
     -> EnterpriseAccount -- ^ 'esaPayload'
     -> EnterprisesSetAccount
 enterprisesSetAccount pEsaEnterpriseId_ pEsaPayload_ =
-    EnterprisesSetAccount'
-    { _esaEnterpriseId = pEsaEnterpriseId_
-    , _esaPayload = pEsaPayload_
-    }
+  EnterprisesSetAccount'
+    {_esaEnterpriseId = pEsaEnterpriseId_, _esaPayload = pEsaPayload_}
+
 
 -- | The ID of the enterprise.
 esaEnterpriseId :: Lens' EnterprisesSetAccount Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/SetAndroidDevicePolicyConfig.hs b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/SetAndroidDevicePolicyConfig.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/SetAndroidDevicePolicyConfig.hs
+++ /dev/null
@@ -1,109 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.AndroidEnterprise.Enterprises.SetAndroidDevicePolicyConfig
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deprecated and unused.
---
--- /See:/ <https://developers.google.com/android/work/play/emm-api Google Play EMM API Reference> for @androidenterprise.enterprises.setAndroidDevicePolicyConfig@.
-module Network.Google.Resource.AndroidEnterprise.Enterprises.SetAndroidDevicePolicyConfig
-    (
-    -- * REST Resource
-      EnterprisesSetAndroidDevicePolicyConfigResource
-
-    -- * Creating a Request
-    , enterprisesSetAndroidDevicePolicyConfig
-    , EnterprisesSetAndroidDevicePolicyConfig
-
-    -- * Request Lenses
-    , esadpcEnterpriseId
-    , esadpcPayload
-    ) where
-
-import           Network.Google.AndroidEnterprise.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @androidenterprise.enterprises.setAndroidDevicePolicyConfig@ method which the
--- 'EnterprisesSetAndroidDevicePolicyConfig' request conforms to.
-type EnterprisesSetAndroidDevicePolicyConfigResource
-     =
-     "androidenterprise" :>
-       "v1" :>
-         "enterprises" :>
-           Capture "enterpriseId" Text :>
-             "androidDevicePolicyConfig" :>
-               QueryParam "alt" AltJSON :>
-                 ReqBody '[JSON] AndroidDevicePolicyConfig :>
-                   Put '[JSON] AndroidDevicePolicyConfig
-
--- | Deprecated and unused.
---
--- /See:/ 'enterprisesSetAndroidDevicePolicyConfig' smart constructor.
-data EnterprisesSetAndroidDevicePolicyConfig = EnterprisesSetAndroidDevicePolicyConfig'
-    { _esadpcEnterpriseId :: !Text
-    , _esadpcPayload      :: !AndroidDevicePolicyConfig
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EnterprisesSetAndroidDevicePolicyConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'esadpcEnterpriseId'
---
--- * 'esadpcPayload'
-enterprisesSetAndroidDevicePolicyConfig
-    :: Text -- ^ 'esadpcEnterpriseId'
-    -> AndroidDevicePolicyConfig -- ^ 'esadpcPayload'
-    -> EnterprisesSetAndroidDevicePolicyConfig
-enterprisesSetAndroidDevicePolicyConfig pEsadpcEnterpriseId_ pEsadpcPayload_ =
-    EnterprisesSetAndroidDevicePolicyConfig'
-    { _esadpcEnterpriseId = pEsadpcEnterpriseId_
-    , _esadpcPayload = pEsadpcPayload_
-    }
-
--- | The ID of the enterprise.
-esadpcEnterpriseId :: Lens' EnterprisesSetAndroidDevicePolicyConfig Text
-esadpcEnterpriseId
-  = lens _esadpcEnterpriseId
-      (\ s a -> s{_esadpcEnterpriseId = a})
-
--- | Multipart request metadata.
-esadpcPayload :: Lens' EnterprisesSetAndroidDevicePolicyConfig AndroidDevicePolicyConfig
-esadpcPayload
-  = lens _esadpcPayload
-      (\ s a -> s{_esadpcPayload = a})
-
-instance GoogleRequest
-         EnterprisesSetAndroidDevicePolicyConfig where
-        type Rs EnterprisesSetAndroidDevicePolicyConfig =
-             AndroidDevicePolicyConfig
-        type Scopes EnterprisesSetAndroidDevicePolicyConfig =
-             '["https://www.googleapis.com/auth/androidenterprise"]
-        requestClient
-          EnterprisesSetAndroidDevicePolicyConfig'{..}
-          = go _esadpcEnterpriseId (Just AltJSON)
-              _esadpcPayload
-              androidEnterpriseService
-          where go
-                  = buildClient
-                      (Proxy ::
-                         Proxy
-                           EnterprisesSetAndroidDevicePolicyConfigResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/SetStoreLayout.hs b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/SetStoreLayout.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/SetStoreLayout.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/SetStoreLayout.hs
@@ -67,11 +67,14 @@
 -- \"custom\" and setting a homepage), the basic store layout is disabled.
 --
 -- /See:/ 'enterprisesSetStoreLayout' smart constructor.
-data EnterprisesSetStoreLayout = EnterprisesSetStoreLayout'
+data EnterprisesSetStoreLayout =
+  EnterprisesSetStoreLayout'
     { _esslEnterpriseId :: !Text
     , _esslPayload      :: !StoreLayout
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EnterprisesSetStoreLayout' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -84,10 +87,9 @@
     -> StoreLayout -- ^ 'esslPayload'
     -> EnterprisesSetStoreLayout
 enterprisesSetStoreLayout pEsslEnterpriseId_ pEsslPayload_ =
-    EnterprisesSetStoreLayout'
-    { _esslEnterpriseId = pEsslEnterpriseId_
-    , _esslPayload = pEsslPayload_
-    }
+  EnterprisesSetStoreLayout'
+    {_esslEnterpriseId = pEsslEnterpriseId_, _esslPayload = pEsslPayload_}
+
 
 -- | The ID of the enterprise.
 esslEnterpriseId :: Lens' EnterprisesSetStoreLayout Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/Unenroll.hs b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/Unenroll.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/Unenroll.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Enterprises/Unenroll.hs
@@ -52,10 +52,13 @@
 -- | Unenrolls an enterprise from the calling EMM.
 --
 -- /See:/ 'enterprisesUnenroll' smart constructor.
-newtype EnterprisesUnenroll = EnterprisesUnenroll'
+newtype EnterprisesUnenroll =
+  EnterprisesUnenroll'
     { _entEnterpriseId :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EnterprisesUnenroll' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -65,9 +68,8 @@
     :: Text -- ^ 'entEnterpriseId'
     -> EnterprisesUnenroll
 enterprisesUnenroll pEntEnterpriseId_ =
-    EnterprisesUnenroll'
-    { _entEnterpriseId = pEntEnterpriseId_
-    }
+  EnterprisesUnenroll' {_entEnterpriseId = pEntEnterpriseId_}
+
 
 -- | The ID of the enterprise.
 entEnterpriseId :: Lens' EnterprisesUnenroll Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Entitlements/Delete.hs b/gen/Network/Google/Resource/AndroidEnterprise/Entitlements/Delete.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Entitlements/Delete.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Entitlements/Delete.hs
@@ -57,12 +57,15 @@
 -- | Removes an entitlement to an app for a user.
 --
 -- /See:/ 'entitlementsDelete' smart constructor.
-data EntitlementsDelete = EntitlementsDelete'
+data EntitlementsDelete =
+  EntitlementsDelete'
     { _edEntitlementId :: !Text
     , _edEnterpriseId  :: !Text
     , _edUserId        :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EntitlementsDelete' 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 -- ^ 'edUserId'
     -> EntitlementsDelete
 entitlementsDelete pEdEntitlementId_ pEdEnterpriseId_ pEdUserId_ =
-    EntitlementsDelete'
+  EntitlementsDelete'
     { _edEntitlementId = pEdEntitlementId_
     , _edEnterpriseId = pEdEnterpriseId_
     , _edUserId = pEdUserId_
     }
+
 
 -- | The ID of the entitlement (a product ID), e.g.
 -- \"app:com.google.android.gm\".
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Entitlements/Get.hs b/gen/Network/Google/Resource/AndroidEnterprise/Entitlements/Get.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Entitlements/Get.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Entitlements/Get.hs
@@ -57,12 +57,15 @@
 -- | Retrieves details of an entitlement.
 --
 -- /See:/ 'entitlementsGet' smart constructor.
-data EntitlementsGet = EntitlementsGet'
+data EntitlementsGet =
+  EntitlementsGet'
     { _egEntitlementId :: !Text
     , _egEnterpriseId  :: !Text
     , _egUserId        :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EntitlementsGet' 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 -- ^ 'egUserId'
     -> EntitlementsGet
 entitlementsGet pEgEntitlementId_ pEgEnterpriseId_ pEgUserId_ =
-    EntitlementsGet'
+  EntitlementsGet'
     { _egEntitlementId = pEgEntitlementId_
     , _egEnterpriseId = pEgEnterpriseId_
     , _egUserId = pEgUserId_
     }
+
 
 -- | The ID of the entitlement (a product ID), e.g.
 -- \"app:com.google.android.gm\".
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Entitlements/List.hs b/gen/Network/Google/Resource/AndroidEnterprise/Entitlements/List.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Entitlements/List.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Entitlements/List.hs
@@ -56,11 +56,14 @@
 -- | Lists all entitlements for the specified user. Only the ID is set.
 --
 -- /See:/ 'entitlementsList' smart constructor.
-data EntitlementsList = EntitlementsList'
+data EntitlementsList =
+  EntitlementsList'
     { _elEnterpriseId :: !Text
     , _elUserId       :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EntitlementsList' 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 -- ^ 'elUserId'
     -> EntitlementsList
 entitlementsList pElEnterpriseId_ pElUserId_ =
-    EntitlementsList'
-    { _elEnterpriseId = pElEnterpriseId_
-    , _elUserId = pElUserId_
-    }
+  EntitlementsList' {_elEnterpriseId = pElEnterpriseId_, _elUserId = pElUserId_}
+
 
 -- | The ID of the enterprise.
 elEnterpriseId :: Lens' EntitlementsList Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Entitlements/Patch.hs b/gen/Network/Google/Resource/AndroidEnterprise/Entitlements/Patch.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Entitlements/Patch.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Entitlements/Patch.hs
@@ -64,14 +64,17 @@
 -- supports patch semantics.
 --
 -- /See:/ 'entitlementsPatch' smart constructor.
-data EntitlementsPatch = EntitlementsPatch'
+data EntitlementsPatch =
+  EntitlementsPatch'
     { _epEntitlementId :: !Text
     , _epEnterpriseId  :: !Text
     , _epPayload       :: !Entitlement
     , _epInstall       :: !(Maybe Bool)
     , _epUserId        :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EntitlementsPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -92,13 +95,14 @@
     -> Text -- ^ 'epUserId'
     -> EntitlementsPatch
 entitlementsPatch pEpEntitlementId_ pEpEnterpriseId_ pEpPayload_ pEpUserId_ =
-    EntitlementsPatch'
+  EntitlementsPatch'
     { _epEntitlementId = pEpEntitlementId_
     , _epEnterpriseId = pEpEnterpriseId_
     , _epPayload = pEpPayload_
     , _epInstall = Nothing
     , _epUserId = pEpUserId_
     }
+
 
 -- | The ID of the entitlement (a product ID), e.g.
 -- \"app:com.google.android.gm\".
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Entitlements/Update.hs b/gen/Network/Google/Resource/AndroidEnterprise/Entitlements/Update.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Entitlements/Update.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Entitlements/Update.hs
@@ -62,14 +62,17 @@
 -- | Adds or updates an entitlement to an app for a user.
 --
 -- /See:/ 'entitlementsUpdate' smart constructor.
-data EntitlementsUpdate = EntitlementsUpdate'
+data EntitlementsUpdate =
+  EntitlementsUpdate'
     { _euEntitlementId :: !Text
     , _euEnterpriseId  :: !Text
     , _euPayload       :: !Entitlement
     , _euInstall       :: !(Maybe Bool)
     , _euUserId        :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EntitlementsUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -90,13 +93,14 @@
     -> Text -- ^ 'euUserId'
     -> EntitlementsUpdate
 entitlementsUpdate pEuEntitlementId_ pEuEnterpriseId_ pEuPayload_ pEuUserId_ =
-    EntitlementsUpdate'
+  EntitlementsUpdate'
     { _euEntitlementId = pEuEntitlementId_
     , _euEnterpriseId = pEuEnterpriseId_
     , _euPayload = pEuPayload_
     , _euInstall = Nothing
     , _euUserId = pEuUserId_
     }
+
 
 -- | The ID of the entitlement (a product ID), e.g.
 -- \"app:com.google.android.gm\".
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/GrouplicenseUsers/List.hs b/gen/Network/Google/Resource/AndroidEnterprise/GrouplicenseUsers/List.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/GrouplicenseUsers/List.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/GrouplicenseUsers/List.hs
@@ -58,11 +58,14 @@
 -- the license.
 --
 -- /See:/ 'grouplicenseUsersList' smart constructor.
-data GrouplicenseUsersList = GrouplicenseUsersList'
+data GrouplicenseUsersList =
+  GrouplicenseUsersList'
     { _gulEnterpriseId   :: !Text
     , _gulGroupLicenseId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GrouplicenseUsersList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -75,10 +78,11 @@
     -> Text -- ^ 'gulGroupLicenseId'
     -> GrouplicenseUsersList
 grouplicenseUsersList pGulEnterpriseId_ pGulGroupLicenseId_ =
-    GrouplicenseUsersList'
+  GrouplicenseUsersList'
     { _gulEnterpriseId = pGulEnterpriseId_
     , _gulGroupLicenseId = pGulGroupLicenseId_
     }
+
 
 -- | The ID of the enterprise.
 gulEnterpriseId :: Lens' GrouplicenseUsersList Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Grouplicenses/Get.hs b/gen/Network/Google/Resource/AndroidEnterprise/Grouplicenses/Get.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Grouplicenses/Get.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Grouplicenses/Get.hs
@@ -54,11 +54,14 @@
 -- | Retrieves details of an enterprise\'s group license for a product.
 --
 -- /See:/ 'grouplicensesGet' smart constructor.
-data GrouplicensesGet = GrouplicensesGet'
+data GrouplicensesGet =
+  GrouplicensesGet'
     { _ggEnterpriseId   :: !Text
     , _ggGroupLicenseId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GrouplicensesGet' 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 -- ^ 'ggGroupLicenseId'
     -> GrouplicensesGet
 grouplicensesGet pGgEnterpriseId_ pGgGroupLicenseId_ =
-    GrouplicensesGet'
-    { _ggEnterpriseId = pGgEnterpriseId_
-    , _ggGroupLicenseId = pGgGroupLicenseId_
-    }
+  GrouplicensesGet'
+    {_ggEnterpriseId = pGgEnterpriseId_, _ggGroupLicenseId = pGgGroupLicenseId_}
+
 
 -- | The ID of the enterprise.
 ggEnterpriseId :: Lens' GrouplicensesGet Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Grouplicenses/List.hs b/gen/Network/Google/Resource/AndroidEnterprise/Grouplicenses/List.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Grouplicenses/List.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Grouplicenses/List.hs
@@ -55,10 +55,13 @@
 -- license.
 --
 -- /See:/ 'grouplicensesList' smart constructor.
-newtype GrouplicensesList = GrouplicensesList'
+newtype GrouplicensesList =
+  GrouplicensesList'
     { _glEnterpriseId :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GrouplicensesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -68,9 +71,8 @@
     :: Text -- ^ 'glEnterpriseId'
     -> GrouplicensesList
 grouplicensesList pGlEnterpriseId_ =
-    GrouplicensesList'
-    { _glEnterpriseId = pGlEnterpriseId_
-    }
+  GrouplicensesList' {_glEnterpriseId = pGlEnterpriseId_}
+
 
 -- | The ID of the enterprise.
 glEnterpriseId :: Lens' GrouplicensesList Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Installs/Delete.hs b/gen/Network/Google/Resource/AndroidEnterprise/Installs/Delete.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Installs/Delete.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Installs/Delete.hs
@@ -64,13 +64,16 @@
 -- removed.
 --
 -- /See:/ 'installsDelete' smart constructor.
-data InstallsDelete = InstallsDelete'
+data InstallsDelete =
+  InstallsDelete'
     { _idEnterpriseId :: !Text
     , _idUserId       :: !Text
     , _idInstallId    :: !Text
     , _idDeviceId     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstallsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -89,12 +92,13 @@
     -> Text -- ^ 'idDeviceId'
     -> InstallsDelete
 installsDelete pIdEnterpriseId_ pIdUserId_ pIdInstallId_ pIdDeviceId_ =
-    InstallsDelete'
+  InstallsDelete'
     { _idEnterpriseId = pIdEnterpriseId_
     , _idUserId = pIdUserId_
     , _idInstallId = pIdInstallId_
     , _idDeviceId = pIdDeviceId_
     }
+
 
 -- | The ID of the enterprise.
 idEnterpriseId :: Lens' InstallsDelete Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Installs/Get.hs b/gen/Network/Google/Resource/AndroidEnterprise/Installs/Get.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Installs/Get.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Installs/Get.hs
@@ -60,13 +60,16 @@
 -- | Retrieves details of an installation of an app on a device.
 --
 -- /See:/ 'installsGet' smart constructor.
-data InstallsGet = InstallsGet'
+data InstallsGet =
+  InstallsGet'
     { _igEnterpriseId :: !Text
     , _igUserId       :: !Text
     , _igInstallId    :: !Text
     , _igDeviceId     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstallsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -85,12 +88,13 @@
     -> Text -- ^ 'igDeviceId'
     -> InstallsGet
 installsGet pIgEnterpriseId_ pIgUserId_ pIgInstallId_ pIgDeviceId_ =
-    InstallsGet'
+  InstallsGet'
     { _igEnterpriseId = pIgEnterpriseId_
     , _igUserId = pIgUserId_
     , _igInstallId = pIgInstallId_
     , _igDeviceId = pIgDeviceId_
     }
+
 
 -- | The ID of the enterprise.
 igEnterpriseId :: Lens' InstallsGet Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Installs/List.hs b/gen/Network/Google/Resource/AndroidEnterprise/Installs/List.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Installs/List.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Installs/List.hs
@@ -59,12 +59,15 @@
 -- | Retrieves the details of all apps installed on the specified device.
 --
 -- /See:/ 'installsList' smart constructor.
-data InstallsList = InstallsList'
+data InstallsList =
+  InstallsList'
     { _ilEnterpriseId :: !Text
     , _ilUserId       :: !Text
     , _ilDeviceId     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstallsList' 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 -- ^ 'ilDeviceId'
     -> InstallsList
 installsList pIlEnterpriseId_ pIlUserId_ pIlDeviceId_ =
-    InstallsList'
+  InstallsList'
     { _ilEnterpriseId = pIlEnterpriseId_
     , _ilUserId = pIlUserId_
     , _ilDeviceId = pIlDeviceId_
     }
+
 
 -- | The ID of the enterprise.
 ilEnterpriseId :: Lens' InstallsList Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Installs/Patch.hs b/gen/Network/Google/Resource/AndroidEnterprise/Installs/Patch.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Installs/Patch.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Installs/Patch.hs
@@ -66,14 +66,17 @@
 -- necessary. This method supports patch semantics.
 --
 -- /See:/ 'installsPatch' smart constructor.
-data InstallsPatch = InstallsPatch'
+data InstallsPatch =
+  InstallsPatch'
     { _ipEnterpriseId :: !Text
     , _ipPayload      :: !Install
     , _ipUserId       :: !Text
     , _ipInstallId    :: !Text
     , _ipDeviceId     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstallsPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,13 +98,14 @@
     -> Text -- ^ 'ipDeviceId'
     -> InstallsPatch
 installsPatch pIpEnterpriseId_ pIpPayload_ pIpUserId_ pIpInstallId_ pIpDeviceId_ =
-    InstallsPatch'
+  InstallsPatch'
     { _ipEnterpriseId = pIpEnterpriseId_
     , _ipPayload = pIpPayload_
     , _ipUserId = pIpUserId_
     , _ipInstallId = pIpInstallId_
     , _ipDeviceId = pIpDeviceId_
     }
+
 
 -- | The ID of the enterprise.
 ipEnterpriseId :: Lens' InstallsPatch Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Installs/Update.hs b/gen/Network/Google/Resource/AndroidEnterprise/Installs/Update.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Installs/Update.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Installs/Update.hs
@@ -66,14 +66,17 @@
 -- necessary.
 --
 -- /See:/ 'installsUpdate' smart constructor.
-data InstallsUpdate = InstallsUpdate'
+data InstallsUpdate =
+  InstallsUpdate'
     { _iuEnterpriseId :: !Text
     , _iuPayload      :: !Install
     , _iuUserId       :: !Text
     , _iuInstallId    :: !Text
     , _iuDeviceId     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'InstallsUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,13 +98,14 @@
     -> Text -- ^ 'iuDeviceId'
     -> InstallsUpdate
 installsUpdate pIuEnterpriseId_ pIuPayload_ pIuUserId_ pIuInstallId_ pIuDeviceId_ =
-    InstallsUpdate'
+  InstallsUpdate'
     { _iuEnterpriseId = pIuEnterpriseId_
     , _iuPayload = pIuPayload_
     , _iuUserId = pIuUserId_
     , _iuInstallId = pIuInstallId_
     , _iuDeviceId = pIuDeviceId_
     }
+
 
 -- | The ID of the enterprise.
 iuEnterpriseId :: Lens' InstallsUpdate Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforDevice/Delete.hs b/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforDevice/Delete.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforDevice/Delete.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforDevice/Delete.hs
@@ -62,13 +62,16 @@
 -- device.
 --
 -- /See:/ 'managedConfigurationsforDeviceDelete' smart constructor.
-data ManagedConfigurationsforDeviceDelete = ManagedConfigurationsforDeviceDelete'
+data ManagedConfigurationsforDeviceDelete =
+  ManagedConfigurationsforDeviceDelete'
     { _mcddEnterpriseId                    :: !Text
     , _mcddUserId                          :: !Text
     , _mcddDeviceId                        :: !Text
     , _mcddManagedConfigurationForDeviceId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ManagedConfigurationsforDeviceDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,13 +90,15 @@
     -> Text -- ^ 'mcddManagedConfigurationForDeviceId'
     -> ManagedConfigurationsforDeviceDelete
 managedConfigurationsforDeviceDelete pMcddEnterpriseId_ pMcddUserId_ pMcddDeviceId_ pMcddManagedConfigurationForDeviceId_ =
-    ManagedConfigurationsforDeviceDelete'
+  ManagedConfigurationsforDeviceDelete'
     { _mcddEnterpriseId = pMcddEnterpriseId_
     , _mcddUserId = pMcddUserId_
     , _mcddDeviceId = pMcddDeviceId_
-    , _mcddManagedConfigurationForDeviceId = pMcddManagedConfigurationForDeviceId_
+    , _mcddManagedConfigurationForDeviceId =
+        pMcddManagedConfigurationForDeviceId_
     }
 
+
 -- | The ID of the enterprise.
 mcddEnterpriseId :: Lens' ManagedConfigurationsforDeviceDelete Text
 mcddEnterpriseId
@@ -119,7 +124,8 @@
          s{_mcddManagedConfigurationForDeviceId = a})
 
 instance GoogleRequest
-         ManagedConfigurationsforDeviceDelete where
+           ManagedConfigurationsforDeviceDelete
+         where
         type Rs ManagedConfigurationsforDeviceDelete = ()
         type Scopes ManagedConfigurationsforDeviceDelete =
              '["https://www.googleapis.com/auth/androidenterprise"]
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforDevice/Get.hs b/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforDevice/Get.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforDevice/Get.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforDevice/Get.hs
@@ -61,13 +61,16 @@
 -- | Retrieves details of a per-device managed configuration.
 --
 -- /See:/ 'managedConfigurationsforDeviceGet' smart constructor.
-data ManagedConfigurationsforDeviceGet = ManagedConfigurationsforDeviceGet'
+data ManagedConfigurationsforDeviceGet =
+  ManagedConfigurationsforDeviceGet'
     { _mcdgEnterpriseId                    :: !Text
     , _mcdgUserId                          :: !Text
     , _mcdgDeviceId                        :: !Text
     , _mcdgManagedConfigurationForDeviceId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ManagedConfigurationsforDeviceGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -86,13 +89,15 @@
     -> Text -- ^ 'mcdgManagedConfigurationForDeviceId'
     -> ManagedConfigurationsforDeviceGet
 managedConfigurationsforDeviceGet pMcdgEnterpriseId_ pMcdgUserId_ pMcdgDeviceId_ pMcdgManagedConfigurationForDeviceId_ =
-    ManagedConfigurationsforDeviceGet'
+  ManagedConfigurationsforDeviceGet'
     { _mcdgEnterpriseId = pMcdgEnterpriseId_
     , _mcdgUserId = pMcdgUserId_
     , _mcdgDeviceId = pMcdgDeviceId_
-    , _mcdgManagedConfigurationForDeviceId = pMcdgManagedConfigurationForDeviceId_
+    , _mcdgManagedConfigurationForDeviceId =
+        pMcdgManagedConfigurationForDeviceId_
     }
 
+
 -- | The ID of the enterprise.
 mcdgEnterpriseId :: Lens' ManagedConfigurationsforDeviceGet Text
 mcdgEnterpriseId
@@ -118,7 +123,8 @@
          s{_mcdgManagedConfigurationForDeviceId = a})
 
 instance GoogleRequest
-         ManagedConfigurationsforDeviceGet where
+           ManagedConfigurationsforDeviceGet
+         where
         type Rs ManagedConfigurationsforDeviceGet =
              ManagedConfiguration
         type Scopes ManagedConfigurationsforDeviceGet =
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforDevice/List.hs b/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforDevice/List.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforDevice/List.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforDevice/List.hs
@@ -62,12 +62,15 @@
 -- device. Only the ID is set.
 --
 -- /See:/ 'managedConfigurationsforDeviceList' smart constructor.
-data ManagedConfigurationsforDeviceList = ManagedConfigurationsforDeviceList'
+data ManagedConfigurationsforDeviceList =
+  ManagedConfigurationsforDeviceList'
     { _mcdlEnterpriseId :: !Text
     , _mcdlUserId       :: !Text
     , _mcdlDeviceId     :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ManagedConfigurationsforDeviceList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -83,12 +86,13 @@
     -> Text -- ^ 'mcdlDeviceId'
     -> ManagedConfigurationsforDeviceList
 managedConfigurationsforDeviceList pMcdlEnterpriseId_ pMcdlUserId_ pMcdlDeviceId_ =
-    ManagedConfigurationsforDeviceList'
+  ManagedConfigurationsforDeviceList'
     { _mcdlEnterpriseId = pMcdlEnterpriseId_
     , _mcdlUserId = pMcdlUserId_
     , _mcdlDeviceId = pMcdlDeviceId_
     }
 
+
 -- | The ID of the enterprise.
 mcdlEnterpriseId :: Lens' ManagedConfigurationsforDeviceList Text
 mcdlEnterpriseId
@@ -106,7 +110,8 @@
   = lens _mcdlDeviceId (\ s a -> s{_mcdlDeviceId = a})
 
 instance GoogleRequest
-         ManagedConfigurationsforDeviceList where
+           ManagedConfigurationsforDeviceList
+         where
         type Rs ManagedConfigurationsforDeviceList =
              ManagedConfigurationsForDeviceListResponse
         type Scopes ManagedConfigurationsforDeviceList =
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforDevice/Patch.hs b/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforDevice/Patch.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforDevice/Patch.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforDevice/Patch.hs
@@ -65,14 +65,17 @@
 -- specified device. This method supports patch semantics.
 --
 -- /See:/ 'managedConfigurationsforDevicePatch' smart constructor.
-data ManagedConfigurationsforDevicePatch = ManagedConfigurationsforDevicePatch'
+data ManagedConfigurationsforDevicePatch =
+  ManagedConfigurationsforDevicePatch'
     { _mcdpEnterpriseId                    :: !Text
     , _mcdpPayload                         :: !ManagedConfiguration
     , _mcdpUserId                          :: !Text
     , _mcdpDeviceId                        :: !Text
     , _mcdpManagedConfigurationForDeviceId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ManagedConfigurationsforDevicePatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -94,14 +97,16 @@
     -> Text -- ^ 'mcdpManagedConfigurationForDeviceId'
     -> ManagedConfigurationsforDevicePatch
 managedConfigurationsforDevicePatch pMcdpEnterpriseId_ pMcdpPayload_ pMcdpUserId_ pMcdpDeviceId_ pMcdpManagedConfigurationForDeviceId_ =
-    ManagedConfigurationsforDevicePatch'
+  ManagedConfigurationsforDevicePatch'
     { _mcdpEnterpriseId = pMcdpEnterpriseId_
     , _mcdpPayload = pMcdpPayload_
     , _mcdpUserId = pMcdpUserId_
     , _mcdpDeviceId = pMcdpDeviceId_
-    , _mcdpManagedConfigurationForDeviceId = pMcdpManagedConfigurationForDeviceId_
+    , _mcdpManagedConfigurationForDeviceId =
+        pMcdpManagedConfigurationForDeviceId_
     }
 
+
 -- | The ID of the enterprise.
 mcdpEnterpriseId :: Lens' ManagedConfigurationsforDevicePatch Text
 mcdpEnterpriseId
@@ -132,7 +137,8 @@
          s{_mcdpManagedConfigurationForDeviceId = a})
 
 instance GoogleRequest
-         ManagedConfigurationsforDevicePatch where
+           ManagedConfigurationsforDevicePatch
+         where
         type Rs ManagedConfigurationsforDevicePatch =
              ManagedConfiguration
         type Scopes ManagedConfigurationsforDevicePatch =
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforDevice/Update.hs b/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforDevice/Update.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforDevice/Update.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforDevice/Update.hs
@@ -65,14 +65,17 @@
 -- specified device.
 --
 -- /See:/ 'managedConfigurationsforDeviceUpdate' smart constructor.
-data ManagedConfigurationsforDeviceUpdate = ManagedConfigurationsforDeviceUpdate'
+data ManagedConfigurationsforDeviceUpdate =
+  ManagedConfigurationsforDeviceUpdate'
     { _mcduEnterpriseId                    :: !Text
     , _mcduPayload                         :: !ManagedConfiguration
     , _mcduUserId                          :: !Text
     , _mcduDeviceId                        :: !Text
     , _mcduManagedConfigurationForDeviceId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ManagedConfigurationsforDeviceUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -94,14 +97,16 @@
     -> Text -- ^ 'mcduManagedConfigurationForDeviceId'
     -> ManagedConfigurationsforDeviceUpdate
 managedConfigurationsforDeviceUpdate pMcduEnterpriseId_ pMcduPayload_ pMcduUserId_ pMcduDeviceId_ pMcduManagedConfigurationForDeviceId_ =
-    ManagedConfigurationsforDeviceUpdate'
+  ManagedConfigurationsforDeviceUpdate'
     { _mcduEnterpriseId = pMcduEnterpriseId_
     , _mcduPayload = pMcduPayload_
     , _mcduUserId = pMcduUserId_
     , _mcduDeviceId = pMcduDeviceId_
-    , _mcduManagedConfigurationForDeviceId = pMcduManagedConfigurationForDeviceId_
+    , _mcduManagedConfigurationForDeviceId =
+        pMcduManagedConfigurationForDeviceId_
     }
 
+
 -- | The ID of the enterprise.
 mcduEnterpriseId :: Lens' ManagedConfigurationsforDeviceUpdate Text
 mcduEnterpriseId
@@ -132,7 +137,8 @@
          s{_mcduManagedConfigurationForDeviceId = a})
 
 instance GoogleRequest
-         ManagedConfigurationsforDeviceUpdate where
+           ManagedConfigurationsforDeviceUpdate
+         where
         type Rs ManagedConfigurationsforDeviceUpdate =
              ManagedConfiguration
         type Scopes ManagedConfigurationsforDeviceUpdate =
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforUser/Delete.hs b/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforUser/Delete.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforUser/Delete.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforUser/Delete.hs
@@ -59,12 +59,15 @@
 -- user.
 --
 -- /See:/ 'managedConfigurationsforUserDelete' smart constructor.
-data ManagedConfigurationsforUserDelete = ManagedConfigurationsforUserDelete'
+data ManagedConfigurationsforUserDelete =
+  ManagedConfigurationsforUserDelete'
     { _mcudEnterpriseId                  :: !Text
     , _mcudUserId                        :: !Text
     , _mcudManagedConfigurationForUserId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ManagedConfigurationsforUserDelete' 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 -- ^ 'mcudManagedConfigurationForUserId'
     -> ManagedConfigurationsforUserDelete
 managedConfigurationsforUserDelete pMcudEnterpriseId_ pMcudUserId_ pMcudManagedConfigurationForUserId_ =
-    ManagedConfigurationsforUserDelete'
+  ManagedConfigurationsforUserDelete'
     { _mcudEnterpriseId = pMcudEnterpriseId_
     , _mcudUserId = pMcudUserId_
     , _mcudManagedConfigurationForUserId = pMcudManagedConfigurationForUserId_
     }
 
+
 -- | The ID of the enterprise.
 mcudEnterpriseId :: Lens' ManagedConfigurationsforUserDelete Text
 mcudEnterpriseId
@@ -105,7 +109,8 @@
       (\ s a -> s{_mcudManagedConfigurationForUserId = a})
 
 instance GoogleRequest
-         ManagedConfigurationsforUserDelete where
+           ManagedConfigurationsforUserDelete
+         where
         type Rs ManagedConfigurationsforUserDelete = ()
         type Scopes ManagedConfigurationsforUserDelete =
              '["https://www.googleapis.com/auth/androidenterprise"]
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforUser/Get.hs b/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforUser/Get.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforUser/Get.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforUser/Get.hs
@@ -60,12 +60,15 @@
 -- specified user.
 --
 -- /See:/ 'managedConfigurationsforUserGet' smart constructor.
-data ManagedConfigurationsforUserGet = ManagedConfigurationsforUserGet'
+data ManagedConfigurationsforUserGet =
+  ManagedConfigurationsforUserGet'
     { _mcugEnterpriseId                  :: !Text
     , _mcugUserId                        :: !Text
     , _mcugManagedConfigurationForUserId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ManagedConfigurationsforUserGet' 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 -- ^ 'mcugManagedConfigurationForUserId'
     -> ManagedConfigurationsforUserGet
 managedConfigurationsforUserGet pMcugEnterpriseId_ pMcugUserId_ pMcugManagedConfigurationForUserId_ =
-    ManagedConfigurationsforUserGet'
+  ManagedConfigurationsforUserGet'
     { _mcugEnterpriseId = pMcugEnterpriseId_
     , _mcugUserId = pMcugUserId_
     , _mcugManagedConfigurationForUserId = pMcugManagedConfigurationForUserId_
     }
 
+
 -- | The ID of the enterprise.
 mcugEnterpriseId :: Lens' ManagedConfigurationsforUserGet Text
 mcugEnterpriseId
@@ -106,7 +110,8 @@
       (\ s a -> s{_mcugManagedConfigurationForUserId = a})
 
 instance GoogleRequest
-         ManagedConfigurationsforUserGet where
+           ManagedConfigurationsforUserGet
+         where
         type Rs ManagedConfigurationsforUserGet =
              ManagedConfiguration
         type Scopes ManagedConfigurationsforUserGet =
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforUser/List.hs b/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforUser/List.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforUser/List.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforUser/List.hs
@@ -58,11 +58,14 @@
 -- Only the ID is set.
 --
 -- /See:/ 'managedConfigurationsforUserList' smart constructor.
-data ManagedConfigurationsforUserList = ManagedConfigurationsforUserList'
+data ManagedConfigurationsforUserList =
+  ManagedConfigurationsforUserList'
     { _mculEnterpriseId :: !Text
     , _mculUserId       :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ManagedConfigurationsforUserList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -75,11 +78,10 @@
     -> Text -- ^ 'mculUserId'
     -> ManagedConfigurationsforUserList
 managedConfigurationsforUserList pMculEnterpriseId_ pMculUserId_ =
-    ManagedConfigurationsforUserList'
-    { _mculEnterpriseId = pMculEnterpriseId_
-    , _mculUserId = pMculUserId_
-    }
+  ManagedConfigurationsforUserList'
+    {_mculEnterpriseId = pMculEnterpriseId_, _mculUserId = pMculUserId_}
 
+
 -- | The ID of the enterprise.
 mculEnterpriseId :: Lens' ManagedConfigurationsforUserList Text
 mculEnterpriseId
@@ -92,7 +94,8 @@
   = lens _mculUserId (\ s a -> s{_mculUserId = a})
 
 instance GoogleRequest
-         ManagedConfigurationsforUserList where
+           ManagedConfigurationsforUserList
+         where
         type Rs ManagedConfigurationsforUserList =
              ManagedConfigurationsForUserListResponse
         type Scopes ManagedConfigurationsforUserList =
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforUser/Patch.hs b/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforUser/Patch.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforUser/Patch.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforUser/Patch.hs
@@ -70,13 +70,16 @@
 -- list of managed properties. This method supports patch semantics.
 --
 -- /See:/ 'managedConfigurationsforUserPatch' smart constructor.
-data ManagedConfigurationsforUserPatch = ManagedConfigurationsforUserPatch'
+data ManagedConfigurationsforUserPatch =
+  ManagedConfigurationsforUserPatch'
     { _mcupEnterpriseId                  :: !Text
     , _mcupPayload                       :: !ManagedConfiguration
     , _mcupUserId                        :: !Text
     , _mcupManagedConfigurationForUserId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ManagedConfigurationsforUserPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,13 +98,14 @@
     -> Text -- ^ 'mcupManagedConfigurationForUserId'
     -> ManagedConfigurationsforUserPatch
 managedConfigurationsforUserPatch pMcupEnterpriseId_ pMcupPayload_ pMcupUserId_ pMcupManagedConfigurationForUserId_ =
-    ManagedConfigurationsforUserPatch'
+  ManagedConfigurationsforUserPatch'
     { _mcupEnterpriseId = pMcupEnterpriseId_
     , _mcupPayload = pMcupPayload_
     , _mcupUserId = pMcupUserId_
     , _mcupManagedConfigurationForUserId = pMcupManagedConfigurationForUserId_
     }
 
+
 -- | The ID of the enterprise.
 mcupEnterpriseId :: Lens' ManagedConfigurationsforUserPatch Text
 mcupEnterpriseId
@@ -126,7 +130,8 @@
       (\ s a -> s{_mcupManagedConfigurationForUserId = a})
 
 instance GoogleRequest
-         ManagedConfigurationsforUserPatch where
+           ManagedConfigurationsforUserPatch
+         where
         type Rs ManagedConfigurationsforUserPatch =
              ManagedConfiguration
         type Scopes ManagedConfigurationsforUserPatch =
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforUser/Update.hs b/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforUser/Update.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforUser/Update.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationsforUser/Update.hs
@@ -70,13 +70,16 @@
 -- list of managed properties.
 --
 -- /See:/ 'managedConfigurationsforUserUpdate' smart constructor.
-data ManagedConfigurationsforUserUpdate = ManagedConfigurationsforUserUpdate'
+data ManagedConfigurationsforUserUpdate =
+  ManagedConfigurationsforUserUpdate'
     { _mcuuEnterpriseId                  :: !Text
     , _mcuuPayload                       :: !ManagedConfiguration
     , _mcuuUserId                        :: !Text
     , _mcuuManagedConfigurationForUserId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ManagedConfigurationsforUserUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,13 +98,14 @@
     -> Text -- ^ 'mcuuManagedConfigurationForUserId'
     -> ManagedConfigurationsforUserUpdate
 managedConfigurationsforUserUpdate pMcuuEnterpriseId_ pMcuuPayload_ pMcuuUserId_ pMcuuManagedConfigurationForUserId_ =
-    ManagedConfigurationsforUserUpdate'
+  ManagedConfigurationsforUserUpdate'
     { _mcuuEnterpriseId = pMcuuEnterpriseId_
     , _mcuuPayload = pMcuuPayload_
     , _mcuuUserId = pMcuuUserId_
     , _mcuuManagedConfigurationForUserId = pMcuuManagedConfigurationForUserId_
     }
 
+
 -- | The ID of the enterprise.
 mcuuEnterpriseId :: Lens' ManagedConfigurationsforUserUpdate Text
 mcuuEnterpriseId
@@ -126,7 +130,8 @@
       (\ s a -> s{_mcuuManagedConfigurationForUserId = a})
 
 instance GoogleRequest
-         ManagedConfigurationsforUserUpdate where
+           ManagedConfigurationsforUserUpdate
+         where
         type Rs ManagedConfigurationsforUserUpdate =
              ManagedConfiguration
         type Scopes ManagedConfigurationsforUserUpdate =
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationssettings/List.hs b/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationssettings/List.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationssettings/List.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/ManagedConfigurationssettings/List.hs
@@ -58,11 +58,14 @@
 -- Only the ID and the name is set.
 --
 -- /See:/ 'managedConfigurationssettingsList' smart constructor.
-data ManagedConfigurationssettingsList = ManagedConfigurationssettingsList'
+data ManagedConfigurationssettingsList =
+  ManagedConfigurationssettingsList'
     { _mclEnterpriseId :: !Text
     , _mclProductId    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ManagedConfigurationssettingsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -75,11 +78,10 @@
     -> Text -- ^ 'mclProductId'
     -> ManagedConfigurationssettingsList
 managedConfigurationssettingsList pMclEnterpriseId_ pMclProductId_ =
-    ManagedConfigurationssettingsList'
-    { _mclEnterpriseId = pMclEnterpriseId_
-    , _mclProductId = pMclProductId_
-    }
+  ManagedConfigurationssettingsList'
+    {_mclEnterpriseId = pMclEnterpriseId_, _mclProductId = pMclProductId_}
 
+
 -- | The ID of the enterprise.
 mclEnterpriseId :: Lens' ManagedConfigurationssettingsList Text
 mclEnterpriseId
@@ -93,7 +95,8 @@
   = lens _mclProductId (\ s a -> s{_mclProductId = a})
 
 instance GoogleRequest
-         ManagedConfigurationssettingsList where
+           ManagedConfigurationssettingsList
+         where
         type Rs ManagedConfigurationssettingsList =
              ManagedConfigurationsSettingsListResponse
         type Scopes ManagedConfigurationssettingsList =
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Permissions/Get.hs b/gen/Network/Google/Resource/AndroidEnterprise/Permissions/Get.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Permissions/Get.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Permissions/Get.hs
@@ -55,11 +55,14 @@
 -- enterprise admin.
 --
 -- /See:/ 'permissionsGet' smart constructor.
-data PermissionsGet = PermissionsGet'
+data PermissionsGet =
+  PermissionsGet'
     { _pgLanguage     :: !(Maybe Text)
     , _pgPermissionId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PermissionsGet' 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 -- ^ 'pgPermissionId'
     -> PermissionsGet
 permissionsGet pPgPermissionId_ =
-    PermissionsGet'
-    { _pgLanguage = Nothing
-    , _pgPermissionId = pPgPermissionId_
-    }
+  PermissionsGet' {_pgLanguage = Nothing, _pgPermissionId = pPgPermissionId_}
+
 
 -- | The BCP47 tag for the user\'s preferred language (e.g. \"en-US\",
 -- \"de\")
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Products/Approve.hs b/gen/Network/Google/Resource/AndroidEnterprise/Products/Approve.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Products/Approve.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Products/Approve.hs
@@ -66,12 +66,15 @@
 -- Store Layout Design.
 --
 -- /See:/ 'productsApprove' smart constructor.
-data ProductsApprove = ProductsApprove'
+data ProductsApprove =
+  ProductsApprove'
     { _paEnterpriseId :: !Text
     , _paPayload      :: !ProductsApproveRequest
     , _paProductId    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProductsApprove' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,11 +90,12 @@
     -> Text -- ^ 'paProductId'
     -> ProductsApprove
 productsApprove pPaEnterpriseId_ pPaPayload_ pPaProductId_ =
-    ProductsApprove'
+  ProductsApprove'
     { _paEnterpriseId = pPaEnterpriseId_
     , _paPayload = pPaPayload_
     , _paProductId = pPaProductId_
     }
+
 
 -- | The ID of the enterprise.
 paEnterpriseId :: Lens' ProductsApprove Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Products/GenerateApprovalURL.hs b/gen/Network/Google/Resource/AndroidEnterprise/Products/GenerateApprovalURL.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Products/GenerateApprovalURL.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Products/GenerateApprovalURL.hs
@@ -72,12 +72,15 @@
 -- only be used to display permissions for up to 1 day.
 --
 -- /See:/ 'productsGenerateApprovalURL' smart constructor.
-data ProductsGenerateApprovalURL = ProductsGenerateApprovalURL'
+data ProductsGenerateApprovalURL =
+  ProductsGenerateApprovalURL'
     { _pgauLanguageCode :: !(Maybe Text)
     , _pgauEnterpriseId :: !Text
     , _pgauProductId    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProductsGenerateApprovalURL' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -92,11 +95,12 @@
     -> Text -- ^ 'pgauProductId'
     -> ProductsGenerateApprovalURL
 productsGenerateApprovalURL pPgauEnterpriseId_ pPgauProductId_ =
-    ProductsGenerateApprovalURL'
+  ProductsGenerateApprovalURL'
     { _pgauLanguageCode = Nothing
     , _pgauEnterpriseId = pPgauEnterpriseId_
     , _pgauProductId = pPgauProductId_
     }
+
 
 -- | The BCP 47 language code used for permission names and descriptions in
 -- the returned iframe, for instance \"en-US\".
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Products/Get.hs b/gen/Network/Google/Resource/AndroidEnterprise/Products/Get.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Products/Get.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Products/Get.hs
@@ -56,12 +56,15 @@
 -- | Retrieves details of a product for display to an enterprise admin.
 --
 -- /See:/ 'productsGet' smart constructor.
-data ProductsGet = ProductsGet'
+data ProductsGet =
+  ProductsGet'
     { _proEnterpriseId :: !Text
     , _proLanguage     :: !(Maybe Text)
     , _proProductId    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProductsGet' 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 -- ^ 'proProductId'
     -> ProductsGet
 productsGet pProEnterpriseId_ pProProductId_ =
-    ProductsGet'
+  ProductsGet'
     { _proEnterpriseId = pProEnterpriseId_
     , _proLanguage = Nothing
     , _proProductId = pProProductId_
     }
+
 
 -- | The ID of the enterprise.
 proEnterpriseId :: Lens' ProductsGet Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Products/GetAppRestrictionsSchema.hs b/gen/Network/Google/Resource/AndroidEnterprise/Products/GetAppRestrictionsSchema.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Products/GetAppRestrictionsSchema.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Products/GetAppRestrictionsSchema.hs
@@ -68,12 +68,15 @@
 -- Managed Configurations through Play.
 --
 -- /See:/ 'productsGetAppRestrictionsSchema' smart constructor.
-data ProductsGetAppRestrictionsSchema = ProductsGetAppRestrictionsSchema'
+data ProductsGetAppRestrictionsSchema =
+  ProductsGetAppRestrictionsSchema'
     { _pgarsEnterpriseId :: !Text
     , _pgarsLanguage     :: !(Maybe Text)
     , _pgarsProductId    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProductsGetAppRestrictionsSchema' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -88,12 +91,13 @@
     -> Text -- ^ 'pgarsProductId'
     -> ProductsGetAppRestrictionsSchema
 productsGetAppRestrictionsSchema pPgarsEnterpriseId_ pPgarsProductId_ =
-    ProductsGetAppRestrictionsSchema'
+  ProductsGetAppRestrictionsSchema'
     { _pgarsEnterpriseId = pPgarsEnterpriseId_
     , _pgarsLanguage = Nothing
     , _pgarsProductId = pPgarsProductId_
     }
 
+
 -- | The ID of the enterprise.
 pgarsEnterpriseId :: Lens' ProductsGetAppRestrictionsSchema Text
 pgarsEnterpriseId
@@ -114,7 +118,8 @@
       (\ s a -> s{_pgarsProductId = a})
 
 instance GoogleRequest
-         ProductsGetAppRestrictionsSchema where
+           ProductsGetAppRestrictionsSchema
+         where
         type Rs ProductsGetAppRestrictionsSchema =
              AppRestrictionsSchema
         type Scopes ProductsGetAppRestrictionsSchema =
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Products/GetPermissions.hs b/gen/Network/Google/Resource/AndroidEnterprise/Products/GetPermissions.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Products/GetPermissions.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Products/GetPermissions.hs
@@ -56,11 +56,14 @@
 -- | Retrieves the Android app permissions required by this app.
 --
 -- /See:/ 'productsGetPermissions' smart constructor.
-data ProductsGetPermissions = ProductsGetPermissions'
+data ProductsGetPermissions =
+  ProductsGetPermissions'
     { _pgpEnterpriseId :: !Text
     , _pgpProductId    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProductsGetPermissions' 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 -- ^ 'pgpProductId'
     -> ProductsGetPermissions
 productsGetPermissions pPgpEnterpriseId_ pPgpProductId_ =
-    ProductsGetPermissions'
-    { _pgpEnterpriseId = pPgpEnterpriseId_
-    , _pgpProductId = pPgpProductId_
-    }
+  ProductsGetPermissions'
+    {_pgpEnterpriseId = pPgpEnterpriseId_, _pgpProductId = pPgpProductId_}
+
 
 -- | The ID of the enterprise.
 pgpEnterpriseId :: Lens' ProductsGetPermissions Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Products/List.hs b/gen/Network/Google/Resource/AndroidEnterprise/Products/List.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Products/List.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Products/List.hs
@@ -65,15 +65,18 @@
 -- there is no query.
 --
 -- /See:/ 'productsList' smart constructor.
-data ProductsList = ProductsList'
+data ProductsList =
+  ProductsList'
     { _plEnterpriseId :: !Text
     , _plToken        :: !(Maybe Text)
     , _plQuery        :: !(Maybe Text)
     , _plLanguage     :: !(Maybe Text)
     , _plApproved     :: !(Maybe Bool)
     , _plMaxResults   :: !(Maybe (Textual Word32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProductsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -93,7 +96,7 @@
     :: Text -- ^ 'plEnterpriseId'
     -> ProductsList
 productsList pPlEnterpriseId_ =
-    ProductsList'
+  ProductsList'
     { _plEnterpriseId = pPlEnterpriseId_
     , _plToken = Nothing
     , _plQuery = Nothing
@@ -102,15 +105,16 @@
     , _plMaxResults = Nothing
     }
 
+
 -- | The ID of the enterprise.
 plEnterpriseId :: Lens' ProductsList Text
 plEnterpriseId
   = lens _plEnterpriseId
       (\ s a -> s{_plEnterpriseId = a})
 
--- | A pagination token is contained in a request\'\'s response when there
--- are more products. The token can be used in a subsequent request to
--- obtain more products, and so forth. This parameter cannot be used in the
+-- | A pagination token is contained in a request\'s response when there are
+-- more products. The token can be used in a subsequent request to obtain
+-- more products, and so forth. This parameter cannot be used in the
 -- initial request.
 plToken :: Lens' ProductsList (Maybe Text)
 plToken = lens _plToken (\ s a -> s{_plToken = a})
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Products/UnApprove.hs b/gen/Network/Google/Resource/AndroidEnterprise/Products/UnApprove.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Products/UnApprove.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Products/UnApprove.hs
@@ -57,11 +57,14 @@
 -- any)
 --
 -- /See:/ 'productsUnApprove' smart constructor.
-data ProductsUnApprove = ProductsUnApprove'
+data ProductsUnApprove =
+  ProductsUnApprove'
     { _puaEnterpriseId :: !Text
     , _puaProductId    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProductsUnApprove' 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 -- ^ 'puaProductId'
     -> ProductsUnApprove
 productsUnApprove pPuaEnterpriseId_ pPuaProductId_ =
-    ProductsUnApprove'
-    { _puaEnterpriseId = pPuaEnterpriseId_
-    , _puaProductId = pPuaProductId_
-    }
+  ProductsUnApprove'
+    {_puaEnterpriseId = pPuaEnterpriseId_, _puaProductId = pPuaProductId_}
+
 
 -- | The ID of the enterprise.
 puaEnterpriseId :: Lens' ProductsUnApprove Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/ServiceAccountkeys/Delete.hs b/gen/Network/Google/Resource/AndroidEnterprise/ServiceAccountkeys/Delete.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/ServiceAccountkeys/Delete.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/ServiceAccountkeys/Delete.hs
@@ -62,11 +62,14 @@
 -- Enterprises.SetAccount.
 --
 -- /See:/ 'serviceAccountkeysDelete' smart constructor.
-data ServiceAccountkeysDelete = ServiceAccountkeysDelete'
+data ServiceAccountkeysDelete =
+  ServiceAccountkeysDelete'
     { _sadKeyId        :: !Text
     , _sadEnterpriseId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ServiceAccountkeysDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -79,10 +82,9 @@
     -> Text -- ^ 'sadEnterpriseId'
     -> ServiceAccountkeysDelete
 serviceAccountkeysDelete pSadKeyId_ pSadEnterpriseId_ =
-    ServiceAccountkeysDelete'
-    { _sadKeyId = pSadKeyId_
-    , _sadEnterpriseId = pSadEnterpriseId_
-    }
+  ServiceAccountkeysDelete'
+    {_sadKeyId = pSadKeyId_, _sadEnterpriseId = pSadEnterpriseId_}
+
 
 -- | The ID of the key.
 sadKeyId :: Lens' ServiceAccountkeysDelete Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/ServiceAccountkeys/Insert.hs b/gen/Network/Google/Resource/AndroidEnterprise/ServiceAccountkeys/Insert.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/ServiceAccountkeys/Insert.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/ServiceAccountkeys/Insert.hs
@@ -63,11 +63,14 @@
 -- type of the key should be populated in the resource to be inserted.
 --
 -- /See:/ 'serviceAccountkeysInsert' smart constructor.
-data ServiceAccountkeysInsert = ServiceAccountkeysInsert'
+data ServiceAccountkeysInsert =
+  ServiceAccountkeysInsert'
     { _saiEnterpriseId :: !Text
     , _saiPayload      :: !ServiceAccountKey
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ServiceAccountkeysInsert' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -80,10 +83,9 @@
     -> ServiceAccountKey -- ^ 'saiPayload'
     -> ServiceAccountkeysInsert
 serviceAccountkeysInsert pSaiEnterpriseId_ pSaiPayload_ =
-    ServiceAccountkeysInsert'
-    { _saiEnterpriseId = pSaiEnterpriseId_
-    , _saiPayload = pSaiPayload_
-    }
+  ServiceAccountkeysInsert'
+    {_saiEnterpriseId = pSaiEnterpriseId_, _saiPayload = pSaiPayload_}
+
 
 -- | The ID of the enterprise.
 saiEnterpriseId :: Lens' ServiceAccountkeysInsert Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/ServiceAccountkeys/List.hs b/gen/Network/Google/Resource/AndroidEnterprise/ServiceAccountkeys/List.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/ServiceAccountkeys/List.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/ServiceAccountkeys/List.hs
@@ -61,10 +61,13 @@
 -- service account by calling Enterprises.SetAccount.
 --
 -- /See:/ 'serviceAccountkeysList' smart constructor.
-newtype ServiceAccountkeysList = ServiceAccountkeysList'
+newtype ServiceAccountkeysList =
+  ServiceAccountkeysList'
     { _salEnterpriseId :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ServiceAccountkeysList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -74,9 +77,8 @@
     :: Text -- ^ 'salEnterpriseId'
     -> ServiceAccountkeysList
 serviceAccountkeysList pSalEnterpriseId_ =
-    ServiceAccountkeysList'
-    { _salEnterpriseId = pSalEnterpriseId_
-    }
+  ServiceAccountkeysList' {_salEnterpriseId = pSalEnterpriseId_}
+
 
 -- | The ID of the enterprise.
 salEnterpriseId :: Lens' ServiceAccountkeysList Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/Delete.hs b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/Delete.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/Delete.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/Delete.hs
@@ -58,12 +58,15 @@
 -- | Deletes a cluster.
 --
 -- /See:/ 'storelayoutclustersDelete' smart constructor.
-data StorelayoutclustersDelete = StorelayoutclustersDelete'
+data StorelayoutclustersDelete =
+  StorelayoutclustersDelete'
     { _sddEnterpriseId :: !Text
     , _sddPageId       :: !Text
     , _sddClusterId    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StorelayoutclustersDelete' 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 -- ^ 'sddClusterId'
     -> StorelayoutclustersDelete
 storelayoutclustersDelete pSddEnterpriseId_ pSddPageId_ pSddClusterId_ =
-    StorelayoutclustersDelete'
+  StorelayoutclustersDelete'
     { _sddEnterpriseId = pSddEnterpriseId_
     , _sddPageId = pSddPageId_
     , _sddClusterId = pSddClusterId_
     }
+
 
 -- | The ID of the enterprise.
 sddEnterpriseId :: Lens' StorelayoutclustersDelete Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/Get.hs b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/Get.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/Get.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/Get.hs
@@ -58,12 +58,15 @@
 -- | Retrieves details of a cluster.
 --
 -- /See:/ 'storelayoutclustersGet' smart constructor.
-data StorelayoutclustersGet = StorelayoutclustersGet'
+data StorelayoutclustersGet =
+  StorelayoutclustersGet'
     { _stoEnterpriseId :: !Text
     , _stoPageId       :: !Text
     , _stoClusterId    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StorelayoutclustersGet' 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 -- ^ 'stoClusterId'
     -> StorelayoutclustersGet
 storelayoutclustersGet pStoEnterpriseId_ pStoPageId_ pStoClusterId_ =
-    StorelayoutclustersGet'
+  StorelayoutclustersGet'
     { _stoEnterpriseId = pStoEnterpriseId_
     , _stoPageId = pStoPageId_
     , _stoClusterId = pStoClusterId_
     }
+
 
 -- | The ID of the enterprise.
 stoEnterpriseId :: Lens' StorelayoutclustersGet Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/Insert.hs b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/Insert.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/Insert.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/Insert.hs
@@ -59,12 +59,15 @@
 -- | Inserts a new cluster in a page.
 --
 -- /See:/ 'storelayoutclustersInsert' smart constructor.
-data StorelayoutclustersInsert = StorelayoutclustersInsert'
+data StorelayoutclustersInsert =
+  StorelayoutclustersInsert'
     { _sEnterpriseId :: !Text
     , _sPageId       :: !Text
     , _sPayload      :: !StoreCluster
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StorelayoutclustersInsert' 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 @@
     -> StoreCluster -- ^ 'sPayload'
     -> StorelayoutclustersInsert
 storelayoutclustersInsert pSEnterpriseId_ pSPageId_ pSPayload_ =
-    StorelayoutclustersInsert'
+  StorelayoutclustersInsert'
     { _sEnterpriseId = pSEnterpriseId_
     , _sPageId = pSPageId_
     , _sPayload = pSPayload_
     }
+
 
 -- | The ID of the enterprise.
 sEnterpriseId :: Lens' StorelayoutclustersInsert Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/List.hs b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/List.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/List.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/List.hs
@@ -57,11 +57,14 @@
 -- | Retrieves the details of all clusters on the specified page.
 --
 -- /See:/ 'storelayoutclustersList' smart constructor.
-data StorelayoutclustersList = StorelayoutclustersList'
+data StorelayoutclustersList =
+  StorelayoutclustersList'
     { _sllEnterpriseId :: !Text
     , _sllPageId       :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StorelayoutclustersList' 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 -- ^ 'sllPageId'
     -> StorelayoutclustersList
 storelayoutclustersList pSllEnterpriseId_ pSllPageId_ =
-    StorelayoutclustersList'
-    { _sllEnterpriseId = pSllEnterpriseId_
-    , _sllPageId = pSllPageId_
-    }
+  StorelayoutclustersList'
+    {_sllEnterpriseId = pSllEnterpriseId_, _sllPageId = pSllPageId_}
+
 
 -- | The ID of the enterprise.
 sllEnterpriseId :: Lens' StorelayoutclustersList Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/Patch.hs b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/Patch.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/Patch.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/Patch.hs
@@ -61,13 +61,16 @@
 -- | Updates a cluster. This method supports patch semantics.
 --
 -- /See:/ 'storelayoutclustersPatch' smart constructor.
-data StorelayoutclustersPatch = StorelayoutclustersPatch'
+data StorelayoutclustersPatch =
+  StorelayoutclustersPatch'
     { _sppEnterpriseId :: !Text
     , _sppPageId       :: !Text
     , _sppPayload      :: !StoreCluster
     , _sppClusterId    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StorelayoutclustersPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -86,12 +89,13 @@
     -> Text -- ^ 'sppClusterId'
     -> StorelayoutclustersPatch
 storelayoutclustersPatch pSppEnterpriseId_ pSppPageId_ pSppPayload_ pSppClusterId_ =
-    StorelayoutclustersPatch'
+  StorelayoutclustersPatch'
     { _sppEnterpriseId = pSppEnterpriseId_
     , _sppPageId = pSppPageId_
     , _sppPayload = pSppPayload_
     , _sppClusterId = pSppClusterId_
     }
+
 
 -- | The ID of the enterprise.
 sppEnterpriseId :: Lens' StorelayoutclustersPatch Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/Update.hs b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/Update.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/Update.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutclusters/Update.hs
@@ -61,13 +61,16 @@
 -- | Updates a cluster.
 --
 -- /See:/ 'storelayoutclustersUpdate' smart constructor.
-data StorelayoutclustersUpdate = StorelayoutclustersUpdate'
+data StorelayoutclustersUpdate =
+  StorelayoutclustersUpdate'
     { _suuEnterpriseId :: !Text
     , _suuPageId       :: !Text
     , _suuPayload      :: !StoreCluster
     , _suuClusterId    :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StorelayoutclustersUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -86,12 +89,13 @@
     -> Text -- ^ 'suuClusterId'
     -> StorelayoutclustersUpdate
 storelayoutclustersUpdate pSuuEnterpriseId_ pSuuPageId_ pSuuPayload_ pSuuClusterId_ =
-    StorelayoutclustersUpdate'
+  StorelayoutclustersUpdate'
     { _suuEnterpriseId = pSuuEnterpriseId_
     , _suuPageId = pSuuPageId_
     , _suuPayload = pSuuPayload_
     , _suuClusterId = pSuuClusterId_
     }
+
 
 -- | The ID of the enterprise.
 suuEnterpriseId :: Lens' StorelayoutclustersUpdate Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/Delete.hs b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/Delete.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/Delete.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/Delete.hs
@@ -55,11 +55,14 @@
 -- | Deletes a store page.
 --
 -- /See:/ 'storelayoutpagesDelete' smart constructor.
-data StorelayoutpagesDelete = StorelayoutpagesDelete'
+data StorelayoutpagesDelete =
+  StorelayoutpagesDelete'
     { _sdEnterpriseId :: !Text
     , _sdPageId       :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StorelayoutpagesDelete' 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 -- ^ 'sdPageId'
     -> StorelayoutpagesDelete
 storelayoutpagesDelete pSdEnterpriseId_ pSdPageId_ =
-    StorelayoutpagesDelete'
-    { _sdEnterpriseId = pSdEnterpriseId_
-    , _sdPageId = pSdPageId_
-    }
+  StorelayoutpagesDelete'
+    {_sdEnterpriseId = pSdEnterpriseId_, _sdPageId = pSdPageId_}
+
 
 -- | The ID of the enterprise.
 sdEnterpriseId :: Lens' StorelayoutpagesDelete Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/Get.hs b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/Get.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/Get.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/Get.hs
@@ -55,11 +55,14 @@
 -- | Retrieves details of a store page.
 --
 -- /See:/ 'storelayoutpagesGet' smart constructor.
-data StorelayoutpagesGet = StorelayoutpagesGet'
+data StorelayoutpagesGet =
+  StorelayoutpagesGet'
     { _sgEnterpriseId :: !Text
     , _sgPageId       :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StorelayoutpagesGet' 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 -- ^ 'sgPageId'
     -> StorelayoutpagesGet
 storelayoutpagesGet pSgEnterpriseId_ pSgPageId_ =
-    StorelayoutpagesGet'
-    { _sgEnterpriseId = pSgEnterpriseId_
-    , _sgPageId = pSgPageId_
-    }
+  StorelayoutpagesGet'
+    {_sgEnterpriseId = pSgEnterpriseId_, _sgPageId = pSgPageId_}
+
 
 -- | The ID of the enterprise.
 sgEnterpriseId :: Lens' StorelayoutpagesGet Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/Insert.hs b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/Insert.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/Insert.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/Insert.hs
@@ -55,11 +55,14 @@
 -- | Inserts a new store page.
 --
 -- /See:/ 'storelayoutpagesInsert' smart constructor.
-data StorelayoutpagesInsert = StorelayoutpagesInsert'
+data StorelayoutpagesInsert =
+  StorelayoutpagesInsert'
     { _siEnterpriseId :: !Text
     , _siPayload      :: !StorePage
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StorelayoutpagesInsert' 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 @@
     -> StorePage -- ^ 'siPayload'
     -> StorelayoutpagesInsert
 storelayoutpagesInsert pSiEnterpriseId_ pSiPayload_ =
-    StorelayoutpagesInsert'
-    { _siEnterpriseId = pSiEnterpriseId_
-    , _siPayload = pSiPayload_
-    }
+  StorelayoutpagesInsert'
+    {_siEnterpriseId = pSiEnterpriseId_, _siPayload = pSiPayload_}
+
 
 -- | The ID of the enterprise.
 siEnterpriseId :: Lens' StorelayoutpagesInsert Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/List.hs b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/List.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/List.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/List.hs
@@ -54,10 +54,13 @@
 -- | Retrieves the details of all pages in the store.
 --
 -- /See:/ 'storelayoutpagesList' smart constructor.
-newtype StorelayoutpagesList = StorelayoutpagesList'
+newtype StorelayoutpagesList =
+  StorelayoutpagesList'
     { _slEnterpriseId :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StorelayoutpagesList' 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 -- ^ 'slEnterpriseId'
     -> StorelayoutpagesList
 storelayoutpagesList pSlEnterpriseId_ =
-    StorelayoutpagesList'
-    { _slEnterpriseId = pSlEnterpriseId_
-    }
+  StorelayoutpagesList' {_slEnterpriseId = pSlEnterpriseId_}
+
 
 -- | The ID of the enterprise.
 slEnterpriseId :: Lens' StorelayoutpagesList Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/Patch.hs b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/Patch.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/Patch.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/Patch.hs
@@ -59,12 +59,15 @@
 -- semantics.
 --
 -- /See:/ 'storelayoutpagesPatch' smart constructor.
-data StorelayoutpagesPatch = StorelayoutpagesPatch'
+data StorelayoutpagesPatch =
+  StorelayoutpagesPatch'
     { _spEnterpriseId :: !Text
     , _spPageId       :: !Text
     , _spPayload      :: !StorePage
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StorelayoutpagesPatch' 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 @@
     -> StorePage -- ^ 'spPayload'
     -> StorelayoutpagesPatch
 storelayoutpagesPatch pSpEnterpriseId_ pSpPageId_ pSpPayload_ =
-    StorelayoutpagesPatch'
+  StorelayoutpagesPatch'
     { _spEnterpriseId = pSpEnterpriseId_
     , _spPageId = pSpPageId_
     , _spPayload = pSpPayload_
     }
+
 
 -- | The ID of the enterprise.
 spEnterpriseId :: Lens' StorelayoutpagesPatch Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/Update.hs b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/Update.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/Update.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Storelayoutpages/Update.hs
@@ -57,12 +57,15 @@
 -- | Updates the content of a store page.
 --
 -- /See:/ 'storelayoutpagesUpdate' smart constructor.
-data StorelayoutpagesUpdate = StorelayoutpagesUpdate'
+data StorelayoutpagesUpdate =
+  StorelayoutpagesUpdate'
     { _suEnterpriseId :: !Text
     , _suPageId       :: !Text
     , _suPayload      :: !StorePage
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StorelayoutpagesUpdate' 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 @@
     -> StorePage -- ^ 'suPayload'
     -> StorelayoutpagesUpdate
 storelayoutpagesUpdate pSuEnterpriseId_ pSuPageId_ pSuPayload_ =
-    StorelayoutpagesUpdate'
+  StorelayoutpagesUpdate'
     { _suEnterpriseId = pSuEnterpriseId_
     , _suPageId = pSuPageId_
     , _suPayload = pSuPayload_
     }
+
 
 -- | The ID of the enterprise.
 suEnterpriseId :: Lens' StorelayoutpagesUpdate Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Users/Delete.hs b/gen/Network/Google/Resource/AndroidEnterprise/Users/Delete.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Users/Delete.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Users/Delete.hs
@@ -54,11 +54,14 @@
 -- | Deleted an EMM-managed user.
 --
 -- /See:/ 'usersDelete' smart constructor.
-data UsersDelete = UsersDelete'
+data UsersDelete =
+  UsersDelete'
     { _udEnterpriseId :: !Text
     , _udUserId       :: !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:
@@ -71,10 +74,8 @@
     -> Text -- ^ 'udUserId'
     -> UsersDelete
 usersDelete pUdEnterpriseId_ pUdUserId_ =
-    UsersDelete'
-    { _udEnterpriseId = pUdEnterpriseId_
-    , _udUserId = pUdUserId_
-    }
+  UsersDelete' {_udEnterpriseId = pUdEnterpriseId_, _udUserId = pUdUserId_}
+
 
 -- | The ID of the enterprise.
 udEnterpriseId :: Lens' UsersDelete Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Users/GenerateAuthenticationToken.hs b/gen/Network/Google/Resource/AndroidEnterprise/Users/GenerateAuthenticationToken.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Users/GenerateAuthenticationToken.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Users/GenerateAuthenticationToken.hs
@@ -64,11 +64,14 @@
 -- EMM-managed accounts.
 --
 -- /See:/ 'usersGenerateAuthenticationToken' smart constructor.
-data UsersGenerateAuthenticationToken = UsersGenerateAuthenticationToken'
+data UsersGenerateAuthenticationToken =
+  UsersGenerateAuthenticationToken'
     { _ugatEnterpriseId :: !Text
     , _ugatUserId       :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UsersGenerateAuthenticationToken' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -81,11 +84,10 @@
     -> Text -- ^ 'ugatUserId'
     -> UsersGenerateAuthenticationToken
 usersGenerateAuthenticationToken pUgatEnterpriseId_ pUgatUserId_ =
-    UsersGenerateAuthenticationToken'
-    { _ugatEnterpriseId = pUgatEnterpriseId_
-    , _ugatUserId = pUgatUserId_
-    }
+  UsersGenerateAuthenticationToken'
+    {_ugatEnterpriseId = pUgatEnterpriseId_, _ugatUserId = pUgatUserId_}
 
+
 -- | The ID of the enterprise.
 ugatEnterpriseId :: Lens' UsersGenerateAuthenticationToken Text
 ugatEnterpriseId
@@ -98,7 +100,8 @@
   = lens _ugatUserId (\ s a -> s{_ugatUserId = a})
 
 instance GoogleRequest
-         UsersGenerateAuthenticationToken where
+           UsersGenerateAuthenticationToken
+         where
         type Rs UsersGenerateAuthenticationToken =
              AuthenticationToken
         type Scopes UsersGenerateAuthenticationToken =
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Users/GenerateToken.hs b/gen/Network/Google/Resource/AndroidEnterprise/Users/GenerateToken.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Users/GenerateToken.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Users/GenerateToken.hs
@@ -61,11 +61,14 @@
 -- accounts.
 --
 -- /See:/ 'usersGenerateToken' smart constructor.
-data UsersGenerateToken = UsersGenerateToken'
+data UsersGenerateToken =
+  UsersGenerateToken'
     { _ugtEnterpriseId :: !Text
     , _ugtUserId       :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UsersGenerateToken' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -78,10 +81,9 @@
     -> Text -- ^ 'ugtUserId'
     -> UsersGenerateToken
 usersGenerateToken pUgtEnterpriseId_ pUgtUserId_ =
-    UsersGenerateToken'
-    { _ugtEnterpriseId = pUgtEnterpriseId_
-    , _ugtUserId = pUgtUserId_
-    }
+  UsersGenerateToken'
+    {_ugtEnterpriseId = pUgtEnterpriseId_, _ugtUserId = pUgtUserId_}
+
 
 -- | The ID of the enterprise.
 ugtEnterpriseId :: Lens' UsersGenerateToken Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Users/Get.hs b/gen/Network/Google/Resource/AndroidEnterprise/Users/Get.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Users/Get.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Users/Get.hs
@@ -54,11 +54,14 @@
 -- | Retrieves a user\'s details.
 --
 -- /See:/ 'usersGet' smart constructor.
-data UsersGet = UsersGet'
+data UsersGet =
+  UsersGet'
     { _ugEnterpriseId :: !Text
     , _ugUserId       :: !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:
@@ -71,10 +74,8 @@
     -> Text -- ^ 'ugUserId'
     -> UsersGet
 usersGet pUgEnterpriseId_ pUgUserId_ =
-    UsersGet'
-    { _ugEnterpriseId = pUgEnterpriseId_
-    , _ugUserId = pUgUserId_
-    }
+  UsersGet' {_ugEnterpriseId = pUgEnterpriseId_, _ugUserId = pUgUserId_}
+
 
 -- | The ID of the enterprise.
 ugEnterpriseId :: Lens' UsersGet Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Users/GetAvailableProductSet.hs b/gen/Network/Google/Resource/AndroidEnterprise/Users/GetAvailableProductSet.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Users/GetAvailableProductSet.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Users/GetAvailableProductSet.hs
@@ -55,11 +55,14 @@
 -- | Retrieves the set of products a user is entitled to access.
 --
 -- /See:/ 'usersGetAvailableProductSet' smart constructor.
-data UsersGetAvailableProductSet = UsersGetAvailableProductSet'
+data UsersGetAvailableProductSet =
+  UsersGetAvailableProductSet'
     { _ugapsEnterpriseId :: !Text
     , _ugapsUserId       :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UsersGetAvailableProductSet' 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 -- ^ 'ugapsUserId'
     -> UsersGetAvailableProductSet
 usersGetAvailableProductSet pUgapsEnterpriseId_ pUgapsUserId_ =
-    UsersGetAvailableProductSet'
-    { _ugapsEnterpriseId = pUgapsEnterpriseId_
-    , _ugapsUserId = pUgapsUserId_
-    }
+  UsersGetAvailableProductSet'
+    {_ugapsEnterpriseId = pUgapsEnterpriseId_, _ugapsUserId = pUgapsUserId_}
+
 
 -- | The ID of the enterprise.
 ugapsEnterpriseId :: Lens' UsersGetAvailableProductSet Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Users/Insert.hs b/gen/Network/Google/Resource/AndroidEnterprise/Users/Insert.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Users/Insert.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Users/Insert.hs
@@ -62,11 +62,14 @@
 -- displayName field can be changed.
 --
 -- /See:/ 'usersInsert' smart constructor.
-data UsersInsert = UsersInsert'
+data UsersInsert =
+  UsersInsert'
     { _uiEnterpriseId :: !Text
     , _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:
@@ -79,10 +82,8 @@
     -> User -- ^ 'uiPayload'
     -> UsersInsert
 usersInsert pUiEnterpriseId_ pUiPayload_ =
-    UsersInsert'
-    { _uiEnterpriseId = pUiEnterpriseId_
-    , _uiPayload = pUiPayload_
-    }
+  UsersInsert' {_uiEnterpriseId = pUiEnterpriseId_, _uiPayload = pUiPayload_}
+
 
 -- | The ID of the enterprise.
 uiEnterpriseId :: Lens' UsersInsert Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Users/List.hs b/gen/Network/Google/Resource/AndroidEnterprise/Users/List.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Users/List.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Users/List.hs
@@ -61,11 +61,14 @@
 -- Users.insert call.
 --
 -- /See:/ 'usersList' smart constructor.
-data UsersList = UsersList'
+data UsersList =
+  UsersList'
     { _ulEmail        :: !Text
     , _ulEnterpriseId :: !Text
-    } 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:
@@ -78,10 +81,8 @@
     -> Text -- ^ 'ulEnterpriseId'
     -> UsersList
 usersList pUlEmail_ pUlEnterpriseId_ =
-    UsersList'
-    { _ulEmail = pUlEmail_
-    , _ulEnterpriseId = pUlEnterpriseId_
-    }
+  UsersList' {_ulEmail = pUlEmail_, _ulEnterpriseId = pUlEnterpriseId_}
+
 
 -- | The exact primary email address of the user to look up.
 ulEmail :: Lens' UsersList Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Users/Patch.hs b/gen/Network/Google/Resource/AndroidEnterprise/Users/Patch.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Users/Patch.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Users/Patch.hs
@@ -64,12 +64,15 @@
 -- This method supports patch semantics.
 --
 -- /See:/ 'usersPatch' smart constructor.
-data UsersPatch = UsersPatch'
+data UsersPatch =
+  UsersPatch'
     { _upEnterpriseId :: !Text
     , _upPayload      :: !User
     , _upUserId       :: !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:
@@ -85,11 +88,12 @@
     -> Text -- ^ 'upUserId'
     -> UsersPatch
 usersPatch pUpEnterpriseId_ pUpPayload_ pUpUserId_ =
-    UsersPatch'
+  UsersPatch'
     { _upEnterpriseId = pUpEnterpriseId_
     , _upPayload = pUpPayload_
     , _upUserId = pUpUserId_
     }
+
 
 -- | The ID of the enterprise.
 upEnterpriseId :: Lens' UsersPatch Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Users/RevokeDeviceAccess.hs b/gen/Network/Google/Resource/AndroidEnterprise/Users/RevokeDeviceAccess.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Users/RevokeDeviceAccess.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Users/RevokeDeviceAccess.hs
@@ -59,11 +59,14 @@
 -- their managed devices. This call only works with EMM-managed accounts.
 --
 -- /See:/ 'usersRevokeDeviceAccess' smart constructor.
-data UsersRevokeDeviceAccess = UsersRevokeDeviceAccess'
+data UsersRevokeDeviceAccess =
+  UsersRevokeDeviceAccess'
     { _urdaEnterpriseId :: !Text
     , _urdaUserId       :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UsersRevokeDeviceAccess' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -76,10 +79,9 @@
     -> Text -- ^ 'urdaUserId'
     -> UsersRevokeDeviceAccess
 usersRevokeDeviceAccess pUrdaEnterpriseId_ pUrdaUserId_ =
-    UsersRevokeDeviceAccess'
-    { _urdaEnterpriseId = pUrdaEnterpriseId_
-    , _urdaUserId = pUrdaUserId_
-    }
+  UsersRevokeDeviceAccess'
+    {_urdaEnterpriseId = pUrdaEnterpriseId_, _urdaUserId = pUrdaUserId_}
+
 
 -- | The ID of the enterprise.
 urdaEnterpriseId :: Lens' UsersRevokeDeviceAccess Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Users/RevokeToken.hs b/gen/Network/Google/Resource/AndroidEnterprise/Users/RevokeToken.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Users/RevokeToken.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Users/RevokeToken.hs
@@ -55,11 +55,14 @@
 -- | Revokes a previously generated token (activation code) for the user.
 --
 -- /See:/ 'usersRevokeToken' smart constructor.
-data UsersRevokeToken = UsersRevokeToken'
+data UsersRevokeToken =
+  UsersRevokeToken'
     { _urtEnterpriseId :: !Text
     , _urtUserId       :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UsersRevokeToken' 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 -- ^ 'urtUserId'
     -> UsersRevokeToken
 usersRevokeToken pUrtEnterpriseId_ pUrtUserId_ =
-    UsersRevokeToken'
-    { _urtEnterpriseId = pUrtEnterpriseId_
-    , _urtUserId = pUrtUserId_
-    }
+  UsersRevokeToken'
+    {_urtEnterpriseId = pUrtEnterpriseId_, _urtUserId = pUrtUserId_}
+
 
 -- | The ID of the enterprise.
 urtEnterpriseId :: Lens' UsersRevokeToken Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Users/SetAvailableProductSet.hs b/gen/Network/Google/Resource/AndroidEnterprise/Users/SetAvailableProductSet.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Users/SetAvailableProductSet.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Users/SetAvailableProductSet.hs
@@ -63,12 +63,15 @@
 -- whitelisted.
 --
 -- /See:/ 'usersSetAvailableProductSet' smart constructor.
-data UsersSetAvailableProductSet = UsersSetAvailableProductSet'
+data UsersSetAvailableProductSet =
+  UsersSetAvailableProductSet'
     { _usapsEnterpriseId :: !Text
     , _usapsPayload      :: !ProductSet
     , _usapsUserId       :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UsersSetAvailableProductSet' 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 -- ^ 'usapsUserId'
     -> UsersSetAvailableProductSet
 usersSetAvailableProductSet pUsapsEnterpriseId_ pUsapsPayload_ pUsapsUserId_ =
-    UsersSetAvailableProductSet'
+  UsersSetAvailableProductSet'
     { _usapsEnterpriseId = pUsapsEnterpriseId_
     , _usapsPayload = pUsapsPayload_
     , _usapsUserId = pUsapsUserId_
     }
+
 
 -- | The ID of the enterprise.
 usapsEnterpriseId :: Lens' UsersSetAvailableProductSet Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/Users/Update.hs b/gen/Network/Google/Resource/AndroidEnterprise/Users/Update.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/Users/Update.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/Users/Update.hs
@@ -62,12 +62,15 @@
 -- Other fields must either be unset or have the currently active value.
 --
 -- /See:/ 'usersUpdate' smart constructor.
-data UsersUpdate = UsersUpdate'
+data UsersUpdate =
+  UsersUpdate'
     { _uuEnterpriseId :: !Text
     , _uuPayload      :: !User
     , _uuUserId       :: !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:
@@ -83,11 +86,12 @@
     -> Text -- ^ 'uuUserId'
     -> UsersUpdate
 usersUpdate pUuEnterpriseId_ pUuPayload_ pUuUserId_ =
-    UsersUpdate'
+  UsersUpdate'
     { _uuEnterpriseId = pUuEnterpriseId_
     , _uuPayload = pUuPayload_
     , _uuUserId = pUuUserId_
     }
+
 
 -- | The ID of the enterprise.
 uuEnterpriseId :: Lens' UsersUpdate Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/WebApps/Delete.hs b/gen/Network/Google/Resource/AndroidEnterprise/WebApps/Delete.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/WebApps/Delete.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/WebApps/Delete.hs
@@ -54,11 +54,14 @@
 -- | Deletes an existing web app.
 --
 -- /See:/ 'webAppsDelete' smart constructor.
-data WebAppsDelete = WebAppsDelete'
+data WebAppsDelete =
+  WebAppsDelete'
     { _wadWebAppId     :: !Text
     , _wadEnterpriseId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'WebAppsDelete' 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 -- ^ 'wadEnterpriseId'
     -> WebAppsDelete
 webAppsDelete pWadWebAppId_ pWadEnterpriseId_ =
-    WebAppsDelete'
-    { _wadWebAppId = pWadWebAppId_
-    , _wadEnterpriseId = pWadEnterpriseId_
-    }
+  WebAppsDelete'
+    {_wadWebAppId = pWadWebAppId_, _wadEnterpriseId = pWadEnterpriseId_}
+
 
 -- | The ID of the web app.
 wadWebAppId :: Lens' WebAppsDelete Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/WebApps/Get.hs b/gen/Network/Google/Resource/AndroidEnterprise/WebApps/Get.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/WebApps/Get.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/WebApps/Get.hs
@@ -54,11 +54,14 @@
 -- | Gets an existing web app.
 --
 -- /See:/ 'webAppsGet' smart constructor.
-data WebAppsGet = WebAppsGet'
+data WebAppsGet =
+  WebAppsGet'
     { _wagWebAppId     :: !Text
     , _wagEnterpriseId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'WebAppsGet' 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 -- ^ 'wagEnterpriseId'
     -> WebAppsGet
 webAppsGet pWagWebAppId_ pWagEnterpriseId_ =
-    WebAppsGet'
-    { _wagWebAppId = pWagWebAppId_
-    , _wagEnterpriseId = pWagEnterpriseId_
-    }
+  WebAppsGet'
+    {_wagWebAppId = pWagWebAppId_, _wagEnterpriseId = pWagEnterpriseId_}
+
 
 -- | The ID of the web app.
 wagWebAppId :: Lens' WebAppsGet Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/WebApps/Insert.hs b/gen/Network/Google/Resource/AndroidEnterprise/WebApps/Insert.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/WebApps/Insert.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/WebApps/Insert.hs
@@ -54,11 +54,14 @@
 -- | Creates a new web app for the enterprise.
 --
 -- /See:/ 'webAppsInsert' smart constructor.
-data WebAppsInsert = WebAppsInsert'
+data WebAppsInsert =
+  WebAppsInsert'
     { _waiEnterpriseId :: !Text
     , _waiPayload      :: !WebApp
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'WebAppsInsert' 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 @@
     -> WebApp -- ^ 'waiPayload'
     -> WebAppsInsert
 webAppsInsert pWaiEnterpriseId_ pWaiPayload_ =
-    WebAppsInsert'
-    { _waiEnterpriseId = pWaiEnterpriseId_
-    , _waiPayload = pWaiPayload_
-    }
+  WebAppsInsert'
+    {_waiEnterpriseId = pWaiEnterpriseId_, _waiPayload = pWaiPayload_}
+
 
 -- | The ID of the enterprise.
 waiEnterpriseId :: Lens' WebAppsInsert Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/WebApps/List.hs b/gen/Network/Google/Resource/AndroidEnterprise/WebApps/List.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/WebApps/List.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/WebApps/List.hs
@@ -53,10 +53,13 @@
 -- | Retrieves the details of all web apps for a given enterprise.
 --
 -- /See:/ 'webAppsList' smart constructor.
-newtype WebAppsList = WebAppsList'
+newtype WebAppsList =
+  WebAppsList'
     { _walEnterpriseId :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'WebAppsList' 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 -- ^ 'walEnterpriseId'
     -> WebAppsList
 webAppsList pWalEnterpriseId_ =
-    WebAppsList'
-    { _walEnterpriseId = pWalEnterpriseId_
-    }
+  WebAppsList' {_walEnterpriseId = pWalEnterpriseId_}
+
 
 -- | The ID of the enterprise.
 walEnterpriseId :: Lens' WebAppsList Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/WebApps/Patch.hs b/gen/Network/Google/Resource/AndroidEnterprise/WebApps/Patch.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/WebApps/Patch.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/WebApps/Patch.hs
@@ -56,12 +56,15 @@
 -- | Updates an existing web app. This method supports patch semantics.
 --
 -- /See:/ 'webAppsPatch' smart constructor.
-data WebAppsPatch = WebAppsPatch'
+data WebAppsPatch =
+  WebAppsPatch'
     { _wapWebAppId     :: !Text
     , _wapEnterpriseId :: !Text
     , _wapPayload      :: !WebApp
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'WebAppsPatch' 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 @@
     -> WebApp -- ^ 'wapPayload'
     -> WebAppsPatch
 webAppsPatch pWapWebAppId_ pWapEnterpriseId_ pWapPayload_ =
-    WebAppsPatch'
+  WebAppsPatch'
     { _wapWebAppId = pWapWebAppId_
     , _wapEnterpriseId = pWapEnterpriseId_
     , _wapPayload = pWapPayload_
     }
+
 
 -- | The ID of the web app.
 wapWebAppId :: Lens' WebAppsPatch Text
diff --git a/gen/Network/Google/Resource/AndroidEnterprise/WebApps/Update.hs b/gen/Network/Google/Resource/AndroidEnterprise/WebApps/Update.hs
--- a/gen/Network/Google/Resource/AndroidEnterprise/WebApps/Update.hs
+++ b/gen/Network/Google/Resource/AndroidEnterprise/WebApps/Update.hs
@@ -56,12 +56,15 @@
 -- | Updates an existing web app.
 --
 -- /See:/ 'webAppsUpdate' smart constructor.
-data WebAppsUpdate = WebAppsUpdate'
+data WebAppsUpdate =
+  WebAppsUpdate'
     { _wauWebAppId     :: !Text
     , _wauEnterpriseId :: !Text
     , _wauPayload      :: !WebApp
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'WebAppsUpdate' 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 @@
     -> WebApp -- ^ 'wauPayload'
     -> WebAppsUpdate
 webAppsUpdate pWauWebAppId_ pWauEnterpriseId_ pWauPayload_ =
-    WebAppsUpdate'
+  WebAppsUpdate'
     { _wauWebAppId = pWauWebAppId_
     , _wauEnterpriseId = pWauEnterpriseId_
     , _wauPayload = pWauPayload_
     }
+
 
 -- | The ID of the web app.
 wauWebAppId :: Lens' WebAppsUpdate Text
diff --git a/gogol-android-enterprise.cabal b/gogol-android-enterprise.cabal
--- a/gogol-android-enterprise.cabal
+++ b/gogol-android-enterprise.cabal
@@ -1,5 +1,5 @@
 name:                  gogol-android-enterprise
-version:               0.4.0
+version:               0.5.0
 synopsis:              Google Play EMM SDK.
 homepage:              https://github.com/brendanhay/gogol
 bug-reports:           https://github.com/brendanhay/gogol/issues
@@ -47,14 +47,12 @@
         , Network.Google.Resource.AndroidEnterprise.Enterprises.Enroll
         , Network.Google.Resource.AndroidEnterprise.Enterprises.GenerateSignupURL
         , Network.Google.Resource.AndroidEnterprise.Enterprises.Get
-        , Network.Google.Resource.AndroidEnterprise.Enterprises.GetAndroidDevicePolicyConfig
         , Network.Google.Resource.AndroidEnterprise.Enterprises.GetServiceAccount
         , Network.Google.Resource.AndroidEnterprise.Enterprises.GetStoreLayout
         , Network.Google.Resource.AndroidEnterprise.Enterprises.List
         , Network.Google.Resource.AndroidEnterprise.Enterprises.PullNotificationSet
         , Network.Google.Resource.AndroidEnterprise.Enterprises.SendTestPushNotification
         , Network.Google.Resource.AndroidEnterprise.Enterprises.SetAccount
-        , Network.Google.Resource.AndroidEnterprise.Enterprises.SetAndroidDevicePolicyConfig
         , Network.Google.Resource.AndroidEnterprise.Enterprises.SetStoreLayout
         , Network.Google.Resource.AndroidEnterprise.Enterprises.Unenroll
         , Network.Google.Resource.AndroidEnterprise.Entitlements.Delete
@@ -128,5 +126,5 @@
         , Network.Google.AndroidEnterprise.Types.Sum
 
     build-depends:
-          gogol-core == 0.4.0.*
+          gogol-core == 0.5.0.*
         , base       >= 4.7 && < 5
