diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,24 +8,27 @@
 
 ## Version
 
-`1.4.4`
+`1.4.5`
 
 
 ## Description
 
-AWS Device Farm is a service that enables mobile app developers to test Android, iOS, and Fire OS apps on physical phones, tablets, and other devices in the cloud.
-
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-devicefarm)
 and the [AWS API Reference](https://aws.amazon.com/documentation/).
 
 The types from this library are intended to be used with [amazonka](http://hackage.haskell.org/package/amazonka),
-which provides mechanisms for specifying AuthN/AuthZ information and sending requests.
+which provides mechanisms for specifying AuthN/AuthZ information, sending requests,
+and receiving responses.
 
-Use of lenses is required for constructing and manipulating types.
-This is due to the amount of nesting of AWS types and transparency regarding
+Lenses are used for constructing and manipulating types,
+due to the depth of nesting of AWS types and transparency regarding
 de/serialisation into more palatable Haskell values.
 The provided lenses should be compatible with any of the major lens libraries
 [lens](http://hackage.haskell.org/package/lens) or [lens-family-core](http://hackage.haskell.org/package/lens-family-core).
+
+See [Network.AWS.DeviceFarm](http://hackage.haskell.org/package/amazonka-devicefarm/docs/Network-AWS-DeviceFarm.html)
+or [the AWS documentation](https://aws.amazon.com/documentation/) to get started.
+
 
 ## Contribute
 
diff --git a/amazonka-devicefarm.cabal b/amazonka-devicefarm.cabal
--- a/amazonka-devicefarm.cabal
+++ b/amazonka-devicefarm.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-devicefarm
-version:               1.4.4
+version:               1.4.5
 synopsis:              Amazon Device Farm SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -13,20 +13,19 @@
 cabal-version:         >= 1.10
 extra-source-files:    README.md fixture/*.yaml fixture/*.proto src/.gitkeep
 description:
-    AWS Device Farm is a service that enables mobile app developers to test Android, iOS, and Fire OS apps on physical phones, tablets, and other devices in the cloud.
-    .
     The types from this library are intended to be used with
     <http://hackage.haskell.org/package/amazonka amazonka>, which provides
-    mechanisms for specifying AuthN/AuthZ information and sending requests.
+    mechanisms for specifying AuthN/AuthZ information, sending requests,
+    and receiving responses.
     .
-    Use of lenses is required for constructing and manipulating types.
-    This is due to the amount of nesting of AWS types and transparency regarding
+    Lenses are used for constructing and manipulating types,
+    due to the depth of nesting of AWS types and transparency regarding
     de/serialisation into more palatable Haskell values.
     The provided lenses should be compatible with any of the major lens libraries
     such as <http://hackage.haskell.org/package/lens lens> or
     <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
     .
-    See "Network.AWS.DeviceFarm" or <https://aws.amazon.com/documentation/ the AWS Documentation>
+    See "Network.AWS.DeviceFarm" or <https://aws.amazon.com/documentation/ the AWS documentation>
     to get started.
 
 source-repository head
@@ -92,7 +91,7 @@
         , Network.AWS.DeviceFarm.Types.Sum
 
     build-depends:
-          amazonka-core == 1.4.4.*
+          amazonka-core == 1.4.5.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-devicefarm-test
@@ -112,9 +111,9 @@
         , Test.AWS.DeviceFarm.Internal
 
     build-depends:
-          amazonka-core == 1.4.4.*
-        , amazonka-test == 1.4.4.*
-        , amazonka-devicefarm == 1.4.4.*
+          amazonka-core == 1.4.5.*
+        , amazonka-test == 1.4.5.*
+        , amazonka-devicefarm == 1.4.5.*
         , base
         , bytestring
         , tasty
diff --git a/gen/Network/AWS/DeviceFarm.hs b/gen/Network/AWS/DeviceFarm.hs
--- a/gen/Network/AWS/DeviceFarm.hs
+++ b/gen/Network/AWS/DeviceFarm.hs
@@ -12,6 +12,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- AWS Device Farm is a service that enables mobile app developers to test Android, iOS, and Fire OS apps on physical phones, tablets, and other devices in the cloud.
+--
+--
 module Network.AWS.DeviceFarm
     (
     -- * Service Configuration
diff --git a/gen/Network/AWS/DeviceFarm/CreateDevicePool.hs b/gen/Network/AWS/DeviceFarm/CreateDevicePool.hs
--- a/gen/Network/AWS/DeviceFarm/CreateDevicePool.hs
+++ b/gen/Network/AWS/DeviceFarm/CreateDevicePool.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Creates a device pool.
+--
+--
 module Network.AWS.DeviceFarm.CreateDevicePool
     (
     -- * Creating a Request
@@ -47,6 +49,8 @@
 
 -- | Represents a request to the create device pool operation.
 --
+--
+--
 -- /See:/ 'createDevicePool' smart constructor.
 data CreateDevicePool = CreateDevicePool'
     { _cdpDescription :: !(Maybe Text)
@@ -59,13 +63,13 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cdpDescription'
+-- * 'cdpDescription' - The device pool's description.
 --
--- * 'cdpProjectARN'
+-- * 'cdpProjectARN' - The ARN of the project for the device pool.
 --
--- * 'cdpName'
+-- * 'cdpName' - The device pool's name.
 --
--- * 'cdpRules'
+-- * 'cdpRules' - The device pool's rules.
 createDevicePool
     :: Text -- ^ 'cdpProjectARN'
     -> Text -- ^ 'cdpName'
@@ -78,7 +82,7 @@
     , _cdpRules = mempty
     }
 
--- | The device pool\'s description.
+-- | The device pool's description.
 cdpDescription :: Lens' CreateDevicePool (Maybe Text)
 cdpDescription = lens _cdpDescription (\ s a -> s{_cdpDescription = a});
 
@@ -86,11 +90,11 @@
 cdpProjectARN :: Lens' CreateDevicePool Text
 cdpProjectARN = lens _cdpProjectARN (\ s a -> s{_cdpProjectARN = a});
 
--- | The device pool\'s name.
+-- | The device pool's name.
 cdpName :: Lens' CreateDevicePool Text
 cdpName = lens _cdpName (\ s a -> s{_cdpName = a});
 
--- | The device pool\'s rules.
+-- | The device pool's rules.
 cdpRules :: Lens' CreateDevicePool [Rule]
 cdpRules = lens _cdpRules (\ s a -> s{_cdpRules = a}) . _Coerce;
 
@@ -134,6 +138,8 @@
 
 -- | Represents the result of a create device pool request.
 --
+--
+--
 -- /See:/ 'createDevicePoolResponse' smart constructor.
 data CreateDevicePoolResponse = CreateDevicePoolResponse'
     { _cdprsDevicePool     :: !(Maybe DevicePool)
@@ -144,9 +150,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cdprsDevicePool'
+-- * 'cdprsDevicePool' - The newly created device pool.
 --
--- * 'cdprsResponseStatus'
+-- * 'cdprsResponseStatus' - -- | The response status code.
 createDevicePoolResponse
     :: Int -- ^ 'cdprsResponseStatus'
     -> CreateDevicePoolResponse
@@ -160,7 +166,7 @@
 cdprsDevicePool :: Lens' CreateDevicePoolResponse (Maybe DevicePool)
 cdprsDevicePool = lens _cdprsDevicePool (\ s a -> s{_cdprsDevicePool = a});
 
--- | The response status code.
+-- | -- | The response status code.
 cdprsResponseStatus :: Lens' CreateDevicePoolResponse Int
 cdprsResponseStatus = lens _cdprsResponseStatus (\ s a -> s{_cdprsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/CreateProject.hs b/gen/Network/AWS/DeviceFarm/CreateProject.hs
--- a/gen/Network/AWS/DeviceFarm/CreateProject.hs
+++ b/gen/Network/AWS/DeviceFarm/CreateProject.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Creates a new project.
+--
+--
 module Network.AWS.DeviceFarm.CreateProject
     (
     -- * Creating a Request
@@ -44,6 +46,8 @@
 
 -- | Represents a request to the create project operation.
 --
+--
+--
 -- /See:/ 'createProject' smart constructor.
 newtype CreateProject = CreateProject'
     { _cpName :: Text
@@ -53,7 +57,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cpName'
+-- * 'cpName' - The project's name.
 createProject
     :: Text -- ^ 'cpName'
     -> CreateProject
@@ -62,7 +66,7 @@
     { _cpName = pName_
     }
 
--- | The project\'s name.
+-- | The project's name.
 cpName :: Lens' CreateProject Text
 cpName = lens _cpName (\ s a -> s{_cpName = a});
 
@@ -100,6 +104,8 @@
 
 -- | Represents the result of a create project request.
 --
+--
+--
 -- /See:/ 'createProjectResponse' smart constructor.
 data CreateProjectResponse = CreateProjectResponse'
     { _cprsProject        :: !(Maybe Project)
@@ -110,9 +116,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cprsProject'
+-- * 'cprsProject' - The newly created project.
 --
--- * 'cprsResponseStatus'
+-- * 'cprsResponseStatus' - -- | The response status code.
 createProjectResponse
     :: Int -- ^ 'cprsResponseStatus'
     -> CreateProjectResponse
@@ -126,7 +132,7 @@
 cprsProject :: Lens' CreateProjectResponse (Maybe Project)
 cprsProject = lens _cprsProject (\ s a -> s{_cprsProject = a});
 
--- | The response status code.
+-- | -- | The response status code.
 cprsResponseStatus :: Lens' CreateProjectResponse Int
 cprsResponseStatus = lens _cprsResponseStatus (\ s a -> s{_cprsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/CreateRemoteAccessSession.hs b/gen/Network/AWS/DeviceFarm/CreateRemoteAccessSession.hs
--- a/gen/Network/AWS/DeviceFarm/CreateRemoteAccessSession.hs
+++ b/gen/Network/AWS/DeviceFarm/CreateRemoteAccessSession.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Specifies and starts a remote access session.
+--
+--
 module Network.AWS.DeviceFarm.CreateRemoteAccessSession
     (
     -- * Creating a Request
@@ -47,6 +49,8 @@
 
 -- | Creates and submits a request to start a remote access session.
 --
+--
+--
 -- /See:/ 'createRemoteAccessSession' smart constructor.
 data CreateRemoteAccessSession = CreateRemoteAccessSession'
     { _crasName          :: !(Maybe Text)
@@ -59,13 +63,13 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'crasName'
+-- * 'crasName' - The name of the remote access session that you wish to create.
 --
--- * 'crasConfiguration'
+-- * 'crasConfiguration' - The configuration information for the remote access session request.
 --
--- * 'crasProjectARN'
+-- * 'crasProjectARN' - The Amazon Resource Name (ARN) of the project for which you want to create a remote access session.
 --
--- * 'crasDeviceARN'
+-- * 'crasDeviceARN' - The Amazon Resource Name (ARN) of the device for which you want to create a remote access session.
 createRemoteAccessSession
     :: Text -- ^ 'crasProjectARN'
     -> Text -- ^ 'crasDeviceARN'
@@ -136,6 +140,8 @@
 
 -- | Represents the server response from a request to create a remote access session.
 --
+--
+--
 -- /See:/ 'createRemoteAccessSessionResponse' smart constructor.
 data CreateRemoteAccessSessionResponse = CreateRemoteAccessSessionResponse'
     { _crasrsRemoteAccessSession :: !(Maybe RemoteAccessSession)
@@ -146,9 +152,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'crasrsRemoteAccessSession'
+-- * 'crasrsRemoteAccessSession' - A container that describes the remote access session when the request to create a remote access session is sent.
 --
--- * 'crasrsResponseStatus'
+-- * 'crasrsResponseStatus' - -- | The response status code.
 createRemoteAccessSessionResponse
     :: Int -- ^ 'crasrsResponseStatus'
     -> CreateRemoteAccessSessionResponse
@@ -162,7 +168,7 @@
 crasrsRemoteAccessSession :: Lens' CreateRemoteAccessSessionResponse (Maybe RemoteAccessSession)
 crasrsRemoteAccessSession = lens _crasrsRemoteAccessSession (\ s a -> s{_crasrsRemoteAccessSession = a});
 
--- | The response status code.
+-- | -- | The response status code.
 crasrsResponseStatus :: Lens' CreateRemoteAccessSessionResponse Int
 crasrsResponseStatus = lens _crasrsResponseStatus (\ s a -> s{_crasrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/CreateUpload.hs b/gen/Network/AWS/DeviceFarm/CreateUpload.hs
--- a/gen/Network/AWS/DeviceFarm/CreateUpload.hs
+++ b/gen/Network/AWS/DeviceFarm/CreateUpload.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Uploads an app or test scripts.
+--
+--
 module Network.AWS.DeviceFarm.CreateUpload
     (
     -- * Creating a Request
@@ -47,6 +49,8 @@
 
 -- | Represents a request to the create upload operation.
 --
+--
+--
 -- /See:/ 'createUpload' smart constructor.
 data CreateUpload = CreateUpload'
     { _cuContentType :: !(Maybe Text)
@@ -59,13 +63,13 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cuContentType'
+-- * 'cuContentType' - The upload's content type (for example, "application/octet-stream").
 --
--- * 'cuProjectARN'
+-- * 'cuProjectARN' - The ARN of the project for the upload.
 --
--- * 'cuName'
+-- * 'cuName' - The upload's file name. The name should not contain the '/' character. If uploading an iOS app, the file name needs to end with the @.ipa@ extension. If uploading an Android app, the file name needs to end with the @.apk@ extension. For all others, the file name must end with the @.zip@ file extension.
 --
--- * 'cuType'
+-- * 'cuType' - The upload's upload type. Must be one of the following values:     * ANDROID_APP: An Android upload.     * IOS_APP: An iOS upload.     * WEB_APP: A web appliction upload.     * EXTERNAL_DATA: An external data upload.     * APPIUM_JAVA_JUNIT_TEST_PACKAGE: An Appium Java JUnit test package upload.     * APPIUM_JAVA_TESTNG_TEST_PACKAGE: An Appium Java TestNG test package upload.     * APPIUM_PYTHON_TEST_PACKAGE: An Appium Python test package upload.     * APPIUM_WEB_JAVA_JUNIT_TEST_PACKAGE: An Appium Java JUnit test package upload.     * APPIUM_WEB_JAVA_TESTNG_TEST_PACKAGE: An Appium Java TestNG test package upload.     * APPIUM_WEB_PYTHON_TEST_PACKAGE: An Appium Python test package upload.     * CALABASH_TEST_PACKAGE: A Calabash test package upload.     * INSTRUMENTATION_TEST_PACKAGE: An instrumentation upload.     * UIAUTOMATION_TEST_PACKAGE: A uiautomation test package upload.     * UIAUTOMATOR_TEST_PACKAGE: A uiautomator test package upload.     * XCTEST_TEST_PACKAGE: An XCode test package upload.     * XCTEST_UI_TEST_PACKAGE: An XCode UI test package upload. __Note__ If you call @CreateUpload@ with @WEB_APP@ specified, AWS Device Farm throws an @ArgumentException@ error.
 createUpload
     :: Text -- ^ 'cuProjectARN'
     -> Text -- ^ 'cuName'
@@ -79,7 +83,7 @@
     , _cuType = pType_
     }
 
--- | The upload\'s content type (for example, \"application\/octet-stream\").
+-- | The upload's content type (for example, "application/octet-stream").
 cuContentType :: Lens' CreateUpload (Maybe Text)
 cuContentType = lens _cuContentType (\ s a -> s{_cuContentType = a});
 
@@ -87,47 +91,11 @@
 cuProjectARN :: Lens' CreateUpload Text
 cuProjectARN = lens _cuProjectARN (\ s a -> s{_cuProjectARN = a});
 
--- | The upload\'s file name. The name should not contain the \'\/\' character.
+-- | The upload's file name. The name should not contain the '/' character. If uploading an iOS app, the file name needs to end with the @.ipa@ extension. If uploading an Android app, the file name needs to end with the @.apk@ extension. For all others, the file name must end with the @.zip@ file extension.
 cuName :: Lens' CreateUpload Text
 cuName = lens _cuName (\ s a -> s{_cuName = a});
 
--- | The upload\'s upload type.
---
--- Must be one of the following values:
---
--- -   ANDROID_APP: An Android upload.
---
--- -   IOS_APP: An iOS upload.
---
--- -   WEB_APP: A web appliction upload.
---
--- -   EXTERNAL_DATA: An external data upload.
---
--- -   APPIUM_JAVA_JUNIT_TEST_PACKAGE: An Appium Java JUnit test package upload.
---
--- -   APPIUM_JAVA_TESTNG_TEST_PACKAGE: An Appium Java TestNG test package upload.
---
--- -   APPIUM_PYTHON_TEST_PACKAGE: An Appium Python test package upload.
---
--- -   APPIUM_WEB_JAVA_JUNIT_TEST_PACKAGE: An Appium Java JUnit test package upload.
---
--- -   APPIUM_WEB_JAVA_TESTNG_TEST_PACKAGE: An Appium Java TestNG test package upload.
---
--- -   APPIUM_WEB_PYTHON_TEST_PACKAGE: An Appium Python test package upload.
---
--- -   CALABASH_TEST_PACKAGE: A Calabash test package upload.
---
--- -   INSTRUMENTATION_TEST_PACKAGE: An instrumentation upload.
---
--- -   UIAUTOMATION_TEST_PACKAGE: A uiautomation test package upload.
---
--- -   UIAUTOMATOR_TEST_PACKAGE: A uiautomator test package upload.
---
--- -   XCTEST_TEST_PACKAGE: An XCode test package upload.
---
--- -   XCTEST_UI_TEST_PACKAGE: An XCode UI test package upload.
---
--- __Note__ If you call 'CreateUpload' with 'WEB_APP' specified, AWS Device Farm throws an 'ArgumentException' error.
+-- | The upload's upload type. Must be one of the following values:     * ANDROID_APP: An Android upload.     * IOS_APP: An iOS upload.     * WEB_APP: A web appliction upload.     * EXTERNAL_DATA: An external data upload.     * APPIUM_JAVA_JUNIT_TEST_PACKAGE: An Appium Java JUnit test package upload.     * APPIUM_JAVA_TESTNG_TEST_PACKAGE: An Appium Java TestNG test package upload.     * APPIUM_PYTHON_TEST_PACKAGE: An Appium Python test package upload.     * APPIUM_WEB_JAVA_JUNIT_TEST_PACKAGE: An Appium Java JUnit test package upload.     * APPIUM_WEB_JAVA_TESTNG_TEST_PACKAGE: An Appium Java TestNG test package upload.     * APPIUM_WEB_PYTHON_TEST_PACKAGE: An Appium Python test package upload.     * CALABASH_TEST_PACKAGE: A Calabash test package upload.     * INSTRUMENTATION_TEST_PACKAGE: An instrumentation upload.     * UIAUTOMATION_TEST_PACKAGE: A uiautomation test package upload.     * UIAUTOMATOR_TEST_PACKAGE: A uiautomator test package upload.     * XCTEST_TEST_PACKAGE: An XCode test package upload.     * XCTEST_UI_TEST_PACKAGE: An XCode UI test package upload. __Note__ If you call @CreateUpload@ with @WEB_APP@ specified, AWS Device Farm throws an @ArgumentException@ error.
 cuType :: Lens' CreateUpload UploadType
 cuType = lens _cuType (\ s a -> s{_cuType = a});
 
@@ -169,6 +137,8 @@
 
 -- | Represents the result of a create upload request.
 --
+--
+--
 -- /See:/ 'createUploadResponse' smart constructor.
 data CreateUploadResponse = CreateUploadResponse'
     { _cursUpload         :: !(Maybe Upload)
@@ -179,9 +149,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cursUpload'
+-- * 'cursUpload' - The newly created upload.
 --
--- * 'cursResponseStatus'
+-- * 'cursResponseStatus' - -- | The response status code.
 createUploadResponse
     :: Int -- ^ 'cursResponseStatus'
     -> CreateUploadResponse
@@ -195,7 +165,7 @@
 cursUpload :: Lens' CreateUploadResponse (Maybe Upload)
 cursUpload = lens _cursUpload (\ s a -> s{_cursUpload = a});
 
--- | The response status code.
+-- | -- | The response status code.
 cursResponseStatus :: Lens' CreateUploadResponse Int
 cursResponseStatus = lens _cursResponseStatus (\ s a -> s{_cursResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/DeleteDevicePool.hs b/gen/Network/AWS/DeviceFarm/DeleteDevicePool.hs
--- a/gen/Network/AWS/DeviceFarm/DeleteDevicePool.hs
+++ b/gen/Network/AWS/DeviceFarm/DeleteDevicePool.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Deletes a device pool given the pool ARN. Does not allow deletion of curated pools owned by the system.
+--
+--
 module Network.AWS.DeviceFarm.DeleteDevicePool
     (
     -- * Creating a Request
@@ -43,6 +45,8 @@
 
 -- | Represents a request to the delete device pool operation.
 --
+--
+--
 -- /See:/ 'deleteDevicePool' smart constructor.
 newtype DeleteDevicePool = DeleteDevicePool'
     { _ddpArn :: Text
@@ -52,7 +56,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ddpArn'
+-- * 'ddpArn' - Represents the Amazon Resource Name (ARN) of the Device Farm device pool you wish to delete.
 deleteDevicePool
     :: Text -- ^ 'ddpArn'
     -> DeleteDevicePool
@@ -99,6 +103,8 @@
 
 -- | Represents the result of a delete device pool request.
 --
+--
+--
 -- /See:/ 'deleteDevicePoolResponse' smart constructor.
 newtype DeleteDevicePoolResponse = DeleteDevicePoolResponse'
     { _ddprsResponseStatus :: Int
@@ -108,7 +114,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ddprsResponseStatus'
+-- * 'ddprsResponseStatus' - -- | The response status code.
 deleteDevicePoolResponse
     :: Int -- ^ 'ddprsResponseStatus'
     -> DeleteDevicePoolResponse
@@ -117,7 +123,7 @@
     { _ddprsResponseStatus = pResponseStatus_
     }
 
--- | The response status code.
+-- | -- | The response status code.
 ddprsResponseStatus :: Lens' DeleteDevicePoolResponse Int
 ddprsResponseStatus = lens _ddprsResponseStatus (\ s a -> s{_ddprsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/DeleteProject.hs b/gen/Network/AWS/DeviceFarm/DeleteProject.hs
--- a/gen/Network/AWS/DeviceFarm/DeleteProject.hs
+++ b/gen/Network/AWS/DeviceFarm/DeleteProject.hs
@@ -20,7 +20,9 @@
 --
 -- Deletes an AWS Device Farm project, given the project ARN.
 --
+--
 -- __Note__ Deleting this resource does not stop an in-progress run.
+--
 module Network.AWS.DeviceFarm.DeleteProject
     (
     -- * Creating a Request
@@ -45,6 +47,8 @@
 
 -- | Represents a request to the delete project operation.
 --
+--
+--
 -- /See:/ 'deleteProject' smart constructor.
 newtype DeleteProject = DeleteProject'
     { _dpArn :: Text
@@ -54,7 +58,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dpArn'
+-- * 'dpArn' - Represents the Amazon Resource Name (ARN) of the Device Farm project you wish to delete.
 deleteProject
     :: Text -- ^ 'dpArn'
     -> DeleteProject
@@ -100,6 +104,8 @@
 
 -- | Represents the result of a delete project request.
 --
+--
+--
 -- /See:/ 'deleteProjectResponse' smart constructor.
 newtype DeleteProjectResponse = DeleteProjectResponse'
     { _dprsResponseStatus :: Int
@@ -109,7 +115,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dprsResponseStatus'
+-- * 'dprsResponseStatus' - -- | The response status code.
 deleteProjectResponse
     :: Int -- ^ 'dprsResponseStatus'
     -> DeleteProjectResponse
@@ -118,7 +124,7 @@
     { _dprsResponseStatus = pResponseStatus_
     }
 
--- | The response status code.
+-- | -- | The response status code.
 dprsResponseStatus :: Lens' DeleteProjectResponse Int
 dprsResponseStatus = lens _dprsResponseStatus (\ s a -> s{_dprsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/DeleteRemoteAccessSession.hs b/gen/Network/AWS/DeviceFarm/DeleteRemoteAccessSession.hs
--- a/gen/Network/AWS/DeviceFarm/DeleteRemoteAccessSession.hs
+++ b/gen/Network/AWS/DeviceFarm/DeleteRemoteAccessSession.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Deletes a completed remote access session and its results.
+--
+--
 module Network.AWS.DeviceFarm.DeleteRemoteAccessSession
     (
     -- * Creating a Request
@@ -43,6 +45,8 @@
 
 -- | Represents the request to delete the specified remote access session.
 --
+--
+--
 -- /See:/ 'deleteRemoteAccessSession' smart constructor.
 newtype DeleteRemoteAccessSession = DeleteRemoteAccessSession'
     { _drasArn :: Text
@@ -52,7 +56,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'drasArn'
+-- * 'drasArn' - The Amazon Resource Name (ARN) of the sesssion for which you want to delete remote access.
 deleteRemoteAccessSession
     :: Text -- ^ 'drasArn'
     -> DeleteRemoteAccessSession
@@ -101,6 +105,8 @@
 
 -- | The response from the server when a request is made to delete the remote access session.
 --
+--
+--
 -- /See:/ 'deleteRemoteAccessSessionResponse' smart constructor.
 newtype DeleteRemoteAccessSessionResponse = DeleteRemoteAccessSessionResponse'
     { _drasrsResponseStatus :: Int
@@ -110,7 +116,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'drasrsResponseStatus'
+-- * 'drasrsResponseStatus' - -- | The response status code.
 deleteRemoteAccessSessionResponse
     :: Int -- ^ 'drasrsResponseStatus'
     -> DeleteRemoteAccessSessionResponse
@@ -119,7 +125,7 @@
     { _drasrsResponseStatus = pResponseStatus_
     }
 
--- | The response status code.
+-- | -- | The response status code.
 drasrsResponseStatus :: Lens' DeleteRemoteAccessSessionResponse Int
 drasrsResponseStatus = lens _drasrsResponseStatus (\ s a -> s{_drasrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/DeleteRun.hs b/gen/Network/AWS/DeviceFarm/DeleteRun.hs
--- a/gen/Network/AWS/DeviceFarm/DeleteRun.hs
+++ b/gen/Network/AWS/DeviceFarm/DeleteRun.hs
@@ -20,7 +20,9 @@
 --
 -- Deletes the run, given the run ARN.
 --
+--
 -- __Note__ Deleting this resource does not stop an in-progress run.
+--
 module Network.AWS.DeviceFarm.DeleteRun
     (
     -- * Creating a Request
@@ -45,6 +47,8 @@
 
 -- | Represents a request to the delete run operation.
 --
+--
+--
 -- /See:/ 'deleteRun' smart constructor.
 newtype DeleteRun = DeleteRun'
     { _drArn :: Text
@@ -54,7 +58,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'drArn'
+-- * 'drArn' - The Amazon Resource Name (ARN) for the run you wish to delete.
 deleteRun
     :: Text -- ^ 'drArn'
     -> DeleteRun
@@ -100,6 +104,8 @@
 
 -- | Represents the result of a delete run request.
 --
+--
+--
 -- /See:/ 'deleteRunResponse' smart constructor.
 newtype DeleteRunResponse = DeleteRunResponse'
     { _drrsResponseStatus :: Int
@@ -109,7 +115,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'drrsResponseStatus'
+-- * 'drrsResponseStatus' - -- | The response status code.
 deleteRunResponse
     :: Int -- ^ 'drrsResponseStatus'
     -> DeleteRunResponse
@@ -118,7 +124,7 @@
     { _drrsResponseStatus = pResponseStatus_
     }
 
--- | The response status code.
+-- | -- | The response status code.
 drrsResponseStatus :: Lens' DeleteRunResponse Int
 drrsResponseStatus = lens _drrsResponseStatus (\ s a -> s{_drrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/DeleteUpload.hs b/gen/Network/AWS/DeviceFarm/DeleteUpload.hs
--- a/gen/Network/AWS/DeviceFarm/DeleteUpload.hs
+++ b/gen/Network/AWS/DeviceFarm/DeleteUpload.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Deletes an upload given the upload ARN.
+--
+--
 module Network.AWS.DeviceFarm.DeleteUpload
     (
     -- * Creating a Request
@@ -43,6 +45,8 @@
 
 -- | Represents a request to the delete upload operation.
 --
+--
+--
 -- /See:/ 'deleteUpload' smart constructor.
 newtype DeleteUpload = DeleteUpload'
     { _duArn :: Text
@@ -52,7 +56,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'duArn'
+-- * 'duArn' - Represents the Amazon Resource Name (ARN) of the Device Farm upload you wish to delete.
 deleteUpload
     :: Text -- ^ 'duArn'
     -> DeleteUpload
@@ -98,6 +102,8 @@
 
 -- | Represents the result of a delete upload request.
 --
+--
+--
 -- /See:/ 'deleteUploadResponse' smart constructor.
 newtype DeleteUploadResponse = DeleteUploadResponse'
     { _dursResponseStatus :: Int
@@ -107,7 +113,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dursResponseStatus'
+-- * 'dursResponseStatus' - -- | The response status code.
 deleteUploadResponse
     :: Int -- ^ 'dursResponseStatus'
     -> DeleteUploadResponse
@@ -116,7 +122,7 @@
     { _dursResponseStatus = pResponseStatus_
     }
 
--- | The response status code.
+-- | -- | The response status code.
 dursResponseStatus :: Lens' DeleteUploadResponse Int
 dursResponseStatus = lens _dursResponseStatus (\ s a -> s{_dursResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/GetAccountSettings.hs b/gen/Network/AWS/DeviceFarm/GetAccountSettings.hs
--- a/gen/Network/AWS/DeviceFarm/GetAccountSettings.hs
+++ b/gen/Network/AWS/DeviceFarm/GetAccountSettings.hs
@@ -18,7 +18,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns the number of unmetered iOS and\/or unmetered Android devices that have been purchased by the account.
+-- Returns the number of unmetered iOS and/or unmetered Android devices that have been purchased by the account.
+--
+--
 module Network.AWS.DeviceFarm.GetAccountSettings
     (
     -- * Creating a Request
@@ -42,6 +44,8 @@
 
 -- | Represents the request sent to retrieve the account settings.
 --
+--
+--
 -- /See:/ 'getAccountSettings' smart constructor.
 data GetAccountSettings =
     GetAccountSettings'
@@ -86,8 +90,10 @@
 instance ToQuery GetAccountSettings where
         toQuery = const mempty
 
--- | Represents the account settings return values from the 'GetAccountSettings' request.
+-- | Represents the account settings return values from the @GetAccountSettings@ request.
 --
+--
+--
 -- /See:/ 'getAccountSettingsResponse' smart constructor.
 data GetAccountSettingsResponse = GetAccountSettingsResponse'
     { _gasrsAccountSettings :: !(Maybe AccountSettings)
@@ -98,9 +104,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gasrsAccountSettings'
+-- * 'gasrsAccountSettings' - Undocumented member.
 --
--- * 'gasrsResponseStatus'
+-- * 'gasrsResponseStatus' - -- | The response status code.
 getAccountSettingsResponse
     :: Int -- ^ 'gasrsResponseStatus'
     -> GetAccountSettingsResponse
@@ -114,7 +120,7 @@
 gasrsAccountSettings :: Lens' GetAccountSettingsResponse (Maybe AccountSettings)
 gasrsAccountSettings = lens _gasrsAccountSettings (\ s a -> s{_gasrsAccountSettings = a});
 
--- | The response status code.
+-- | -- | The response status code.
 gasrsResponseStatus :: Lens' GetAccountSettingsResponse Int
 gasrsResponseStatus = lens _gasrsResponseStatus (\ s a -> s{_gasrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/GetDevice.hs b/gen/Network/AWS/DeviceFarm/GetDevice.hs
--- a/gen/Network/AWS/DeviceFarm/GetDevice.hs
+++ b/gen/Network/AWS/DeviceFarm/GetDevice.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Gets information about a unique device type.
+--
+--
 module Network.AWS.DeviceFarm.GetDevice
     (
     -- * Creating a Request
@@ -44,6 +46,8 @@
 
 -- | Represents a request to the get device request.
 --
+--
+--
 -- /See:/ 'getDevice' smart constructor.
 newtype GetDevice = GetDevice'
     { _gdArn :: Text
@@ -53,7 +57,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gdArn'
+-- * 'gdArn' - The device type's ARN.
 getDevice
     :: Text -- ^ 'gdArn'
     -> GetDevice
@@ -62,7 +66,7 @@
     { _gdArn = pArn_
     }
 
--- | The device type\'s ARN.
+-- | The device type's ARN.
 gdArn :: Lens' GetDevice Text
 gdArn = lens _gdArn (\ s a -> s{_gdArn = a});
 
@@ -100,6 +104,8 @@
 
 -- | Represents the result of a get device request.
 --
+--
+--
 -- /See:/ 'getDeviceResponse' smart constructor.
 data GetDeviceResponse = GetDeviceResponse'
     { _gdrsDevice         :: !(Maybe Device)
@@ -110,9 +116,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gdrsDevice'
+-- * 'gdrsDevice' - Undocumented member.
 --
--- * 'gdrsResponseStatus'
+-- * 'gdrsResponseStatus' - -- | The response status code.
 getDeviceResponse
     :: Int -- ^ 'gdrsResponseStatus'
     -> GetDeviceResponse
@@ -126,7 +132,7 @@
 gdrsDevice :: Lens' GetDeviceResponse (Maybe Device)
 gdrsDevice = lens _gdrsDevice (\ s a -> s{_gdrsDevice = a});
 
--- | The response status code.
+-- | -- | The response status code.
 gdrsResponseStatus :: Lens' GetDeviceResponse Int
 gdrsResponseStatus = lens _gdrsResponseStatus (\ s a -> s{_gdrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/GetDevicePool.hs b/gen/Network/AWS/DeviceFarm/GetDevicePool.hs
--- a/gen/Network/AWS/DeviceFarm/GetDevicePool.hs
+++ b/gen/Network/AWS/DeviceFarm/GetDevicePool.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Gets information about a device pool.
+--
+--
 module Network.AWS.DeviceFarm.GetDevicePool
     (
     -- * Creating a Request
@@ -44,6 +46,8 @@
 
 -- | Represents a request to the get device pool operation.
 --
+--
+--
 -- /See:/ 'getDevicePool' smart constructor.
 newtype GetDevicePool = GetDevicePool'
     { _gdpArn :: Text
@@ -53,7 +57,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gdpArn'
+-- * 'gdpArn' - The device pool's ARN.
 getDevicePool
     :: Text -- ^ 'gdpArn'
     -> GetDevicePool
@@ -62,7 +66,7 @@
     { _gdpArn = pArn_
     }
 
--- | The device pool\'s ARN.
+-- | The device pool's ARN.
 gdpArn :: Lens' GetDevicePool Text
 gdpArn = lens _gdpArn (\ s a -> s{_gdpArn = a});
 
@@ -100,6 +104,8 @@
 
 -- | Represents the result of a get device pool request.
 --
+--
+--
 -- /See:/ 'getDevicePoolResponse' smart constructor.
 data GetDevicePoolResponse = GetDevicePoolResponse'
     { _gdprsDevicePool     :: !(Maybe DevicePool)
@@ -110,9 +116,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gdprsDevicePool'
+-- * 'gdprsDevicePool' - Undocumented member.
 --
--- * 'gdprsResponseStatus'
+-- * 'gdprsResponseStatus' - -- | The response status code.
 getDevicePoolResponse
     :: Int -- ^ 'gdprsResponseStatus'
     -> GetDevicePoolResponse
@@ -126,7 +132,7 @@
 gdprsDevicePool :: Lens' GetDevicePoolResponse (Maybe DevicePool)
 gdprsDevicePool = lens _gdprsDevicePool (\ s a -> s{_gdprsDevicePool = a});
 
--- | The response status code.
+-- | -- | The response status code.
 gdprsResponseStatus :: Lens' GetDevicePoolResponse Int
 gdprsResponseStatus = lens _gdprsResponseStatus (\ s a -> s{_gdprsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/GetDevicePoolCompatibility.hs b/gen/Network/AWS/DeviceFarm/GetDevicePoolCompatibility.hs
--- a/gen/Network/AWS/DeviceFarm/GetDevicePoolCompatibility.hs
+++ b/gen/Network/AWS/DeviceFarm/GetDevicePoolCompatibility.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Gets information about compatibility with a device pool.
+--
+--
 module Network.AWS.DeviceFarm.GetDevicePoolCompatibility
     (
     -- * Creating a Request
@@ -47,6 +49,8 @@
 
 -- | Represents a request to the get device pool compatibility operation.
 --
+--
+--
 -- /See:/ 'getDevicePoolCompatibility' smart constructor.
 data GetDevicePoolCompatibility = GetDevicePoolCompatibility'
     { _gdpcAppARN        :: !(Maybe Text)
@@ -58,11 +62,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gdpcAppARN'
+-- * 'gdpcAppARN' - The ARN of the app that is associated with the specified device pool.
 --
--- * 'gdpcTestType'
+-- * 'gdpcTestType' - The test type for the specified device pool. Allowed values include the following:     * BUILTIN_FUZZ: The built-in fuzz type.     * BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time.     * APPIUM_JAVA_JUNIT: The Appium Java JUnit type.     * APPIUM_JAVA_TESTNG: The Appium Java TestNG type.     * APPIUM_PYTHON: The Appium Python type.     * APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps.     * APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps.     * APPIUM_WEB_PYTHON: The Appium Python type for Web apps.     * CALABASH: The Calabash type.     * INSTRUMENTATION: The Instrumentation type.     * UIAUTOMATION: The uiautomation type.     * UIAUTOMATOR: The uiautomator type.     * XCTEST: The XCode test type.     * XCTEST_UI: The XCode UI test type.
 --
--- * 'gdpcDevicePoolARN'
+-- * 'gdpcDevicePoolARN' - The device pool's ARN.
 getDevicePoolCompatibility
     :: Text -- ^ 'gdpcDevicePoolARN'
     -> GetDevicePoolCompatibility
@@ -77,42 +81,11 @@
 gdpcAppARN :: Lens' GetDevicePoolCompatibility (Maybe Text)
 gdpcAppARN = lens _gdpcAppARN (\ s a -> s{_gdpcAppARN = a});
 
--- | The test type for the specified device pool.
---
--- Allowed values include the following:
---
--- -   BUILTIN_FUZZ: The built-in fuzz type.
---
--- -   BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time.
---
--- -   APPIUM_JAVA_JUNIT: The Appium Java JUnit type.
---
--- -   APPIUM_JAVA_TESTNG: The Appium Java TestNG type.
---
--- -   APPIUM_PYTHON: The Appium Python type.
---
--- -   APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps.
---
--- -   APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps.
---
--- -   APPIUM_WEB_PYTHON: The Appium Python type for Web apps.
---
--- -   CALABASH: The Calabash type.
---
--- -   INSTRUMENTATION: The Instrumentation type.
---
--- -   UIAUTOMATION: The uiautomation type.
---
--- -   UIAUTOMATOR: The uiautomator type.
---
--- -   XCTEST: The XCode test type.
---
--- -   XCTEST_UI: The XCode UI test type.
---
+-- | The test type for the specified device pool. Allowed values include the following:     * BUILTIN_FUZZ: The built-in fuzz type.     * BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time.     * APPIUM_JAVA_JUNIT: The Appium Java JUnit type.     * APPIUM_JAVA_TESTNG: The Appium Java TestNG type.     * APPIUM_PYTHON: The Appium Python type.     * APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps.     * APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps.     * APPIUM_WEB_PYTHON: The Appium Python type for Web apps.     * CALABASH: The Calabash type.     * INSTRUMENTATION: The Instrumentation type.     * UIAUTOMATION: The uiautomation type.     * UIAUTOMATOR: The uiautomator type.     * XCTEST: The XCode test type.     * XCTEST_UI: The XCode UI test type.
 gdpcTestType :: Lens' GetDevicePoolCompatibility (Maybe TestType)
 gdpcTestType = lens _gdpcTestType (\ s a -> s{_gdpcTestType = a});
 
--- | The device pool\'s ARN.
+-- | The device pool's ARN.
 gdpcDevicePoolARN :: Lens' GetDevicePoolCompatibility Text
 gdpcDevicePoolARN = lens _gdpcDevicePoolARN (\ s a -> s{_gdpcDevicePoolARN = a});
 
@@ -158,6 +131,8 @@
 
 -- | Represents the result of describe device pool compatibility request.
 --
+--
+--
 -- /See:/ 'getDevicePoolCompatibilityResponse' smart constructor.
 data GetDevicePoolCompatibilityResponse = GetDevicePoolCompatibilityResponse'
     { _gdpcrsIncompatibleDevices :: !(Maybe [DevicePoolCompatibilityResult])
@@ -169,11 +144,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gdpcrsIncompatibleDevices'
+-- * 'gdpcrsIncompatibleDevices' - Information about incompatible devices.
 --
--- * 'gdpcrsCompatibleDevices'
+-- * 'gdpcrsCompatibleDevices' - Information about compatible devices.
 --
--- * 'gdpcrsResponseStatus'
+-- * 'gdpcrsResponseStatus' - -- | The response status code.
 getDevicePoolCompatibilityResponse
     :: Int -- ^ 'gdpcrsResponseStatus'
     -> GetDevicePoolCompatibilityResponse
@@ -192,7 +167,7 @@
 gdpcrsCompatibleDevices :: Lens' GetDevicePoolCompatibilityResponse [DevicePoolCompatibilityResult]
 gdpcrsCompatibleDevices = lens _gdpcrsCompatibleDevices (\ s a -> s{_gdpcrsCompatibleDevices = a}) . _Default . _Coerce;
 
--- | The response status code.
+-- | -- | The response status code.
 gdpcrsResponseStatus :: Lens' GetDevicePoolCompatibilityResponse Int
 gdpcrsResponseStatus = lens _gdpcrsResponseStatus (\ s a -> s{_gdpcrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/GetJob.hs b/gen/Network/AWS/DeviceFarm/GetJob.hs
--- a/gen/Network/AWS/DeviceFarm/GetJob.hs
+++ b/gen/Network/AWS/DeviceFarm/GetJob.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Gets information about a job.
+--
+--
 module Network.AWS.DeviceFarm.GetJob
     (
     -- * Creating a Request
@@ -44,6 +46,8 @@
 
 -- | Represents a request to the get job operation.
 --
+--
+--
 -- /See:/ 'getJob' smart constructor.
 newtype GetJob = GetJob'
     { _gjArn :: Text
@@ -53,7 +57,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gjArn'
+-- * 'gjArn' - The job's ARN.
 getJob
     :: Text -- ^ 'gjArn'
     -> GetJob
@@ -62,7 +66,7 @@
     { _gjArn = pArn_
     }
 
--- | The job\'s ARN.
+-- | The job's ARN.
 gjArn :: Lens' GetJob Text
 gjArn = lens _gjArn (\ s a -> s{_gjArn = a});
 
@@ -100,6 +104,8 @@
 
 -- | Represents the result of a get job request.
 --
+--
+--
 -- /See:/ 'getJobResponse' smart constructor.
 data GetJobResponse = GetJobResponse'
     { _gjrsJob            :: !(Maybe Job)
@@ -110,9 +116,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gjrsJob'
+-- * 'gjrsJob' - Undocumented member.
 --
--- * 'gjrsResponseStatus'
+-- * 'gjrsResponseStatus' - -- | The response status code.
 getJobResponse
     :: Int -- ^ 'gjrsResponseStatus'
     -> GetJobResponse
@@ -126,7 +132,7 @@
 gjrsJob :: Lens' GetJobResponse (Maybe Job)
 gjrsJob = lens _gjrsJob (\ s a -> s{_gjrsJob = a});
 
--- | The response status code.
+-- | -- | The response status code.
 gjrsResponseStatus :: Lens' GetJobResponse Int
 gjrsResponseStatus = lens _gjrsResponseStatus (\ s a -> s{_gjrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/GetOfferingStatus.hs b/gen/Network/AWS/DeviceFarm/GetOfferingStatus.hs
--- a/gen/Network/AWS/DeviceFarm/GetOfferingStatus.hs
+++ b/gen/Network/AWS/DeviceFarm/GetOfferingStatus.hs
@@ -18,7 +18,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Gets the current status and future status of all offerings purchased by an AWS account. The response indicates how many offerings are currently available and the offerings that will be available in the next period. The API returns a 'NotEligible' error if the user is not permitted to invoke the operation. Please contact <mailto:aws-devicefarm-support'amazon.com aws-devicefarm-support\'amazon.com> if you believe that you should be able to invoke this operation.
+-- Gets the current status and future status of all offerings purchased by an AWS account. The response indicates how many offerings are currently available and the offerings that will be available in the next period. The API returns a @NotEligible@ error if the user is not permitted to invoke the operation. Please contact <mailto:aws-devicefarm-support@amazon.com aws-devicefarm-support@amazon.com> if you believe that you should be able to invoke this operation.
+--
+--
 module Network.AWS.DeviceFarm.GetOfferingStatus
     (
     -- * Creating a Request
@@ -46,6 +48,8 @@
 
 -- | Represents the request to retrieve the offering status for the specified customer or account.
 --
+--
+--
 -- /See:/ 'getOfferingStatus' smart constructor.
 newtype GetOfferingStatus = GetOfferingStatus'
     { _gosNextToken :: Maybe Text
@@ -55,7 +59,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gosNextToken'
+-- * 'gosNextToken' - An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list.
 getOfferingStatus
     :: GetOfferingStatus
 getOfferingStatus =
@@ -106,6 +110,8 @@
 
 -- | Returns the status result for a device offering.
 --
+--
+--
 -- /See:/ 'getOfferingStatusResponse' smart constructor.
 data GetOfferingStatusResponse = GetOfferingStatusResponse'
     { _gosrsNextPeriod     :: !(Maybe (Map Text OfferingStatus))
@@ -118,13 +124,13 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gosrsNextPeriod'
+-- * 'gosrsNextPeriod' - When specified, gets the offering status for the next period.
 --
--- * 'gosrsCurrent'
+-- * 'gosrsCurrent' - When specified, gets the offering status for the current period.
 --
--- * 'gosrsNextToken'
+-- * 'gosrsNextToken' - An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list.
 --
--- * 'gosrsResponseStatus'
+-- * 'gosrsResponseStatus' - -- | The response status code.
 getOfferingStatusResponse
     :: Int -- ^ 'gosrsResponseStatus'
     -> GetOfferingStatusResponse
@@ -148,7 +154,7 @@
 gosrsNextToken :: Lens' GetOfferingStatusResponse (Maybe Text)
 gosrsNextToken = lens _gosrsNextToken (\ s a -> s{_gosrsNextToken = a});
 
--- | The response status code.
+-- | -- | The response status code.
 gosrsResponseStatus :: Lens' GetOfferingStatusResponse Int
 gosrsResponseStatus = lens _gosrsResponseStatus (\ s a -> s{_gosrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/GetProject.hs b/gen/Network/AWS/DeviceFarm/GetProject.hs
--- a/gen/Network/AWS/DeviceFarm/GetProject.hs
+++ b/gen/Network/AWS/DeviceFarm/GetProject.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Gets information about a project.
+--
+--
 module Network.AWS.DeviceFarm.GetProject
     (
     -- * Creating a Request
@@ -44,6 +46,8 @@
 
 -- | Represents a request to the get project operation.
 --
+--
+--
 -- /See:/ 'getProject' smart constructor.
 newtype GetProject = GetProject'
     { _gpArn :: Text
@@ -53,7 +57,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gpArn'
+-- * 'gpArn' - The project's ARN.
 getProject
     :: Text -- ^ 'gpArn'
     -> GetProject
@@ -62,7 +66,7 @@
     { _gpArn = pArn_
     }
 
--- | The project\'s ARN.
+-- | The project's ARN.
 gpArn :: Lens' GetProject Text
 gpArn = lens _gpArn (\ s a -> s{_gpArn = a});
 
@@ -100,6 +104,8 @@
 
 -- | Represents the result of a get project request.
 --
+--
+--
 -- /See:/ 'getProjectResponse' smart constructor.
 data GetProjectResponse = GetProjectResponse'
     { _gprsProject        :: !(Maybe Project)
@@ -110,9 +116,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gprsProject'
+-- * 'gprsProject' - Undocumented member.
 --
--- * 'gprsResponseStatus'
+-- * 'gprsResponseStatus' - -- | The response status code.
 getProjectResponse
     :: Int -- ^ 'gprsResponseStatus'
     -> GetProjectResponse
@@ -126,7 +132,7 @@
 gprsProject :: Lens' GetProjectResponse (Maybe Project)
 gprsProject = lens _gprsProject (\ s a -> s{_gprsProject = a});
 
--- | The response status code.
+-- | -- | The response status code.
 gprsResponseStatus :: Lens' GetProjectResponse Int
 gprsResponseStatus = lens _gprsResponseStatus (\ s a -> s{_gprsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/GetRemoteAccessSession.hs b/gen/Network/AWS/DeviceFarm/GetRemoteAccessSession.hs
--- a/gen/Network/AWS/DeviceFarm/GetRemoteAccessSession.hs
+++ b/gen/Network/AWS/DeviceFarm/GetRemoteAccessSession.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Returns a link to a currently running remote access session.
+--
+--
 module Network.AWS.DeviceFarm.GetRemoteAccessSession
     (
     -- * Creating a Request
@@ -44,6 +46,8 @@
 
 -- | Represents the request to get information about the specified remote access session.
 --
+--
+--
 -- /See:/ 'getRemoteAccessSession' smart constructor.
 newtype GetRemoteAccessSession = GetRemoteAccessSession'
     { _grasArn :: Text
@@ -53,7 +57,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'grasArn'
+-- * 'grasArn' - The Amazon Resource Name (ARN) of the remote access session about which you want to get session information.
 getRemoteAccessSession
     :: Text -- ^ 'grasArn'
     -> GetRemoteAccessSession
@@ -103,6 +107,8 @@
 
 -- | Represents the response from the server that lists detailed information about the remote access session.
 --
+--
+--
 -- /See:/ 'getRemoteAccessSessionResponse' smart constructor.
 data GetRemoteAccessSessionResponse = GetRemoteAccessSessionResponse'
     { _grasrsRemoteAccessSession :: !(Maybe RemoteAccessSession)
@@ -113,9 +119,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'grasrsRemoteAccessSession'
+-- * 'grasrsRemoteAccessSession' - A container that lists detailed information about the remote access session.
 --
--- * 'grasrsResponseStatus'
+-- * 'grasrsResponseStatus' - -- | The response status code.
 getRemoteAccessSessionResponse
     :: Int -- ^ 'grasrsResponseStatus'
     -> GetRemoteAccessSessionResponse
@@ -129,7 +135,7 @@
 grasrsRemoteAccessSession :: Lens' GetRemoteAccessSessionResponse (Maybe RemoteAccessSession)
 grasrsRemoteAccessSession = lens _grasrsRemoteAccessSession (\ s a -> s{_grasrsRemoteAccessSession = a});
 
--- | The response status code.
+-- | -- | The response status code.
 grasrsResponseStatus :: Lens' GetRemoteAccessSessionResponse Int
 grasrsResponseStatus = lens _grasrsResponseStatus (\ s a -> s{_grasrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/GetRun.hs b/gen/Network/AWS/DeviceFarm/GetRun.hs
--- a/gen/Network/AWS/DeviceFarm/GetRun.hs
+++ b/gen/Network/AWS/DeviceFarm/GetRun.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Gets information about a run.
+--
+--
 module Network.AWS.DeviceFarm.GetRun
     (
     -- * Creating a Request
@@ -44,6 +46,8 @@
 
 -- | Represents a request to the get run operation.
 --
+--
+--
 -- /See:/ 'getRun' smart constructor.
 newtype GetRun = GetRun'
     { _grArn :: Text
@@ -53,7 +57,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'grArn'
+-- * 'grArn' - The run's ARN.
 getRun
     :: Text -- ^ 'grArn'
     -> GetRun
@@ -62,7 +66,7 @@
     { _grArn = pArn_
     }
 
--- | The run\'s ARN.
+-- | The run's ARN.
 grArn :: Lens' GetRun Text
 grArn = lens _grArn (\ s a -> s{_grArn = a});
 
@@ -100,6 +104,8 @@
 
 -- | Represents the result of a get run request.
 --
+--
+--
 -- /See:/ 'getRunResponse' smart constructor.
 data GetRunResponse = GetRunResponse'
     { _grrsRun            :: !(Maybe Run)
@@ -110,9 +116,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'grrsRun'
+-- * 'grrsRun' - Undocumented member.
 --
--- * 'grrsResponseStatus'
+-- * 'grrsResponseStatus' - -- | The response status code.
 getRunResponse
     :: Int -- ^ 'grrsResponseStatus'
     -> GetRunResponse
@@ -126,7 +132,7 @@
 grrsRun :: Lens' GetRunResponse (Maybe Run)
 grrsRun = lens _grrsRun (\ s a -> s{_grrsRun = a});
 
--- | The response status code.
+-- | -- | The response status code.
 grrsResponseStatus :: Lens' GetRunResponse Int
 grrsResponseStatus = lens _grrsResponseStatus (\ s a -> s{_grrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/GetSuite.hs b/gen/Network/AWS/DeviceFarm/GetSuite.hs
--- a/gen/Network/AWS/DeviceFarm/GetSuite.hs
+++ b/gen/Network/AWS/DeviceFarm/GetSuite.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Gets information about a suite.
+--
+--
 module Network.AWS.DeviceFarm.GetSuite
     (
     -- * Creating a Request
@@ -44,6 +46,8 @@
 
 -- | Represents a request to the get suite operation.
 --
+--
+--
 -- /See:/ 'getSuite' smart constructor.
 newtype GetSuite = GetSuite'
     { _gsArn :: Text
@@ -53,7 +57,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gsArn'
+-- * 'gsArn' - The suite's ARN.
 getSuite
     :: Text -- ^ 'gsArn'
     -> GetSuite
@@ -62,7 +66,7 @@
     { _gsArn = pArn_
     }
 
--- | The suite\'s ARN.
+-- | The suite's ARN.
 gsArn :: Lens' GetSuite Text
 gsArn = lens _gsArn (\ s a -> s{_gsArn = a});
 
@@ -100,6 +104,8 @@
 
 -- | Represents the result of a get suite request.
 --
+--
+--
 -- /See:/ 'getSuiteResponse' smart constructor.
 data GetSuiteResponse = GetSuiteResponse'
     { _gsrsSuite          :: !(Maybe Suite)
@@ -110,9 +116,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gsrsSuite'
+-- * 'gsrsSuite' - Undocumented member.
 --
--- * 'gsrsResponseStatus'
+-- * 'gsrsResponseStatus' - -- | The response status code.
 getSuiteResponse
     :: Int -- ^ 'gsrsResponseStatus'
     -> GetSuiteResponse
@@ -126,7 +132,7 @@
 gsrsSuite :: Lens' GetSuiteResponse (Maybe Suite)
 gsrsSuite = lens _gsrsSuite (\ s a -> s{_gsrsSuite = a});
 
--- | The response status code.
+-- | -- | The response status code.
 gsrsResponseStatus :: Lens' GetSuiteResponse Int
 gsrsResponseStatus = lens _gsrsResponseStatus (\ s a -> s{_gsrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/GetTest.hs b/gen/Network/AWS/DeviceFarm/GetTest.hs
--- a/gen/Network/AWS/DeviceFarm/GetTest.hs
+++ b/gen/Network/AWS/DeviceFarm/GetTest.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Gets information about a test.
+--
+--
 module Network.AWS.DeviceFarm.GetTest
     (
     -- * Creating a Request
@@ -44,6 +46,8 @@
 
 -- | Represents a request to the get test operation.
 --
+--
+--
 -- /See:/ 'getTest' smart constructor.
 newtype GetTest = GetTest'
     { _gtArn :: Text
@@ -53,7 +57,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gtArn'
+-- * 'gtArn' - The test's ARN.
 getTest
     :: Text -- ^ 'gtArn'
     -> GetTest
@@ -62,7 +66,7 @@
     { _gtArn = pArn_
     }
 
--- | The test\'s ARN.
+-- | The test's ARN.
 gtArn :: Lens' GetTest Text
 gtArn = lens _gtArn (\ s a -> s{_gtArn = a});
 
@@ -100,6 +104,8 @@
 
 -- | Represents the result of a get test request.
 --
+--
+--
 -- /See:/ 'getTestResponse' smart constructor.
 data GetTestResponse = GetTestResponse'
     { _gtrsTest           :: !(Maybe Test)
@@ -110,9 +116,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gtrsTest'
+-- * 'gtrsTest' - Undocumented member.
 --
--- * 'gtrsResponseStatus'
+-- * 'gtrsResponseStatus' - -- | The response status code.
 getTestResponse
     :: Int -- ^ 'gtrsResponseStatus'
     -> GetTestResponse
@@ -126,7 +132,7 @@
 gtrsTest :: Lens' GetTestResponse (Maybe Test)
 gtrsTest = lens _gtrsTest (\ s a -> s{_gtrsTest = a});
 
--- | The response status code.
+-- | -- | The response status code.
 gtrsResponseStatus :: Lens' GetTestResponse Int
 gtrsResponseStatus = lens _gtrsResponseStatus (\ s a -> s{_gtrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/GetUpload.hs b/gen/Network/AWS/DeviceFarm/GetUpload.hs
--- a/gen/Network/AWS/DeviceFarm/GetUpload.hs
+++ b/gen/Network/AWS/DeviceFarm/GetUpload.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Gets information about an upload.
+--
+--
 module Network.AWS.DeviceFarm.GetUpload
     (
     -- * Creating a Request
@@ -44,6 +46,8 @@
 
 -- | Represents a request to the get upload operation.
 --
+--
+--
 -- /See:/ 'getUpload' smart constructor.
 newtype GetUpload = GetUpload'
     { _guArn :: Text
@@ -53,7 +57,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'guArn'
+-- * 'guArn' - The upload's ARN.
 getUpload
     :: Text -- ^ 'guArn'
     -> GetUpload
@@ -62,7 +66,7 @@
     { _guArn = pArn_
     }
 
--- | The upload\'s ARN.
+-- | The upload's ARN.
 guArn :: Lens' GetUpload Text
 guArn = lens _guArn (\ s a -> s{_guArn = a});
 
@@ -100,6 +104,8 @@
 
 -- | Represents the result of a get upload request.
 --
+--
+--
 -- /See:/ 'getUploadResponse' smart constructor.
 data GetUploadResponse = GetUploadResponse'
     { _gursUpload         :: !(Maybe Upload)
@@ -110,9 +116,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gursUpload'
+-- * 'gursUpload' - Undocumented member.
 --
--- * 'gursResponseStatus'
+-- * 'gursResponseStatus' - -- | The response status code.
 getUploadResponse
     :: Int -- ^ 'gursResponseStatus'
     -> GetUploadResponse
@@ -126,7 +132,7 @@
 gursUpload :: Lens' GetUploadResponse (Maybe Upload)
 gursUpload = lens _gursUpload (\ s a -> s{_gursUpload = a});
 
--- | The response status code.
+-- | -- | The response status code.
 gursResponseStatus :: Lens' GetUploadResponse Int
 gursResponseStatus = lens _gursResponseStatus (\ s a -> s{_gursResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/InstallToRemoteAccessSession.hs b/gen/Network/AWS/DeviceFarm/InstallToRemoteAccessSession.hs
--- a/gen/Network/AWS/DeviceFarm/InstallToRemoteAccessSession.hs
+++ b/gen/Network/AWS/DeviceFarm/InstallToRemoteAccessSession.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Installs an application to the device in a remote access session. For Android applications, the file must be in .apk format. For iOS applications, the file must be in .ipa format.
+--
+--
 module Network.AWS.DeviceFarm.InstallToRemoteAccessSession
     (
     -- * Creating a Request
@@ -45,6 +47,8 @@
 
 -- | Represents the request to install an Android application (in .apk format) or an iOS application (in .ipa format) as part of a remote access session.
 --
+--
+--
 -- /See:/ 'installToRemoteAccessSession' smart constructor.
 data InstallToRemoteAccessSession = InstallToRemoteAccessSession'
     { _itrasRemoteAccessSessionARN :: !Text
@@ -55,9 +59,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'itrasRemoteAccessSessionARN'
+-- * 'itrasRemoteAccessSessionARN' - The Amazon Resource Name (ARN) of the remote access session about which you are requesting information.
 --
--- * 'itrasAppARN'
+-- * 'itrasAppARN' - The Amazon Resource Name (ARN) of the app about which you are requesting information.
 installToRemoteAccessSession
     :: Text -- ^ 'itrasRemoteAccessSessionARN'
     -> Text -- ^ 'itrasAppARN'
@@ -118,6 +122,8 @@
 
 -- | Represents the response from the server after AWS Device Farm makes a request to install to a remote access session.
 --
+--
+--
 -- /See:/ 'installToRemoteAccessSessionResponse' smart constructor.
 data InstallToRemoteAccessSessionResponse = InstallToRemoteAccessSessionResponse'
     { _itrasrsAppUpload      :: !(Maybe Upload)
@@ -128,9 +134,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'itrasrsAppUpload'
+-- * 'itrasrsAppUpload' - Undocumented member.
 --
--- * 'itrasrsResponseStatus'
+-- * 'itrasrsResponseStatus' - -- | The response status code.
 installToRemoteAccessSessionResponse
     :: Int -- ^ 'itrasrsResponseStatus'
     -> InstallToRemoteAccessSessionResponse
@@ -144,7 +150,7 @@
 itrasrsAppUpload :: Lens' InstallToRemoteAccessSessionResponse (Maybe Upload)
 itrasrsAppUpload = lens _itrasrsAppUpload (\ s a -> s{_itrasrsAppUpload = a});
 
--- | The response status code.
+-- | -- | The response status code.
 itrasrsResponseStatus :: Lens' InstallToRemoteAccessSessionResponse Int
 itrasrsResponseStatus = lens _itrasrsResponseStatus (\ s a -> s{_itrasrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/ListArtifacts.hs b/gen/Network/AWS/DeviceFarm/ListArtifacts.hs
--- a/gen/Network/AWS/DeviceFarm/ListArtifacts.hs
+++ b/gen/Network/AWS/DeviceFarm/ListArtifacts.hs
@@ -20,6 +20,8 @@
 --
 -- Gets information about artifacts.
 --
+--
+--
 -- This operation returns paginated results.
 module Network.AWS.DeviceFarm.ListArtifacts
     (
@@ -50,6 +52,8 @@
 
 -- | Represents a request to the list artifacts operation.
 --
+--
+--
 -- /See:/ 'listArtifacts' smart constructor.
 data ListArtifacts = ListArtifacts'
     { _laNextToken :: !(Maybe Text)
@@ -61,11 +65,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'laNextToken'
+-- * 'laNextToken' - An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list.
 --
--- * 'laArn'
+-- * 'laArn' - The Run, Job, Suite, or Test ARN.
 --
--- * 'laType'
+-- * 'laType' - The artifacts' type. Allowed values include:     * FILE: The artifacts are files.     * LOG: The artifacts are logs.     * SCREENSHOT: The artifacts are screenshots.
 listArtifacts
     :: Text -- ^ 'laArn'
     -> ArtifactCategory -- ^ 'laType'
@@ -85,13 +89,7 @@
 laArn :: Lens' ListArtifacts Text
 laArn = lens _laArn (\ s a -> s{_laArn = a});
 
--- | The artifacts\' type.
---
--- Allowed values include:
---
--- -   FILE: The artifacts are files.
--- -   LOG: The artifacts are logs.
--- -   SCREENSHOT: The artifacts are screenshots.
+-- | The artifacts' type. Allowed values include:     * FILE: The artifacts are files.     * LOG: The artifacts are logs.     * SCREENSHOT: The artifacts are screenshots.
 laType :: Lens' ListArtifacts ArtifactCategory
 laType = lens _laType (\ s a -> s{_laType = a});
 
@@ -141,6 +139,8 @@
 
 -- | Represents the result of a list artifacts operation.
 --
+--
+--
 -- /See:/ 'listArtifactsResponse' smart constructor.
 data ListArtifactsResponse = ListArtifactsResponse'
     { _larsArtifacts      :: !(Maybe [Artifact])
@@ -152,11 +152,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'larsArtifacts'
+-- * 'larsArtifacts' - Information about the artifacts.
 --
--- * 'larsNextToken'
+-- * 'larsNextToken' - If the number of items that are returned is significantly large, this is an identifier that is also returned, which can be used in a subsequent call to this operation to return the next set of items in the list.
 --
--- * 'larsResponseStatus'
+-- * 'larsResponseStatus' - -- | The response status code.
 listArtifactsResponse
     :: Int -- ^ 'larsResponseStatus'
     -> ListArtifactsResponse
@@ -175,7 +175,7 @@
 larsNextToken :: Lens' ListArtifactsResponse (Maybe Text)
 larsNextToken = lens _larsNextToken (\ s a -> s{_larsNextToken = a});
 
--- | The response status code.
+-- | -- | The response status code.
 larsResponseStatus :: Lens' ListArtifactsResponse Int
 larsResponseStatus = lens _larsResponseStatus (\ s a -> s{_larsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/ListDevicePools.hs b/gen/Network/AWS/DeviceFarm/ListDevicePools.hs
--- a/gen/Network/AWS/DeviceFarm/ListDevicePools.hs
+++ b/gen/Network/AWS/DeviceFarm/ListDevicePools.hs
@@ -20,6 +20,8 @@
 --
 -- Gets information about device pools.
 --
+--
+--
 -- This operation returns paginated results.
 module Network.AWS.DeviceFarm.ListDevicePools
     (
@@ -50,6 +52,8 @@
 
 -- | Represents the result of a list device pools request.
 --
+--
+--
 -- /See:/ 'listDevicePools' smart constructor.
 data ListDevicePools = ListDevicePools'
     { _ldpNextToken :: !(Maybe Text)
@@ -61,11 +65,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ldpNextToken'
+-- * 'ldpNextToken' - An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list.
 --
--- * 'ldpType'
+-- * 'ldpType' - The device pools' type. Allowed values include:     * CURATED: A device pool that is created and managed by AWS Device Farm.     * PRIVATE: A device pool that is created and managed by the device pool developer.
 --
--- * 'ldpArn'
+-- * 'ldpArn' - The project ARN.
 listDevicePools
     :: Text -- ^ 'ldpArn'
     -> ListDevicePools
@@ -80,14 +84,7 @@
 ldpNextToken :: Lens' ListDevicePools (Maybe Text)
 ldpNextToken = lens _ldpNextToken (\ s a -> s{_ldpNextToken = a});
 
--- | The device pools\' type.
---
--- Allowed values include:
---
--- -   CURATED: A device pool that is created and managed by AWS Device Farm.
---
--- -   PRIVATE: A device pool that is created and managed by the device pool developer.
---
+-- | The device pools' type. Allowed values include:     * CURATED: A device pool that is created and managed by AWS Device Farm.     * PRIVATE: A device pool that is created and managed by the device pool developer.
 ldpType :: Lens' ListDevicePools (Maybe DevicePoolType)
 ldpType = lens _ldpType (\ s a -> s{_ldpType = a});
 
@@ -142,6 +139,8 @@
 
 -- | Represents the result of a list device pools request.
 --
+--
+--
 -- /See:/ 'listDevicePoolsResponse' smart constructor.
 data ListDevicePoolsResponse = ListDevicePoolsResponse'
     { _ldprsDevicePools    :: !(Maybe [DevicePool])
@@ -153,11 +152,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ldprsDevicePools'
+-- * 'ldprsDevicePools' - Information about the device pools.
 --
--- * 'ldprsNextToken'
+-- * 'ldprsNextToken' - If the number of items that are returned is significantly large, this is an identifier that is also returned, which can be used in a subsequent call to this operation to return the next set of items in the list.
 --
--- * 'ldprsResponseStatus'
+-- * 'ldprsResponseStatus' - -- | The response status code.
 listDevicePoolsResponse
     :: Int -- ^ 'ldprsResponseStatus'
     -> ListDevicePoolsResponse
@@ -176,7 +175,7 @@
 ldprsNextToken :: Lens' ListDevicePoolsResponse (Maybe Text)
 ldprsNextToken = lens _ldprsNextToken (\ s a -> s{_ldprsNextToken = a});
 
--- | The response status code.
+-- | -- | The response status code.
 ldprsResponseStatus :: Lens' ListDevicePoolsResponse Int
 ldprsResponseStatus = lens _ldprsResponseStatus (\ s a -> s{_ldprsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/ListDevices.hs b/gen/Network/AWS/DeviceFarm/ListDevices.hs
--- a/gen/Network/AWS/DeviceFarm/ListDevices.hs
+++ b/gen/Network/AWS/DeviceFarm/ListDevices.hs
@@ -20,6 +20,8 @@
 --
 -- Gets information about unique device types.
 --
+--
+--
 -- This operation returns paginated results.
 module Network.AWS.DeviceFarm.ListDevices
     (
@@ -49,6 +51,8 @@
 
 -- | Represents the result of a list devices request.
 --
+--
+--
 -- /See:/ 'listDevices' smart constructor.
 data ListDevices = ListDevices'
     { _ldArn       :: !(Maybe Text)
@@ -59,9 +63,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ldArn'
+-- * 'ldArn' - The Amazon Resource Name (ARN) of the project.
 --
--- * 'ldNextToken'
+-- * 'ldNextToken' - An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list.
 listDevices
     :: ListDevices
 listDevices =
@@ -70,7 +74,7 @@
     , _ldNextToken = Nothing
     }
 
--- | The device types\' ARNs.
+-- | The Amazon Resource Name (ARN) of the project.
 ldArn :: Lens' ListDevices (Maybe Text)
 ldArn = lens _ldArn (\ s a -> s{_ldArn = a});
 
@@ -123,6 +127,8 @@
 
 -- | Represents the result of a list devices operation.
 --
+--
+--
 -- /See:/ 'listDevicesResponse' smart constructor.
 data ListDevicesResponse = ListDevicesResponse'
     { _ldrsNextToken      :: !(Maybe Text)
@@ -134,11 +140,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ldrsNextToken'
+-- * 'ldrsNextToken' - If the number of items that are returned is significantly large, this is an identifier that is also returned, which can be used in a subsequent call to this operation to return the next set of items in the list.
 --
--- * 'ldrsDevices'
+-- * 'ldrsDevices' - Information about the devices.
 --
--- * 'ldrsResponseStatus'
+-- * 'ldrsResponseStatus' - -- | The response status code.
 listDevicesResponse
     :: Int -- ^ 'ldrsResponseStatus'
     -> ListDevicesResponse
@@ -157,7 +163,7 @@
 ldrsDevices :: Lens' ListDevicesResponse [Device]
 ldrsDevices = lens _ldrsDevices (\ s a -> s{_ldrsDevices = a}) . _Default . _Coerce;
 
--- | The response status code.
+-- | -- | The response status code.
 ldrsResponseStatus :: Lens' ListDevicesResponse Int
 ldrsResponseStatus = lens _ldrsResponseStatus (\ s a -> s{_ldrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/ListJobs.hs b/gen/Network/AWS/DeviceFarm/ListJobs.hs
--- a/gen/Network/AWS/DeviceFarm/ListJobs.hs
+++ b/gen/Network/AWS/DeviceFarm/ListJobs.hs
@@ -20,6 +20,8 @@
 --
 -- Gets information about jobs.
 --
+--
+--
 -- This operation returns paginated results.
 module Network.AWS.DeviceFarm.ListJobs
     (
@@ -49,6 +51,8 @@
 
 -- | Represents a request to the list jobs operation.
 --
+--
+--
 -- /See:/ 'listJobs' smart constructor.
 data ListJobs = ListJobs'
     { _ljNextToken :: !(Maybe Text)
@@ -59,9 +63,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ljNextToken'
+-- * 'ljNextToken' - An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list.
 --
--- * 'ljArn'
+-- * 'ljArn' - The jobs' ARNs.
 listJobs
     :: Text -- ^ 'ljArn'
     -> ListJobs
@@ -75,7 +79,7 @@
 ljNextToken :: Lens' ListJobs (Maybe Text)
 ljNextToken = lens _ljNextToken (\ s a -> s{_ljNextToken = a});
 
--- | The jobs\' ARNs.
+-- | The jobs' ARNs.
 ljArn :: Lens' ListJobs Text
 ljArn = lens _ljArn (\ s a -> s{_ljArn = a});
 
@@ -124,6 +128,8 @@
 
 -- | Represents the result of a list jobs request.
 --
+--
+--
 -- /See:/ 'listJobsResponse' smart constructor.
 data ListJobsResponse = ListJobsResponse'
     { _ljrsJobs           :: !(Maybe [Job])
@@ -135,11 +141,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ljrsJobs'
+-- * 'ljrsJobs' - Information about the jobs.
 --
--- * 'ljrsNextToken'
+-- * 'ljrsNextToken' - If the number of items that are returned is significantly large, this is an identifier that is also returned, which can be used in a subsequent call to this operation to return the next set of items in the list.
 --
--- * 'ljrsResponseStatus'
+-- * 'ljrsResponseStatus' - -- | The response status code.
 listJobsResponse
     :: Int -- ^ 'ljrsResponseStatus'
     -> ListJobsResponse
@@ -158,7 +164,7 @@
 ljrsNextToken :: Lens' ListJobsResponse (Maybe Text)
 ljrsNextToken = lens _ljrsNextToken (\ s a -> s{_ljrsNextToken = a});
 
--- | The response status code.
+-- | -- | The response status code.
 ljrsResponseStatus :: Lens' ListJobsResponse Int
 ljrsResponseStatus = lens _ljrsResponseStatus (\ s a -> s{_ljrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/ListOfferingTransactions.hs b/gen/Network/AWS/DeviceFarm/ListOfferingTransactions.hs
--- a/gen/Network/AWS/DeviceFarm/ListOfferingTransactions.hs
+++ b/gen/Network/AWS/DeviceFarm/ListOfferingTransactions.hs
@@ -18,7 +18,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns a list of all historical purchases, renewals, and system renewal transactions for an AWS account. The list is paginated and ordered by a descending timestamp (most recent transactions are first). The API returns a 'NotEligible' error if the user is not permitted to invoke the operation. Please contact <mailto:aws-devicefarm-support'amazon.com aws-devicefarm-support\'amazon.com> if you believe that you should be able to invoke this operation.
+-- Returns a list of all historical purchases, renewals, and system renewal transactions for an AWS account. The list is paginated and ordered by a descending timestamp (most recent transactions are first). The API returns a @NotEligible@ error if the user is not permitted to invoke the operation. Please contact <mailto:aws-devicefarm-support@amazon.com aws-devicefarm-support@amazon.com> if you believe that you should be able to invoke this operation.
+--
+--
 module Network.AWS.DeviceFarm.ListOfferingTransactions
     (
     -- * Creating a Request
@@ -45,6 +47,8 @@
 
 -- | Represents the request to list the offering transaction history.
 --
+--
+--
 -- /See:/ 'listOfferingTransactions' smart constructor.
 newtype ListOfferingTransactions = ListOfferingTransactions'
     { _lotNextToken :: Maybe Text
@@ -54,7 +58,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lotNextToken'
+-- * 'lotNextToken' - An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list.
 listOfferingTransactions
     :: ListOfferingTransactions
 listOfferingTransactions =
@@ -105,6 +109,8 @@
 
 -- | Returns the transaction log of the specified offerings.
 --
+--
+--
 -- /See:/ 'listOfferingTransactionsResponse' smart constructor.
 data ListOfferingTransactionsResponse = ListOfferingTransactionsResponse'
     { _lotrsOfferingTransactions :: !(Maybe [OfferingTransaction])
@@ -116,11 +122,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lotrsOfferingTransactions'
+-- * 'lotrsOfferingTransactions' - The audit log of subscriptions you have purchased and modified through AWS Device Farm.
 --
--- * 'lotrsNextToken'
+-- * 'lotrsNextToken' - An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list.
 --
--- * 'lotrsResponseStatus'
+-- * 'lotrsResponseStatus' - -- | The response status code.
 listOfferingTransactionsResponse
     :: Int -- ^ 'lotrsResponseStatus'
     -> ListOfferingTransactionsResponse
@@ -139,7 +145,7 @@
 lotrsNextToken :: Lens' ListOfferingTransactionsResponse (Maybe Text)
 lotrsNextToken = lens _lotrsNextToken (\ s a -> s{_lotrsNextToken = a});
 
--- | The response status code.
+-- | -- | The response status code.
 lotrsResponseStatus :: Lens' ListOfferingTransactionsResponse Int
 lotrsResponseStatus = lens _lotrsResponseStatus (\ s a -> s{_lotrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/ListOfferings.hs b/gen/Network/AWS/DeviceFarm/ListOfferings.hs
--- a/gen/Network/AWS/DeviceFarm/ListOfferings.hs
+++ b/gen/Network/AWS/DeviceFarm/ListOfferings.hs
@@ -18,7 +18,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns a list of products or offerings that the user can manage through the API. Each offering record indicates the recurring price per unit and the frequency for that offering. The API returns a 'NotEligible' error if the user is not permitted to invoke the operation. Please contact <mailto:aws-devicefarm-support'amazon.com aws-devicefarm-support\'amazon.com> if you believe that you should be able to invoke this operation.
+-- Returns a list of products or offerings that the user can manage through the API. Each offering record indicates the recurring price per unit and the frequency for that offering. The API returns a @NotEligible@ error if the user is not permitted to invoke the operation. Please contact <mailto:aws-devicefarm-support@amazon.com aws-devicefarm-support@amazon.com> if you believe that you should be able to invoke this operation.
+--
+--
 module Network.AWS.DeviceFarm.ListOfferings
     (
     -- * Creating a Request
@@ -45,6 +47,8 @@
 
 -- | Represents the request to list all offerings.
 --
+--
+--
 -- /See:/ 'listOfferings' smart constructor.
 newtype ListOfferings = ListOfferings'
     { _loNextToken :: Maybe Text
@@ -54,7 +58,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'loNextToken'
+-- * 'loNextToken' - An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list.
 listOfferings
     :: ListOfferings
 listOfferings =
@@ -103,6 +107,8 @@
 
 -- | Represents the return values of the list of offerings.
 --
+--
+--
 -- /See:/ 'listOfferingsResponse' smart constructor.
 data ListOfferingsResponse = ListOfferingsResponse'
     { _lorsNextToken      :: !(Maybe Text)
@@ -114,11 +120,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lorsNextToken'
+-- * 'lorsNextToken' - An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list.
 --
--- * 'lorsOfferings'
+-- * 'lorsOfferings' - A value representing the list offering results.
 --
--- * 'lorsResponseStatus'
+-- * 'lorsResponseStatus' - -- | The response status code.
 listOfferingsResponse
     :: Int -- ^ 'lorsResponseStatus'
     -> ListOfferingsResponse
@@ -137,7 +143,7 @@
 lorsOfferings :: Lens' ListOfferingsResponse [Offering]
 lorsOfferings = lens _lorsOfferings (\ s a -> s{_lorsOfferings = a}) . _Default . _Coerce;
 
--- | The response status code.
+-- | -- | The response status code.
 lorsResponseStatus :: Lens' ListOfferingsResponse Int
 lorsResponseStatus = lens _lorsResponseStatus (\ s a -> s{_lorsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/ListProjects.hs b/gen/Network/AWS/DeviceFarm/ListProjects.hs
--- a/gen/Network/AWS/DeviceFarm/ListProjects.hs
+++ b/gen/Network/AWS/DeviceFarm/ListProjects.hs
@@ -20,6 +20,8 @@
 --
 -- Gets information about projects.
 --
+--
+--
 -- This operation returns paginated results.
 module Network.AWS.DeviceFarm.ListProjects
     (
@@ -49,6 +51,8 @@
 
 -- | Represents a request to the list projects operation.
 --
+--
+--
 -- /See:/ 'listProjects' smart constructor.
 data ListProjects = ListProjects'
     { _lpArn       :: !(Maybe Text)
@@ -59,9 +63,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lpArn'
+-- * 'lpArn' - Optional. If no Amazon Resource Name (ARN) is specified, then AWS Device Farm returns a list of all projects for the AWS account. You can also specify a project ARN.
 --
--- * 'lpNextToken'
+-- * 'lpNextToken' - An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list.
 listProjects
     :: ListProjects
 listProjects =
@@ -70,7 +74,7 @@
     , _lpNextToken = Nothing
     }
 
--- | The projects\' ARNs.
+-- | Optional. If no Amazon Resource Name (ARN) is specified, then AWS Device Farm returns a list of all projects for the AWS account. You can also specify a project ARN.
 lpArn :: Lens' ListProjects (Maybe Text)
 lpArn = lens _lpArn (\ s a -> s{_lpArn = a});
 
@@ -123,6 +127,8 @@
 
 -- | Represents the result of a list projects request.
 --
+--
+--
 -- /See:/ 'listProjectsResponse' smart constructor.
 data ListProjectsResponse = ListProjectsResponse'
     { _lprsNextToken      :: !(Maybe Text)
@@ -134,11 +140,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lprsNextToken'
+-- * 'lprsNextToken' - If the number of items that are returned is significantly large, this is an identifier that is also returned, which can be used in a subsequent call to this operation to return the next set of items in the list.
 --
--- * 'lprsProjects'
+-- * 'lprsProjects' - Information about the projects.
 --
--- * 'lprsResponseStatus'
+-- * 'lprsResponseStatus' - -- | The response status code.
 listProjectsResponse
     :: Int -- ^ 'lprsResponseStatus'
     -> ListProjectsResponse
@@ -157,7 +163,7 @@
 lprsProjects :: Lens' ListProjectsResponse [Project]
 lprsProjects = lens _lprsProjects (\ s a -> s{_lprsProjects = a}) . _Default . _Coerce;
 
--- | The response status code.
+-- | -- | The response status code.
 lprsResponseStatus :: Lens' ListProjectsResponse Int
 lprsResponseStatus = lens _lprsResponseStatus (\ s a -> s{_lprsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/ListRemoteAccessSessions.hs b/gen/Network/AWS/DeviceFarm/ListRemoteAccessSessions.hs
--- a/gen/Network/AWS/DeviceFarm/ListRemoteAccessSessions.hs
+++ b/gen/Network/AWS/DeviceFarm/ListRemoteAccessSessions.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Returns a list of all currently running remote access sessions.
+--
+--
 module Network.AWS.DeviceFarm.ListRemoteAccessSessions
     (
     -- * Creating a Request
@@ -46,6 +48,8 @@
 
 -- | Represents the request to return information about the remote access session.
 --
+--
+--
 -- /See:/ 'listRemoteAccessSessions' smart constructor.
 data ListRemoteAccessSessions = ListRemoteAccessSessions'
     { _lrasNextToken :: !(Maybe Text)
@@ -56,9 +60,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lrasNextToken'
+-- * 'lrasNextToken' - An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list.
 --
--- * 'lrasArn'
+-- * 'lrasArn' - The Amazon Resource Name (ARN) of the remote access session about which you are requesting information.
 listRemoteAccessSessions
     :: Text -- ^ 'lrasArn'
     -> ListRemoteAccessSessions
@@ -117,6 +121,8 @@
 
 -- | Represents the response from the server after AWS Device Farm makes a request to return information about the remote access session.
 --
+--
+--
 -- /See:/ 'listRemoteAccessSessionsResponse' smart constructor.
 data ListRemoteAccessSessionsResponse = ListRemoteAccessSessionsResponse'
     { _lrasrsNextToken            :: !(Maybe Text)
@@ -128,11 +134,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lrasrsNextToken'
+-- * 'lrasrsNextToken' - An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list.
 --
--- * 'lrasrsRemoteAccessSessions'
+-- * 'lrasrsRemoteAccessSessions' - A container representing the metadata from the service about each remote access session you are requesting.
 --
--- * 'lrasrsResponseStatus'
+-- * 'lrasrsResponseStatus' - -- | The response status code.
 listRemoteAccessSessionsResponse
     :: Int -- ^ 'lrasrsResponseStatus'
     -> ListRemoteAccessSessionsResponse
@@ -151,7 +157,7 @@
 lrasrsRemoteAccessSessions :: Lens' ListRemoteAccessSessionsResponse [RemoteAccessSession]
 lrasrsRemoteAccessSessions = lens _lrasrsRemoteAccessSessions (\ s a -> s{_lrasrsRemoteAccessSessions = a}) . _Default . _Coerce;
 
--- | The response status code.
+-- | -- | The response status code.
 lrasrsResponseStatus :: Lens' ListRemoteAccessSessionsResponse Int
 lrasrsResponseStatus = lens _lrasrsResponseStatus (\ s a -> s{_lrasrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/ListRuns.hs b/gen/Network/AWS/DeviceFarm/ListRuns.hs
--- a/gen/Network/AWS/DeviceFarm/ListRuns.hs
+++ b/gen/Network/AWS/DeviceFarm/ListRuns.hs
@@ -18,8 +18,10 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Gets information about runs.
+-- Gets information about runs, given an AWS Device Farm project ARN.
 --
+--
+--
 -- This operation returns paginated results.
 module Network.AWS.DeviceFarm.ListRuns
     (
@@ -49,6 +51,8 @@
 
 -- | Represents a request to the list runs operation.
 --
+--
+--
 -- /See:/ 'listRuns' smart constructor.
 data ListRuns = ListRuns'
     { _lrNextToken :: !(Maybe Text)
@@ -59,9 +63,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lrNextToken'
+-- * 'lrNextToken' - An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list.
 --
--- * 'lrArn'
+-- * 'lrArn' - The Amazon Resource Name (ARN) of the project for which you want to list runs.
 listRuns
     :: Text -- ^ 'lrArn'
     -> ListRuns
@@ -75,7 +79,7 @@
 lrNextToken :: Lens' ListRuns (Maybe Text)
 lrNextToken = lens _lrNextToken (\ s a -> s{_lrNextToken = a});
 
--- | The runs\' ARNs.
+-- | The Amazon Resource Name (ARN) of the project for which you want to list runs.
 lrArn :: Lens' ListRuns Text
 lrArn = lens _lrArn (\ s a -> s{_lrArn = a});
 
@@ -124,6 +128,8 @@
 
 -- | Represents the result of a list runs request.
 --
+--
+--
 -- /See:/ 'listRunsResponse' smart constructor.
 data ListRunsResponse = ListRunsResponse'
     { _lrrsRuns           :: !(Maybe [Run])
@@ -135,11 +141,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lrrsRuns'
+-- * 'lrrsRuns' - Information about the runs.
 --
--- * 'lrrsNextToken'
+-- * 'lrrsNextToken' - If the number of items that are returned is significantly large, this is an identifier that is also returned, which can be used in a subsequent call to this operation to return the next set of items in the list.
 --
--- * 'lrrsResponseStatus'
+-- * 'lrrsResponseStatus' - -- | The response status code.
 listRunsResponse
     :: Int -- ^ 'lrrsResponseStatus'
     -> ListRunsResponse
@@ -158,7 +164,7 @@
 lrrsNextToken :: Lens' ListRunsResponse (Maybe Text)
 lrrsNextToken = lens _lrrsNextToken (\ s a -> s{_lrrsNextToken = a});
 
--- | The response status code.
+-- | -- | The response status code.
 lrrsResponseStatus :: Lens' ListRunsResponse Int
 lrrsResponseStatus = lens _lrrsResponseStatus (\ s a -> s{_lrrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/ListSamples.hs b/gen/Network/AWS/DeviceFarm/ListSamples.hs
--- a/gen/Network/AWS/DeviceFarm/ListSamples.hs
+++ b/gen/Network/AWS/DeviceFarm/ListSamples.hs
@@ -18,8 +18,10 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Gets information about samples.
+-- Gets information about samples, given an AWS Device Farm project ARN
 --
+--
+--
 -- This operation returns paginated results.
 module Network.AWS.DeviceFarm.ListSamples
     (
@@ -49,6 +51,8 @@
 
 -- | Represents a request to the list samples operation.
 --
+--
+--
 -- /See:/ 'listSamples' smart constructor.
 data ListSamples = ListSamples'
     { _lsNextToken :: !(Maybe Text)
@@ -59,9 +63,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lsNextToken'
+-- * 'lsNextToken' - An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list.
 --
--- * 'lsArn'
+-- * 'lsArn' - The Amazon Resource Name (ARN) of the project for which you want to list samples.
 listSamples
     :: Text -- ^ 'lsArn'
     -> ListSamples
@@ -75,7 +79,7 @@
 lsNextToken :: Lens' ListSamples (Maybe Text)
 lsNextToken = lens _lsNextToken (\ s a -> s{_lsNextToken = a});
 
--- | The samples\' ARNs.
+-- | The Amazon Resource Name (ARN) of the project for which you want to list samples.
 lsArn :: Lens' ListSamples Text
 lsArn = lens _lsArn (\ s a -> s{_lsArn = a});
 
@@ -124,6 +128,8 @@
 
 -- | Represents the result of a list samples request.
 --
+--
+--
 -- /See:/ 'listSamplesResponse' smart constructor.
 data ListSamplesResponse = ListSamplesResponse'
     { _lrsNextToken      :: !(Maybe Text)
@@ -135,11 +141,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lrsNextToken'
+-- * 'lrsNextToken' - If the number of items that are returned is significantly large, this is an identifier that is also returned, which can be used in a subsequent call to this operation to return the next set of items in the list.
 --
--- * 'lrsSamples'
+-- * 'lrsSamples' - Information about the samples.
 --
--- * 'lrsResponseStatus'
+-- * 'lrsResponseStatus' - -- | The response status code.
 listSamplesResponse
     :: Int -- ^ 'lrsResponseStatus'
     -> ListSamplesResponse
@@ -158,7 +164,7 @@
 lrsSamples :: Lens' ListSamplesResponse [Sample]
 lrsSamples = lens _lrsSamples (\ s a -> s{_lrsSamples = a}) . _Default . _Coerce;
 
--- | The response status code.
+-- | -- | The response status code.
 lrsResponseStatus :: Lens' ListSamplesResponse Int
 lrsResponseStatus = lens _lrsResponseStatus (\ s a -> s{_lrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/ListSuites.hs b/gen/Network/AWS/DeviceFarm/ListSuites.hs
--- a/gen/Network/AWS/DeviceFarm/ListSuites.hs
+++ b/gen/Network/AWS/DeviceFarm/ListSuites.hs
@@ -20,6 +20,8 @@
 --
 -- Gets information about suites.
 --
+--
+--
 -- This operation returns paginated results.
 module Network.AWS.DeviceFarm.ListSuites
     (
@@ -49,6 +51,8 @@
 
 -- | Represents a request to the list suites operation.
 --
+--
+--
 -- /See:/ 'listSuites' smart constructor.
 data ListSuites = ListSuites'
     { _lNextToken :: !(Maybe Text)
@@ -59,9 +63,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lNextToken'
+-- * 'lNextToken' - An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list.
 --
--- * 'lArn'
+-- * 'lArn' - The suites' ARNs.
 listSuites
     :: Text -- ^ 'lArn'
     -> ListSuites
@@ -75,7 +79,7 @@
 lNextToken :: Lens' ListSuites (Maybe Text)
 lNextToken = lens _lNextToken (\ s a -> s{_lNextToken = a});
 
--- | The suites\' ARNs.
+-- | The suites' ARNs.
 lArn :: Lens' ListSuites Text
 lArn = lens _lArn (\ s a -> s{_lArn = a});
 
@@ -124,6 +128,8 @@
 
 -- | Represents the result of a list suites request.
 --
+--
+--
 -- /See:/ 'listSuitesResponse' smart constructor.
 data ListSuitesResponse = ListSuitesResponse'
     { _lsrsNextToken      :: !(Maybe Text)
@@ -135,11 +141,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lsrsNextToken'
+-- * 'lsrsNextToken' - If the number of items that are returned is significantly large, this is an identifier that is also returned, which can be used in a subsequent call to this operation to return the next set of items in the list.
 --
--- * 'lsrsSuites'
+-- * 'lsrsSuites' - Information about the suites.
 --
--- * 'lsrsResponseStatus'
+-- * 'lsrsResponseStatus' - -- | The response status code.
 listSuitesResponse
     :: Int -- ^ 'lsrsResponseStatus'
     -> ListSuitesResponse
@@ -158,7 +164,7 @@
 lsrsSuites :: Lens' ListSuitesResponse [Suite]
 lsrsSuites = lens _lsrsSuites (\ s a -> s{_lsrsSuites = a}) . _Default . _Coerce;
 
--- | The response status code.
+-- | -- | The response status code.
 lsrsResponseStatus :: Lens' ListSuitesResponse Int
 lsrsResponseStatus = lens _lsrsResponseStatus (\ s a -> s{_lsrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/ListTests.hs b/gen/Network/AWS/DeviceFarm/ListTests.hs
--- a/gen/Network/AWS/DeviceFarm/ListTests.hs
+++ b/gen/Network/AWS/DeviceFarm/ListTests.hs
@@ -20,6 +20,8 @@
 --
 -- Gets information about tests.
 --
+--
+--
 -- This operation returns paginated results.
 module Network.AWS.DeviceFarm.ListTests
     (
@@ -49,6 +51,8 @@
 
 -- | Represents a request to the list tests operation.
 --
+--
+--
 -- /See:/ 'listTests' smart constructor.
 data ListTests = ListTests'
     { _ltNextToken :: !(Maybe Text)
@@ -59,9 +63,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ltNextToken'
+-- * 'ltNextToken' - An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list.
 --
--- * 'ltArn'
+-- * 'ltArn' - The tests' ARNs.
 listTests
     :: Text -- ^ 'ltArn'
     -> ListTests
@@ -75,7 +79,7 @@
 ltNextToken :: Lens' ListTests (Maybe Text)
 ltNextToken = lens _ltNextToken (\ s a -> s{_ltNextToken = a});
 
--- | The tests\' ARNs.
+-- | The tests' ARNs.
 ltArn :: Lens' ListTests Text
 ltArn = lens _ltArn (\ s a -> s{_ltArn = a});
 
@@ -124,6 +128,8 @@
 
 -- | Represents the result of a list tests request.
 --
+--
+--
 -- /See:/ 'listTestsResponse' smart constructor.
 data ListTestsResponse = ListTestsResponse'
     { _ltrsTests          :: !(Maybe [Test])
@@ -135,11 +141,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ltrsTests'
+-- * 'ltrsTests' - Information about the tests.
 --
--- * 'ltrsNextToken'
+-- * 'ltrsNextToken' - If the number of items that are returned is significantly large, this is an identifier that is also returned, which can be used in a subsequent call to this operation to return the next set of items in the list.
 --
--- * 'ltrsResponseStatus'
+-- * 'ltrsResponseStatus' - -- | The response status code.
 listTestsResponse
     :: Int -- ^ 'ltrsResponseStatus'
     -> ListTestsResponse
@@ -158,7 +164,7 @@
 ltrsNextToken :: Lens' ListTestsResponse (Maybe Text)
 ltrsNextToken = lens _ltrsNextToken (\ s a -> s{_ltrsNextToken = a});
 
--- | The response status code.
+-- | -- | The response status code.
 ltrsResponseStatus :: Lens' ListTestsResponse Int
 ltrsResponseStatus = lens _ltrsResponseStatus (\ s a -> s{_ltrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/ListUniqueProblems.hs b/gen/Network/AWS/DeviceFarm/ListUniqueProblems.hs
--- a/gen/Network/AWS/DeviceFarm/ListUniqueProblems.hs
+++ b/gen/Network/AWS/DeviceFarm/ListUniqueProblems.hs
@@ -20,6 +20,8 @@
 --
 -- Gets information about unique problems.
 --
+--
+--
 -- This operation returns paginated results.
 module Network.AWS.DeviceFarm.ListUniqueProblems
     (
@@ -49,6 +51,8 @@
 
 -- | Represents a request to the list unique problems operation.
 --
+--
+--
 -- /See:/ 'listUniqueProblems' smart constructor.
 data ListUniqueProblems = ListUniqueProblems'
     { _lupNextToken :: !(Maybe Text)
@@ -59,9 +63,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lupNextToken'
+-- * 'lupNextToken' - An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list.
 --
--- * 'lupArn'
+-- * 'lupArn' - The unique problems' ARNs.
 listUniqueProblems
     :: Text -- ^ 'lupArn'
     -> ListUniqueProblems
@@ -75,7 +79,7 @@
 lupNextToken :: Lens' ListUniqueProblems (Maybe Text)
 lupNextToken = lens _lupNextToken (\ s a -> s{_lupNextToken = a});
 
--- | The unique problems\' ARNs.
+-- | The unique problems' ARNs.
 lupArn :: Lens' ListUniqueProblems Text
 lupArn = lens _lupArn (\ s a -> s{_lupArn = a});
 
@@ -127,6 +131,8 @@
 
 -- | Represents the result of a list unique problems request.
 --
+--
+--
 -- /See:/ 'listUniqueProblemsResponse' smart constructor.
 data ListUniqueProblemsResponse = ListUniqueProblemsResponse'
     { _luprsNextToken      :: !(Maybe Text)
@@ -138,11 +144,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'luprsNextToken'
+-- * 'luprsNextToken' - If the number of items that are returned is significantly large, this is an identifier that is also returned, which can be used in a subsequent call to this operation to return the next set of items in the list.
 --
--- * 'luprsUniqueProblems'
+-- * 'luprsUniqueProblems' - Information about the unique problems. Allowed values include:     * PENDING: A pending condition.     * PASSED: A passing condition.     * WARNED: A warning condition.     * FAILED: A failed condition.     * SKIPPED: A skipped condition.     * ERRORED: An error condition.     * STOPPED: A stopped condition.
 --
--- * 'luprsResponseStatus'
+-- * 'luprsResponseStatus' - -- | The response status code.
 listUniqueProblemsResponse
     :: Int -- ^ 'luprsResponseStatus'
     -> ListUniqueProblemsResponse
@@ -157,28 +163,11 @@
 luprsNextToken :: Lens' ListUniqueProblemsResponse (Maybe Text)
 luprsNextToken = lens _luprsNextToken (\ s a -> s{_luprsNextToken = a});
 
--- | Information about the unique problems.
---
--- Allowed values include:
---
--- -   PENDING: A pending condition.
---
--- -   PASSED: A passing condition.
---
--- -   WARNED: A warning condition.
---
--- -   FAILED: A failed condition.
---
--- -   SKIPPED: A skipped condition.
---
--- -   ERRORED: An error condition.
---
--- -   STOPPED: A stopped condition.
---
+-- | Information about the unique problems. Allowed values include:     * PENDING: A pending condition.     * PASSED: A passing condition.     * WARNED: A warning condition.     * FAILED: A failed condition.     * SKIPPED: A skipped condition.     * ERRORED: An error condition.     * STOPPED: A stopped condition.
 luprsUniqueProblems :: Lens' ListUniqueProblemsResponse (HashMap ExecutionResult [UniqueProblem])
 luprsUniqueProblems = lens _luprsUniqueProblems (\ s a -> s{_luprsUniqueProblems = a}) . _Default . _Map;
 
--- | The response status code.
+-- | -- | The response status code.
 luprsResponseStatus :: Lens' ListUniqueProblemsResponse Int
 luprsResponseStatus = lens _luprsResponseStatus (\ s a -> s{_luprsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/ListUploads.hs b/gen/Network/AWS/DeviceFarm/ListUploads.hs
--- a/gen/Network/AWS/DeviceFarm/ListUploads.hs
+++ b/gen/Network/AWS/DeviceFarm/ListUploads.hs
@@ -18,8 +18,10 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Gets information about uploads.
+-- Gets information about uploads, given an AWS Device Farm project ARN.
 --
+--
+--
 -- This operation returns paginated results.
 module Network.AWS.DeviceFarm.ListUploads
     (
@@ -49,6 +51,8 @@
 
 -- | Represents a request to the list uploads operation.
 --
+--
+--
 -- /See:/ 'listUploads' smart constructor.
 data ListUploads = ListUploads'
     { _luNextToken :: !(Maybe Text)
@@ -59,9 +63,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'luNextToken'
+-- * 'luNextToken' - An identifier that was returned from the previous call to this operation, which can be used to return the next set of items in the list.
 --
--- * 'luArn'
+-- * 'luArn' - The Amazon Resource Name (ARN) of the project for which you want to list uploads.
 listUploads
     :: Text -- ^ 'luArn'
     -> ListUploads
@@ -75,7 +79,7 @@
 luNextToken :: Lens' ListUploads (Maybe Text)
 luNextToken = lens _luNextToken (\ s a -> s{_luNextToken = a});
 
--- | The uploads\' ARNs.
+-- | The Amazon Resource Name (ARN) of the project for which you want to list uploads.
 luArn :: Lens' ListUploads Text
 luArn = lens _luArn (\ s a -> s{_luArn = a});
 
@@ -124,6 +128,8 @@
 
 -- | Represents the result of a list uploads request.
 --
+--
+--
 -- /See:/ 'listUploadsResponse' smart constructor.
 data ListUploadsResponse = ListUploadsResponse'
     { _lursNextToken      :: !(Maybe Text)
@@ -135,11 +141,11 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lursNextToken'
+-- * 'lursNextToken' - If the number of items that are returned is significantly large, this is an identifier that is also returned, which can be used in a subsequent call to this operation to return the next set of items in the list.
 --
--- * 'lursUploads'
+-- * 'lursUploads' - Information about the uploads.
 --
--- * 'lursResponseStatus'
+-- * 'lursResponseStatus' - -- | The response status code.
 listUploadsResponse
     :: Int -- ^ 'lursResponseStatus'
     -> ListUploadsResponse
@@ -158,7 +164,7 @@
 lursUploads :: Lens' ListUploadsResponse [Upload]
 lursUploads = lens _lursUploads (\ s a -> s{_lursUploads = a}) . _Default . _Coerce;
 
--- | The response status code.
+-- | -- | The response status code.
 lursResponseStatus :: Lens' ListUploadsResponse Int
 lursResponseStatus = lens _lursResponseStatus (\ s a -> s{_lursResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/PurchaseOffering.hs b/gen/Network/AWS/DeviceFarm/PurchaseOffering.hs
--- a/gen/Network/AWS/DeviceFarm/PurchaseOffering.hs
+++ b/gen/Network/AWS/DeviceFarm/PurchaseOffering.hs
@@ -18,7 +18,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Immediately purchases offerings for an AWS account. Offerings renew with the latest total purchased quantity for an offering, unless the renewal was overridden. The API returns a 'NotEligible' error if the user is not permitted to invoke the operation. Please contact <mailto:aws-devicefarm-support'amazon.com aws-devicefarm-support\'amazon.com> if you believe that you should be able to invoke this operation.
+-- Immediately purchases offerings for an AWS account. Offerings renew with the latest total purchased quantity for an offering, unless the renewal was overridden. The API returns a @NotEligible@ error if the user is not permitted to invoke the operation. Please contact <mailto:aws-devicefarm-support@amazon.com aws-devicefarm-support@amazon.com> if you believe that you should be able to invoke this operation.
+--
+--
 module Network.AWS.DeviceFarm.PurchaseOffering
     (
     -- * Creating a Request
@@ -45,6 +47,8 @@
 
 -- | Represents a request for a purchase offering.
 --
+--
+--
 -- /See:/ 'purchaseOffering' smart constructor.
 data PurchaseOffering = PurchaseOffering'
     { _poQuantity   :: !(Maybe Int)
@@ -55,9 +59,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'poQuantity'
+-- * 'poQuantity' - The number of device slots you wish to purchase in an offering request.
 --
--- * 'poOfferingId'
+-- * 'poOfferingId' - The ID of the offering.
 purchaseOffering
     :: PurchaseOffering
 purchaseOffering =
@@ -113,6 +117,8 @@
 
 -- | The result of the purchase offering (e.g., success or failure).
 --
+--
+--
 -- /See:/ 'purchaseOfferingResponse' smart constructor.
 data PurchaseOfferingResponse = PurchaseOfferingResponse'
     { _porsOfferingTransaction :: !(Maybe OfferingTransaction)
@@ -123,9 +129,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'porsOfferingTransaction'
+-- * 'porsOfferingTransaction' - Represents the offering transaction for the purchase result.
 --
--- * 'porsResponseStatus'
+-- * 'porsResponseStatus' - -- | The response status code.
 purchaseOfferingResponse
     :: Int -- ^ 'porsResponseStatus'
     -> PurchaseOfferingResponse
@@ -139,7 +145,7 @@
 porsOfferingTransaction :: Lens' PurchaseOfferingResponse (Maybe OfferingTransaction)
 porsOfferingTransaction = lens _porsOfferingTransaction (\ s a -> s{_porsOfferingTransaction = a});
 
--- | The response status code.
+-- | -- | The response status code.
 porsResponseStatus :: Lens' PurchaseOfferingResponse Int
 porsResponseStatus = lens _porsResponseStatus (\ s a -> s{_porsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/RenewOffering.hs b/gen/Network/AWS/DeviceFarm/RenewOffering.hs
--- a/gen/Network/AWS/DeviceFarm/RenewOffering.hs
+++ b/gen/Network/AWS/DeviceFarm/RenewOffering.hs
@@ -18,7 +18,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Explicitly sets the quantity of devices to renew for an offering, starting from the 'effectiveDate' of the next period. The API returns a 'NotEligible' error if the user is not permitted to invoke the operation. Please contact <mailto:aws-devicefarm-support'amazon.com aws-devicefarm-support\'amazon.com> if you believe that you should be able to invoke this operation.
+-- Explicitly sets the quantity of devices to renew for an offering, starting from the @effectiveDate@ of the next period. The API returns a @NotEligible@ error if the user is not permitted to invoke the operation. Please contact <mailto:aws-devicefarm-support@amazon.com aws-devicefarm-support@amazon.com> if you believe that you should be able to invoke this operation.
+--
+--
 module Network.AWS.DeviceFarm.RenewOffering
     (
     -- * Creating a Request
@@ -45,6 +47,8 @@
 
 -- | A request representing an offering renewal.
 --
+--
+--
 -- /See:/ 'renewOffering' smart constructor.
 data RenewOffering = RenewOffering'
     { _roQuantity   :: !(Maybe Int)
@@ -55,9 +59,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'roQuantity'
+-- * 'roQuantity' - The quantity requested in an offering renewal.
 --
--- * 'roOfferingId'
+-- * 'roOfferingId' - The ID of a request to renew an offering.
 renewOffering
     :: RenewOffering
 renewOffering =
@@ -112,6 +116,8 @@
 
 -- | The result of a renewal offering.
 --
+--
+--
 -- /See:/ 'renewOfferingResponse' smart constructor.
 data RenewOfferingResponse = RenewOfferingResponse'
     { _rorsOfferingTransaction :: !(Maybe OfferingTransaction)
@@ -122,9 +128,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rorsOfferingTransaction'
+-- * 'rorsOfferingTransaction' - Represents the status of the offering transaction for the renewal.
 --
--- * 'rorsResponseStatus'
+-- * 'rorsResponseStatus' - -- | The response status code.
 renewOfferingResponse
     :: Int -- ^ 'rorsResponseStatus'
     -> RenewOfferingResponse
@@ -138,7 +144,7 @@
 rorsOfferingTransaction :: Lens' RenewOfferingResponse (Maybe OfferingTransaction)
 rorsOfferingTransaction = lens _rorsOfferingTransaction (\ s a -> s{_rorsOfferingTransaction = a});
 
--- | The response status code.
+-- | -- | The response status code.
 rorsResponseStatus :: Lens' RenewOfferingResponse Int
 rorsResponseStatus = lens _rorsResponseStatus (\ s a -> s{_rorsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/ScheduleRun.hs b/gen/Network/AWS/DeviceFarm/ScheduleRun.hs
--- a/gen/Network/AWS/DeviceFarm/ScheduleRun.hs
+++ b/gen/Network/AWS/DeviceFarm/ScheduleRun.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Schedules a run.
+--
+--
 module Network.AWS.DeviceFarm.ScheduleRun
     (
     -- * Creating a Request
@@ -49,6 +51,8 @@
 
 -- | Represents a request to the schedule run operation.
 --
+--
+--
 -- /See:/ 'scheduleRun' smart constructor.
 data ScheduleRun = ScheduleRun'
     { _srAppARN        :: !(Maybe Text)
@@ -63,17 +67,17 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'srAppARN'
+-- * 'srAppARN' - The ARN of the app to schedule a run.
 --
--- * 'srName'
+-- * 'srName' - The name for the run to be scheduled.
 --
--- * 'srConfiguration'
+-- * 'srConfiguration' - Information about the settings for the run to be scheduled.
 --
--- * 'srProjectARN'
+-- * 'srProjectARN' - The ARN of the project for the run to be scheduled.
 --
--- * 'srDevicePoolARN'
+-- * 'srDevicePoolARN' - The ARN of the device pool for the run to be scheduled.
 --
--- * 'srTest'
+-- * 'srTest' - Information about the test for the run to be scheduled.
 scheduleRun
     :: Text -- ^ 'srProjectARN'
     -> Text -- ^ 'srDevicePoolARN'
@@ -154,6 +158,8 @@
 
 -- | Represents the result of a schedule run request.
 --
+--
+--
 -- /See:/ 'scheduleRunResponse' smart constructor.
 data ScheduleRunResponse = ScheduleRunResponse'
     { _srrsRun            :: !(Maybe Run)
@@ -164,9 +170,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'srrsRun'
+-- * 'srrsRun' - Information about the scheduled run.
 --
--- * 'srrsResponseStatus'
+-- * 'srrsResponseStatus' - -- | The response status code.
 scheduleRunResponse
     :: Int -- ^ 'srrsResponseStatus'
     -> ScheduleRunResponse
@@ -180,7 +186,7 @@
 srrsRun :: Lens' ScheduleRunResponse (Maybe Run)
 srrsRun = lens _srrsRun (\ s a -> s{_srrsRun = a});
 
--- | The response status code.
+-- | -- | The response status code.
 srrsResponseStatus :: Lens' ScheduleRunResponse Int
 srrsResponseStatus = lens _srrsResponseStatus (\ s a -> s{_srrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/StopRemoteAccessSession.hs b/gen/Network/AWS/DeviceFarm/StopRemoteAccessSession.hs
--- a/gen/Network/AWS/DeviceFarm/StopRemoteAccessSession.hs
+++ b/gen/Network/AWS/DeviceFarm/StopRemoteAccessSession.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Ends a specified remote access session.
+--
+--
 module Network.AWS.DeviceFarm.StopRemoteAccessSession
     (
     -- * Creating a Request
@@ -44,6 +46,8 @@
 
 -- | Represents the request to stop the remote access session.
 --
+--
+--
 -- /See:/ 'stopRemoteAccessSession' smart constructor.
 newtype StopRemoteAccessSession = StopRemoteAccessSession'
     { _srasArn :: Text
@@ -53,7 +57,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'srasArn'
+-- * 'srasArn' - The Amazon Resource Name (ARN) of the remote access session you wish to stop.
 stopRemoteAccessSession
     :: Text -- ^ 'srasArn'
     -> StopRemoteAccessSession
@@ -103,6 +107,8 @@
 
 -- | Represents the response from the server that describes the remote access session when AWS Device Farm stops the session.
 --
+--
+--
 -- /See:/ 'stopRemoteAccessSessionResponse' smart constructor.
 data StopRemoteAccessSessionResponse = StopRemoteAccessSessionResponse'
     { _srasrsRemoteAccessSession :: !(Maybe RemoteAccessSession)
@@ -113,9 +119,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'srasrsRemoteAccessSession'
+-- * 'srasrsRemoteAccessSession' - A container representing the metadata from the service about the remote access session you are stopping.
 --
--- * 'srasrsResponseStatus'
+-- * 'srasrsResponseStatus' - -- | The response status code.
 stopRemoteAccessSessionResponse
     :: Int -- ^ 'srasrsResponseStatus'
     -> StopRemoteAccessSessionResponse
@@ -129,7 +135,7 @@
 srasrsRemoteAccessSession :: Lens' StopRemoteAccessSessionResponse (Maybe RemoteAccessSession)
 srasrsRemoteAccessSession = lens _srasrsRemoteAccessSession (\ s a -> s{_srasrsRemoteAccessSession = a});
 
--- | The response status code.
+-- | -- | The response status code.
 srasrsResponseStatus :: Lens' StopRemoteAccessSessionResponse Int
 srasrsResponseStatus = lens _srasrsResponseStatus (\ s a -> s{_srasrsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/StopRun.hs b/gen/Network/AWS/DeviceFarm/StopRun.hs
--- a/gen/Network/AWS/DeviceFarm/StopRun.hs
+++ b/gen/Network/AWS/DeviceFarm/StopRun.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Initiates a stop request for the current test run. AWS Device Farm will immediately stop the run on devices where tests have not started executing, and you will not be billed for these devices. On devices where tests have started executing, Setup Suite and Teardown Suite tests will run to completion before stopping execution on those devices. You will be billed for Setup, Teardown, and any tests that were in progress or already completed.
+--
+--
 module Network.AWS.DeviceFarm.StopRun
     (
     -- * Creating a Request
@@ -44,6 +46,8 @@
 
 -- | Represents the request to stop a specific run.
 --
+--
+--
 -- /See:/ 'stopRun' smart constructor.
 newtype StopRun = StopRun'
     { _srArn :: Text
@@ -53,7 +57,7 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'srArn'
+-- * 'srArn' - Represents the Amazon Resource Name (ARN) of the Device Farm run you wish to stop.
 stopRun
     :: Text -- ^ 'srArn'
     -> StopRun
@@ -100,6 +104,8 @@
 
 -- | Represents the results of your stop run attempt.
 --
+--
+--
 -- /See:/ 'stopRunResponse' smart constructor.
 data StopRunResponse = StopRunResponse'
     { _srsRun            :: !(Maybe Run)
@@ -110,9 +116,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'srsRun'
+-- * 'srsRun' - Undocumented member.
 --
--- * 'srsResponseStatus'
+-- * 'srsResponseStatus' - -- | The response status code.
 stopRunResponse
     :: Int -- ^ 'srsResponseStatus'
     -> StopRunResponse
@@ -126,7 +132,7 @@
 srsRun :: Lens' StopRunResponse (Maybe Run)
 srsRun = lens _srsRun (\ s a -> s{_srsRun = a});
 
--- | The response status code.
+-- | -- | The response status code.
 srsResponseStatus :: Lens' StopRunResponse Int
 srsResponseStatus = lens _srsResponseStatus (\ s a -> s{_srsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/Types.hs b/gen/Network/AWS/DeviceFarm/Types.hs
--- a/gen/Network/AWS/DeviceFarm/Types.hs
+++ b/gen/Network/AWS/DeviceFarm/Types.hs
@@ -387,7 +387,7 @@
 import           Network.AWS.Prelude
 import           Network.AWS.Sign.V4
 
--- | API version '2015-06-23' of the Amazon Device Farm SDK configuration.
+-- | API version @2015-06-23@ of the Amazon Device Farm SDK configuration.
 deviceFarm :: Service
 deviceFarm =
     Service
@@ -422,25 +422,37 @@
       | otherwise = Nothing
 
 -- | Exception gets thrown when a user is not eligible to perform the specified transaction.
+--
+--
 _NotEligibleException :: AsError a => Getting (First ServiceError) a ServiceError
 _NotEligibleException = _ServiceError . hasCode "NotEligibleException"
 
 -- | An entity with the same name already exists.
+--
+--
 _IdempotencyException :: AsError a => Getting (First ServiceError) a ServiceError
 _IdempotencyException = _ServiceError . hasCode "IdempotencyException"
 
 -- | An invalid argument was specified.
+--
+--
 _ArgumentException :: AsError a => Getting (First ServiceError) a ServiceError
 _ArgumentException = _ServiceError . hasCode "ArgumentException"
 
 -- | The specified entity was not found.
+--
+--
 _NotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
 _NotFoundException = _ServiceError . hasCode "NotFoundException"
 
 -- | There was a problem with the service account.
+--
+--
 _ServiceAccountException :: AsError a => Getting (First ServiceError) a ServiceError
 _ServiceAccountException = _ServiceError . hasCode "ServiceAccountException"
 
 -- | A limit was exceeded.
+--
+--
 _LimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
 _LimitExceededException = _ServiceError . hasCode "LimitExceededException"
diff --git a/gen/Network/AWS/DeviceFarm/Types/Product.hs b/gen/Network/AWS/DeviceFarm/Types/Product.hs
--- a/gen/Network/AWS/DeviceFarm/Types/Product.hs
+++ b/gen/Network/AWS/DeviceFarm/Types/Product.hs
@@ -23,2894 +23,2407 @@
 
 -- | A container for account-level settings within AWS Device Farm.
 --
--- /See:/ 'accountSettings' smart constructor.
-data AccountSettings = AccountSettings'
-    { _asAwsAccountNumber             :: !(Maybe Text)
-    , _asUnmeteredDevices             :: !(Maybe (Map DevicePlatform Int))
-    , _asUnmeteredRemoteAccessDevices :: !(Maybe (Map DevicePlatform Int))
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AccountSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'asAwsAccountNumber'
---
--- * 'asUnmeteredDevices'
---
--- * 'asUnmeteredRemoteAccessDevices'
-accountSettings
-    :: AccountSettings
-accountSettings =
-    AccountSettings'
-    { _asAwsAccountNumber = Nothing
-    , _asUnmeteredDevices = Nothing
-    , _asUnmeteredRemoteAccessDevices = Nothing
-    }
-
--- | The AWS account number specified in the 'AccountSettings' container.
-asAwsAccountNumber :: Lens' AccountSettings (Maybe Text)
-asAwsAccountNumber = lens _asAwsAccountNumber (\ s a -> s{_asAwsAccountNumber = a});
-
--- | Returns the unmetered devices you have purchased or want to purchase.
-asUnmeteredDevices :: Lens' AccountSettings (HashMap DevicePlatform Int)
-asUnmeteredDevices = lens _asUnmeteredDevices (\ s a -> s{_asUnmeteredDevices = a}) . _Default . _Map;
-
--- | Returns the unmetered remote access devices you have purchased or want to purchase.
-asUnmeteredRemoteAccessDevices :: Lens' AccountSettings (HashMap DevicePlatform Int)
-asUnmeteredRemoteAccessDevices = lens _asUnmeteredRemoteAccessDevices (\ s a -> s{_asUnmeteredRemoteAccessDevices = a}) . _Default . _Map;
-
-instance FromJSON AccountSettings where
-        parseJSON
-          = withObject "AccountSettings"
-              (\ x ->
-                 AccountSettings' <$>
-                   (x .:? "awsAccountNumber") <*>
-                     (x .:? "unmeteredDevices" .!= mempty)
-                     <*>
-                     (x .:? "unmeteredRemoteAccessDevices" .!= mempty))
-
-instance Hashable AccountSettings
-
-instance NFData AccountSettings
-
--- | Represents the output of a test. Examples of artifacts include logs and screenshots.
---
--- /See:/ 'artifact' smart constructor.
-data Artifact = Artifact'
-    { _aArn       :: !(Maybe Text)
-    , _aUrl       :: !(Maybe Text)
-    , _aExtension :: !(Maybe Text)
-    , _aName      :: !(Maybe Text)
-    , _aType      :: !(Maybe ArtifactType)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Artifact' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aArn'
---
--- * 'aUrl'
---
--- * 'aExtension'
---
--- * 'aName'
---
--- * 'aType'
-artifact
-    :: Artifact
-artifact =
-    Artifact'
-    { _aArn = Nothing
-    , _aUrl = Nothing
-    , _aExtension = Nothing
-    , _aName = Nothing
-    , _aType = Nothing
-    }
-
--- | The artifact\'s ARN.
-aArn :: Lens' Artifact (Maybe Text)
-aArn = lens _aArn (\ s a -> s{_aArn = a});
-
--- | The pre-signed Amazon S3 URL that can be used with a corresponding GET request to download the artifact\'s file.
-aUrl :: Lens' Artifact (Maybe Text)
-aUrl = lens _aUrl (\ s a -> s{_aUrl = a});
-
--- | The artifact\'s file extension.
-aExtension :: Lens' Artifact (Maybe Text)
-aExtension = lens _aExtension (\ s a -> s{_aExtension = a});
-
--- | The artifact\'s name.
-aName :: Lens' Artifact (Maybe Text)
-aName = lens _aName (\ s a -> s{_aName = a});
-
--- | The artifact\'s type.
---
--- Allowed values include the following:
---
--- -   UNKNOWN: An unknown type.
---
--- -   SCREENSHOT: The screenshot type.
---
--- -   DEVICE_LOG: The device log type.
---
--- -   MESSAGE_LOG: The message log type.
---
--- -   RESULT_LOG: The result log type.
---
--- -   SERVICE_LOG: The service log type.
---
--- -   WEBKIT_LOG: The web kit log type.
---
--- -   INSTRUMENTATION_OUTPUT: The instrumentation type.
---
--- -   EXERCISER_MONKEY_OUTPUT: For Android, the artifact (log) generated by an Android fuzz test.
---
--- -   CALABASH_JSON_OUTPUT: The Calabash JSON output type.
---
--- -   CALABASH_PRETTY_OUTPUT: The Calabash pretty output type.
---
--- -   CALABASH_STANDARD_OUTPUT: The Calabash standard output type.
---
--- -   CALABASH_JAVA_XML_OUTPUT: The Calabash Java XML output type.
---
--- -   AUTOMATION_OUTPUT: The automation output type.
---
--- -   APPIUM_SERVER_OUTPUT: The Appium server output type.
---
--- -   APPIUM_JAVA_OUTPUT: The Appium Java output type.
---
--- -   APPIUM_JAVA_XML_OUTPUT: The Appium Java XML output type.
---
--- -   APPIUM_PYTHON_OUTPUT: The Appium Python output type.
---
--- -   APPIUM_PYTHON_XML_OUTPUT: The Appium Python XML output type.
---
--- -   EXPLORER_EVENT_LOG: The Explorer event log output type.
---
--- -   EXPLORER_SUMMARY_LOG: The Explorer summary log output type.
---
--- -   APPLICATION_CRASH_REPORT: The application crash report output type.
---
--- -   XCTEST_LOG: The XCode test output type.
---
-aType :: Lens' Artifact (Maybe ArtifactType)
-aType = lens _aType (\ s a -> s{_aType = a});
-
-instance FromJSON Artifact where
-        parseJSON
-          = withObject "Artifact"
-              (\ x ->
-                 Artifact' <$>
-                   (x .:? "arn") <*> (x .:? "url") <*>
-                     (x .:? "extension")
-                     <*> (x .:? "name")
-                     <*> (x .:? "type"))
-
-instance Hashable Artifact
-
-instance NFData Artifact
-
--- | Represents the amount of CPU that an app is using on a physical device.
---
--- Note that this does not represent system-wide CPU usage.
---
--- /See:/ 'cpu' smart constructor.
-data CPU = CPU'
-    { _cpuFrequency    :: !(Maybe Text)
-    , _cpuClock        :: !(Maybe Double)
-    , _cpuArchitecture :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CPU' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cpuFrequency'
---
--- * 'cpuClock'
---
--- * 'cpuArchitecture'
-cpu
-    :: CPU
-cpu =
-    CPU'
-    { _cpuFrequency = Nothing
-    , _cpuClock = Nothing
-    , _cpuArchitecture = Nothing
-    }
-
--- | The CPU\'s frequency.
-cpuFrequency :: Lens' CPU (Maybe Text)
-cpuFrequency = lens _cpuFrequency (\ s a -> s{_cpuFrequency = a});
-
--- | The clock speed of the device\'s CPU, expressed in hertz (Hz). For example, a 1.2 GHz CPU is expressed as 1200000000.
-cpuClock :: Lens' CPU (Maybe Double)
-cpuClock = lens _cpuClock (\ s a -> s{_cpuClock = a});
-
--- | The CPU\'s architecture, for example x86 or ARM.
-cpuArchitecture :: Lens' CPU (Maybe Text)
-cpuArchitecture = lens _cpuArchitecture (\ s a -> s{_cpuArchitecture = a});
-
-instance FromJSON CPU where
-        parseJSON
-          = withObject "CPU"
-              (\ x ->
-                 CPU' <$>
-                   (x .:? "frequency") <*> (x .:? "clock") <*>
-                     (x .:? "architecture"))
-
-instance Hashable CPU
-
-instance NFData CPU
-
--- | Represents entity counters.
---
--- /See:/ 'counters' smart constructor.
-data Counters = Counters'
-    { _cPassed  :: !(Maybe Int)
-    , _cSkipped :: !(Maybe Int)
-    , _cWarned  :: !(Maybe Int)
-    , _cStopped :: !(Maybe Int)
-    , _cTotal   :: !(Maybe Int)
-    , _cFailed  :: !(Maybe Int)
-    , _cErrored :: !(Maybe Int)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Counters' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cPassed'
---
--- * 'cSkipped'
---
--- * 'cWarned'
---
--- * 'cStopped'
---
--- * 'cTotal'
---
--- * 'cFailed'
---
--- * 'cErrored'
-counters
-    :: Counters
-counters =
-    Counters'
-    { _cPassed = Nothing
-    , _cSkipped = Nothing
-    , _cWarned = Nothing
-    , _cStopped = Nothing
-    , _cTotal = Nothing
-    , _cFailed = Nothing
-    , _cErrored = Nothing
-    }
-
--- | The number of passed entities.
-cPassed :: Lens' Counters (Maybe Int)
-cPassed = lens _cPassed (\ s a -> s{_cPassed = a});
-
--- | The number of skipped entities.
-cSkipped :: Lens' Counters (Maybe Int)
-cSkipped = lens _cSkipped (\ s a -> s{_cSkipped = a});
-
--- | The number of warned entities.
-cWarned :: Lens' Counters (Maybe Int)
-cWarned = lens _cWarned (\ s a -> s{_cWarned = a});
-
--- | The number of stopped entities.
-cStopped :: Lens' Counters (Maybe Int)
-cStopped = lens _cStopped (\ s a -> s{_cStopped = a});
-
--- | The total number of entities.
-cTotal :: Lens' Counters (Maybe Int)
-cTotal = lens _cTotal (\ s a -> s{_cTotal = a});
-
--- | The number of failed entities.
-cFailed :: Lens' Counters (Maybe Int)
-cFailed = lens _cFailed (\ s a -> s{_cFailed = a});
-
--- | The number of errored entities.
-cErrored :: Lens' Counters (Maybe Int)
-cErrored = lens _cErrored (\ s a -> s{_cErrored = a});
-
-instance FromJSON Counters where
-        parseJSON
-          = withObject "Counters"
-              (\ x ->
-                 Counters' <$>
-                   (x .:? "passed") <*> (x .:? "skipped") <*>
-                     (x .:? "warned")
-                     <*> (x .:? "stopped")
-                     <*> (x .:? "total")
-                     <*> (x .:? "failed")
-                     <*> (x .:? "errored"))
-
-instance Hashable Counters
-
-instance NFData Counters
-
--- | Creates the configuration settings for a remote access session, including the device model and type.
---
--- /See:/ 'createRemoteAccessSessionConfiguration' smart constructor.
-newtype CreateRemoteAccessSessionConfiguration = CreateRemoteAccessSessionConfiguration'
-    { _crascBillingMethod :: Maybe BillingMethod
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CreateRemoteAccessSessionConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'crascBillingMethod'
-createRemoteAccessSessionConfiguration
-    :: CreateRemoteAccessSessionConfiguration
-createRemoteAccessSessionConfiguration =
-    CreateRemoteAccessSessionConfiguration'
-    { _crascBillingMethod = Nothing
-    }
-
--- | Returns the billing method for purposes of configuring a remote access session.
-crascBillingMethod :: Lens' CreateRemoteAccessSessionConfiguration (Maybe BillingMethod)
-crascBillingMethod = lens _crascBillingMethod (\ s a -> s{_crascBillingMethod = a});
-
-instance Hashable
-         CreateRemoteAccessSessionConfiguration
-
-instance NFData
-         CreateRemoteAccessSessionConfiguration
-
-instance ToJSON
-         CreateRemoteAccessSessionConfiguration where
-        toJSON CreateRemoteAccessSessionConfiguration'{..}
-          = object
-              (catMaybes
-                 [("billingMethod" .=) <$> _crascBillingMethod])
-
--- | Represents a device type that an app is tested against.
---
--- /See:/ 'device' smart constructor.
-data Device = Device'
-    { _devCarrier             :: !(Maybe Text)
-    , _devImage               :: !(Maybe Text)
-    , _devManufacturer        :: !(Maybe Text)
-    , _devPlatform            :: !(Maybe DevicePlatform)
-    , _devRemoteAccessEnabled :: !(Maybe Bool)
-    , _devArn                 :: !(Maybe Text)
-    , _devFormFactor          :: !(Maybe DeviceFormFactor)
-    , _devFleetType           :: !(Maybe Text)
-    , _devResolution          :: !(Maybe Resolution)
-    , _devMemory              :: !(Maybe Integer)
-    , _devRadio               :: !(Maybe Text)
-    , _devOs                  :: !(Maybe Text)
-    , _devName                :: !(Maybe Text)
-    , _devModel               :: !(Maybe Text)
-    , _devCpu                 :: !(Maybe CPU)
-    , _devHeapSize            :: !(Maybe Integer)
-    , _devFleetName           :: !(Maybe Text)
-    } deriving (Eq,Read,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:
---
--- * 'devCarrier'
---
--- * 'devImage'
---
--- * 'devManufacturer'
---
--- * 'devPlatform'
---
--- * 'devRemoteAccessEnabled'
---
--- * 'devArn'
---
--- * 'devFormFactor'
---
--- * 'devFleetType'
---
--- * 'devResolution'
---
--- * 'devMemory'
---
--- * 'devRadio'
---
--- * 'devOs'
---
--- * 'devName'
---
--- * 'devModel'
---
--- * 'devCpu'
---
--- * 'devHeapSize'
---
--- * 'devFleetName'
-device
-    :: Device
-device =
-    Device'
-    { _devCarrier = Nothing
-    , _devImage = Nothing
-    , _devManufacturer = Nothing
-    , _devPlatform = Nothing
-    , _devRemoteAccessEnabled = Nothing
-    , _devArn = Nothing
-    , _devFormFactor = Nothing
-    , _devFleetType = Nothing
-    , _devResolution = Nothing
-    , _devMemory = Nothing
-    , _devRadio = Nothing
-    , _devOs = Nothing
-    , _devName = Nothing
-    , _devModel = Nothing
-    , _devCpu = Nothing
-    , _devHeapSize = Nothing
-    , _devFleetName = Nothing
-    }
-
--- | The device\'s carrier.
-devCarrier :: Lens' Device (Maybe Text)
-devCarrier = lens _devCarrier (\ s a -> s{_devCarrier = a});
-
--- | The device\'s image name.
-devImage :: Lens' Device (Maybe Text)
-devImage = lens _devImage (\ s a -> s{_devImage = a});
-
--- | The device\'s manufacturer name.
-devManufacturer :: Lens' Device (Maybe Text)
-devManufacturer = lens _devManufacturer (\ s a -> s{_devManufacturer = a});
-
--- | The device\'s platform.
---
--- Allowed values include:
---
--- -   ANDROID: The Android platform.
---
--- -   IOS: The iOS platform.
---
-devPlatform :: Lens' Device (Maybe DevicePlatform)
-devPlatform = lens _devPlatform (\ s a -> s{_devPlatform = a});
-
--- | Specifies whether remote access has been enabled for the specified device.
-devRemoteAccessEnabled :: Lens' Device (Maybe Bool)
-devRemoteAccessEnabled = lens _devRemoteAccessEnabled (\ s a -> s{_devRemoteAccessEnabled = a});
-
--- | The device\'s ARN.
-devArn :: Lens' Device (Maybe Text)
-devArn = lens _devArn (\ s a -> s{_devArn = a});
-
--- | The device\'s form factor.
---
--- Allowed values include:
---
--- -   PHONE: The phone form factor.
---
--- -   TABLET: The tablet form factor.
---
-devFormFactor :: Lens' Device (Maybe DeviceFormFactor)
-devFormFactor = lens _devFormFactor (\ s a -> s{_devFormFactor = a});
-
--- | The type of fleet to which this device belongs. Possible values for fleet type are PRIVATE and PUBLIC.
-devFleetType :: Lens' Device (Maybe Text)
-devFleetType = lens _devFleetType (\ s a -> s{_devFleetType = a});
-
--- | Undocumented member.
-devResolution :: Lens' Device (Maybe Resolution)
-devResolution = lens _devResolution (\ s a -> s{_devResolution = a});
-
--- | The device\'s total memory size, expressed in bytes.
-devMemory :: Lens' Device (Maybe Integer)
-devMemory = lens _devMemory (\ s a -> s{_devMemory = a});
-
--- | The device\'s radio.
-devRadio :: Lens' Device (Maybe Text)
-devRadio = lens _devRadio (\ s a -> s{_devRadio = a});
-
--- | The device\'s operating system type.
-devOs :: Lens' Device (Maybe Text)
-devOs = lens _devOs (\ s a -> s{_devOs = a});
-
--- | The device\'s display name.
-devName :: Lens' Device (Maybe Text)
-devName = lens _devName (\ s a -> s{_devName = a});
-
--- | The device\'s model name.
-devModel :: Lens' Device (Maybe Text)
-devModel = lens _devModel (\ s a -> s{_devModel = a});
-
--- | Information about the device\'s CPU.
-devCpu :: Lens' Device (Maybe CPU)
-devCpu = lens _devCpu (\ s a -> s{_devCpu = a});
-
--- | The device\'s heap size, expressed in bytes.
-devHeapSize :: Lens' Device (Maybe Integer)
-devHeapSize = lens _devHeapSize (\ s a -> s{_devHeapSize = a});
-
--- | The name of the fleet to which this device belongs.
-devFleetName :: Lens' Device (Maybe Text)
-devFleetName = lens _devFleetName (\ s a -> s{_devFleetName = a});
-
-instance FromJSON Device where
-        parseJSON
-          = withObject "Device"
-              (\ x ->
-                 Device' <$>
-                   (x .:? "carrier") <*> (x .:? "image") <*>
-                     (x .:? "manufacturer")
-                     <*> (x .:? "platform")
-                     <*> (x .:? "remoteAccessEnabled")
-                     <*> (x .:? "arn")
-                     <*> (x .:? "formFactor")
-                     <*> (x .:? "fleetType")
-                     <*> (x .:? "resolution")
-                     <*> (x .:? "memory")
-                     <*> (x .:? "radio")
-                     <*> (x .:? "os")
-                     <*> (x .:? "name")
-                     <*> (x .:? "model")
-                     <*> (x .:? "cpu")
-                     <*> (x .:? "heapSize")
-                     <*> (x .:? "fleetName"))
-
-instance Hashable Device
-
-instance NFData Device
-
--- | Represents the total (metered or unmetered) minutes used by the resource to run tests. Contains the sum of minutes consumed by all children.
---
--- /See:/ 'deviceMinutes' smart constructor.
-data DeviceMinutes = DeviceMinutes'
-    { _dmMetered   :: !(Maybe Double)
-    , _dmTotal     :: !(Maybe Double)
-    , _dmUnmetered :: !(Maybe Double)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DeviceMinutes' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dmMetered'
---
--- * 'dmTotal'
---
--- * 'dmUnmetered'
-deviceMinutes
-    :: DeviceMinutes
-deviceMinutes =
-    DeviceMinutes'
-    { _dmMetered = Nothing
-    , _dmTotal = Nothing
-    , _dmUnmetered = Nothing
-    }
-
--- | When specified, represents only the sum of metered minutes used by the resource to run tests.
-dmMetered :: Lens' DeviceMinutes (Maybe Double)
-dmMetered = lens _dmMetered (\ s a -> s{_dmMetered = a});
-
--- | When specified, represents the total minutes used by the resource to run tests.
-dmTotal :: Lens' DeviceMinutes (Maybe Double)
-dmTotal = lens _dmTotal (\ s a -> s{_dmTotal = a});
-
--- | When specified, represents only the sum of unmetered minutes used by the resource to run tests.
-dmUnmetered :: Lens' DeviceMinutes (Maybe Double)
-dmUnmetered = lens _dmUnmetered (\ s a -> s{_dmUnmetered = a});
-
-instance FromJSON DeviceMinutes where
-        parseJSON
-          = withObject "DeviceMinutes"
-              (\ x ->
-                 DeviceMinutes' <$>
-                   (x .:? "metered") <*> (x .:? "total") <*>
-                     (x .:? "unmetered"))
-
-instance Hashable DeviceMinutes
-
-instance NFData DeviceMinutes
-
--- | Represents a collection of device types.
---
--- /See:/ 'devicePool' smart constructor.
-data DevicePool = DevicePool'
-    { _dArn         :: !(Maybe Text)
-    , _dRules       :: !(Maybe [Rule])
-    , _dName        :: !(Maybe Text)
-    , _dType        :: !(Maybe DevicePoolType)
-    , _dDescription :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DevicePool' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dArn'
---
--- * 'dRules'
---
--- * 'dName'
---
--- * 'dType'
---
--- * 'dDescription'
-devicePool
-    :: DevicePool
-devicePool =
-    DevicePool'
-    { _dArn = Nothing
-    , _dRules = Nothing
-    , _dName = Nothing
-    , _dType = Nothing
-    , _dDescription = Nothing
-    }
-
--- | The device pool\'s ARN.
-dArn :: Lens' DevicePool (Maybe Text)
-dArn = lens _dArn (\ s a -> s{_dArn = a});
-
--- | Information about the device pool\'s rules.
-dRules :: Lens' DevicePool [Rule]
-dRules = lens _dRules (\ s a -> s{_dRules = a}) . _Default . _Coerce;
-
--- | The device pool\'s name.
-dName :: Lens' DevicePool (Maybe Text)
-dName = lens _dName (\ s a -> s{_dName = a});
-
--- | The device pool\'s type.
---
--- Allowed values include:
---
--- -   CURATED: A device pool that is created and managed by AWS Device Farm.
---
--- -   PRIVATE: A device pool that is created and managed by the device pool developer.
---
-dType :: Lens' DevicePool (Maybe DevicePoolType)
-dType = lens _dType (\ s a -> s{_dType = a});
-
--- | The device pool\'s description.
-dDescription :: Lens' DevicePool (Maybe Text)
-dDescription = lens _dDescription (\ s a -> s{_dDescription = a});
-
-instance FromJSON DevicePool where
-        parseJSON
-          = withObject "DevicePool"
-              (\ x ->
-                 DevicePool' <$>
-                   (x .:? "arn") <*> (x .:? "rules" .!= mempty) <*>
-                     (x .:? "name")
-                     <*> (x .:? "type")
-                     <*> (x .:? "description"))
-
-instance Hashable DevicePool
-
-instance NFData DevicePool
-
--- | Represents a device pool compatibility result.
---
--- /See:/ 'devicePoolCompatibilityResult' smart constructor.
-data DevicePoolCompatibilityResult = DevicePoolCompatibilityResult'
-    { _dpcrDevice                  :: !(Maybe Device)
-    , _dpcrCompatible              :: !(Maybe Bool)
-    , _dpcrIncompatibilityMessages :: !(Maybe [IncompatibilityMessage])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DevicePoolCompatibilityResult' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dpcrDevice'
---
--- * 'dpcrCompatible'
---
--- * 'dpcrIncompatibilityMessages'
-devicePoolCompatibilityResult
-    :: DevicePoolCompatibilityResult
-devicePoolCompatibilityResult =
-    DevicePoolCompatibilityResult'
-    { _dpcrDevice = Nothing
-    , _dpcrCompatible = Nothing
-    , _dpcrIncompatibilityMessages = Nothing
-    }
-
--- | Undocumented member.
-dpcrDevice :: Lens' DevicePoolCompatibilityResult (Maybe Device)
-dpcrDevice = lens _dpcrDevice (\ s a -> s{_dpcrDevice = a});
-
--- | Whether the result was compatible with the device pool.
-dpcrCompatible :: Lens' DevicePoolCompatibilityResult (Maybe Bool)
-dpcrCompatible = lens _dpcrCompatible (\ s a -> s{_dpcrCompatible = a});
-
--- | Information about the compatibility.
-dpcrIncompatibilityMessages :: Lens' DevicePoolCompatibilityResult [IncompatibilityMessage]
-dpcrIncompatibilityMessages = lens _dpcrIncompatibilityMessages (\ s a -> s{_dpcrIncompatibilityMessages = a}) . _Default . _Coerce;
-
-instance FromJSON DevicePoolCompatibilityResult where
-        parseJSON
-          = withObject "DevicePoolCompatibilityResult"
-              (\ x ->
-                 DevicePoolCompatibilityResult' <$>
-                   (x .:? "device") <*> (x .:? "compatible") <*>
-                     (x .:? "incompatibilityMessages" .!= mempty))
-
-instance Hashable DevicePoolCompatibilityResult
-
-instance NFData DevicePoolCompatibilityResult
-
--- | Represents information about incompatibility.
---
--- /See:/ 'incompatibilityMessage' smart constructor.
-data IncompatibilityMessage = IncompatibilityMessage'
-    { _imType    :: !(Maybe DeviceAttribute)
-    , _imMessage :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'IncompatibilityMessage' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'imType'
---
--- * 'imMessage'
-incompatibilityMessage
-    :: IncompatibilityMessage
-incompatibilityMessage =
-    IncompatibilityMessage'
-    { _imType = Nothing
-    , _imMessage = Nothing
-    }
-
--- | The type of incompatibility.
---
--- Allowed values include:
---
--- -   ARN: The ARN.
---
--- -   FORM_FACTOR: The form factor (for example, phone or tablet).
---
--- -   MANUFACTURER: The manufacturer.
---
--- -   PLATFORM: The platform (for example, Android or iOS).
---
-imType :: Lens' IncompatibilityMessage (Maybe DeviceAttribute)
-imType = lens _imType (\ s a -> s{_imType = a});
-
--- | A message about the incompatibility.
-imMessage :: Lens' IncompatibilityMessage (Maybe Text)
-imMessage = lens _imMessage (\ s a -> s{_imMessage = a});
-
-instance FromJSON IncompatibilityMessage where
-        parseJSON
-          = withObject "IncompatibilityMessage"
-              (\ x ->
-                 IncompatibilityMessage' <$>
-                   (x .:? "type") <*> (x .:? "message"))
-
-instance Hashable IncompatibilityMessage
-
-instance NFData IncompatibilityMessage
-
--- | Represents a device.
---
--- /See:/ 'job' smart constructor.
-data Job = Job'
-    { _jobStatus        :: !(Maybe ExecutionStatus)
-    , _jobCounters      :: !(Maybe Counters)
-    , _jobArn           :: !(Maybe Text)
-    , _jobCreated       :: !(Maybe POSIX)
-    , _jobDevice        :: !(Maybe Device)
-    , _jobStopped       :: !(Maybe POSIX)
-    , _jobResult        :: !(Maybe ExecutionResult)
-    , _jobName          :: !(Maybe Text)
-    , _jobDeviceMinutes :: !(Maybe DeviceMinutes)
-    , _jobType          :: !(Maybe TestType)
-    , _jobMessage       :: !(Maybe Text)
-    , _jobStarted       :: !(Maybe POSIX)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Job' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'jobStatus'
---
--- * 'jobCounters'
---
--- * 'jobArn'
---
--- * 'jobCreated'
---
--- * 'jobDevice'
---
--- * 'jobStopped'
---
--- * 'jobResult'
---
--- * 'jobName'
---
--- * 'jobDeviceMinutes'
---
--- * 'jobType'
---
--- * 'jobMessage'
---
--- * 'jobStarted'
-job
-    :: Job
-job =
-    Job'
-    { _jobStatus = Nothing
-    , _jobCounters = Nothing
-    , _jobArn = Nothing
-    , _jobCreated = Nothing
-    , _jobDevice = Nothing
-    , _jobStopped = Nothing
-    , _jobResult = Nothing
-    , _jobName = Nothing
-    , _jobDeviceMinutes = Nothing
-    , _jobType = Nothing
-    , _jobMessage = Nothing
-    , _jobStarted = Nothing
-    }
-
--- | The job\'s status.
---
--- Allowed values include:
---
--- -   PENDING: A pending status.
---
--- -   PENDING_CONCURRENCY: A pending concurrency status.
---
--- -   PENDING_DEVICE: A pending device status.
---
--- -   PROCESSING: A processing status.
---
--- -   SCHEDULING: A scheduling status.
---
--- -   PREPARING: A preparing status.
---
--- -   RUNNING: A running status.
---
--- -   COMPLETED: A completed status.
---
--- -   STOPPING: A stopping status.
---
-jobStatus :: Lens' Job (Maybe ExecutionStatus)
-jobStatus = lens _jobStatus (\ s a -> s{_jobStatus = a});
-
--- | The job\'s result counters.
-jobCounters :: Lens' Job (Maybe Counters)
-jobCounters = lens _jobCounters (\ s a -> s{_jobCounters = a});
-
--- | The job\'s ARN.
-jobArn :: Lens' Job (Maybe Text)
-jobArn = lens _jobArn (\ s a -> s{_jobArn = a});
-
--- | When the job was created.
-jobCreated :: Lens' Job (Maybe UTCTime)
-jobCreated = lens _jobCreated (\ s a -> s{_jobCreated = a}) . mapping _Time;
-
--- | Undocumented member.
-jobDevice :: Lens' Job (Maybe Device)
-jobDevice = lens _jobDevice (\ s a -> s{_jobDevice = a});
-
--- | The job\'s stop time.
-jobStopped :: Lens' Job (Maybe UTCTime)
-jobStopped = lens _jobStopped (\ s a -> s{_jobStopped = a}) . mapping _Time;
-
--- | The job\'s result.
---
--- Allowed values include:
---
--- -   PENDING: A pending condition.
---
--- -   PASSED: A passing condition.
---
--- -   WARNED: A warning condition.
---
--- -   FAILED: A failed condition.
---
--- -   SKIPPED: A skipped condition.
---
--- -   ERRORED: An error condition.
---
--- -   STOPPED: A stopped condition.
---
-jobResult :: Lens' Job (Maybe ExecutionResult)
-jobResult = lens _jobResult (\ s a -> s{_jobResult = a});
-
--- | The job\'s name.
-jobName :: Lens' Job (Maybe Text)
-jobName = lens _jobName (\ s a -> s{_jobName = a});
-
--- | Represents the total (metered or unmetered) minutes used by the job.
-jobDeviceMinutes :: Lens' Job (Maybe DeviceMinutes)
-jobDeviceMinutes = lens _jobDeviceMinutes (\ s a -> s{_jobDeviceMinutes = a});
-
--- | The job\'s type.
---
--- Allowed values include the following:
---
--- -   BUILTIN_FUZZ: The built-in fuzz type.
---
--- -   BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time.
---
--- -   APPIUM_JAVA_JUNIT: The Appium Java JUnit type.
---
--- -   APPIUM_JAVA_TESTNG: The Appium Java TestNG type.
---
--- -   APPIUM_PYTHON: The Appium Python type.
---
--- -   APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps.
---
--- -   APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps.
---
--- -   APPIUM_WEB_PYTHON: The Appium Python type for Web apps.
---
--- -   CALABASH: The Calabash type.
---
--- -   INSTRUMENTATION: The Instrumentation type.
---
--- -   UIAUTOMATION: The uiautomation type.
---
--- -   UIAUTOMATOR: The uiautomator type.
---
--- -   XCTEST: The XCode test type.
---
--- -   XCTEST_UI: The XCode UI test type.
---
-jobType :: Lens' Job (Maybe TestType)
-jobType = lens _jobType (\ s a -> s{_jobType = a});
-
--- | A message about the job\'s result.
-jobMessage :: Lens' Job (Maybe Text)
-jobMessage = lens _jobMessage (\ s a -> s{_jobMessage = a});
-
--- | The job\'s start time.
-jobStarted :: Lens' Job (Maybe UTCTime)
-jobStarted = lens _jobStarted (\ s a -> s{_jobStarted = a}) . mapping _Time;
-
-instance FromJSON Job where
-        parseJSON
-          = withObject "Job"
-              (\ x ->
-                 Job' <$>
-                   (x .:? "status") <*> (x .:? "counters") <*>
-                     (x .:? "arn")
-                     <*> (x .:? "created")
-                     <*> (x .:? "device")
-                     <*> (x .:? "stopped")
-                     <*> (x .:? "result")
-                     <*> (x .:? "name")
-                     <*> (x .:? "deviceMinutes")
-                     <*> (x .:? "type")
-                     <*> (x .:? "message")
-                     <*> (x .:? "started"))
-
-instance Hashable Job
-
-instance NFData Job
-
--- | Represents a latitude and longitude pair, expressed in geographic coordinate system degrees (for example 47.6204, -122.3491).
---
--- Elevation is currently not supported.
---
--- /See:/ 'location' smart constructor.
-data Location = Location'
-    { _lLatitude  :: !Double
-    , _lLongitude :: !Double
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Location' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lLatitude'
---
--- * 'lLongitude'
-location
-    :: Double -- ^ 'lLatitude'
-    -> Double -- ^ 'lLongitude'
-    -> Location
-location pLatitude_ pLongitude_ =
-    Location'
-    { _lLatitude = pLatitude_
-    , _lLongitude = pLongitude_
-    }
-
--- | The latitude.
-lLatitude :: Lens' Location Double
-lLatitude = lens _lLatitude (\ s a -> s{_lLatitude = a});
-
--- | The longitude.
-lLongitude :: Lens' Location Double
-lLongitude = lens _lLongitude (\ s a -> s{_lLongitude = a});
-
-instance Hashable Location
-
-instance NFData Location
-
-instance ToJSON Location where
-        toJSON Location'{..}
-          = object
-              (catMaybes
-                 [Just ("latitude" .= _lLatitude),
-                  Just ("longitude" .= _lLongitude)])
-
--- | A number representing the monetary amount for an offering or transaction.
---
--- /See:/ 'monetaryAmount' smart constructor.
-data MonetaryAmount = MonetaryAmount'
-    { _maAmount       :: !(Maybe Double)
-    , _maCurrencyCode :: !(Maybe CurrencyCode)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MonetaryAmount' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'maAmount'
---
--- * 'maCurrencyCode'
-monetaryAmount
-    :: MonetaryAmount
-monetaryAmount =
-    MonetaryAmount'
-    { _maAmount = Nothing
-    , _maCurrencyCode = Nothing
-    }
-
--- | The numerical amount of an offering or transaction.
-maAmount :: Lens' MonetaryAmount (Maybe Double)
-maAmount = lens _maAmount (\ s a -> s{_maAmount = a});
-
--- | The currency code of a monetary amount. For example, 'USD' means \"U.S. dollars.\"
-maCurrencyCode :: Lens' MonetaryAmount (Maybe CurrencyCode)
-maCurrencyCode = lens _maCurrencyCode (\ s a -> s{_maCurrencyCode = a});
-
-instance FromJSON MonetaryAmount where
-        parseJSON
-          = withObject "MonetaryAmount"
-              (\ x ->
-                 MonetaryAmount' <$>
-                   (x .:? "amount") <*> (x .:? "currencyCode"))
-
-instance Hashable MonetaryAmount
-
-instance NFData MonetaryAmount
-
--- | Represents the metadata of a device offering.
---
--- /See:/ 'offering' smart constructor.
-data Offering = Offering'
-    { _oPlatform         :: !(Maybe DevicePlatform)
-    , _oId               :: !(Maybe Text)
-    , _oRecurringCharges :: !(Maybe [RecurringCharge])
-    , _oType             :: !(Maybe OfferingType)
-    , _oDescription      :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Offering' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'oPlatform'
---
--- * 'oId'
---
--- * 'oRecurringCharges'
---
--- * 'oType'
---
--- * 'oDescription'
-offering
-    :: Offering
-offering =
-    Offering'
-    { _oPlatform = Nothing
-    , _oId = Nothing
-    , _oRecurringCharges = Nothing
-    , _oType = Nothing
-    , _oDescription = Nothing
-    }
-
--- | The platform of the device (e.g., ANDROID or IOS).
-oPlatform :: Lens' Offering (Maybe DevicePlatform)
-oPlatform = lens _oPlatform (\ s a -> s{_oPlatform = a});
-
--- | The ID that corresponds to a device offering.
-oId :: Lens' Offering (Maybe Text)
-oId = lens _oId (\ s a -> s{_oId = a});
-
--- | Specifies whether there are recurring charges for the offering.
-oRecurringCharges :: Lens' Offering [RecurringCharge]
-oRecurringCharges = lens _oRecurringCharges (\ s a -> s{_oRecurringCharges = a}) . _Default . _Coerce;
-
--- | The type of offering (e.g., \"RECURRING\") for a device.
-oType :: Lens' Offering (Maybe OfferingType)
-oType = lens _oType (\ s a -> s{_oType = a});
-
--- | A string describing the offering.
-oDescription :: Lens' Offering (Maybe Text)
-oDescription = lens _oDescription (\ s a -> s{_oDescription = a});
-
-instance FromJSON Offering where
-        parseJSON
-          = withObject "Offering"
-              (\ x ->
-                 Offering' <$>
-                   (x .:? "platform") <*> (x .:? "id") <*>
-                     (x .:? "recurringCharges" .!= mempty)
-                     <*> (x .:? "type")
-                     <*> (x .:? "description"))
-
-instance Hashable Offering
-
-instance NFData Offering
-
--- | The status of the offering.
---
--- /See:/ 'offeringStatus' smart constructor.
-data OfferingStatus = OfferingStatus'
-    { _osEffectiveOn :: !(Maybe POSIX)
-    , _osOffering    :: !(Maybe Offering)
-    , _osQuantity    :: !(Maybe Int)
-    , _osType        :: !(Maybe OfferingTransactionType)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OfferingStatus' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'osEffectiveOn'
---
--- * 'osOffering'
---
--- * 'osQuantity'
---
--- * 'osType'
-offeringStatus
-    :: OfferingStatus
-offeringStatus =
-    OfferingStatus'
-    { _osEffectiveOn = Nothing
-    , _osOffering = Nothing
-    , _osQuantity = Nothing
-    , _osType = Nothing
-    }
-
--- | The date on which the offering is effective.
-osEffectiveOn :: Lens' OfferingStatus (Maybe UTCTime)
-osEffectiveOn = lens _osEffectiveOn (\ s a -> s{_osEffectiveOn = a}) . mapping _Time;
-
--- | Represents the metadata of an offering status.
-osOffering :: Lens' OfferingStatus (Maybe Offering)
-osOffering = lens _osOffering (\ s a -> s{_osOffering = a});
-
--- | The number of available devices in the offering.
-osQuantity :: Lens' OfferingStatus (Maybe Int)
-osQuantity = lens _osQuantity (\ s a -> s{_osQuantity = a});
-
--- | The type specified for the offering status.
-osType :: Lens' OfferingStatus (Maybe OfferingTransactionType)
-osType = lens _osType (\ s a -> s{_osType = a});
-
-instance FromJSON OfferingStatus where
-        parseJSON
-          = withObject "OfferingStatus"
-              (\ x ->
-                 OfferingStatus' <$>
-                   (x .:? "effectiveOn") <*> (x .:? "offering") <*>
-                     (x .:? "quantity")
-                     <*> (x .:? "type"))
-
-instance Hashable OfferingStatus
-
-instance NFData OfferingStatus
-
--- | Represents the metadata of an offering transaction.
---
--- /See:/ 'offeringTransaction' smart constructor.
-data OfferingTransaction = OfferingTransaction'
-    { _otOfferingStatus :: !(Maybe OfferingStatus)
-    , _otCost           :: !(Maybe MonetaryAmount)
-    , _otTransactionId  :: !(Maybe Text)
-    , _otCreatedOn      :: !(Maybe POSIX)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OfferingTransaction' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'otOfferingStatus'
---
--- * 'otCost'
---
--- * 'otTransactionId'
---
--- * 'otCreatedOn'
-offeringTransaction
-    :: OfferingTransaction
-offeringTransaction =
-    OfferingTransaction'
-    { _otOfferingStatus = Nothing
-    , _otCost = Nothing
-    , _otTransactionId = Nothing
-    , _otCreatedOn = Nothing
-    }
-
--- | The status of an offering transaction.
-otOfferingStatus :: Lens' OfferingTransaction (Maybe OfferingStatus)
-otOfferingStatus = lens _otOfferingStatus (\ s a -> s{_otOfferingStatus = a});
-
--- | The cost of an offering transaction.
-otCost :: Lens' OfferingTransaction (Maybe MonetaryAmount)
-otCost = lens _otCost (\ s a -> s{_otCost = a});
-
--- | The transaction ID of the offering transaction.
-otTransactionId :: Lens' OfferingTransaction (Maybe Text)
-otTransactionId = lens _otTransactionId (\ s a -> s{_otTransactionId = a});
-
--- | The date on which an offering transaction was created.
-otCreatedOn :: Lens' OfferingTransaction (Maybe UTCTime)
-otCreatedOn = lens _otCreatedOn (\ s a -> s{_otCreatedOn = a}) . mapping _Time;
-
-instance FromJSON OfferingTransaction where
-        parseJSON
-          = withObject "OfferingTransaction"
-              (\ x ->
-                 OfferingTransaction' <$>
-                   (x .:? "offeringStatus") <*> (x .:? "cost") <*>
-                     (x .:? "transactionId")
-                     <*> (x .:? "createdOn"))
-
-instance Hashable OfferingTransaction
-
-instance NFData OfferingTransaction
-
--- | Represents a specific warning or failure.
---
--- /See:/ 'problem' smart constructor.
-data Problem = Problem'
-    { _pDevice  :: !(Maybe Device)
-    , _pTest    :: !(Maybe ProblemDetail)
-    , _pResult  :: !(Maybe ExecutionResult)
-    , _pRun     :: !(Maybe ProblemDetail)
-    , _pJob     :: !(Maybe ProblemDetail)
-    , _pMessage :: !(Maybe Text)
-    , _pSuite   :: !(Maybe ProblemDetail)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Problem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pDevice'
---
--- * 'pTest'
---
--- * 'pResult'
---
--- * 'pRun'
---
--- * 'pJob'
---
--- * 'pMessage'
---
--- * 'pSuite'
-problem
-    :: Problem
-problem =
-    Problem'
-    { _pDevice = Nothing
-    , _pTest = Nothing
-    , _pResult = Nothing
-    , _pRun = Nothing
-    , _pJob = Nothing
-    , _pMessage = Nothing
-    , _pSuite = Nothing
-    }
-
--- | Information about the associated device.
-pDevice :: Lens' Problem (Maybe Device)
-pDevice = lens _pDevice (\ s a -> s{_pDevice = a});
-
--- | Information about the associated test.
-pTest :: Lens' Problem (Maybe ProblemDetail)
-pTest = lens _pTest (\ s a -> s{_pTest = a});
-
--- | The problem\'s result.
---
--- Allowed values include:
---
--- -   PENDING: A pending condition.
---
--- -   PASSED: A passing condition.
---
--- -   WARNED: A warning condition.
---
--- -   FAILED: A failed condition.
---
--- -   SKIPPED: A skipped condition.
---
--- -   ERRORED: An error condition.
---
--- -   STOPPED: A stopped condition.
---
-pResult :: Lens' Problem (Maybe ExecutionResult)
-pResult = lens _pResult (\ s a -> s{_pResult = a});
-
--- | Information about the associated run.
-pRun :: Lens' Problem (Maybe ProblemDetail)
-pRun = lens _pRun (\ s a -> s{_pRun = a});
-
--- | Information about the associated job.
-pJob :: Lens' Problem (Maybe ProblemDetail)
-pJob = lens _pJob (\ s a -> s{_pJob = a});
-
--- | A message about the problem\'s result.
-pMessage :: Lens' Problem (Maybe Text)
-pMessage = lens _pMessage (\ s a -> s{_pMessage = a});
-
--- | Information about the associated suite.
-pSuite :: Lens' Problem (Maybe ProblemDetail)
-pSuite = lens _pSuite (\ s a -> s{_pSuite = a});
-
-instance FromJSON Problem where
-        parseJSON
-          = withObject "Problem"
-              (\ x ->
-                 Problem' <$>
-                   (x .:? "device") <*> (x .:? "test") <*>
-                     (x .:? "result")
-                     <*> (x .:? "run")
-                     <*> (x .:? "job")
-                     <*> (x .:? "message")
-                     <*> (x .:? "suite"))
-
-instance Hashable Problem
-
-instance NFData Problem
-
--- | Information about a problem detail.
---
--- /See:/ 'problemDetail' smart constructor.
-data ProblemDetail = ProblemDetail'
-    { _pdArn  :: !(Maybe Text)
-    , _pdName :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ProblemDetail' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pdArn'
---
--- * 'pdName'
-problemDetail
-    :: ProblemDetail
-problemDetail =
-    ProblemDetail'
-    { _pdArn = Nothing
-    , _pdName = Nothing
-    }
-
--- | The problem detail\'s ARN.
-pdArn :: Lens' ProblemDetail (Maybe Text)
-pdArn = lens _pdArn (\ s a -> s{_pdArn = a});
-
--- | The problem detail\'s name.
-pdName :: Lens' ProblemDetail (Maybe Text)
-pdName = lens _pdName (\ s a -> s{_pdName = a});
-
-instance FromJSON ProblemDetail where
-        parseJSON
-          = withObject "ProblemDetail"
-              (\ x ->
-                 ProblemDetail' <$> (x .:? "arn") <*> (x .:? "name"))
-
-instance Hashable ProblemDetail
-
-instance NFData ProblemDetail
-
--- | Represents an operating-system neutral workspace for running and managing tests.
---
--- /See:/ 'project' smart constructor.
-data Project = Project'
-    { _pArn     :: !(Maybe Text)
-    , _pCreated :: !(Maybe POSIX)
-    , _pName    :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Project' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pArn'
---
--- * 'pCreated'
---
--- * 'pName'
-project
-    :: Project
-project =
-    Project'
-    { _pArn = Nothing
-    , _pCreated = Nothing
-    , _pName = Nothing
-    }
-
--- | The project\'s ARN.
-pArn :: Lens' Project (Maybe Text)
-pArn = lens _pArn (\ s a -> s{_pArn = a});
-
--- | When the project was created.
-pCreated :: Lens' Project (Maybe UTCTime)
-pCreated = lens _pCreated (\ s a -> s{_pCreated = a}) . mapping _Time;
-
--- | The project\'s name.
-pName :: Lens' Project (Maybe Text)
-pName = lens _pName (\ s a -> s{_pName = a});
-
-instance FromJSON Project where
-        parseJSON
-          = withObject "Project"
-              (\ x ->
-                 Project' <$>
-                   (x .:? "arn") <*> (x .:? "created") <*>
-                     (x .:? "name"))
-
-instance Hashable Project
-
-instance NFData Project
-
--- | Represents the set of radios and their states on a device. Examples of radios include Wi-Fi, GPS, Bluetooth, and NFC.
---
--- /See:/ 'radios' smart constructor.
-data Radios = Radios'
-    { _rNfc       :: !(Maybe Bool)
-    , _rGps       :: !(Maybe Bool)
-    , _rBluetooth :: !(Maybe Bool)
-    , _rWifi      :: !(Maybe Bool)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Radios' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rNfc'
---
--- * 'rGps'
---
--- * 'rBluetooth'
---
--- * 'rWifi'
-radios
-    :: Radios
-radios =
-    Radios'
-    { _rNfc = Nothing
-    , _rGps = Nothing
-    , _rBluetooth = Nothing
-    , _rWifi = Nothing
-    }
-
--- | True if NFC is enabled at the beginning of the test; otherwise, false.
-rNfc :: Lens' Radios (Maybe Bool)
-rNfc = lens _rNfc (\ s a -> s{_rNfc = a});
-
--- | True if GPS is enabled at the beginning of the test; otherwise, false.
-rGps :: Lens' Radios (Maybe Bool)
-rGps = lens _rGps (\ s a -> s{_rGps = a});
-
--- | True if Bluetooth is enabled at the beginning of the test; otherwise, false.
-rBluetooth :: Lens' Radios (Maybe Bool)
-rBluetooth = lens _rBluetooth (\ s a -> s{_rBluetooth = a});
-
--- | True if Wi-Fi is enabled at the beginning of the test; otherwise, false.
-rWifi :: Lens' Radios (Maybe Bool)
-rWifi = lens _rWifi (\ s a -> s{_rWifi = a});
-
-instance Hashable Radios
-
-instance NFData Radios
-
-instance ToJSON Radios where
-        toJSON Radios'{..}
-          = object
-              (catMaybes
-                 [("nfc" .=) <$> _rNfc, ("gps" .=) <$> _rGps,
-                  ("bluetooth" .=) <$> _rBluetooth,
-                  ("wifi" .=) <$> _rWifi])
-
--- | Specifies whether charges for devices will be recurring.
---
--- /See:/ 'recurringCharge' smart constructor.
-data RecurringCharge = RecurringCharge'
-    { _rcFrequency :: !(Maybe RecurringChargeFrequency)
-    , _rcCost      :: !(Maybe MonetaryAmount)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RecurringCharge' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rcFrequency'
---
--- * 'rcCost'
-recurringCharge
-    :: RecurringCharge
-recurringCharge =
-    RecurringCharge'
-    { _rcFrequency = Nothing
-    , _rcCost = Nothing
-    }
-
--- | The frequency in which charges will recur.
-rcFrequency :: Lens' RecurringCharge (Maybe RecurringChargeFrequency)
-rcFrequency = lens _rcFrequency (\ s a -> s{_rcFrequency = a});
-
--- | The cost of the recurring charge.
-rcCost :: Lens' RecurringCharge (Maybe MonetaryAmount)
-rcCost = lens _rcCost (\ s a -> s{_rcCost = a});
-
-instance FromJSON RecurringCharge where
-        parseJSON
-          = withObject "RecurringCharge"
-              (\ x ->
-                 RecurringCharge' <$>
-                   (x .:? "frequency") <*> (x .:? "cost"))
-
-instance Hashable RecurringCharge
-
-instance NFData RecurringCharge
-
--- | Represents information about the remote access session.
---
--- /See:/ 'remoteAccessSession' smart constructor.
-data RemoteAccessSession = RemoteAccessSession'
-    { _rasBillingMethod :: !(Maybe BillingMethod)
-    , _rasStatus        :: !(Maybe ExecutionStatus)
-    , _rasArn           :: !(Maybe Text)
-    , _rasCreated       :: !(Maybe POSIX)
-    , _rasDevice        :: !(Maybe Device)
-    , _rasStopped       :: !(Maybe POSIX)
-    , _rasResult        :: !(Maybe ExecutionResult)
-    , _rasName          :: !(Maybe Text)
-    , _rasDeviceMinutes :: !(Maybe DeviceMinutes)
-    , _rasEndpoint      :: !(Maybe Text)
-    , _rasMessage       :: !(Maybe Text)
-    , _rasStarted       :: !(Maybe POSIX)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RemoteAccessSession' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rasBillingMethod'
---
--- * 'rasStatus'
---
--- * 'rasArn'
---
--- * 'rasCreated'
---
--- * 'rasDevice'
---
--- * 'rasStopped'
---
--- * 'rasResult'
---
--- * 'rasName'
---
--- * 'rasDeviceMinutes'
---
--- * 'rasEndpoint'
---
--- * 'rasMessage'
---
--- * 'rasStarted'
-remoteAccessSession
-    :: RemoteAccessSession
-remoteAccessSession =
-    RemoteAccessSession'
-    { _rasBillingMethod = Nothing
-    , _rasStatus = Nothing
-    , _rasArn = Nothing
-    , _rasCreated = Nothing
-    , _rasDevice = Nothing
-    , _rasStopped = Nothing
-    , _rasResult = Nothing
-    , _rasName = Nothing
-    , _rasDeviceMinutes = Nothing
-    , _rasEndpoint = Nothing
-    , _rasMessage = Nothing
-    , _rasStarted = Nothing
-    }
-
--- | The billing method of the remote access session. Possible values include 'METERED' or 'UNMETERED'. For more information about metered devices, see <http://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html#welcome-terminology AWS Device Farm terminology>.\"
-rasBillingMethod :: Lens' RemoteAccessSession (Maybe BillingMethod)
-rasBillingMethod = lens _rasBillingMethod (\ s a -> s{_rasBillingMethod = a});
-
--- | The status of the remote access session. Can be any of the following:
---
--- -   PENDING: A pending status.
---
--- -   PENDING_CONCURRENCY: A pending concurrency status.
---
--- -   PENDING_DEVICE: A pending device status.
---
--- -   PROCESSING: A processing status.
---
--- -   SCHEDULING: A scheduling status.
---
--- -   PREPARING: A preparing status.
---
--- -   RUNNING: A running status.
---
--- -   COMPLETED: A completed status.
---
--- -   STOPPING: A stopping status.
---
-rasStatus :: Lens' RemoteAccessSession (Maybe ExecutionStatus)
-rasStatus = lens _rasStatus (\ s a -> s{_rasStatus = a});
-
--- | The Amazon Resource Name (ARN) of the remote access session.
-rasArn :: Lens' RemoteAccessSession (Maybe Text)
-rasArn = lens _rasArn (\ s a -> s{_rasArn = a});
-
--- | The date and time the remote access session was created.
-rasCreated :: Lens' RemoteAccessSession (Maybe UTCTime)
-rasCreated = lens _rasCreated (\ s a -> s{_rasCreated = a}) . mapping _Time;
-
--- | Undocumented member.
-rasDevice :: Lens' RemoteAccessSession (Maybe Device)
-rasDevice = lens _rasDevice (\ s a -> s{_rasDevice = a});
-
--- | The date and time the remote access session was stopped.
-rasStopped :: Lens' RemoteAccessSession (Maybe UTCTime)
-rasStopped = lens _rasStopped (\ s a -> s{_rasStopped = a}) . mapping _Time;
-
--- | The result of the remote access session. Can be any of the following:
---
--- -   PENDING: A pending condition.
---
--- -   PASSED: A passing condition.
---
--- -   WARNED: A warning condition.
---
--- -   FAILED: A failed condition.
---
--- -   SKIPPED: A skipped condition.
---
--- -   ERRORED: An error condition.
---
--- -   STOPPED: A stopped condition.
---
-rasResult :: Lens' RemoteAccessSession (Maybe ExecutionResult)
-rasResult = lens _rasResult (\ s a -> s{_rasResult = a});
-
--- | The name of the remote access session.
-rasName :: Lens' RemoteAccessSession (Maybe Text)
-rasName = lens _rasName (\ s a -> s{_rasName = a});
-
--- | Undocumented member.
-rasDeviceMinutes :: Lens' RemoteAccessSession (Maybe DeviceMinutes)
-rasDeviceMinutes = lens _rasDeviceMinutes (\ s a -> s{_rasDeviceMinutes = a});
-
--- | The endpoint for the remote access sesssion.
-rasEndpoint :: Lens' RemoteAccessSession (Maybe Text)
-rasEndpoint = lens _rasEndpoint (\ s a -> s{_rasEndpoint = a});
-
--- | A message about the remote access session.
-rasMessage :: Lens' RemoteAccessSession (Maybe Text)
-rasMessage = lens _rasMessage (\ s a -> s{_rasMessage = a});
-
--- | The date and time the remote access session was started.
-rasStarted :: Lens' RemoteAccessSession (Maybe UTCTime)
-rasStarted = lens _rasStarted (\ s a -> s{_rasStarted = a}) . mapping _Time;
-
-instance FromJSON RemoteAccessSession where
-        parseJSON
-          = withObject "RemoteAccessSession"
-              (\ x ->
-                 RemoteAccessSession' <$>
-                   (x .:? "billingMethod") <*> (x .:? "status") <*>
-                     (x .:? "arn")
-                     <*> (x .:? "created")
-                     <*> (x .:? "device")
-                     <*> (x .:? "stopped")
-                     <*> (x .:? "result")
-                     <*> (x .:? "name")
-                     <*> (x .:? "deviceMinutes")
-                     <*> (x .:? "endpoint")
-                     <*> (x .:? "message")
-                     <*> (x .:? "started"))
-
-instance Hashable RemoteAccessSession
-
-instance NFData RemoteAccessSession
-
--- | Represents the screen resolution of a device in height and width, expressed in pixels.
---
--- /See:/ 'resolution' smart constructor.
-data Resolution = Resolution'
-    { _rHeight :: !(Maybe Int)
-    , _rWidth  :: !(Maybe Int)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Resolution' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rHeight'
---
--- * 'rWidth'
-resolution
-    :: Resolution
-resolution =
-    Resolution'
-    { _rHeight = Nothing
-    , _rWidth = Nothing
-    }
-
--- | The screen resolution\'s height, expressed in pixels.
-rHeight :: Lens' Resolution (Maybe Int)
-rHeight = lens _rHeight (\ s a -> s{_rHeight = a});
-
--- | The screen resolution\'s width, expressed in pixels.
-rWidth :: Lens' Resolution (Maybe Int)
-rWidth = lens _rWidth (\ s a -> s{_rWidth = a});
-
-instance FromJSON Resolution where
-        parseJSON
-          = withObject "Resolution"
-              (\ x ->
-                 Resolution' <$> (x .:? "height") <*> (x .:? "width"))
-
-instance Hashable Resolution
-
-instance NFData Resolution
-
--- | Represents a condition for a device pool.
---
--- /See:/ 'rule' smart constructor.
-data Rule = Rule'
-    { _rAttribute :: !(Maybe DeviceAttribute)
-    , _rOperator  :: !(Maybe RuleOperator)
-    , _rValue     :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Rule' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rAttribute'
---
--- * 'rOperator'
---
--- * 'rValue'
-rule
-    :: Rule
-rule =
-    Rule'
-    { _rAttribute = Nothing
-    , _rOperator = Nothing
-    , _rValue = Nothing
-    }
-
--- | The rule\'s stringified attribute. For example, specify the value as '\"\\\"abc\\\"\"'.
---
--- Allowed values include:
---
--- -   ARN: The ARN.
---
--- -   FORM_FACTOR: The form factor (for example, phone or tablet).
---
--- -   MANUFACTURER: The manufacturer.
---
--- -   PLATFORM: The platform (for example, Android or iOS).
---
-rAttribute :: Lens' Rule (Maybe DeviceAttribute)
-rAttribute = lens _rAttribute (\ s a -> s{_rAttribute = a});
-
--- | The rule\'s operator.
---
--- -   EQUALS: The equals operator.
---
--- -   GREATER_THAN: The greater-than operator.
---
--- -   IN: The in operator.
---
--- -   LESS_THAN: The less-than operator.
---
--- -   NOT_IN: The not-in operator.
---
-rOperator :: Lens' Rule (Maybe RuleOperator)
-rOperator = lens _rOperator (\ s a -> s{_rOperator = a});
-
--- | The rule\'s value.
-rValue :: Lens' Rule (Maybe Text)
-rValue = lens _rValue (\ s a -> s{_rValue = a});
-
-instance FromJSON Rule where
-        parseJSON
-          = withObject "Rule"
-              (\ x ->
-                 Rule' <$>
-                   (x .:? "attribute") <*> (x .:? "operator") <*>
-                     (x .:? "value"))
-
-instance Hashable Rule
-
-instance NFData Rule
-
-instance ToJSON Rule where
-        toJSON Rule'{..}
-          = object
-              (catMaybes
-                 [("attribute" .=) <$> _rAttribute,
-                  ("operator" .=) <$> _rOperator,
-                  ("value" .=) <$> _rValue])
-
--- | Represents an app on a set of devices with a specific test and configuration.
---
--- /See:/ 'run' smart constructor.
-data Run = Run'
-    { _runBillingMethod :: !(Maybe BillingMethod)
-    , _runStatus        :: !(Maybe ExecutionStatus)
-    , _runCounters      :: !(Maybe Counters)
-    , _runPlatform      :: !(Maybe DevicePlatform)
-    , _runArn           :: !(Maybe Text)
-    , _runCreated       :: !(Maybe POSIX)
-    , _runStopped       :: !(Maybe POSIX)
-    , _runResult        :: !(Maybe ExecutionResult)
-    , _runCompletedJobs :: !(Maybe Int)
-    , _runName          :: !(Maybe Text)
-    , _runDeviceMinutes :: !(Maybe DeviceMinutes)
-    , _runType          :: !(Maybe TestType)
-    , _runMessage       :: !(Maybe Text)
-    , _runTotalJobs     :: !(Maybe Int)
-    , _runStarted       :: !(Maybe POSIX)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Run' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'runBillingMethod'
---
--- * 'runStatus'
---
--- * 'runCounters'
---
--- * 'runPlatform'
---
--- * 'runArn'
---
--- * 'runCreated'
---
--- * 'runStopped'
---
--- * 'runResult'
---
--- * 'runCompletedJobs'
---
--- * 'runName'
---
--- * 'runDeviceMinutes'
---
--- * 'runType'
---
--- * 'runMessage'
---
--- * 'runTotalJobs'
---
--- * 'runStarted'
-run
-    :: Run
-run =
-    Run'
-    { _runBillingMethod = Nothing
-    , _runStatus = Nothing
-    , _runCounters = Nothing
-    , _runPlatform = Nothing
-    , _runArn = Nothing
-    , _runCreated = Nothing
-    , _runStopped = Nothing
-    , _runResult = Nothing
-    , _runCompletedJobs = Nothing
-    , _runName = Nothing
-    , _runDeviceMinutes = Nothing
-    , _runType = Nothing
-    , _runMessage = Nothing
-    , _runTotalJobs = Nothing
-    , _runStarted = Nothing
-    }
-
--- | Specifies the billing method for a test run: 'metered' or 'unmetered'. If the parameter is not specified, the default value is 'unmetered'.
-runBillingMethod :: Lens' Run (Maybe BillingMethod)
-runBillingMethod = lens _runBillingMethod (\ s a -> s{_runBillingMethod = a});
-
--- | The run\'s status.
---
--- Allowed values include:
---
--- -   PENDING: A pending status.
---
--- -   PENDING_CONCURRENCY: A pending concurrency status.
---
--- -   PENDING_DEVICE: A pending device status.
---
--- -   PROCESSING: A processing status.
---
--- -   SCHEDULING: A scheduling status.
---
--- -   PREPARING: A preparing status.
---
--- -   RUNNING: A running status.
---
--- -   COMPLETED: A completed status.
---
--- -   STOPPING: A stopping status.
---
-runStatus :: Lens' Run (Maybe ExecutionStatus)
-runStatus = lens _runStatus (\ s a -> s{_runStatus = a});
-
--- | The run\'s result counters.
-runCounters :: Lens' Run (Maybe Counters)
-runCounters = lens _runCounters (\ s a -> s{_runCounters = a});
-
--- | The run\'s platform.
---
--- Allowed values include:
---
--- -   ANDROID: The Android platform.
---
--- -   IOS: The iOS platform.
---
-runPlatform :: Lens' Run (Maybe DevicePlatform)
-runPlatform = lens _runPlatform (\ s a -> s{_runPlatform = a});
-
--- | The run\'s ARN.
-runArn :: Lens' Run (Maybe Text)
-runArn = lens _runArn (\ s a -> s{_runArn = a});
-
--- | When the run was created.
-runCreated :: Lens' Run (Maybe UTCTime)
-runCreated = lens _runCreated (\ s a -> s{_runCreated = a}) . mapping _Time;
-
--- | The run\'s stop time.
-runStopped :: Lens' Run (Maybe UTCTime)
-runStopped = lens _runStopped (\ s a -> s{_runStopped = a}) . mapping _Time;
-
--- | The run\'s result.
---
--- Allowed values include:
---
--- -   PENDING: A pending condition.
---
--- -   PASSED: A passing condition.
---
--- -   WARNED: A warning condition.
---
--- -   FAILED: A failed condition.
---
--- -   SKIPPED: A skipped condition.
---
--- -   ERRORED: An error condition.
---
--- -   STOPPED: A stopped condition.
---
-runResult :: Lens' Run (Maybe ExecutionResult)
-runResult = lens _runResult (\ s a -> s{_runResult = a});
-
--- | The total number of completed jobs.
-runCompletedJobs :: Lens' Run (Maybe Int)
-runCompletedJobs = lens _runCompletedJobs (\ s a -> s{_runCompletedJobs = a});
-
--- | The run\'s name.
-runName :: Lens' Run (Maybe Text)
-runName = lens _runName (\ s a -> s{_runName = a});
-
--- | Represents the total (metered or unmetered) minutes used by the test run.
-runDeviceMinutes :: Lens' Run (Maybe DeviceMinutes)
-runDeviceMinutes = lens _runDeviceMinutes (\ s a -> s{_runDeviceMinutes = a});
-
--- | The run\'s type.
---
--- Must be one of the following values:
---
--- -   BUILTIN_FUZZ: The built-in fuzz type.
---
--- -   BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time.
---
--- -   APPIUM_JAVA_JUNIT: The Appium Java JUnit type.
---
--- -   APPIUM_JAVA_TESTNG: The Appium Java TestNG type.
---
--- -   APPIUM_PYTHON: The Appium Python type.
---
--- -   APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps.
---
--- -   APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps.
---
--- -   APPIUM_WEB_PYTHON: The Appium Python type for Web apps.
---
--- -   CALABASH: The Calabash type.
---
--- -   INSTRUMENTATION: The Instrumentation type.
---
--- -   UIAUTOMATION: The uiautomation type.
---
--- -   UIAUTOMATOR: The uiautomator type.
---
--- -   XCTEST: The XCode test type.
---
--- -   XCTEST_UI: The XCode UI test type.
---
-runType :: Lens' Run (Maybe TestType)
-runType = lens _runType (\ s a -> s{_runType = a});
-
--- | A message about the run\'s result.
-runMessage :: Lens' Run (Maybe Text)
-runMessage = lens _runMessage (\ s a -> s{_runMessage = a});
-
--- | The total number of jobs for the run.
-runTotalJobs :: Lens' Run (Maybe Int)
-runTotalJobs = lens _runTotalJobs (\ s a -> s{_runTotalJobs = a});
-
--- | The run\'s start time.
-runStarted :: Lens' Run (Maybe UTCTime)
-runStarted = lens _runStarted (\ s a -> s{_runStarted = a}) . mapping _Time;
-
-instance FromJSON Run where
-        parseJSON
-          = withObject "Run"
-              (\ x ->
-                 Run' <$>
-                   (x .:? "billingMethod") <*> (x .:? "status") <*>
-                     (x .:? "counters")
-                     <*> (x .:? "platform")
-                     <*> (x .:? "arn")
-                     <*> (x .:? "created")
-                     <*> (x .:? "stopped")
-                     <*> (x .:? "result")
-                     <*> (x .:? "completedJobs")
-                     <*> (x .:? "name")
-                     <*> (x .:? "deviceMinutes")
-                     <*> (x .:? "type")
-                     <*> (x .:? "message")
-                     <*> (x .:? "totalJobs")
-                     <*> (x .:? "started"))
-
-instance Hashable Run
-
-instance NFData Run
-
--- | Represents a sample of performance data.
---
--- /See:/ 'sample' smart constructor.
-data Sample = Sample'
-    { _samArn  :: !(Maybe Text)
-    , _samUrl  :: !(Maybe Text)
-    , _samType :: !(Maybe SampleType)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Sample' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'samArn'
---
--- * 'samUrl'
---
--- * 'samType'
-sample
-    :: Sample
-sample =
-    Sample'
-    { _samArn = Nothing
-    , _samUrl = Nothing
-    , _samType = Nothing
-    }
-
--- | The sample\'s ARN.
-samArn :: Lens' Sample (Maybe Text)
-samArn = lens _samArn (\ s a -> s{_samArn = a});
-
--- | The pre-signed Amazon S3 URL that can be used with a corresponding GET request to download the sample\'s file.
-samUrl :: Lens' Sample (Maybe Text)
-samUrl = lens _samUrl (\ s a -> s{_samUrl = a});
-
--- | The sample\'s type.
---
--- Must be one of the following values:
---
--- -   CPU: A CPU sample type. This is expressed as the app processing CPU time (including child processes) as reported by process, as a percentage.
---
--- -   MEMORY: A memory usage sample type. This is expressed as the total proportional set size of an app process, in kilobytes.
---
--- -   NATIVE_AVG_DRAWTIME
---
--- -   NATIVE_FPS
---
--- -   NATIVE_FRAMES
---
--- -   NATIVE_MAX_DRAWTIME
---
--- -   NATIVE_MIN_DRAWTIME
---
--- -   OPENGL_AVG_DRAWTIME
---
--- -   OPENGL_FPS
---
--- -   OPENGL_FRAMES
---
--- -   OPENGL_MAX_DRAWTIME
---
--- -   OPENGL_MIN_DRAWTIME
---
--- -   RX
---
--- -   RX_RATE: The total number of bytes per second (TCP and UDP) that are sent, by app process.
---
--- -   THREADS: A threads sample type. This is expressed as the total number of threads per app process.
---
--- -   TX
---
--- -   TX_RATE: The total number of bytes per second (TCP and UDP) that are received, by app process.
---
-samType :: Lens' Sample (Maybe SampleType)
-samType = lens _samType (\ s a -> s{_samType = a});
-
-instance FromJSON Sample where
-        parseJSON
-          = withObject "Sample"
-              (\ x ->
-                 Sample' <$>
-                   (x .:? "arn") <*> (x .:? "url") <*> (x .:? "type"))
-
-instance Hashable Sample
-
-instance NFData Sample
-
--- | Represents the settings for a run. Includes things like location, radio states, auxiliary apps, and network profiles.
---
--- /See:/ 'scheduleRunConfiguration' smart constructor.
-data ScheduleRunConfiguration = ScheduleRunConfiguration'
-    { _srcBillingMethod       :: !(Maybe BillingMethod)
-    , _srcRadios              :: !(Maybe Radios)
-    , _srcLocation            :: !(Maybe Location)
-    , _srcLocale              :: !(Maybe Text)
-    , _srcNetworkProfileARN   :: !(Maybe Text)
-    , _srcExtraDataPackageARN :: !(Maybe Text)
-    , _srcAuxiliaryApps       :: !(Maybe [Text])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ScheduleRunConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'srcBillingMethod'
---
--- * 'srcRadios'
---
--- * 'srcLocation'
---
--- * 'srcLocale'
---
--- * 'srcNetworkProfileARN'
---
--- * 'srcExtraDataPackageARN'
---
--- * 'srcAuxiliaryApps'
-scheduleRunConfiguration
-    :: ScheduleRunConfiguration
-scheduleRunConfiguration =
-    ScheduleRunConfiguration'
-    { _srcBillingMethod = Nothing
-    , _srcRadios = Nothing
-    , _srcLocation = Nothing
-    , _srcLocale = Nothing
-    , _srcNetworkProfileARN = Nothing
-    , _srcExtraDataPackageARN = Nothing
-    , _srcAuxiliaryApps = Nothing
-    }
-
--- | Specifies the billing method for a test run: 'metered' or 'unmetered'. If the parameter is not specified, the default value is 'unmetered'.
-srcBillingMethod :: Lens' ScheduleRunConfiguration (Maybe BillingMethod)
-srcBillingMethod = lens _srcBillingMethod (\ s a -> s{_srcBillingMethod = a});
-
--- | Information about the radio states for the run.
-srcRadios :: Lens' ScheduleRunConfiguration (Maybe Radios)
-srcRadios = lens _srcRadios (\ s a -> s{_srcRadios = a});
-
--- | Information about the location that is used for the run.
-srcLocation :: Lens' ScheduleRunConfiguration (Maybe Location)
-srcLocation = lens _srcLocation (\ s a -> s{_srcLocation = a});
-
--- | Information about the locale that is used for the run.
-srcLocale :: Lens' ScheduleRunConfiguration (Maybe Text)
-srcLocale = lens _srcLocale (\ s a -> s{_srcLocale = a});
-
--- | Reserved for internal use.
-srcNetworkProfileARN :: Lens' ScheduleRunConfiguration (Maybe Text)
-srcNetworkProfileARN = lens _srcNetworkProfileARN (\ s a -> s{_srcNetworkProfileARN = a});
-
--- | The ARN of the extra data for the run. The extra data is a .zip file that AWS Device Farm will extract to external data for Android or the app\'s sandbox for iOS.
-srcExtraDataPackageARN :: Lens' ScheduleRunConfiguration (Maybe Text)
-srcExtraDataPackageARN = lens _srcExtraDataPackageARN (\ s a -> s{_srcExtraDataPackageARN = a});
-
--- | A list of auxiliary apps for the run.
-srcAuxiliaryApps :: Lens' ScheduleRunConfiguration [Text]
-srcAuxiliaryApps = lens _srcAuxiliaryApps (\ s a -> s{_srcAuxiliaryApps = a}) . _Default . _Coerce;
-
-instance Hashable ScheduleRunConfiguration
-
-instance NFData ScheduleRunConfiguration
-
-instance ToJSON ScheduleRunConfiguration where
-        toJSON ScheduleRunConfiguration'{..}
-          = object
-              (catMaybes
-                 [("billingMethod" .=) <$> _srcBillingMethod,
-                  ("radios" .=) <$> _srcRadios,
-                  ("location" .=) <$> _srcLocation,
-                  ("locale" .=) <$> _srcLocale,
-                  ("networkProfileArn" .=) <$> _srcNetworkProfileARN,
-                  ("extraDataPackageArn" .=) <$>
-                    _srcExtraDataPackageARN,
-                  ("auxiliaryApps" .=) <$> _srcAuxiliaryApps])
-
--- | Represents additional test settings.
---
--- /See:/ 'scheduleRunTest' smart constructor.
-data ScheduleRunTest = ScheduleRunTest'
-    { _srtTestPackageARN :: !(Maybe Text)
-    , _srtParameters     :: !(Maybe (Map Text Text))
-    , _srtFilter         :: !(Maybe Text)
-    , _srtType           :: !TestType
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ScheduleRunTest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'srtTestPackageARN'
---
--- * 'srtParameters'
---
--- * 'srtFilter'
---
--- * 'srtType'
-scheduleRunTest
-    :: TestType -- ^ 'srtType'
-    -> ScheduleRunTest
-scheduleRunTest pType_ =
-    ScheduleRunTest'
-    { _srtTestPackageARN = Nothing
-    , _srtParameters = Nothing
-    , _srtFilter = Nothing
-    , _srtType = pType_
-    }
-
--- | The ARN of the uploaded test that will be run.
-srtTestPackageARN :: Lens' ScheduleRunTest (Maybe Text)
-srtTestPackageARN = lens _srtTestPackageARN (\ s a -> s{_srtTestPackageARN = a});
-
--- | The test\'s parameters, such as test framework parameters and fixture settings.
-srtParameters :: Lens' ScheduleRunTest (HashMap Text Text)
-srtParameters = lens _srtParameters (\ s a -> s{_srtParameters = a}) . _Default . _Map;
-
--- | The test\'s filter.
-srtFilter :: Lens' ScheduleRunTest (Maybe Text)
-srtFilter = lens _srtFilter (\ s a -> s{_srtFilter = a});
-
--- | The test\'s type.
---
--- Must be one of the following values:
---
--- -   BUILTIN_FUZZ: The built-in fuzz type.
---
--- -   BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time.
---
--- -   APPIUM_JAVA_JUNIT: The Appium Java JUnit type.
---
--- -   APPIUM_JAVA_TESTNG: The Appium Java TestNG type.
---
--- -   APPIUM_PYTHON: The Appium Python type.
---
--- -   APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps.
---
--- -   APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps.
---
--- -   APPIUM_WEB_PYTHON: The Appium Python type for Web apps.
---
--- -   CALABASH: The Calabash type.
---
--- -   INSTRUMENTATION: The Instrumentation type.
---
--- -   UIAUTOMATION: The uiautomation type.
---
--- -   UIAUTOMATOR: The uiautomator type.
---
--- -   XCTEST: The XCode test type.
---
--- -   XCTEST_UI: The XCode UI test type.
---
-srtType :: Lens' ScheduleRunTest TestType
-srtType = lens _srtType (\ s a -> s{_srtType = a});
-
-instance Hashable ScheduleRunTest
-
-instance NFData ScheduleRunTest
-
-instance ToJSON ScheduleRunTest where
-        toJSON ScheduleRunTest'{..}
-          = object
-              (catMaybes
-                 [("testPackageArn" .=) <$> _srtTestPackageARN,
-                  ("parameters" .=) <$> _srtParameters,
-                  ("filter" .=) <$> _srtFilter,
-                  Just ("type" .= _srtType)])
-
--- | Represents a collection of one or more tests.
---
--- /See:/ 'suite' smart constructor.
-data Suite = Suite'
-    { _sStatus        :: !(Maybe ExecutionStatus)
-    , _sCounters      :: !(Maybe Counters)
-    , _sArn           :: !(Maybe Text)
-    , _sCreated       :: !(Maybe POSIX)
-    , _sStopped       :: !(Maybe POSIX)
-    , _sResult        :: !(Maybe ExecutionResult)
-    , _sName          :: !(Maybe Text)
-    , _sDeviceMinutes :: !(Maybe DeviceMinutes)
-    , _sType          :: !(Maybe TestType)
-    , _sMessage       :: !(Maybe Text)
-    , _sStarted       :: !(Maybe POSIX)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Suite' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sStatus'
---
--- * 'sCounters'
---
--- * 'sArn'
---
--- * 'sCreated'
---
--- * 'sStopped'
---
--- * 'sResult'
---
--- * 'sName'
---
--- * 'sDeviceMinutes'
---
--- * 'sType'
---
--- * 'sMessage'
---
--- * 'sStarted'
-suite
-    :: Suite
-suite =
-    Suite'
-    { _sStatus = Nothing
-    , _sCounters = Nothing
-    , _sArn = Nothing
-    , _sCreated = Nothing
-    , _sStopped = Nothing
-    , _sResult = Nothing
-    , _sName = Nothing
-    , _sDeviceMinutes = Nothing
-    , _sType = Nothing
-    , _sMessage = Nothing
-    , _sStarted = Nothing
-    }
-
--- | The suite\'s status.
---
--- Allowed values include:
---
--- -   PENDING: A pending status.
---
--- -   PENDING_CONCURRENCY: A pending concurrency status.
---
--- -   PENDING_DEVICE: A pending device status.
---
--- -   PROCESSING: A processing status.
---
--- -   SCHEDULING: A scheduling status.
---
--- -   PREPARING: A preparing status.
---
--- -   RUNNING: A running status.
---
--- -   COMPLETED: A completed status.
---
--- -   STOPPING: A stopping status.
---
-sStatus :: Lens' Suite (Maybe ExecutionStatus)
-sStatus = lens _sStatus (\ s a -> s{_sStatus = a});
-
--- | The suite\'s result counters.
-sCounters :: Lens' Suite (Maybe Counters)
-sCounters = lens _sCounters (\ s a -> s{_sCounters = a});
-
--- | The suite\'s ARN.
-sArn :: Lens' Suite (Maybe Text)
-sArn = lens _sArn (\ s a -> s{_sArn = a});
-
--- | When the suite was created.
-sCreated :: Lens' Suite (Maybe UTCTime)
-sCreated = lens _sCreated (\ s a -> s{_sCreated = a}) . mapping _Time;
-
--- | The suite\'s stop time.
-sStopped :: Lens' Suite (Maybe UTCTime)
-sStopped = lens _sStopped (\ s a -> s{_sStopped = a}) . mapping _Time;
-
--- | The suite\'s result.
---
--- Allowed values include:
---
--- -   PENDING: A pending condition.
---
--- -   PASSED: A passing condition.
---
--- -   WARNED: A warning condition.
---
--- -   FAILED: A failed condition.
---
--- -   SKIPPED: A skipped condition.
---
--- -   ERRORED: An error condition.
---
--- -   STOPPED: A stopped condition.
---
-sResult :: Lens' Suite (Maybe ExecutionResult)
-sResult = lens _sResult (\ s a -> s{_sResult = a});
-
--- | The suite\'s name.
-sName :: Lens' Suite (Maybe Text)
-sName = lens _sName (\ s a -> s{_sName = a});
-
--- | Represents the total (metered or unmetered) minutes used by the test suite.
-sDeviceMinutes :: Lens' Suite (Maybe DeviceMinutes)
-sDeviceMinutes = lens _sDeviceMinutes (\ s a -> s{_sDeviceMinutes = a});
-
--- | The suite\'s type.
---
--- Must be one of the following values:
---
--- -   BUILTIN_FUZZ: The built-in fuzz type.
---
--- -   BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time.
---
--- -   APPIUM_JAVA_JUNIT: The Appium Java JUnit type.
---
--- -   APPIUM_JAVA_TESTNG: The Appium Java TestNG type.
---
--- -   APPIUM_PYTHON: The Appium Python type.
---
--- -   APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps.
---
--- -   APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps.
---
--- -   APPIUM_WEB_PYTHON: The Appium Python type for Web apps.
---
--- -   CALABASH: The Calabash type.
---
--- -   INSTRUMENTATION: The Instrumentation type.
---
--- -   UIAUTOMATION: The uiautomation type.
---
--- -   UIAUTOMATOR: The uiautomator type.
---
--- -   XCTEST: The XCode test type.
---
--- -   XCTEST_UI: The XCode UI test type.
---
-sType :: Lens' Suite (Maybe TestType)
-sType = lens _sType (\ s a -> s{_sType = a});
-
--- | A message about the suite\'s result.
-sMessage :: Lens' Suite (Maybe Text)
-sMessage = lens _sMessage (\ s a -> s{_sMessage = a});
-
--- | The suite\'s start time.
-sStarted :: Lens' Suite (Maybe UTCTime)
-sStarted = lens _sStarted (\ s a -> s{_sStarted = a}) . mapping _Time;
-
-instance FromJSON Suite where
-        parseJSON
-          = withObject "Suite"
-              (\ x ->
-                 Suite' <$>
-                   (x .:? "status") <*> (x .:? "counters") <*>
-                     (x .:? "arn")
-                     <*> (x .:? "created")
-                     <*> (x .:? "stopped")
-                     <*> (x .:? "result")
-                     <*> (x .:? "name")
-                     <*> (x .:? "deviceMinutes")
-                     <*> (x .:? "type")
-                     <*> (x .:? "message")
-                     <*> (x .:? "started"))
-
-instance Hashable Suite
-
-instance NFData Suite
-
--- | Represents a condition that is evaluated.
---
--- /See:/ 'test' smart constructor.
-data Test = Test'
-    { _tStatus        :: !(Maybe ExecutionStatus)
-    , _tCounters      :: !(Maybe Counters)
-    , _tArn           :: !(Maybe Text)
-    , _tCreated       :: !(Maybe POSIX)
-    , _tStopped       :: !(Maybe POSIX)
-    , _tResult        :: !(Maybe ExecutionResult)
-    , _tName          :: !(Maybe Text)
-    , _tDeviceMinutes :: !(Maybe DeviceMinutes)
-    , _tType          :: !(Maybe TestType)
-    , _tMessage       :: !(Maybe Text)
-    , _tStarted       :: !(Maybe POSIX)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Test' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tStatus'
---
--- * 'tCounters'
---
--- * 'tArn'
---
--- * 'tCreated'
---
--- * 'tStopped'
---
--- * 'tResult'
---
--- * 'tName'
---
--- * 'tDeviceMinutes'
---
--- * 'tType'
---
--- * 'tMessage'
---
--- * 'tStarted'
-test
-    :: Test
-test =
-    Test'
-    { _tStatus = Nothing
-    , _tCounters = Nothing
-    , _tArn = Nothing
-    , _tCreated = Nothing
-    , _tStopped = Nothing
-    , _tResult = Nothing
-    , _tName = Nothing
-    , _tDeviceMinutes = Nothing
-    , _tType = Nothing
-    , _tMessage = Nothing
-    , _tStarted = Nothing
-    }
-
--- | The test\'s status.
---
--- Allowed values include:
---
--- -   PENDING: A pending status.
---
--- -   PENDING_CONCURRENCY: A pending concurrency status.
---
--- -   PENDING_DEVICE: A pending device status.
---
--- -   PROCESSING: A processing status.
---
--- -   SCHEDULING: A scheduling status.
---
--- -   PREPARING: A preparing status.
---
--- -   RUNNING: A running status.
---
--- -   COMPLETED: A completed status.
---
--- -   STOPPING: A stopping status.
---
-tStatus :: Lens' Test (Maybe ExecutionStatus)
-tStatus = lens _tStatus (\ s a -> s{_tStatus = a});
-
--- | The test\'s result counters.
-tCounters :: Lens' Test (Maybe Counters)
-tCounters = lens _tCounters (\ s a -> s{_tCounters = a});
-
--- | The test\'s ARN.
-tArn :: Lens' Test (Maybe Text)
-tArn = lens _tArn (\ s a -> s{_tArn = a});
-
--- | When the test was created.
-tCreated :: Lens' Test (Maybe UTCTime)
-tCreated = lens _tCreated (\ s a -> s{_tCreated = a}) . mapping _Time;
-
--- | The test\'s stop time.
-tStopped :: Lens' Test (Maybe UTCTime)
-tStopped = lens _tStopped (\ s a -> s{_tStopped = a}) . mapping _Time;
-
--- | The test\'s result.
---
--- Allowed values include:
---
--- -   PENDING: A pending condition.
---
--- -   PASSED: A passing condition.
---
--- -   WARNED: A warning condition.
---
--- -   FAILED: A failed condition.
---
--- -   SKIPPED: A skipped condition.
---
--- -   ERRORED: An error condition.
---
--- -   STOPPED: A stopped condition.
---
-tResult :: Lens' Test (Maybe ExecutionResult)
-tResult = lens _tResult (\ s a -> s{_tResult = a});
-
--- | The test\'s name.
-tName :: Lens' Test (Maybe Text)
-tName = lens _tName (\ s a -> s{_tName = a});
-
--- | Represents the total (metered or unmetered) minutes used by the test.
-tDeviceMinutes :: Lens' Test (Maybe DeviceMinutes)
-tDeviceMinutes = lens _tDeviceMinutes (\ s a -> s{_tDeviceMinutes = a});
-
--- | The test\'s type.
---
--- Must be one of the following values:
---
--- -   BUILTIN_FUZZ: The built-in fuzz type.
---
--- -   BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time.
---
--- -   APPIUM_JAVA_JUNIT: The Appium Java JUnit type.
---
--- -   APPIUM_JAVA_TESTNG: The Appium Java TestNG type.
---
--- -   APPIUM_PYTHON: The Appium Python type.
---
--- -   APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps.
---
--- -   APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps.
---
--- -   APPIUM_WEB_PYTHON: The Appium Python type for Web apps.
---
--- -   CALABASH: The Calabash type.
---
--- -   INSTRUMENTATION: The Instrumentation type.
---
--- -   UIAUTOMATION: The uiautomation type.
---
--- -   UIAUTOMATOR: The uiautomator type.
---
--- -   XCTEST: The XCode test type.
---
--- -   XCTEST_UI: The XCode UI test type.
---
-tType :: Lens' Test (Maybe TestType)
-tType = lens _tType (\ s a -> s{_tType = a});
-
--- | A message about the test\'s result.
-tMessage :: Lens' Test (Maybe Text)
-tMessage = lens _tMessage (\ s a -> s{_tMessage = a});
-
--- | The test\'s start time.
-tStarted :: Lens' Test (Maybe UTCTime)
-tStarted = lens _tStarted (\ s a -> s{_tStarted = a}) . mapping _Time;
-
-instance FromJSON Test where
-        parseJSON
-          = withObject "Test"
-              (\ x ->
-                 Test' <$>
-                   (x .:? "status") <*> (x .:? "counters") <*>
-                     (x .:? "arn")
-                     <*> (x .:? "created")
-                     <*> (x .:? "stopped")
-                     <*> (x .:? "result")
-                     <*> (x .:? "name")
-                     <*> (x .:? "deviceMinutes")
-                     <*> (x .:? "type")
-                     <*> (x .:? "message")
-                     <*> (x .:? "started"))
-
-instance Hashable Test
-
-instance NFData Test
-
--- | A collection of one or more problems, grouped by their result.
---
--- /See:/ 'uniqueProblem' smart constructor.
-data UniqueProblem = UniqueProblem'
-    { _upProblems :: !(Maybe [Problem])
-    , _upMessage  :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UniqueProblem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'upProblems'
---
--- * 'upMessage'
-uniqueProblem
-    :: UniqueProblem
-uniqueProblem =
-    UniqueProblem'
-    { _upProblems = Nothing
-    , _upMessage = Nothing
-    }
-
--- | Information about the problems.
-upProblems :: Lens' UniqueProblem [Problem]
-upProblems = lens _upProblems (\ s a -> s{_upProblems = a}) . _Default . _Coerce;
-
--- | A message about the unique problems\' result.
-upMessage :: Lens' UniqueProblem (Maybe Text)
-upMessage = lens _upMessage (\ s a -> s{_upMessage = a});
-
-instance FromJSON UniqueProblem where
-        parseJSON
-          = withObject "UniqueProblem"
-              (\ x ->
-                 UniqueProblem' <$>
-                   (x .:? "problems" .!= mempty) <*> (x .:? "message"))
-
-instance Hashable UniqueProblem
-
-instance NFData UniqueProblem
-
--- | An app or a set of one or more tests to upload or that have been uploaded.
---
--- /See:/ 'upload' smart constructor.
-data Upload = Upload'
-    { _uStatus      :: !(Maybe UploadStatus)
-    , _uArn         :: !(Maybe Text)
-    , _uCreated     :: !(Maybe POSIX)
-    , _uUrl         :: !(Maybe Text)
-    , _uName        :: !(Maybe Text)
-    , _uMetadata    :: !(Maybe Text)
-    , _uType        :: !(Maybe UploadType)
-    , _uMessage     :: !(Maybe Text)
-    , _uContentType :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Upload' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uStatus'
---
--- * 'uArn'
---
--- * 'uCreated'
---
--- * 'uUrl'
---
--- * 'uName'
---
--- * 'uMetadata'
---
--- * 'uType'
---
--- * 'uMessage'
---
--- * 'uContentType'
-upload
-    :: Upload
-upload =
-    Upload'
-    { _uStatus = Nothing
-    , _uArn = Nothing
-    , _uCreated = Nothing
-    , _uUrl = Nothing
-    , _uName = Nothing
-    , _uMetadata = Nothing
-    , _uType = Nothing
-    , _uMessage = Nothing
-    , _uContentType = Nothing
-    }
-
--- | The upload\'s status.
---
--- Must be one of the following values:
---
--- -   FAILED: A failed status.
---
--- -   INITIALIZED: An initialized status.
---
--- -   PROCESSING: A processing status.
---
--- -   SUCCEEDED: A succeeded status.
---
-uStatus :: Lens' Upload (Maybe UploadStatus)
-uStatus = lens _uStatus (\ s a -> s{_uStatus = a});
-
--- | The upload\'s ARN.
-uArn :: Lens' Upload (Maybe Text)
-uArn = lens _uArn (\ s a -> s{_uArn = a});
-
--- | When the upload was created.
-uCreated :: Lens' Upload (Maybe UTCTime)
-uCreated = lens _uCreated (\ s a -> s{_uCreated = a}) . mapping _Time;
-
--- | The pre-signed Amazon S3 URL that was used to store a file through a corresponding PUT request.
-uUrl :: Lens' Upload (Maybe Text)
-uUrl = lens _uUrl (\ s a -> s{_uUrl = a});
-
--- | The upload\'s file name.
-uName :: Lens' Upload (Maybe Text)
-uName = lens _uName (\ s a -> s{_uName = a});
-
--- | The upload\'s metadata. For example, for Android, this contains information that is parsed from the manifest and is displayed in the AWS Device Farm console after the associated app is uploaded.
-uMetadata :: Lens' Upload (Maybe Text)
-uMetadata = lens _uMetadata (\ s a -> s{_uMetadata = a});
-
--- | The upload\'s type.
---
--- Must be one of the following values:
---
--- -   ANDROID_APP: An Android upload.
---
--- -   IOS_APP: An iOS upload.
---
--- -   WEB_APP: A web appliction upload.
---
--- -   EXTERNAL_DATA: An external data upload.
---
--- -   APPIUM_JAVA_JUNIT_TEST_PACKAGE: An Appium Java JUnit test package upload.
---
--- -   APPIUM_JAVA_TESTNG_TEST_PACKAGE: An Appium Java TestNG test package upload.
---
--- -   APPIUM_PYTHON_TEST_PACKAGE: An Appium Python test package upload.
---
--- -   APPIUM_WEB_JAVA_JUNIT_TEST_PACKAGE: An Appium Java JUnit test package upload.
---
--- -   APPIUM_WEB_JAVA_TESTNG_TEST_PACKAGE: An Appium Java TestNG test package upload.
---
--- -   APPIUM_WEB_PYTHON_TEST_PACKAGE: An Appium Python test package upload.
---
--- -   CALABASH_TEST_PACKAGE: A Calabash test package upload.
---
--- -   INSTRUMENTATION_TEST_PACKAGE: An instrumentation upload.
---
--- -   UIAUTOMATION_TEST_PACKAGE: A uiautomation test package upload.
---
--- -   UIAUTOMATOR_TEST_PACKAGE: A uiautomator test package upload.
---
--- -   XCTEST_TEST_PACKAGE: An XCode test package upload.
---
--- -   XCTEST_UI_TEST_PACKAGE: An XCode UI test package upload.
---
-uType :: Lens' Upload (Maybe UploadType)
-uType = lens _uType (\ s a -> s{_uType = a});
-
--- | A message about the upload\'s result.
-uMessage :: Lens' Upload (Maybe Text)
-uMessage = lens _uMessage (\ s a -> s{_uMessage = a});
-
--- | The upload\'s content type (for example, \"application\/octet-stream\").
+--
+--
+-- /See:/ 'accountSettings' smart constructor.
+data AccountSettings = AccountSettings'
+    { _asAwsAccountNumber             :: !(Maybe Text)
+    , _asUnmeteredDevices             :: !(Maybe (Map DevicePlatform Int))
+    , _asUnmeteredRemoteAccessDevices :: !(Maybe (Map DevicePlatform Int))
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccountSettings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'asAwsAccountNumber' - The AWS account number specified in the @AccountSettings@ container.
+--
+-- * 'asUnmeteredDevices' - Returns the unmetered devices you have purchased or want to purchase.
+--
+-- * 'asUnmeteredRemoteAccessDevices' - Returns the unmetered remote access devices you have purchased or want to purchase.
+accountSettings
+    :: AccountSettings
+accountSettings =
+    AccountSettings'
+    { _asAwsAccountNumber = Nothing
+    , _asUnmeteredDevices = Nothing
+    , _asUnmeteredRemoteAccessDevices = Nothing
+    }
+
+-- | The AWS account number specified in the @AccountSettings@ container.
+asAwsAccountNumber :: Lens' AccountSettings (Maybe Text)
+asAwsAccountNumber = lens _asAwsAccountNumber (\ s a -> s{_asAwsAccountNumber = a});
+
+-- | Returns the unmetered devices you have purchased or want to purchase.
+asUnmeteredDevices :: Lens' AccountSettings (HashMap DevicePlatform Int)
+asUnmeteredDevices = lens _asUnmeteredDevices (\ s a -> s{_asUnmeteredDevices = a}) . _Default . _Map;
+
+-- | Returns the unmetered remote access devices you have purchased or want to purchase.
+asUnmeteredRemoteAccessDevices :: Lens' AccountSettings (HashMap DevicePlatform Int)
+asUnmeteredRemoteAccessDevices = lens _asUnmeteredRemoteAccessDevices (\ s a -> s{_asUnmeteredRemoteAccessDevices = a}) . _Default . _Map;
+
+instance FromJSON AccountSettings where
+        parseJSON
+          = withObject "AccountSettings"
+              (\ x ->
+                 AccountSettings' <$>
+                   (x .:? "awsAccountNumber") <*>
+                     (x .:? "unmeteredDevices" .!= mempty)
+                     <*>
+                     (x .:? "unmeteredRemoteAccessDevices" .!= mempty))
+
+instance Hashable AccountSettings
+
+instance NFData AccountSettings
+
+-- | Represents the output of a test. Examples of artifacts include logs and screenshots.
+--
+--
+--
+-- /See:/ 'artifact' smart constructor.
+data Artifact = Artifact'
+    { _aArn       :: !(Maybe Text)
+    , _aUrl       :: !(Maybe Text)
+    , _aExtension :: !(Maybe Text)
+    , _aName      :: !(Maybe Text)
+    , _aType      :: !(Maybe ArtifactType)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Artifact' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aArn' - The artifact's ARN.
+--
+-- * 'aUrl' - The pre-signed Amazon S3 URL that can be used with a corresponding GET request to download the artifact's file.
+--
+-- * 'aExtension' - The artifact's file extension.
+--
+-- * 'aName' - The artifact's name.
+--
+-- * 'aType' - The artifact's type. Allowed values include the following:     * UNKNOWN: An unknown type.     * SCREENSHOT: The screenshot type.     * DEVICE_LOG: The device log type.     * MESSAGE_LOG: The message log type.     * RESULT_LOG: The result log type.     * SERVICE_LOG: The service log type.     * WEBKIT_LOG: The web kit log type.     * INSTRUMENTATION_OUTPUT: The instrumentation type.     * EXERCISER_MONKEY_OUTPUT: For Android, the artifact (log) generated by an Android fuzz test.     * CALABASH_JSON_OUTPUT: The Calabash JSON output type.     * CALABASH_PRETTY_OUTPUT: The Calabash pretty output type.     * CALABASH_STANDARD_OUTPUT: The Calabash standard output type.     * CALABASH_JAVA_XML_OUTPUT: The Calabash Java XML output type.     * AUTOMATION_OUTPUT: The automation output type.     * APPIUM_SERVER_OUTPUT: The Appium server output type.     * APPIUM_JAVA_OUTPUT: The Appium Java output type.     * APPIUM_JAVA_XML_OUTPUT: The Appium Java XML output type.     * APPIUM_PYTHON_OUTPUT: The Appium Python output type.     * APPIUM_PYTHON_XML_OUTPUT: The Appium Python XML output type.     * EXPLORER_EVENT_LOG: The Explorer event log output type.     * EXPLORER_SUMMARY_LOG: The Explorer summary log output type.     * APPLICATION_CRASH_REPORT: The application crash report output type.     * XCTEST_LOG: The XCode test output type.
+artifact
+    :: Artifact
+artifact =
+    Artifact'
+    { _aArn = Nothing
+    , _aUrl = Nothing
+    , _aExtension = Nothing
+    , _aName = Nothing
+    , _aType = Nothing
+    }
+
+-- | The artifact's ARN.
+aArn :: Lens' Artifact (Maybe Text)
+aArn = lens _aArn (\ s a -> s{_aArn = a});
+
+-- | The pre-signed Amazon S3 URL that can be used with a corresponding GET request to download the artifact's file.
+aUrl :: Lens' Artifact (Maybe Text)
+aUrl = lens _aUrl (\ s a -> s{_aUrl = a});
+
+-- | The artifact's file extension.
+aExtension :: Lens' Artifact (Maybe Text)
+aExtension = lens _aExtension (\ s a -> s{_aExtension = a});
+
+-- | The artifact's name.
+aName :: Lens' Artifact (Maybe Text)
+aName = lens _aName (\ s a -> s{_aName = a});
+
+-- | The artifact's type. Allowed values include the following:     * UNKNOWN: An unknown type.     * SCREENSHOT: The screenshot type.     * DEVICE_LOG: The device log type.     * MESSAGE_LOG: The message log type.     * RESULT_LOG: The result log type.     * SERVICE_LOG: The service log type.     * WEBKIT_LOG: The web kit log type.     * INSTRUMENTATION_OUTPUT: The instrumentation type.     * EXERCISER_MONKEY_OUTPUT: For Android, the artifact (log) generated by an Android fuzz test.     * CALABASH_JSON_OUTPUT: The Calabash JSON output type.     * CALABASH_PRETTY_OUTPUT: The Calabash pretty output type.     * CALABASH_STANDARD_OUTPUT: The Calabash standard output type.     * CALABASH_JAVA_XML_OUTPUT: The Calabash Java XML output type.     * AUTOMATION_OUTPUT: The automation output type.     * APPIUM_SERVER_OUTPUT: The Appium server output type.     * APPIUM_JAVA_OUTPUT: The Appium Java output type.     * APPIUM_JAVA_XML_OUTPUT: The Appium Java XML output type.     * APPIUM_PYTHON_OUTPUT: The Appium Python output type.     * APPIUM_PYTHON_XML_OUTPUT: The Appium Python XML output type.     * EXPLORER_EVENT_LOG: The Explorer event log output type.     * EXPLORER_SUMMARY_LOG: The Explorer summary log output type.     * APPLICATION_CRASH_REPORT: The application crash report output type.     * XCTEST_LOG: The XCode test output type.
+aType :: Lens' Artifact (Maybe ArtifactType)
+aType = lens _aType (\ s a -> s{_aType = a});
+
+instance FromJSON Artifact where
+        parseJSON
+          = withObject "Artifact"
+              (\ x ->
+                 Artifact' <$>
+                   (x .:? "arn") <*> (x .:? "url") <*>
+                     (x .:? "extension")
+                     <*> (x .:? "name")
+                     <*> (x .:? "type"))
+
+instance Hashable Artifact
+
+instance NFData Artifact
+
+-- | Represents the amount of CPU that an app is using on a physical device.
+--
+--
+-- Note that this does not represent system-wide CPU usage.
+--
+--
+-- /See:/ 'cpu' smart constructor.
+data CPU = CPU'
+    { _cpuFrequency    :: !(Maybe Text)
+    , _cpuClock        :: !(Maybe Double)
+    , _cpuArchitecture :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CPU' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cpuFrequency' - The CPU's frequency.
+--
+-- * 'cpuClock' - The clock speed of the device's CPU, expressed in hertz (Hz). For example, a 1.2 GHz CPU is expressed as 1200000000.
+--
+-- * 'cpuArchitecture' - The CPU's architecture, for example x86 or ARM.
+cpu
+    :: CPU
+cpu =
+    CPU'
+    { _cpuFrequency = Nothing
+    , _cpuClock = Nothing
+    , _cpuArchitecture = Nothing
+    }
+
+-- | The CPU's frequency.
+cpuFrequency :: Lens' CPU (Maybe Text)
+cpuFrequency = lens _cpuFrequency (\ s a -> s{_cpuFrequency = a});
+
+-- | The clock speed of the device's CPU, expressed in hertz (Hz). For example, a 1.2 GHz CPU is expressed as 1200000000.
+cpuClock :: Lens' CPU (Maybe Double)
+cpuClock = lens _cpuClock (\ s a -> s{_cpuClock = a});
+
+-- | The CPU's architecture, for example x86 or ARM.
+cpuArchitecture :: Lens' CPU (Maybe Text)
+cpuArchitecture = lens _cpuArchitecture (\ s a -> s{_cpuArchitecture = a});
+
+instance FromJSON CPU where
+        parseJSON
+          = withObject "CPU"
+              (\ x ->
+                 CPU' <$>
+                   (x .:? "frequency") <*> (x .:? "clock") <*>
+                     (x .:? "architecture"))
+
+instance Hashable CPU
+
+instance NFData CPU
+
+-- | Represents entity counters.
+--
+--
+--
+-- /See:/ 'counters' smart constructor.
+data Counters = Counters'
+    { _cPassed  :: !(Maybe Int)
+    , _cSkipped :: !(Maybe Int)
+    , _cWarned  :: !(Maybe Int)
+    , _cStopped :: !(Maybe Int)
+    , _cTotal   :: !(Maybe Int)
+    , _cFailed  :: !(Maybe Int)
+    , _cErrored :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Counters' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cPassed' - The number of passed entities.
+--
+-- * 'cSkipped' - The number of skipped entities.
+--
+-- * 'cWarned' - The number of warned entities.
+--
+-- * 'cStopped' - The number of stopped entities.
+--
+-- * 'cTotal' - The total number of entities.
+--
+-- * 'cFailed' - The number of failed entities.
+--
+-- * 'cErrored' - The number of errored entities.
+counters
+    :: Counters
+counters =
+    Counters'
+    { _cPassed = Nothing
+    , _cSkipped = Nothing
+    , _cWarned = Nothing
+    , _cStopped = Nothing
+    , _cTotal = Nothing
+    , _cFailed = Nothing
+    , _cErrored = Nothing
+    }
+
+-- | The number of passed entities.
+cPassed :: Lens' Counters (Maybe Int)
+cPassed = lens _cPassed (\ s a -> s{_cPassed = a});
+
+-- | The number of skipped entities.
+cSkipped :: Lens' Counters (Maybe Int)
+cSkipped = lens _cSkipped (\ s a -> s{_cSkipped = a});
+
+-- | The number of warned entities.
+cWarned :: Lens' Counters (Maybe Int)
+cWarned = lens _cWarned (\ s a -> s{_cWarned = a});
+
+-- | The number of stopped entities.
+cStopped :: Lens' Counters (Maybe Int)
+cStopped = lens _cStopped (\ s a -> s{_cStopped = a});
+
+-- | The total number of entities.
+cTotal :: Lens' Counters (Maybe Int)
+cTotal = lens _cTotal (\ s a -> s{_cTotal = a});
+
+-- | The number of failed entities.
+cFailed :: Lens' Counters (Maybe Int)
+cFailed = lens _cFailed (\ s a -> s{_cFailed = a});
+
+-- | The number of errored entities.
+cErrored :: Lens' Counters (Maybe Int)
+cErrored = lens _cErrored (\ s a -> s{_cErrored = a});
+
+instance FromJSON Counters where
+        parseJSON
+          = withObject "Counters"
+              (\ x ->
+                 Counters' <$>
+                   (x .:? "passed") <*> (x .:? "skipped") <*>
+                     (x .:? "warned")
+                     <*> (x .:? "stopped")
+                     <*> (x .:? "total")
+                     <*> (x .:? "failed")
+                     <*> (x .:? "errored"))
+
+instance Hashable Counters
+
+instance NFData Counters
+
+-- | Creates the configuration settings for a remote access session, including the device model and type.
+--
+--
+--
+-- /See:/ 'createRemoteAccessSessionConfiguration' smart constructor.
+newtype CreateRemoteAccessSessionConfiguration = CreateRemoteAccessSessionConfiguration'
+    { _crascBillingMethod :: Maybe BillingMethod
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateRemoteAccessSessionConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crascBillingMethod' - Returns the billing method for purposes of configuring a remote access session.
+createRemoteAccessSessionConfiguration
+    :: CreateRemoteAccessSessionConfiguration
+createRemoteAccessSessionConfiguration =
+    CreateRemoteAccessSessionConfiguration'
+    { _crascBillingMethod = Nothing
+    }
+
+-- | Returns the billing method for purposes of configuring a remote access session.
+crascBillingMethod :: Lens' CreateRemoteAccessSessionConfiguration (Maybe BillingMethod)
+crascBillingMethod = lens _crascBillingMethod (\ s a -> s{_crascBillingMethod = a});
+
+instance Hashable
+         CreateRemoteAccessSessionConfiguration
+
+instance NFData
+         CreateRemoteAccessSessionConfiguration
+
+instance ToJSON
+         CreateRemoteAccessSessionConfiguration where
+        toJSON CreateRemoteAccessSessionConfiguration'{..}
+          = object
+              (catMaybes
+                 [("billingMethod" .=) <$> _crascBillingMethod])
+
+-- | Represents a device type that an app is tested against.
+--
+--
+--
+-- /See:/ 'device' smart constructor.
+data Device = Device'
+    { _devCarrier             :: !(Maybe Text)
+    , _devImage               :: !(Maybe Text)
+    , _devManufacturer        :: !(Maybe Text)
+    , _devPlatform            :: !(Maybe DevicePlatform)
+    , _devRemoteAccessEnabled :: !(Maybe Bool)
+    , _devArn                 :: !(Maybe Text)
+    , _devFormFactor          :: !(Maybe DeviceFormFactor)
+    , _devFleetType           :: !(Maybe Text)
+    , _devResolution          :: !(Maybe Resolution)
+    , _devMemory              :: !(Maybe Integer)
+    , _devRadio               :: !(Maybe Text)
+    , _devOs                  :: !(Maybe Text)
+    , _devName                :: !(Maybe Text)
+    , _devModel               :: !(Maybe Text)
+    , _devCpu                 :: !(Maybe CPU)
+    , _devHeapSize            :: !(Maybe Integer)
+    , _devFleetName           :: !(Maybe Text)
+    } deriving (Eq,Read,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:
+--
+-- * 'devCarrier' - The device's carrier.
+--
+-- * 'devImage' - The device's image name.
+--
+-- * 'devManufacturer' - The device's manufacturer name.
+--
+-- * 'devPlatform' - The device's platform. Allowed values include:     * ANDROID: The Android platform.     * IOS: The iOS platform.
+--
+-- * 'devRemoteAccessEnabled' - Specifies whether remote access has been enabled for the specified device.
+--
+-- * 'devArn' - The device's ARN.
+--
+-- * 'devFormFactor' - The device's form factor. Allowed values include:     * PHONE: The phone form factor.     * TABLET: The tablet form factor.
+--
+-- * 'devFleetType' - The type of fleet to which this device belongs. Possible values for fleet type are PRIVATE and PUBLIC.
+--
+-- * 'devResolution' - Undocumented member.
+--
+-- * 'devMemory' - The device's total memory size, expressed in bytes.
+--
+-- * 'devRadio' - The device's radio.
+--
+-- * 'devOs' - The device's operating system type.
+--
+-- * 'devName' - The device's display name.
+--
+-- * 'devModel' - The device's model name.
+--
+-- * 'devCpu' - Information about the device's CPU.
+--
+-- * 'devHeapSize' - The device's heap size, expressed in bytes.
+--
+-- * 'devFleetName' - The name of the fleet to which this device belongs.
+device
+    :: Device
+device =
+    Device'
+    { _devCarrier = Nothing
+    , _devImage = Nothing
+    , _devManufacturer = Nothing
+    , _devPlatform = Nothing
+    , _devRemoteAccessEnabled = Nothing
+    , _devArn = Nothing
+    , _devFormFactor = Nothing
+    , _devFleetType = Nothing
+    , _devResolution = Nothing
+    , _devMemory = Nothing
+    , _devRadio = Nothing
+    , _devOs = Nothing
+    , _devName = Nothing
+    , _devModel = Nothing
+    , _devCpu = Nothing
+    , _devHeapSize = Nothing
+    , _devFleetName = Nothing
+    }
+
+-- | The device's carrier.
+devCarrier :: Lens' Device (Maybe Text)
+devCarrier = lens _devCarrier (\ s a -> s{_devCarrier = a});
+
+-- | The device's image name.
+devImage :: Lens' Device (Maybe Text)
+devImage = lens _devImage (\ s a -> s{_devImage = a});
+
+-- | The device's manufacturer name.
+devManufacturer :: Lens' Device (Maybe Text)
+devManufacturer = lens _devManufacturer (\ s a -> s{_devManufacturer = a});
+
+-- | The device's platform. Allowed values include:     * ANDROID: The Android platform.     * IOS: The iOS platform.
+devPlatform :: Lens' Device (Maybe DevicePlatform)
+devPlatform = lens _devPlatform (\ s a -> s{_devPlatform = a});
+
+-- | Specifies whether remote access has been enabled for the specified device.
+devRemoteAccessEnabled :: Lens' Device (Maybe Bool)
+devRemoteAccessEnabled = lens _devRemoteAccessEnabled (\ s a -> s{_devRemoteAccessEnabled = a});
+
+-- | The device's ARN.
+devArn :: Lens' Device (Maybe Text)
+devArn = lens _devArn (\ s a -> s{_devArn = a});
+
+-- | The device's form factor. Allowed values include:     * PHONE: The phone form factor.     * TABLET: The tablet form factor.
+devFormFactor :: Lens' Device (Maybe DeviceFormFactor)
+devFormFactor = lens _devFormFactor (\ s a -> s{_devFormFactor = a});
+
+-- | The type of fleet to which this device belongs. Possible values for fleet type are PRIVATE and PUBLIC.
+devFleetType :: Lens' Device (Maybe Text)
+devFleetType = lens _devFleetType (\ s a -> s{_devFleetType = a});
+
+-- | Undocumented member.
+devResolution :: Lens' Device (Maybe Resolution)
+devResolution = lens _devResolution (\ s a -> s{_devResolution = a});
+
+-- | The device's total memory size, expressed in bytes.
+devMemory :: Lens' Device (Maybe Integer)
+devMemory = lens _devMemory (\ s a -> s{_devMemory = a});
+
+-- | The device's radio.
+devRadio :: Lens' Device (Maybe Text)
+devRadio = lens _devRadio (\ s a -> s{_devRadio = a});
+
+-- | The device's operating system type.
+devOs :: Lens' Device (Maybe Text)
+devOs = lens _devOs (\ s a -> s{_devOs = a});
+
+-- | The device's display name.
+devName :: Lens' Device (Maybe Text)
+devName = lens _devName (\ s a -> s{_devName = a});
+
+-- | The device's model name.
+devModel :: Lens' Device (Maybe Text)
+devModel = lens _devModel (\ s a -> s{_devModel = a});
+
+-- | Information about the device's CPU.
+devCpu :: Lens' Device (Maybe CPU)
+devCpu = lens _devCpu (\ s a -> s{_devCpu = a});
+
+-- | The device's heap size, expressed in bytes.
+devHeapSize :: Lens' Device (Maybe Integer)
+devHeapSize = lens _devHeapSize (\ s a -> s{_devHeapSize = a});
+
+-- | The name of the fleet to which this device belongs.
+devFleetName :: Lens' Device (Maybe Text)
+devFleetName = lens _devFleetName (\ s a -> s{_devFleetName = a});
+
+instance FromJSON Device where
+        parseJSON
+          = withObject "Device"
+              (\ x ->
+                 Device' <$>
+                   (x .:? "carrier") <*> (x .:? "image") <*>
+                     (x .:? "manufacturer")
+                     <*> (x .:? "platform")
+                     <*> (x .:? "remoteAccessEnabled")
+                     <*> (x .:? "arn")
+                     <*> (x .:? "formFactor")
+                     <*> (x .:? "fleetType")
+                     <*> (x .:? "resolution")
+                     <*> (x .:? "memory")
+                     <*> (x .:? "radio")
+                     <*> (x .:? "os")
+                     <*> (x .:? "name")
+                     <*> (x .:? "model")
+                     <*> (x .:? "cpu")
+                     <*> (x .:? "heapSize")
+                     <*> (x .:? "fleetName"))
+
+instance Hashable Device
+
+instance NFData Device
+
+-- | Represents the total (metered or unmetered) minutes used by the resource to run tests. Contains the sum of minutes consumed by all children.
+--
+--
+--
+-- /See:/ 'deviceMinutes' smart constructor.
+data DeviceMinutes = DeviceMinutes'
+    { _dmMetered   :: !(Maybe Double)
+    , _dmTotal     :: !(Maybe Double)
+    , _dmUnmetered :: !(Maybe Double)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeviceMinutes' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dmMetered' - When specified, represents only the sum of metered minutes used by the resource to run tests.
+--
+-- * 'dmTotal' - When specified, represents the total minutes used by the resource to run tests.
+--
+-- * 'dmUnmetered' - When specified, represents only the sum of unmetered minutes used by the resource to run tests.
+deviceMinutes
+    :: DeviceMinutes
+deviceMinutes =
+    DeviceMinutes'
+    { _dmMetered = Nothing
+    , _dmTotal = Nothing
+    , _dmUnmetered = Nothing
+    }
+
+-- | When specified, represents only the sum of metered minutes used by the resource to run tests.
+dmMetered :: Lens' DeviceMinutes (Maybe Double)
+dmMetered = lens _dmMetered (\ s a -> s{_dmMetered = a});
+
+-- | When specified, represents the total minutes used by the resource to run tests.
+dmTotal :: Lens' DeviceMinutes (Maybe Double)
+dmTotal = lens _dmTotal (\ s a -> s{_dmTotal = a});
+
+-- | When specified, represents only the sum of unmetered minutes used by the resource to run tests.
+dmUnmetered :: Lens' DeviceMinutes (Maybe Double)
+dmUnmetered = lens _dmUnmetered (\ s a -> s{_dmUnmetered = a});
+
+instance FromJSON DeviceMinutes where
+        parseJSON
+          = withObject "DeviceMinutes"
+              (\ x ->
+                 DeviceMinutes' <$>
+                   (x .:? "metered") <*> (x .:? "total") <*>
+                     (x .:? "unmetered"))
+
+instance Hashable DeviceMinutes
+
+instance NFData DeviceMinutes
+
+-- | Represents a collection of device types.
+--
+--
+--
+-- /See:/ 'devicePool' smart constructor.
+data DevicePool = DevicePool'
+    { _dArn         :: !(Maybe Text)
+    , _dRules       :: !(Maybe [Rule])
+    , _dName        :: !(Maybe Text)
+    , _dType        :: !(Maybe DevicePoolType)
+    , _dDescription :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DevicePool' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dArn' - The device pool's ARN.
+--
+-- * 'dRules' - Information about the device pool's rules.
+--
+-- * 'dName' - The device pool's name.
+--
+-- * 'dType' - The device pool's type. Allowed values include:     * CURATED: A device pool that is created and managed by AWS Device Farm.     * PRIVATE: A device pool that is created and managed by the device pool developer.
+--
+-- * 'dDescription' - The device pool's description.
+devicePool
+    :: DevicePool
+devicePool =
+    DevicePool'
+    { _dArn = Nothing
+    , _dRules = Nothing
+    , _dName = Nothing
+    , _dType = Nothing
+    , _dDescription = Nothing
+    }
+
+-- | The device pool's ARN.
+dArn :: Lens' DevicePool (Maybe Text)
+dArn = lens _dArn (\ s a -> s{_dArn = a});
+
+-- | Information about the device pool's rules.
+dRules :: Lens' DevicePool [Rule]
+dRules = lens _dRules (\ s a -> s{_dRules = a}) . _Default . _Coerce;
+
+-- | The device pool's name.
+dName :: Lens' DevicePool (Maybe Text)
+dName = lens _dName (\ s a -> s{_dName = a});
+
+-- | The device pool's type. Allowed values include:     * CURATED: A device pool that is created and managed by AWS Device Farm.     * PRIVATE: A device pool that is created and managed by the device pool developer.
+dType :: Lens' DevicePool (Maybe DevicePoolType)
+dType = lens _dType (\ s a -> s{_dType = a});
+
+-- | The device pool's description.
+dDescription :: Lens' DevicePool (Maybe Text)
+dDescription = lens _dDescription (\ s a -> s{_dDescription = a});
+
+instance FromJSON DevicePool where
+        parseJSON
+          = withObject "DevicePool"
+              (\ x ->
+                 DevicePool' <$>
+                   (x .:? "arn") <*> (x .:? "rules" .!= mempty) <*>
+                     (x .:? "name")
+                     <*> (x .:? "type")
+                     <*> (x .:? "description"))
+
+instance Hashable DevicePool
+
+instance NFData DevicePool
+
+-- | Represents a device pool compatibility result.
+--
+--
+--
+-- /See:/ 'devicePoolCompatibilityResult' smart constructor.
+data DevicePoolCompatibilityResult = DevicePoolCompatibilityResult'
+    { _dpcrDevice                  :: !(Maybe Device)
+    , _dpcrCompatible              :: !(Maybe Bool)
+    , _dpcrIncompatibilityMessages :: !(Maybe [IncompatibilityMessage])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DevicePoolCompatibilityResult' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dpcrDevice' - Undocumented member.
+--
+-- * 'dpcrCompatible' - Whether the result was compatible with the device pool.
+--
+-- * 'dpcrIncompatibilityMessages' - Information about the compatibility.
+devicePoolCompatibilityResult
+    :: DevicePoolCompatibilityResult
+devicePoolCompatibilityResult =
+    DevicePoolCompatibilityResult'
+    { _dpcrDevice = Nothing
+    , _dpcrCompatible = Nothing
+    , _dpcrIncompatibilityMessages = Nothing
+    }
+
+-- | Undocumented member.
+dpcrDevice :: Lens' DevicePoolCompatibilityResult (Maybe Device)
+dpcrDevice = lens _dpcrDevice (\ s a -> s{_dpcrDevice = a});
+
+-- | Whether the result was compatible with the device pool.
+dpcrCompatible :: Lens' DevicePoolCompatibilityResult (Maybe Bool)
+dpcrCompatible = lens _dpcrCompatible (\ s a -> s{_dpcrCompatible = a});
+
+-- | Information about the compatibility.
+dpcrIncompatibilityMessages :: Lens' DevicePoolCompatibilityResult [IncompatibilityMessage]
+dpcrIncompatibilityMessages = lens _dpcrIncompatibilityMessages (\ s a -> s{_dpcrIncompatibilityMessages = a}) . _Default . _Coerce;
+
+instance FromJSON DevicePoolCompatibilityResult where
+        parseJSON
+          = withObject "DevicePoolCompatibilityResult"
+              (\ x ->
+                 DevicePoolCompatibilityResult' <$>
+                   (x .:? "device") <*> (x .:? "compatible") <*>
+                     (x .:? "incompatibilityMessages" .!= mempty))
+
+instance Hashable DevicePoolCompatibilityResult
+
+instance NFData DevicePoolCompatibilityResult
+
+-- | Represents information about incompatibility.
+--
+--
+--
+-- /See:/ 'incompatibilityMessage' smart constructor.
+data IncompatibilityMessage = IncompatibilityMessage'
+    { _imType    :: !(Maybe DeviceAttribute)
+    , _imMessage :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'IncompatibilityMessage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'imType' - The type of incompatibility. Allowed values include:     * ARN: The ARN.     * FORM_FACTOR: The form factor (for example, phone or tablet).     * MANUFACTURER: The manufacturer.     * PLATFORM: The platform (for example, Android or iOS).
+--
+-- * 'imMessage' - A message about the incompatibility.
+incompatibilityMessage
+    :: IncompatibilityMessage
+incompatibilityMessage =
+    IncompatibilityMessage'
+    { _imType = Nothing
+    , _imMessage = Nothing
+    }
+
+-- | The type of incompatibility. Allowed values include:     * ARN: The ARN.     * FORM_FACTOR: The form factor (for example, phone or tablet).     * MANUFACTURER: The manufacturer.     * PLATFORM: The platform (for example, Android or iOS).
+imType :: Lens' IncompatibilityMessage (Maybe DeviceAttribute)
+imType = lens _imType (\ s a -> s{_imType = a});
+
+-- | A message about the incompatibility.
+imMessage :: Lens' IncompatibilityMessage (Maybe Text)
+imMessage = lens _imMessage (\ s a -> s{_imMessage = a});
+
+instance FromJSON IncompatibilityMessage where
+        parseJSON
+          = withObject "IncompatibilityMessage"
+              (\ x ->
+                 IncompatibilityMessage' <$>
+                   (x .:? "type") <*> (x .:? "message"))
+
+instance Hashable IncompatibilityMessage
+
+instance NFData IncompatibilityMessage
+
+-- | Represents a device.
+--
+--
+--
+-- /See:/ 'job' smart constructor.
+data Job = Job'
+    { _jobStatus        :: !(Maybe ExecutionStatus)
+    , _jobCounters      :: !(Maybe Counters)
+    , _jobArn           :: !(Maybe Text)
+    , _jobCreated       :: !(Maybe POSIX)
+    , _jobDevice        :: !(Maybe Device)
+    , _jobStopped       :: !(Maybe POSIX)
+    , _jobResult        :: !(Maybe ExecutionResult)
+    , _jobName          :: !(Maybe Text)
+    , _jobDeviceMinutes :: !(Maybe DeviceMinutes)
+    , _jobType          :: !(Maybe TestType)
+    , _jobMessage       :: !(Maybe Text)
+    , _jobStarted       :: !(Maybe POSIX)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Job' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'jobStatus' - The job's status. Allowed values include:     * PENDING: A pending status.     * PENDING_CONCURRENCY: A pending concurrency status.     * PENDING_DEVICE: A pending device status.     * PROCESSING: A processing status.     * SCHEDULING: A scheduling status.     * PREPARING: A preparing status.     * RUNNING: A running status.     * COMPLETED: A completed status.     * STOPPING: A stopping status.
+--
+-- * 'jobCounters' - The job's result counters.
+--
+-- * 'jobArn' - The job's ARN.
+--
+-- * 'jobCreated' - When the job was created.
+--
+-- * 'jobDevice' - Undocumented member.
+--
+-- * 'jobStopped' - The job's stop time.
+--
+-- * 'jobResult' - The job's result. Allowed values include:     * PENDING: A pending condition.     * PASSED: A passing condition.     * WARNED: A warning condition.     * FAILED: A failed condition.     * SKIPPED: A skipped condition.     * ERRORED: An error condition.     * STOPPED: A stopped condition.
+--
+-- * 'jobName' - The job's name.
+--
+-- * 'jobDeviceMinutes' - Represents the total (metered or unmetered) minutes used by the job.
+--
+-- * 'jobType' - The job's type. Allowed values include the following:     * BUILTIN_FUZZ: The built-in fuzz type.     * BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time.     * APPIUM_JAVA_JUNIT: The Appium Java JUnit type.     * APPIUM_JAVA_TESTNG: The Appium Java TestNG type.     * APPIUM_PYTHON: The Appium Python type.     * APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps.     * APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps.     * APPIUM_WEB_PYTHON: The Appium Python type for Web apps.     * CALABASH: The Calabash type.     * INSTRUMENTATION: The Instrumentation type.     * UIAUTOMATION: The uiautomation type.     * UIAUTOMATOR: The uiautomator type.     * XCTEST: The XCode test type.     * XCTEST_UI: The XCode UI test type.
+--
+-- * 'jobMessage' - A message about the job's result.
+--
+-- * 'jobStarted' - The job's start time.
+job
+    :: Job
+job =
+    Job'
+    { _jobStatus = Nothing
+    , _jobCounters = Nothing
+    , _jobArn = Nothing
+    , _jobCreated = Nothing
+    , _jobDevice = Nothing
+    , _jobStopped = Nothing
+    , _jobResult = Nothing
+    , _jobName = Nothing
+    , _jobDeviceMinutes = Nothing
+    , _jobType = Nothing
+    , _jobMessage = Nothing
+    , _jobStarted = Nothing
+    }
+
+-- | The job's status. Allowed values include:     * PENDING: A pending status.     * PENDING_CONCURRENCY: A pending concurrency status.     * PENDING_DEVICE: A pending device status.     * PROCESSING: A processing status.     * SCHEDULING: A scheduling status.     * PREPARING: A preparing status.     * RUNNING: A running status.     * COMPLETED: A completed status.     * STOPPING: A stopping status.
+jobStatus :: Lens' Job (Maybe ExecutionStatus)
+jobStatus = lens _jobStatus (\ s a -> s{_jobStatus = a});
+
+-- | The job's result counters.
+jobCounters :: Lens' Job (Maybe Counters)
+jobCounters = lens _jobCounters (\ s a -> s{_jobCounters = a});
+
+-- | The job's ARN.
+jobArn :: Lens' Job (Maybe Text)
+jobArn = lens _jobArn (\ s a -> s{_jobArn = a});
+
+-- | When the job was created.
+jobCreated :: Lens' Job (Maybe UTCTime)
+jobCreated = lens _jobCreated (\ s a -> s{_jobCreated = a}) . mapping _Time;
+
+-- | Undocumented member.
+jobDevice :: Lens' Job (Maybe Device)
+jobDevice = lens _jobDevice (\ s a -> s{_jobDevice = a});
+
+-- | The job's stop time.
+jobStopped :: Lens' Job (Maybe UTCTime)
+jobStopped = lens _jobStopped (\ s a -> s{_jobStopped = a}) . mapping _Time;
+
+-- | The job's result. Allowed values include:     * PENDING: A pending condition.     * PASSED: A passing condition.     * WARNED: A warning condition.     * FAILED: A failed condition.     * SKIPPED: A skipped condition.     * ERRORED: An error condition.     * STOPPED: A stopped condition.
+jobResult :: Lens' Job (Maybe ExecutionResult)
+jobResult = lens _jobResult (\ s a -> s{_jobResult = a});
+
+-- | The job's name.
+jobName :: Lens' Job (Maybe Text)
+jobName = lens _jobName (\ s a -> s{_jobName = a});
+
+-- | Represents the total (metered or unmetered) minutes used by the job.
+jobDeviceMinutes :: Lens' Job (Maybe DeviceMinutes)
+jobDeviceMinutes = lens _jobDeviceMinutes (\ s a -> s{_jobDeviceMinutes = a});
+
+-- | The job's type. Allowed values include the following:     * BUILTIN_FUZZ: The built-in fuzz type.     * BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time.     * APPIUM_JAVA_JUNIT: The Appium Java JUnit type.     * APPIUM_JAVA_TESTNG: The Appium Java TestNG type.     * APPIUM_PYTHON: The Appium Python type.     * APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps.     * APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps.     * APPIUM_WEB_PYTHON: The Appium Python type for Web apps.     * CALABASH: The Calabash type.     * INSTRUMENTATION: The Instrumentation type.     * UIAUTOMATION: The uiautomation type.     * UIAUTOMATOR: The uiautomator type.     * XCTEST: The XCode test type.     * XCTEST_UI: The XCode UI test type.
+jobType :: Lens' Job (Maybe TestType)
+jobType = lens _jobType (\ s a -> s{_jobType = a});
+
+-- | A message about the job's result.
+jobMessage :: Lens' Job (Maybe Text)
+jobMessage = lens _jobMessage (\ s a -> s{_jobMessage = a});
+
+-- | The job's start time.
+jobStarted :: Lens' Job (Maybe UTCTime)
+jobStarted = lens _jobStarted (\ s a -> s{_jobStarted = a}) . mapping _Time;
+
+instance FromJSON Job where
+        parseJSON
+          = withObject "Job"
+              (\ x ->
+                 Job' <$>
+                   (x .:? "status") <*> (x .:? "counters") <*>
+                     (x .:? "arn")
+                     <*> (x .:? "created")
+                     <*> (x .:? "device")
+                     <*> (x .:? "stopped")
+                     <*> (x .:? "result")
+                     <*> (x .:? "name")
+                     <*> (x .:? "deviceMinutes")
+                     <*> (x .:? "type")
+                     <*> (x .:? "message")
+                     <*> (x .:? "started"))
+
+instance Hashable Job
+
+instance NFData Job
+
+-- | Represents a latitude and longitude pair, expressed in geographic coordinate system degrees (for example 47.6204, -122.3491).
+--
+--
+-- Elevation is currently not supported.
+--
+--
+-- /See:/ 'location' smart constructor.
+data Location = Location'
+    { _lLatitude  :: !Double
+    , _lLongitude :: !Double
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Location' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lLatitude' - The latitude.
+--
+-- * 'lLongitude' - The longitude.
+location
+    :: Double -- ^ 'lLatitude'
+    -> Double -- ^ 'lLongitude'
+    -> Location
+location pLatitude_ pLongitude_ =
+    Location'
+    { _lLatitude = pLatitude_
+    , _lLongitude = pLongitude_
+    }
+
+-- | The latitude.
+lLatitude :: Lens' Location Double
+lLatitude = lens _lLatitude (\ s a -> s{_lLatitude = a});
+
+-- | The longitude.
+lLongitude :: Lens' Location Double
+lLongitude = lens _lLongitude (\ s a -> s{_lLongitude = a});
+
+instance Hashable Location
+
+instance NFData Location
+
+instance ToJSON Location where
+        toJSON Location'{..}
+          = object
+              (catMaybes
+                 [Just ("latitude" .= _lLatitude),
+                  Just ("longitude" .= _lLongitude)])
+
+-- | A number representing the monetary amount for an offering or transaction.
+--
+--
+--
+-- /See:/ 'monetaryAmount' smart constructor.
+data MonetaryAmount = MonetaryAmount'
+    { _maAmount       :: !(Maybe Double)
+    , _maCurrencyCode :: !(Maybe CurrencyCode)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MonetaryAmount' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'maAmount' - The numerical amount of an offering or transaction.
+--
+-- * 'maCurrencyCode' - The currency code of a monetary amount. For example, @USD@ means "U.S. dollars."
+monetaryAmount
+    :: MonetaryAmount
+monetaryAmount =
+    MonetaryAmount'
+    { _maAmount = Nothing
+    , _maCurrencyCode = Nothing
+    }
+
+-- | The numerical amount of an offering or transaction.
+maAmount :: Lens' MonetaryAmount (Maybe Double)
+maAmount = lens _maAmount (\ s a -> s{_maAmount = a});
+
+-- | The currency code of a monetary amount. For example, @USD@ means "U.S. dollars."
+maCurrencyCode :: Lens' MonetaryAmount (Maybe CurrencyCode)
+maCurrencyCode = lens _maCurrencyCode (\ s a -> s{_maCurrencyCode = a});
+
+instance FromJSON MonetaryAmount where
+        parseJSON
+          = withObject "MonetaryAmount"
+              (\ x ->
+                 MonetaryAmount' <$>
+                   (x .:? "amount") <*> (x .:? "currencyCode"))
+
+instance Hashable MonetaryAmount
+
+instance NFData MonetaryAmount
+
+-- | Represents the metadata of a device offering.
+--
+--
+--
+-- /See:/ 'offering' smart constructor.
+data Offering = Offering'
+    { _oPlatform         :: !(Maybe DevicePlatform)
+    , _oId               :: !(Maybe Text)
+    , _oRecurringCharges :: !(Maybe [RecurringCharge])
+    , _oType             :: !(Maybe OfferingType)
+    , _oDescription      :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Offering' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oPlatform' - The platform of the device (e.g., ANDROID or IOS).
+--
+-- * 'oId' - The ID that corresponds to a device offering.
+--
+-- * 'oRecurringCharges' - Specifies whether there are recurring charges for the offering.
+--
+-- * 'oType' - The type of offering (e.g., "RECURRING") for a device.
+--
+-- * 'oDescription' - A string describing the offering.
+offering
+    :: Offering
+offering =
+    Offering'
+    { _oPlatform = Nothing
+    , _oId = Nothing
+    , _oRecurringCharges = Nothing
+    , _oType = Nothing
+    , _oDescription = Nothing
+    }
+
+-- | The platform of the device (e.g., ANDROID or IOS).
+oPlatform :: Lens' Offering (Maybe DevicePlatform)
+oPlatform = lens _oPlatform (\ s a -> s{_oPlatform = a});
+
+-- | The ID that corresponds to a device offering.
+oId :: Lens' Offering (Maybe Text)
+oId = lens _oId (\ s a -> s{_oId = a});
+
+-- | Specifies whether there are recurring charges for the offering.
+oRecurringCharges :: Lens' Offering [RecurringCharge]
+oRecurringCharges = lens _oRecurringCharges (\ s a -> s{_oRecurringCharges = a}) . _Default . _Coerce;
+
+-- | The type of offering (e.g., "RECURRING") for a device.
+oType :: Lens' Offering (Maybe OfferingType)
+oType = lens _oType (\ s a -> s{_oType = a});
+
+-- | A string describing the offering.
+oDescription :: Lens' Offering (Maybe Text)
+oDescription = lens _oDescription (\ s a -> s{_oDescription = a});
+
+instance FromJSON Offering where
+        parseJSON
+          = withObject "Offering"
+              (\ x ->
+                 Offering' <$>
+                   (x .:? "platform") <*> (x .:? "id") <*>
+                     (x .:? "recurringCharges" .!= mempty)
+                     <*> (x .:? "type")
+                     <*> (x .:? "description"))
+
+instance Hashable Offering
+
+instance NFData Offering
+
+-- | The status of the offering.
+--
+--
+--
+-- /See:/ 'offeringStatus' smart constructor.
+data OfferingStatus = OfferingStatus'
+    { _osEffectiveOn :: !(Maybe POSIX)
+    , _osOffering    :: !(Maybe Offering)
+    , _osQuantity    :: !(Maybe Int)
+    , _osType        :: !(Maybe OfferingTransactionType)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OfferingStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'osEffectiveOn' - The date on which the offering is effective.
+--
+-- * 'osOffering' - Represents the metadata of an offering status.
+--
+-- * 'osQuantity' - The number of available devices in the offering.
+--
+-- * 'osType' - The type specified for the offering status.
+offeringStatus
+    :: OfferingStatus
+offeringStatus =
+    OfferingStatus'
+    { _osEffectiveOn = Nothing
+    , _osOffering = Nothing
+    , _osQuantity = Nothing
+    , _osType = Nothing
+    }
+
+-- | The date on which the offering is effective.
+osEffectiveOn :: Lens' OfferingStatus (Maybe UTCTime)
+osEffectiveOn = lens _osEffectiveOn (\ s a -> s{_osEffectiveOn = a}) . mapping _Time;
+
+-- | Represents the metadata of an offering status.
+osOffering :: Lens' OfferingStatus (Maybe Offering)
+osOffering = lens _osOffering (\ s a -> s{_osOffering = a});
+
+-- | The number of available devices in the offering.
+osQuantity :: Lens' OfferingStatus (Maybe Int)
+osQuantity = lens _osQuantity (\ s a -> s{_osQuantity = a});
+
+-- | The type specified for the offering status.
+osType :: Lens' OfferingStatus (Maybe OfferingTransactionType)
+osType = lens _osType (\ s a -> s{_osType = a});
+
+instance FromJSON OfferingStatus where
+        parseJSON
+          = withObject "OfferingStatus"
+              (\ x ->
+                 OfferingStatus' <$>
+                   (x .:? "effectiveOn") <*> (x .:? "offering") <*>
+                     (x .:? "quantity")
+                     <*> (x .:? "type"))
+
+instance Hashable OfferingStatus
+
+instance NFData OfferingStatus
+
+-- | Represents the metadata of an offering transaction.
+--
+--
+--
+-- /See:/ 'offeringTransaction' smart constructor.
+data OfferingTransaction = OfferingTransaction'
+    { _otOfferingStatus :: !(Maybe OfferingStatus)
+    , _otCost           :: !(Maybe MonetaryAmount)
+    , _otTransactionId  :: !(Maybe Text)
+    , _otCreatedOn      :: !(Maybe POSIX)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OfferingTransaction' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'otOfferingStatus' - The status of an offering transaction.
+--
+-- * 'otCost' - The cost of an offering transaction.
+--
+-- * 'otTransactionId' - The transaction ID of the offering transaction.
+--
+-- * 'otCreatedOn' - The date on which an offering transaction was created.
+offeringTransaction
+    :: OfferingTransaction
+offeringTransaction =
+    OfferingTransaction'
+    { _otOfferingStatus = Nothing
+    , _otCost = Nothing
+    , _otTransactionId = Nothing
+    , _otCreatedOn = Nothing
+    }
+
+-- | The status of an offering transaction.
+otOfferingStatus :: Lens' OfferingTransaction (Maybe OfferingStatus)
+otOfferingStatus = lens _otOfferingStatus (\ s a -> s{_otOfferingStatus = a});
+
+-- | The cost of an offering transaction.
+otCost :: Lens' OfferingTransaction (Maybe MonetaryAmount)
+otCost = lens _otCost (\ s a -> s{_otCost = a});
+
+-- | The transaction ID of the offering transaction.
+otTransactionId :: Lens' OfferingTransaction (Maybe Text)
+otTransactionId = lens _otTransactionId (\ s a -> s{_otTransactionId = a});
+
+-- | The date on which an offering transaction was created.
+otCreatedOn :: Lens' OfferingTransaction (Maybe UTCTime)
+otCreatedOn = lens _otCreatedOn (\ s a -> s{_otCreatedOn = a}) . mapping _Time;
+
+instance FromJSON OfferingTransaction where
+        parseJSON
+          = withObject "OfferingTransaction"
+              (\ x ->
+                 OfferingTransaction' <$>
+                   (x .:? "offeringStatus") <*> (x .:? "cost") <*>
+                     (x .:? "transactionId")
+                     <*> (x .:? "createdOn"))
+
+instance Hashable OfferingTransaction
+
+instance NFData OfferingTransaction
+
+-- | Represents a specific warning or failure.
+--
+--
+--
+-- /See:/ 'problem' smart constructor.
+data Problem = Problem'
+    { _pDevice  :: !(Maybe Device)
+    , _pTest    :: !(Maybe ProblemDetail)
+    , _pResult  :: !(Maybe ExecutionResult)
+    , _pRun     :: !(Maybe ProblemDetail)
+    , _pJob     :: !(Maybe ProblemDetail)
+    , _pMessage :: !(Maybe Text)
+    , _pSuite   :: !(Maybe ProblemDetail)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Problem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pDevice' - Information about the associated device.
+--
+-- * 'pTest' - Information about the associated test.
+--
+-- * 'pResult' - The problem's result. Allowed values include:     * PENDING: A pending condition.     * PASSED: A passing condition.     * WARNED: A warning condition.     * FAILED: A failed condition.     * SKIPPED: A skipped condition.     * ERRORED: An error condition.     * STOPPED: A stopped condition.
+--
+-- * 'pRun' - Information about the associated run.
+--
+-- * 'pJob' - Information about the associated job.
+--
+-- * 'pMessage' - A message about the problem's result.
+--
+-- * 'pSuite' - Information about the associated suite.
+problem
+    :: Problem
+problem =
+    Problem'
+    { _pDevice = Nothing
+    , _pTest = Nothing
+    , _pResult = Nothing
+    , _pRun = Nothing
+    , _pJob = Nothing
+    , _pMessage = Nothing
+    , _pSuite = Nothing
+    }
+
+-- | Information about the associated device.
+pDevice :: Lens' Problem (Maybe Device)
+pDevice = lens _pDevice (\ s a -> s{_pDevice = a});
+
+-- | Information about the associated test.
+pTest :: Lens' Problem (Maybe ProblemDetail)
+pTest = lens _pTest (\ s a -> s{_pTest = a});
+
+-- | The problem's result. Allowed values include:     * PENDING: A pending condition.     * PASSED: A passing condition.     * WARNED: A warning condition.     * FAILED: A failed condition.     * SKIPPED: A skipped condition.     * ERRORED: An error condition.     * STOPPED: A stopped condition.
+pResult :: Lens' Problem (Maybe ExecutionResult)
+pResult = lens _pResult (\ s a -> s{_pResult = a});
+
+-- | Information about the associated run.
+pRun :: Lens' Problem (Maybe ProblemDetail)
+pRun = lens _pRun (\ s a -> s{_pRun = a});
+
+-- | Information about the associated job.
+pJob :: Lens' Problem (Maybe ProblemDetail)
+pJob = lens _pJob (\ s a -> s{_pJob = a});
+
+-- | A message about the problem's result.
+pMessage :: Lens' Problem (Maybe Text)
+pMessage = lens _pMessage (\ s a -> s{_pMessage = a});
+
+-- | Information about the associated suite.
+pSuite :: Lens' Problem (Maybe ProblemDetail)
+pSuite = lens _pSuite (\ s a -> s{_pSuite = a});
+
+instance FromJSON Problem where
+        parseJSON
+          = withObject "Problem"
+              (\ x ->
+                 Problem' <$>
+                   (x .:? "device") <*> (x .:? "test") <*>
+                     (x .:? "result")
+                     <*> (x .:? "run")
+                     <*> (x .:? "job")
+                     <*> (x .:? "message")
+                     <*> (x .:? "suite"))
+
+instance Hashable Problem
+
+instance NFData Problem
+
+-- | Information about a problem detail.
+--
+--
+--
+-- /See:/ 'problemDetail' smart constructor.
+data ProblemDetail = ProblemDetail'
+    { _pdArn  :: !(Maybe Text)
+    , _pdName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProblemDetail' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pdArn' - The problem detail's ARN.
+--
+-- * 'pdName' - The problem detail's name.
+problemDetail
+    :: ProblemDetail
+problemDetail =
+    ProblemDetail'
+    { _pdArn = Nothing
+    , _pdName = Nothing
+    }
+
+-- | The problem detail's ARN.
+pdArn :: Lens' ProblemDetail (Maybe Text)
+pdArn = lens _pdArn (\ s a -> s{_pdArn = a});
+
+-- | The problem detail's name.
+pdName :: Lens' ProblemDetail (Maybe Text)
+pdName = lens _pdName (\ s a -> s{_pdName = a});
+
+instance FromJSON ProblemDetail where
+        parseJSON
+          = withObject "ProblemDetail"
+              (\ x ->
+                 ProblemDetail' <$> (x .:? "arn") <*> (x .:? "name"))
+
+instance Hashable ProblemDetail
+
+instance NFData ProblemDetail
+
+-- | Represents an operating-system neutral workspace for running and managing tests.
+--
+--
+--
+-- /See:/ 'project' smart constructor.
+data Project = Project'
+    { _pArn     :: !(Maybe Text)
+    , _pCreated :: !(Maybe POSIX)
+    , _pName    :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Project' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pArn' - The project's ARN.
+--
+-- * 'pCreated' - When the project was created.
+--
+-- * 'pName' - The project's name.
+project
+    :: Project
+project =
+    Project'
+    { _pArn = Nothing
+    , _pCreated = Nothing
+    , _pName = Nothing
+    }
+
+-- | The project's ARN.
+pArn :: Lens' Project (Maybe Text)
+pArn = lens _pArn (\ s a -> s{_pArn = a});
+
+-- | When the project was created.
+pCreated :: Lens' Project (Maybe UTCTime)
+pCreated = lens _pCreated (\ s a -> s{_pCreated = a}) . mapping _Time;
+
+-- | The project's name.
+pName :: Lens' Project (Maybe Text)
+pName = lens _pName (\ s a -> s{_pName = a});
+
+instance FromJSON Project where
+        parseJSON
+          = withObject "Project"
+              (\ x ->
+                 Project' <$>
+                   (x .:? "arn") <*> (x .:? "created") <*>
+                     (x .:? "name"))
+
+instance Hashable Project
+
+instance NFData Project
+
+-- | Represents the set of radios and their states on a device. Examples of radios include Wi-Fi, GPS, Bluetooth, and NFC.
+--
+--
+--
+-- /See:/ 'radios' smart constructor.
+data Radios = Radios'
+    { _rNfc       :: !(Maybe Bool)
+    , _rGps       :: !(Maybe Bool)
+    , _rBluetooth :: !(Maybe Bool)
+    , _rWifi      :: !(Maybe Bool)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Radios' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rNfc' - True if NFC is enabled at the beginning of the test; otherwise, false.
+--
+-- * 'rGps' - True if GPS is enabled at the beginning of the test; otherwise, false.
+--
+-- * 'rBluetooth' - True if Bluetooth is enabled at the beginning of the test; otherwise, false.
+--
+-- * 'rWifi' - True if Wi-Fi is enabled at the beginning of the test; otherwise, false.
+radios
+    :: Radios
+radios =
+    Radios'
+    { _rNfc = Nothing
+    , _rGps = Nothing
+    , _rBluetooth = Nothing
+    , _rWifi = Nothing
+    }
+
+-- | True if NFC is enabled at the beginning of the test; otherwise, false.
+rNfc :: Lens' Radios (Maybe Bool)
+rNfc = lens _rNfc (\ s a -> s{_rNfc = a});
+
+-- | True if GPS is enabled at the beginning of the test; otherwise, false.
+rGps :: Lens' Radios (Maybe Bool)
+rGps = lens _rGps (\ s a -> s{_rGps = a});
+
+-- | True if Bluetooth is enabled at the beginning of the test; otherwise, false.
+rBluetooth :: Lens' Radios (Maybe Bool)
+rBluetooth = lens _rBluetooth (\ s a -> s{_rBluetooth = a});
+
+-- | True if Wi-Fi is enabled at the beginning of the test; otherwise, false.
+rWifi :: Lens' Radios (Maybe Bool)
+rWifi = lens _rWifi (\ s a -> s{_rWifi = a});
+
+instance Hashable Radios
+
+instance NFData Radios
+
+instance ToJSON Radios where
+        toJSON Radios'{..}
+          = object
+              (catMaybes
+                 [("nfc" .=) <$> _rNfc, ("gps" .=) <$> _rGps,
+                  ("bluetooth" .=) <$> _rBluetooth,
+                  ("wifi" .=) <$> _rWifi])
+
+-- | Specifies whether charges for devices will be recurring.
+--
+--
+--
+-- /See:/ 'recurringCharge' smart constructor.
+data RecurringCharge = RecurringCharge'
+    { _rcFrequency :: !(Maybe RecurringChargeFrequency)
+    , _rcCost      :: !(Maybe MonetaryAmount)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RecurringCharge' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcFrequency' - The frequency in which charges will recur.
+--
+-- * 'rcCost' - The cost of the recurring charge.
+recurringCharge
+    :: RecurringCharge
+recurringCharge =
+    RecurringCharge'
+    { _rcFrequency = Nothing
+    , _rcCost = Nothing
+    }
+
+-- | The frequency in which charges will recur.
+rcFrequency :: Lens' RecurringCharge (Maybe RecurringChargeFrequency)
+rcFrequency = lens _rcFrequency (\ s a -> s{_rcFrequency = a});
+
+-- | The cost of the recurring charge.
+rcCost :: Lens' RecurringCharge (Maybe MonetaryAmount)
+rcCost = lens _rcCost (\ s a -> s{_rcCost = a});
+
+instance FromJSON RecurringCharge where
+        parseJSON
+          = withObject "RecurringCharge"
+              (\ x ->
+                 RecurringCharge' <$>
+                   (x .:? "frequency") <*> (x .:? "cost"))
+
+instance Hashable RecurringCharge
+
+instance NFData RecurringCharge
+
+-- | Represents information about the remote access session.
+--
+--
+--
+-- /See:/ 'remoteAccessSession' smart constructor.
+data RemoteAccessSession = RemoteAccessSession'
+    { _rasBillingMethod :: !(Maybe BillingMethod)
+    , _rasStatus        :: !(Maybe ExecutionStatus)
+    , _rasArn           :: !(Maybe Text)
+    , _rasCreated       :: !(Maybe POSIX)
+    , _rasDevice        :: !(Maybe Device)
+    , _rasStopped       :: !(Maybe POSIX)
+    , _rasResult        :: !(Maybe ExecutionResult)
+    , _rasName          :: !(Maybe Text)
+    , _rasDeviceMinutes :: !(Maybe DeviceMinutes)
+    , _rasEndpoint      :: !(Maybe Text)
+    , _rasMessage       :: !(Maybe Text)
+    , _rasStarted       :: !(Maybe POSIX)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RemoteAccessSession' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rasBillingMethod' - The billing method of the remote access session. Possible values include @METERED@ or @UNMETERED@ . For more information about metered devices, see <http://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html#welcome-terminology AWS Device Farm terminology> ."
+--
+-- * 'rasStatus' - The status of the remote access session. Can be any of the following:     * PENDING: A pending status.     * PENDING_CONCURRENCY: A pending concurrency status.     * PENDING_DEVICE: A pending device status.     * PROCESSING: A processing status.     * SCHEDULING: A scheduling status.     * PREPARING: A preparing status.     * RUNNING: A running status.     * COMPLETED: A completed status.     * STOPPING: A stopping status.
+--
+-- * 'rasArn' - The Amazon Resource Name (ARN) of the remote access session.
+--
+-- * 'rasCreated' - The date and time the remote access session was created.
+--
+-- * 'rasDevice' - Undocumented member.
+--
+-- * 'rasStopped' - The date and time the remote access session was stopped.
+--
+-- * 'rasResult' - The result of the remote access session. Can be any of the following:     * PENDING: A pending condition.     * PASSED: A passing condition.     * WARNED: A warning condition.     * FAILED: A failed condition.     * SKIPPED: A skipped condition.     * ERRORED: An error condition.     * STOPPED: A stopped condition.
+--
+-- * 'rasName' - The name of the remote access session.
+--
+-- * 'rasDeviceMinutes' - Undocumented member.
+--
+-- * 'rasEndpoint' - The endpoint for the remote access sesssion.
+--
+-- * 'rasMessage' - A message about the remote access session.
+--
+-- * 'rasStarted' - The date and time the remote access session was started.
+remoteAccessSession
+    :: RemoteAccessSession
+remoteAccessSession =
+    RemoteAccessSession'
+    { _rasBillingMethod = Nothing
+    , _rasStatus = Nothing
+    , _rasArn = Nothing
+    , _rasCreated = Nothing
+    , _rasDevice = Nothing
+    , _rasStopped = Nothing
+    , _rasResult = Nothing
+    , _rasName = Nothing
+    , _rasDeviceMinutes = Nothing
+    , _rasEndpoint = Nothing
+    , _rasMessage = Nothing
+    , _rasStarted = Nothing
+    }
+
+-- | The billing method of the remote access session. Possible values include @METERED@ or @UNMETERED@ . For more information about metered devices, see <http://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html#welcome-terminology AWS Device Farm terminology> ."
+rasBillingMethod :: Lens' RemoteAccessSession (Maybe BillingMethod)
+rasBillingMethod = lens _rasBillingMethod (\ s a -> s{_rasBillingMethod = a});
+
+-- | The status of the remote access session. Can be any of the following:     * PENDING: A pending status.     * PENDING_CONCURRENCY: A pending concurrency status.     * PENDING_DEVICE: A pending device status.     * PROCESSING: A processing status.     * SCHEDULING: A scheduling status.     * PREPARING: A preparing status.     * RUNNING: A running status.     * COMPLETED: A completed status.     * STOPPING: A stopping status.
+rasStatus :: Lens' RemoteAccessSession (Maybe ExecutionStatus)
+rasStatus = lens _rasStatus (\ s a -> s{_rasStatus = a});
+
+-- | The Amazon Resource Name (ARN) of the remote access session.
+rasArn :: Lens' RemoteAccessSession (Maybe Text)
+rasArn = lens _rasArn (\ s a -> s{_rasArn = a});
+
+-- | The date and time the remote access session was created.
+rasCreated :: Lens' RemoteAccessSession (Maybe UTCTime)
+rasCreated = lens _rasCreated (\ s a -> s{_rasCreated = a}) . mapping _Time;
+
+-- | Undocumented member.
+rasDevice :: Lens' RemoteAccessSession (Maybe Device)
+rasDevice = lens _rasDevice (\ s a -> s{_rasDevice = a});
+
+-- | The date and time the remote access session was stopped.
+rasStopped :: Lens' RemoteAccessSession (Maybe UTCTime)
+rasStopped = lens _rasStopped (\ s a -> s{_rasStopped = a}) . mapping _Time;
+
+-- | The result of the remote access session. Can be any of the following:     * PENDING: A pending condition.     * PASSED: A passing condition.     * WARNED: A warning condition.     * FAILED: A failed condition.     * SKIPPED: A skipped condition.     * ERRORED: An error condition.     * STOPPED: A stopped condition.
+rasResult :: Lens' RemoteAccessSession (Maybe ExecutionResult)
+rasResult = lens _rasResult (\ s a -> s{_rasResult = a});
+
+-- | The name of the remote access session.
+rasName :: Lens' RemoteAccessSession (Maybe Text)
+rasName = lens _rasName (\ s a -> s{_rasName = a});
+
+-- | Undocumented member.
+rasDeviceMinutes :: Lens' RemoteAccessSession (Maybe DeviceMinutes)
+rasDeviceMinutes = lens _rasDeviceMinutes (\ s a -> s{_rasDeviceMinutes = a});
+
+-- | The endpoint for the remote access sesssion.
+rasEndpoint :: Lens' RemoteAccessSession (Maybe Text)
+rasEndpoint = lens _rasEndpoint (\ s a -> s{_rasEndpoint = a});
+
+-- | A message about the remote access session.
+rasMessage :: Lens' RemoteAccessSession (Maybe Text)
+rasMessage = lens _rasMessage (\ s a -> s{_rasMessage = a});
+
+-- | The date and time the remote access session was started.
+rasStarted :: Lens' RemoteAccessSession (Maybe UTCTime)
+rasStarted = lens _rasStarted (\ s a -> s{_rasStarted = a}) . mapping _Time;
+
+instance FromJSON RemoteAccessSession where
+        parseJSON
+          = withObject "RemoteAccessSession"
+              (\ x ->
+                 RemoteAccessSession' <$>
+                   (x .:? "billingMethod") <*> (x .:? "status") <*>
+                     (x .:? "arn")
+                     <*> (x .:? "created")
+                     <*> (x .:? "device")
+                     <*> (x .:? "stopped")
+                     <*> (x .:? "result")
+                     <*> (x .:? "name")
+                     <*> (x .:? "deviceMinutes")
+                     <*> (x .:? "endpoint")
+                     <*> (x .:? "message")
+                     <*> (x .:? "started"))
+
+instance Hashable RemoteAccessSession
+
+instance NFData RemoteAccessSession
+
+-- | Represents the screen resolution of a device in height and width, expressed in pixels.
+--
+--
+--
+-- /See:/ 'resolution' smart constructor.
+data Resolution = Resolution'
+    { _rHeight :: !(Maybe Int)
+    , _rWidth  :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Resolution' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rHeight' - The screen resolution's height, expressed in pixels.
+--
+-- * 'rWidth' - The screen resolution's width, expressed in pixels.
+resolution
+    :: Resolution
+resolution =
+    Resolution'
+    { _rHeight = Nothing
+    , _rWidth = Nothing
+    }
+
+-- | The screen resolution's height, expressed in pixels.
+rHeight :: Lens' Resolution (Maybe Int)
+rHeight = lens _rHeight (\ s a -> s{_rHeight = a});
+
+-- | The screen resolution's width, expressed in pixels.
+rWidth :: Lens' Resolution (Maybe Int)
+rWidth = lens _rWidth (\ s a -> s{_rWidth = a});
+
+instance FromJSON Resolution where
+        parseJSON
+          = withObject "Resolution"
+              (\ x ->
+                 Resolution' <$> (x .:? "height") <*> (x .:? "width"))
+
+instance Hashable Resolution
+
+instance NFData Resolution
+
+-- | Represents a condition for a device pool.
+--
+--
+--
+-- /See:/ 'rule' smart constructor.
+data Rule = Rule'
+    { _rAttribute :: !(Maybe DeviceAttribute)
+    , _rOperator  :: !(Maybe RuleOperator)
+    , _rValue     :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Rule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rAttribute' - The rule's stringified attribute. For example, specify the value as @"\"abc\""@ . Allowed values include:     * ARN: The ARN.     * FORM_FACTOR: The form factor (for example, phone or tablet).     * MANUFACTURER: The manufacturer.     * PLATFORM: The platform (for example, Android or iOS).
+--
+-- * 'rOperator' - The rule's operator.     * EQUALS: The equals operator.     * GREATER_THAN: The greater-than operator.     * IN: The in operator.     * LESS_THAN: The less-than operator.     * NOT_IN: The not-in operator.
+--
+-- * 'rValue' - The rule's value.
+rule
+    :: Rule
+rule =
+    Rule'
+    { _rAttribute = Nothing
+    , _rOperator = Nothing
+    , _rValue = Nothing
+    }
+
+-- | The rule's stringified attribute. For example, specify the value as @"\"abc\""@ . Allowed values include:     * ARN: The ARN.     * FORM_FACTOR: The form factor (for example, phone or tablet).     * MANUFACTURER: The manufacturer.     * PLATFORM: The platform (for example, Android or iOS).
+rAttribute :: Lens' Rule (Maybe DeviceAttribute)
+rAttribute = lens _rAttribute (\ s a -> s{_rAttribute = a});
+
+-- | The rule's operator.     * EQUALS: The equals operator.     * GREATER_THAN: The greater-than operator.     * IN: The in operator.     * LESS_THAN: The less-than operator.     * NOT_IN: The not-in operator.
+rOperator :: Lens' Rule (Maybe RuleOperator)
+rOperator = lens _rOperator (\ s a -> s{_rOperator = a});
+
+-- | The rule's value.
+rValue :: Lens' Rule (Maybe Text)
+rValue = lens _rValue (\ s a -> s{_rValue = a});
+
+instance FromJSON Rule where
+        parseJSON
+          = withObject "Rule"
+              (\ x ->
+                 Rule' <$>
+                   (x .:? "attribute") <*> (x .:? "operator") <*>
+                     (x .:? "value"))
+
+instance Hashable Rule
+
+instance NFData Rule
+
+instance ToJSON Rule where
+        toJSON Rule'{..}
+          = object
+              (catMaybes
+                 [("attribute" .=) <$> _rAttribute,
+                  ("operator" .=) <$> _rOperator,
+                  ("value" .=) <$> _rValue])
+
+-- | Represents an app on a set of devices with a specific test and configuration.
+--
+--
+--
+-- /See:/ 'run' smart constructor.
+data Run = Run'
+    { _runBillingMethod :: !(Maybe BillingMethod)
+    , _runStatus        :: !(Maybe ExecutionStatus)
+    , _runCounters      :: !(Maybe Counters)
+    , _runPlatform      :: !(Maybe DevicePlatform)
+    , _runArn           :: !(Maybe Text)
+    , _runCreated       :: !(Maybe POSIX)
+    , _runStopped       :: !(Maybe POSIX)
+    , _runResult        :: !(Maybe ExecutionResult)
+    , _runCompletedJobs :: !(Maybe Int)
+    , _runName          :: !(Maybe Text)
+    , _runDeviceMinutes :: !(Maybe DeviceMinutes)
+    , _runType          :: !(Maybe TestType)
+    , _runMessage       :: !(Maybe Text)
+    , _runTotalJobs     :: !(Maybe Int)
+    , _runStarted       :: !(Maybe POSIX)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Run' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'runBillingMethod' - Specifies the billing method for a test run: @metered@ or @unmetered@ . If the parameter is not specified, the default value is @metered@ .
+--
+-- * 'runStatus' - The run's status. Allowed values include:     * PENDING: A pending status.     * PENDING_CONCURRENCY: A pending concurrency status.     * PENDING_DEVICE: A pending device status.     * PROCESSING: A processing status.     * SCHEDULING: A scheduling status.     * PREPARING: A preparing status.     * RUNNING: A running status.     * COMPLETED: A completed status.     * STOPPING: A stopping status.
+--
+-- * 'runCounters' - The run's result counters.
+--
+-- * 'runPlatform' - The run's platform. Allowed values include:     * ANDROID: The Android platform.     * IOS: The iOS platform.
+--
+-- * 'runArn' - The run's ARN.
+--
+-- * 'runCreated' - When the run was created.
+--
+-- * 'runStopped' - The run's stop time.
+--
+-- * 'runResult' - The run's result. Allowed values include:     * PENDING: A pending condition.     * PASSED: A passing condition.     * WARNED: A warning condition.     * FAILED: A failed condition.     * SKIPPED: A skipped condition.     * ERRORED: An error condition.     * STOPPED: A stopped condition.
+--
+-- * 'runCompletedJobs' - The total number of completed jobs.
+--
+-- * 'runName' - The run's name.
+--
+-- * 'runDeviceMinutes' - Represents the total (metered or unmetered) minutes used by the test run.
+--
+-- * 'runType' - The run's type. Must be one of the following values:     * BUILTIN_FUZZ: The built-in fuzz type.     * BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time.     * APPIUM_JAVA_JUNIT: The Appium Java JUnit type.     * APPIUM_JAVA_TESTNG: The Appium Java TestNG type.     * APPIUM_PYTHON: The Appium Python type.     * APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps.     * APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps.     * APPIUM_WEB_PYTHON: The Appium Python type for Web apps.     * CALABASH: The Calabash type.     * INSTRUMENTATION: The Instrumentation type.     * UIAUTOMATION: The uiautomation type.     * UIAUTOMATOR: The uiautomator type.     * XCTEST: The XCode test type.     * XCTEST_UI: The XCode UI test type.
+--
+-- * 'runMessage' - A message about the run's result.
+--
+-- * 'runTotalJobs' - The total number of jobs for the run.
+--
+-- * 'runStarted' - The run's start time.
+run
+    :: Run
+run =
+    Run'
+    { _runBillingMethod = Nothing
+    , _runStatus = Nothing
+    , _runCounters = Nothing
+    , _runPlatform = Nothing
+    , _runArn = Nothing
+    , _runCreated = Nothing
+    , _runStopped = Nothing
+    , _runResult = Nothing
+    , _runCompletedJobs = Nothing
+    , _runName = Nothing
+    , _runDeviceMinutes = Nothing
+    , _runType = Nothing
+    , _runMessage = Nothing
+    , _runTotalJobs = Nothing
+    , _runStarted = Nothing
+    }
+
+-- | Specifies the billing method for a test run: @metered@ or @unmetered@ . If the parameter is not specified, the default value is @metered@ .
+runBillingMethod :: Lens' Run (Maybe BillingMethod)
+runBillingMethod = lens _runBillingMethod (\ s a -> s{_runBillingMethod = a});
+
+-- | The run's status. Allowed values include:     * PENDING: A pending status.     * PENDING_CONCURRENCY: A pending concurrency status.     * PENDING_DEVICE: A pending device status.     * PROCESSING: A processing status.     * SCHEDULING: A scheduling status.     * PREPARING: A preparing status.     * RUNNING: A running status.     * COMPLETED: A completed status.     * STOPPING: A stopping status.
+runStatus :: Lens' Run (Maybe ExecutionStatus)
+runStatus = lens _runStatus (\ s a -> s{_runStatus = a});
+
+-- | The run's result counters.
+runCounters :: Lens' Run (Maybe Counters)
+runCounters = lens _runCounters (\ s a -> s{_runCounters = a});
+
+-- | The run's platform. Allowed values include:     * ANDROID: The Android platform.     * IOS: The iOS platform.
+runPlatform :: Lens' Run (Maybe DevicePlatform)
+runPlatform = lens _runPlatform (\ s a -> s{_runPlatform = a});
+
+-- | The run's ARN.
+runArn :: Lens' Run (Maybe Text)
+runArn = lens _runArn (\ s a -> s{_runArn = a});
+
+-- | When the run was created.
+runCreated :: Lens' Run (Maybe UTCTime)
+runCreated = lens _runCreated (\ s a -> s{_runCreated = a}) . mapping _Time;
+
+-- | The run's stop time.
+runStopped :: Lens' Run (Maybe UTCTime)
+runStopped = lens _runStopped (\ s a -> s{_runStopped = a}) . mapping _Time;
+
+-- | The run's result. Allowed values include:     * PENDING: A pending condition.     * PASSED: A passing condition.     * WARNED: A warning condition.     * FAILED: A failed condition.     * SKIPPED: A skipped condition.     * ERRORED: An error condition.     * STOPPED: A stopped condition.
+runResult :: Lens' Run (Maybe ExecutionResult)
+runResult = lens _runResult (\ s a -> s{_runResult = a});
+
+-- | The total number of completed jobs.
+runCompletedJobs :: Lens' Run (Maybe Int)
+runCompletedJobs = lens _runCompletedJobs (\ s a -> s{_runCompletedJobs = a});
+
+-- | The run's name.
+runName :: Lens' Run (Maybe Text)
+runName = lens _runName (\ s a -> s{_runName = a});
+
+-- | Represents the total (metered or unmetered) minutes used by the test run.
+runDeviceMinutes :: Lens' Run (Maybe DeviceMinutes)
+runDeviceMinutes = lens _runDeviceMinutes (\ s a -> s{_runDeviceMinutes = a});
+
+-- | The run's type. Must be one of the following values:     * BUILTIN_FUZZ: The built-in fuzz type.     * BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time.     * APPIUM_JAVA_JUNIT: The Appium Java JUnit type.     * APPIUM_JAVA_TESTNG: The Appium Java TestNG type.     * APPIUM_PYTHON: The Appium Python type.     * APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps.     * APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps.     * APPIUM_WEB_PYTHON: The Appium Python type for Web apps.     * CALABASH: The Calabash type.     * INSTRUMENTATION: The Instrumentation type.     * UIAUTOMATION: The uiautomation type.     * UIAUTOMATOR: The uiautomator type.     * XCTEST: The XCode test type.     * XCTEST_UI: The XCode UI test type.
+runType :: Lens' Run (Maybe TestType)
+runType = lens _runType (\ s a -> s{_runType = a});
+
+-- | A message about the run's result.
+runMessage :: Lens' Run (Maybe Text)
+runMessage = lens _runMessage (\ s a -> s{_runMessage = a});
+
+-- | The total number of jobs for the run.
+runTotalJobs :: Lens' Run (Maybe Int)
+runTotalJobs = lens _runTotalJobs (\ s a -> s{_runTotalJobs = a});
+
+-- | The run's start time.
+runStarted :: Lens' Run (Maybe UTCTime)
+runStarted = lens _runStarted (\ s a -> s{_runStarted = a}) . mapping _Time;
+
+instance FromJSON Run where
+        parseJSON
+          = withObject "Run"
+              (\ x ->
+                 Run' <$>
+                   (x .:? "billingMethod") <*> (x .:? "status") <*>
+                     (x .:? "counters")
+                     <*> (x .:? "platform")
+                     <*> (x .:? "arn")
+                     <*> (x .:? "created")
+                     <*> (x .:? "stopped")
+                     <*> (x .:? "result")
+                     <*> (x .:? "completedJobs")
+                     <*> (x .:? "name")
+                     <*> (x .:? "deviceMinutes")
+                     <*> (x .:? "type")
+                     <*> (x .:? "message")
+                     <*> (x .:? "totalJobs")
+                     <*> (x .:? "started"))
+
+instance Hashable Run
+
+instance NFData Run
+
+-- | Represents a sample of performance data.
+--
+--
+--
+-- /See:/ 'sample' smart constructor.
+data Sample = Sample'
+    { _samArn  :: !(Maybe Text)
+    , _samUrl  :: !(Maybe Text)
+    , _samType :: !(Maybe SampleType)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Sample' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'samArn' - The sample's ARN.
+--
+-- * 'samUrl' - The pre-signed Amazon S3 URL that can be used with a corresponding GET request to download the sample's file.
+--
+-- * 'samType' - The sample's type. Must be one of the following values:     * CPU: A CPU sample type. This is expressed as the app processing CPU time (including child processes) as reported by process, as a percentage.     * MEMORY: A memory usage sample type. This is expressed as the total proportional set size of an app process, in kilobytes.     * NATIVE_AVG_DRAWTIME     * NATIVE_FPS     * NATIVE_FRAMES     * NATIVE_MAX_DRAWTIME     * NATIVE_MIN_DRAWTIME     * OPENGL_AVG_DRAWTIME     * OPENGL_FPS     * OPENGL_FRAMES     * OPENGL_MAX_DRAWTIME     * OPENGL_MIN_DRAWTIME     * RX     * RX_RATE: The total number of bytes per second (TCP and UDP) that are sent, by app process.     * THREADS: A threads sample type. This is expressed as the total number of threads per app process.     * TX     * TX_RATE: The total number of bytes per second (TCP and UDP) that are received, by app process.
+sample
+    :: Sample
+sample =
+    Sample'
+    { _samArn = Nothing
+    , _samUrl = Nothing
+    , _samType = Nothing
+    }
+
+-- | The sample's ARN.
+samArn :: Lens' Sample (Maybe Text)
+samArn = lens _samArn (\ s a -> s{_samArn = a});
+
+-- | The pre-signed Amazon S3 URL that can be used with a corresponding GET request to download the sample's file.
+samUrl :: Lens' Sample (Maybe Text)
+samUrl = lens _samUrl (\ s a -> s{_samUrl = a});
+
+-- | The sample's type. Must be one of the following values:     * CPU: A CPU sample type. This is expressed as the app processing CPU time (including child processes) as reported by process, as a percentage.     * MEMORY: A memory usage sample type. This is expressed as the total proportional set size of an app process, in kilobytes.     * NATIVE_AVG_DRAWTIME     * NATIVE_FPS     * NATIVE_FRAMES     * NATIVE_MAX_DRAWTIME     * NATIVE_MIN_DRAWTIME     * OPENGL_AVG_DRAWTIME     * OPENGL_FPS     * OPENGL_FRAMES     * OPENGL_MAX_DRAWTIME     * OPENGL_MIN_DRAWTIME     * RX     * RX_RATE: The total number of bytes per second (TCP and UDP) that are sent, by app process.     * THREADS: A threads sample type. This is expressed as the total number of threads per app process.     * TX     * TX_RATE: The total number of bytes per second (TCP and UDP) that are received, by app process.
+samType :: Lens' Sample (Maybe SampleType)
+samType = lens _samType (\ s a -> s{_samType = a});
+
+instance FromJSON Sample where
+        parseJSON
+          = withObject "Sample"
+              (\ x ->
+                 Sample' <$>
+                   (x .:? "arn") <*> (x .:? "url") <*> (x .:? "type"))
+
+instance Hashable Sample
+
+instance NFData Sample
+
+-- | Represents the settings for a run. Includes things like location, radio states, auxiliary apps, and network profiles.
+--
+--
+--
+-- /See:/ 'scheduleRunConfiguration' smart constructor.
+data ScheduleRunConfiguration = ScheduleRunConfiguration'
+    { _srcBillingMethod       :: !(Maybe BillingMethod)
+    , _srcRadios              :: !(Maybe Radios)
+    , _srcLocation            :: !(Maybe Location)
+    , _srcLocale              :: !(Maybe Text)
+    , _srcNetworkProfileARN   :: !(Maybe Text)
+    , _srcExtraDataPackageARN :: !(Maybe Text)
+    , _srcAuxiliaryApps       :: !(Maybe [Text])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ScheduleRunConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'srcBillingMethod' - Specifies the billing method for a test run: @metered@ or @unmetered@ . If the parameter is not specified, the default value is @metered@ .
+--
+-- * 'srcRadios' - Information about the radio states for the run.
+--
+-- * 'srcLocation' - Information about the location that is used for the run.
+--
+-- * 'srcLocale' - Information about the locale that is used for the run.
+--
+-- * 'srcNetworkProfileARN' - Reserved for internal use.
+--
+-- * 'srcExtraDataPackageARN' - The ARN of the extra data for the run. The extra data is a .zip file that AWS Device Farm will extract to external data for Android or the app's sandbox for iOS.
+--
+-- * 'srcAuxiliaryApps' - A list of auxiliary apps for the run.
+scheduleRunConfiguration
+    :: ScheduleRunConfiguration
+scheduleRunConfiguration =
+    ScheduleRunConfiguration'
+    { _srcBillingMethod = Nothing
+    , _srcRadios = Nothing
+    , _srcLocation = Nothing
+    , _srcLocale = Nothing
+    , _srcNetworkProfileARN = Nothing
+    , _srcExtraDataPackageARN = Nothing
+    , _srcAuxiliaryApps = Nothing
+    }
+
+-- | Specifies the billing method for a test run: @metered@ or @unmetered@ . If the parameter is not specified, the default value is @metered@ .
+srcBillingMethod :: Lens' ScheduleRunConfiguration (Maybe BillingMethod)
+srcBillingMethod = lens _srcBillingMethod (\ s a -> s{_srcBillingMethod = a});
+
+-- | Information about the radio states for the run.
+srcRadios :: Lens' ScheduleRunConfiguration (Maybe Radios)
+srcRadios = lens _srcRadios (\ s a -> s{_srcRadios = a});
+
+-- | Information about the location that is used for the run.
+srcLocation :: Lens' ScheduleRunConfiguration (Maybe Location)
+srcLocation = lens _srcLocation (\ s a -> s{_srcLocation = a});
+
+-- | Information about the locale that is used for the run.
+srcLocale :: Lens' ScheduleRunConfiguration (Maybe Text)
+srcLocale = lens _srcLocale (\ s a -> s{_srcLocale = a});
+
+-- | Reserved for internal use.
+srcNetworkProfileARN :: Lens' ScheduleRunConfiguration (Maybe Text)
+srcNetworkProfileARN = lens _srcNetworkProfileARN (\ s a -> s{_srcNetworkProfileARN = a});
+
+-- | The ARN of the extra data for the run. The extra data is a .zip file that AWS Device Farm will extract to external data for Android or the app's sandbox for iOS.
+srcExtraDataPackageARN :: Lens' ScheduleRunConfiguration (Maybe Text)
+srcExtraDataPackageARN = lens _srcExtraDataPackageARN (\ s a -> s{_srcExtraDataPackageARN = a});
+
+-- | A list of auxiliary apps for the run.
+srcAuxiliaryApps :: Lens' ScheduleRunConfiguration [Text]
+srcAuxiliaryApps = lens _srcAuxiliaryApps (\ s a -> s{_srcAuxiliaryApps = a}) . _Default . _Coerce;
+
+instance Hashable ScheduleRunConfiguration
+
+instance NFData ScheduleRunConfiguration
+
+instance ToJSON ScheduleRunConfiguration where
+        toJSON ScheduleRunConfiguration'{..}
+          = object
+              (catMaybes
+                 [("billingMethod" .=) <$> _srcBillingMethod,
+                  ("radios" .=) <$> _srcRadios,
+                  ("location" .=) <$> _srcLocation,
+                  ("locale" .=) <$> _srcLocale,
+                  ("networkProfileArn" .=) <$> _srcNetworkProfileARN,
+                  ("extraDataPackageArn" .=) <$>
+                    _srcExtraDataPackageARN,
+                  ("auxiliaryApps" .=) <$> _srcAuxiliaryApps])
+
+-- | Represents additional test settings.
+--
+--
+--
+-- /See:/ 'scheduleRunTest' smart constructor.
+data ScheduleRunTest = ScheduleRunTest'
+    { _srtTestPackageARN :: !(Maybe Text)
+    , _srtParameters     :: !(Maybe (Map Text Text))
+    , _srtFilter         :: !(Maybe Text)
+    , _srtType           :: !TestType
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ScheduleRunTest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'srtTestPackageARN' - The ARN of the uploaded test that will be run.
+--
+-- * 'srtParameters' - The test's parameters, such as test framework parameters and fixture settings.
+--
+-- * 'srtFilter' - The test's filter.
+--
+-- * 'srtType' - The test's type. Must be one of the following values:     * BUILTIN_FUZZ: The built-in fuzz type.     * BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time.     * APPIUM_JAVA_JUNIT: The Appium Java JUnit type.     * APPIUM_JAVA_TESTNG: The Appium Java TestNG type.     * APPIUM_PYTHON: The Appium Python type.     * APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps.     * APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps.     * APPIUM_WEB_PYTHON: The Appium Python type for Web apps.     * CALABASH: The Calabash type.     * INSTRUMENTATION: The Instrumentation type.     * UIAUTOMATION: The uiautomation type.     * UIAUTOMATOR: The uiautomator type.     * XCTEST: The XCode test type.     * XCTEST_UI: The XCode UI test type.
+scheduleRunTest
+    :: TestType -- ^ 'srtType'
+    -> ScheduleRunTest
+scheduleRunTest pType_ =
+    ScheduleRunTest'
+    { _srtTestPackageARN = Nothing
+    , _srtParameters = Nothing
+    , _srtFilter = Nothing
+    , _srtType = pType_
+    }
+
+-- | The ARN of the uploaded test that will be run.
+srtTestPackageARN :: Lens' ScheduleRunTest (Maybe Text)
+srtTestPackageARN = lens _srtTestPackageARN (\ s a -> s{_srtTestPackageARN = a});
+
+-- | The test's parameters, such as test framework parameters and fixture settings.
+srtParameters :: Lens' ScheduleRunTest (HashMap Text Text)
+srtParameters = lens _srtParameters (\ s a -> s{_srtParameters = a}) . _Default . _Map;
+
+-- | The test's filter.
+srtFilter :: Lens' ScheduleRunTest (Maybe Text)
+srtFilter = lens _srtFilter (\ s a -> s{_srtFilter = a});
+
+-- | The test's type. Must be one of the following values:     * BUILTIN_FUZZ: The built-in fuzz type.     * BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time.     * APPIUM_JAVA_JUNIT: The Appium Java JUnit type.     * APPIUM_JAVA_TESTNG: The Appium Java TestNG type.     * APPIUM_PYTHON: The Appium Python type.     * APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps.     * APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps.     * APPIUM_WEB_PYTHON: The Appium Python type for Web apps.     * CALABASH: The Calabash type.     * INSTRUMENTATION: The Instrumentation type.     * UIAUTOMATION: The uiautomation type.     * UIAUTOMATOR: The uiautomator type.     * XCTEST: The XCode test type.     * XCTEST_UI: The XCode UI test type.
+srtType :: Lens' ScheduleRunTest TestType
+srtType = lens _srtType (\ s a -> s{_srtType = a});
+
+instance Hashable ScheduleRunTest
+
+instance NFData ScheduleRunTest
+
+instance ToJSON ScheduleRunTest where
+        toJSON ScheduleRunTest'{..}
+          = object
+              (catMaybes
+                 [("testPackageArn" .=) <$> _srtTestPackageARN,
+                  ("parameters" .=) <$> _srtParameters,
+                  ("filter" .=) <$> _srtFilter,
+                  Just ("type" .= _srtType)])
+
+-- | Represents a collection of one or more tests.
+--
+--
+--
+-- /See:/ 'suite' smart constructor.
+data Suite = Suite'
+    { _sStatus        :: !(Maybe ExecutionStatus)
+    , _sCounters      :: !(Maybe Counters)
+    , _sArn           :: !(Maybe Text)
+    , _sCreated       :: !(Maybe POSIX)
+    , _sStopped       :: !(Maybe POSIX)
+    , _sResult        :: !(Maybe ExecutionResult)
+    , _sName          :: !(Maybe Text)
+    , _sDeviceMinutes :: !(Maybe DeviceMinutes)
+    , _sType          :: !(Maybe TestType)
+    , _sMessage       :: !(Maybe Text)
+    , _sStarted       :: !(Maybe POSIX)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Suite' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sStatus' - The suite's status. Allowed values include:     * PENDING: A pending status.     * PENDING_CONCURRENCY: A pending concurrency status.     * PENDING_DEVICE: A pending device status.     * PROCESSING: A processing status.     * SCHEDULING: A scheduling status.     * PREPARING: A preparing status.     * RUNNING: A running status.     * COMPLETED: A completed status.     * STOPPING: A stopping status.
+--
+-- * 'sCounters' - The suite's result counters.
+--
+-- * 'sArn' - The suite's ARN.
+--
+-- * 'sCreated' - When the suite was created.
+--
+-- * 'sStopped' - The suite's stop time.
+--
+-- * 'sResult' - The suite's result. Allowed values include:     * PENDING: A pending condition.     * PASSED: A passing condition.     * WARNED: A warning condition.     * FAILED: A failed condition.     * SKIPPED: A skipped condition.     * ERRORED: An error condition.     * STOPPED: A stopped condition.
+--
+-- * 'sName' - The suite's name.
+--
+-- * 'sDeviceMinutes' - Represents the total (metered or unmetered) minutes used by the test suite.
+--
+-- * 'sType' - The suite's type. Must be one of the following values:     * BUILTIN_FUZZ: The built-in fuzz type.     * BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time.     * APPIUM_JAVA_JUNIT: The Appium Java JUnit type.     * APPIUM_JAVA_TESTNG: The Appium Java TestNG type.     * APPIUM_PYTHON: The Appium Python type.     * APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps.     * APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps.     * APPIUM_WEB_PYTHON: The Appium Python type for Web apps.     * CALABASH: The Calabash type.     * INSTRUMENTATION: The Instrumentation type.     * UIAUTOMATION: The uiautomation type.     * UIAUTOMATOR: The uiautomator type.     * XCTEST: The XCode test type.     * XCTEST_UI: The XCode UI test type.
+--
+-- * 'sMessage' - A message about the suite's result.
+--
+-- * 'sStarted' - The suite's start time.
+suite
+    :: Suite
+suite =
+    Suite'
+    { _sStatus = Nothing
+    , _sCounters = Nothing
+    , _sArn = Nothing
+    , _sCreated = Nothing
+    , _sStopped = Nothing
+    , _sResult = Nothing
+    , _sName = Nothing
+    , _sDeviceMinutes = Nothing
+    , _sType = Nothing
+    , _sMessage = Nothing
+    , _sStarted = Nothing
+    }
+
+-- | The suite's status. Allowed values include:     * PENDING: A pending status.     * PENDING_CONCURRENCY: A pending concurrency status.     * PENDING_DEVICE: A pending device status.     * PROCESSING: A processing status.     * SCHEDULING: A scheduling status.     * PREPARING: A preparing status.     * RUNNING: A running status.     * COMPLETED: A completed status.     * STOPPING: A stopping status.
+sStatus :: Lens' Suite (Maybe ExecutionStatus)
+sStatus = lens _sStatus (\ s a -> s{_sStatus = a});
+
+-- | The suite's result counters.
+sCounters :: Lens' Suite (Maybe Counters)
+sCounters = lens _sCounters (\ s a -> s{_sCounters = a});
+
+-- | The suite's ARN.
+sArn :: Lens' Suite (Maybe Text)
+sArn = lens _sArn (\ s a -> s{_sArn = a});
+
+-- | When the suite was created.
+sCreated :: Lens' Suite (Maybe UTCTime)
+sCreated = lens _sCreated (\ s a -> s{_sCreated = a}) . mapping _Time;
+
+-- | The suite's stop time.
+sStopped :: Lens' Suite (Maybe UTCTime)
+sStopped = lens _sStopped (\ s a -> s{_sStopped = a}) . mapping _Time;
+
+-- | The suite's result. Allowed values include:     * PENDING: A pending condition.     * PASSED: A passing condition.     * WARNED: A warning condition.     * FAILED: A failed condition.     * SKIPPED: A skipped condition.     * ERRORED: An error condition.     * STOPPED: A stopped condition.
+sResult :: Lens' Suite (Maybe ExecutionResult)
+sResult = lens _sResult (\ s a -> s{_sResult = a});
+
+-- | The suite's name.
+sName :: Lens' Suite (Maybe Text)
+sName = lens _sName (\ s a -> s{_sName = a});
+
+-- | Represents the total (metered or unmetered) minutes used by the test suite.
+sDeviceMinutes :: Lens' Suite (Maybe DeviceMinutes)
+sDeviceMinutes = lens _sDeviceMinutes (\ s a -> s{_sDeviceMinutes = a});
+
+-- | The suite's type. Must be one of the following values:     * BUILTIN_FUZZ: The built-in fuzz type.     * BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time.     * APPIUM_JAVA_JUNIT: The Appium Java JUnit type.     * APPIUM_JAVA_TESTNG: The Appium Java TestNG type.     * APPIUM_PYTHON: The Appium Python type.     * APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps.     * APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps.     * APPIUM_WEB_PYTHON: The Appium Python type for Web apps.     * CALABASH: The Calabash type.     * INSTRUMENTATION: The Instrumentation type.     * UIAUTOMATION: The uiautomation type.     * UIAUTOMATOR: The uiautomator type.     * XCTEST: The XCode test type.     * XCTEST_UI: The XCode UI test type.
+sType :: Lens' Suite (Maybe TestType)
+sType = lens _sType (\ s a -> s{_sType = a});
+
+-- | A message about the suite's result.
+sMessage :: Lens' Suite (Maybe Text)
+sMessage = lens _sMessage (\ s a -> s{_sMessage = a});
+
+-- | The suite's start time.
+sStarted :: Lens' Suite (Maybe UTCTime)
+sStarted = lens _sStarted (\ s a -> s{_sStarted = a}) . mapping _Time;
+
+instance FromJSON Suite where
+        parseJSON
+          = withObject "Suite"
+              (\ x ->
+                 Suite' <$>
+                   (x .:? "status") <*> (x .:? "counters") <*>
+                     (x .:? "arn")
+                     <*> (x .:? "created")
+                     <*> (x .:? "stopped")
+                     <*> (x .:? "result")
+                     <*> (x .:? "name")
+                     <*> (x .:? "deviceMinutes")
+                     <*> (x .:? "type")
+                     <*> (x .:? "message")
+                     <*> (x .:? "started"))
+
+instance Hashable Suite
+
+instance NFData Suite
+
+-- | Represents a condition that is evaluated.
+--
+--
+--
+-- /See:/ 'test' smart constructor.
+data Test = Test'
+    { _tStatus        :: !(Maybe ExecutionStatus)
+    , _tCounters      :: !(Maybe Counters)
+    , _tArn           :: !(Maybe Text)
+    , _tCreated       :: !(Maybe POSIX)
+    , _tStopped       :: !(Maybe POSIX)
+    , _tResult        :: !(Maybe ExecutionResult)
+    , _tName          :: !(Maybe Text)
+    , _tDeviceMinutes :: !(Maybe DeviceMinutes)
+    , _tType          :: !(Maybe TestType)
+    , _tMessage       :: !(Maybe Text)
+    , _tStarted       :: !(Maybe POSIX)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Test' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tStatus' - The test's status. Allowed values include:     * PENDING: A pending status.     * PENDING_CONCURRENCY: A pending concurrency status.     * PENDING_DEVICE: A pending device status.     * PROCESSING: A processing status.     * SCHEDULING: A scheduling status.     * PREPARING: A preparing status.     * RUNNING: A running status.     * COMPLETED: A completed status.     * STOPPING: A stopping status.
+--
+-- * 'tCounters' - The test's result counters.
+--
+-- * 'tArn' - The test's ARN.
+--
+-- * 'tCreated' - When the test was created.
+--
+-- * 'tStopped' - The test's stop time.
+--
+-- * 'tResult' - The test's result. Allowed values include:     * PENDING: A pending condition.     * PASSED: A passing condition.     * WARNED: A warning condition.     * FAILED: A failed condition.     * SKIPPED: A skipped condition.     * ERRORED: An error condition.     * STOPPED: A stopped condition.
+--
+-- * 'tName' - The test's name.
+--
+-- * 'tDeviceMinutes' - Represents the total (metered or unmetered) minutes used by the test.
+--
+-- * 'tType' - The test's type. Must be one of the following values:     * BUILTIN_FUZZ: The built-in fuzz type.     * BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time.     * APPIUM_JAVA_JUNIT: The Appium Java JUnit type.     * APPIUM_JAVA_TESTNG: The Appium Java TestNG type.     * APPIUM_PYTHON: The Appium Python type.     * APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps.     * APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps.     * APPIUM_WEB_PYTHON: The Appium Python type for Web apps.     * CALABASH: The Calabash type.     * INSTRUMENTATION: The Instrumentation type.     * UIAUTOMATION: The uiautomation type.     * UIAUTOMATOR: The uiautomator type.     * XCTEST: The XCode test type.     * XCTEST_UI: The XCode UI test type.
+--
+-- * 'tMessage' - A message about the test's result.
+--
+-- * 'tStarted' - The test's start time.
+test
+    :: Test
+test =
+    Test'
+    { _tStatus = Nothing
+    , _tCounters = Nothing
+    , _tArn = Nothing
+    , _tCreated = Nothing
+    , _tStopped = Nothing
+    , _tResult = Nothing
+    , _tName = Nothing
+    , _tDeviceMinutes = Nothing
+    , _tType = Nothing
+    , _tMessage = Nothing
+    , _tStarted = Nothing
+    }
+
+-- | The test's status. Allowed values include:     * PENDING: A pending status.     * PENDING_CONCURRENCY: A pending concurrency status.     * PENDING_DEVICE: A pending device status.     * PROCESSING: A processing status.     * SCHEDULING: A scheduling status.     * PREPARING: A preparing status.     * RUNNING: A running status.     * COMPLETED: A completed status.     * STOPPING: A stopping status.
+tStatus :: Lens' Test (Maybe ExecutionStatus)
+tStatus = lens _tStatus (\ s a -> s{_tStatus = a});
+
+-- | The test's result counters.
+tCounters :: Lens' Test (Maybe Counters)
+tCounters = lens _tCounters (\ s a -> s{_tCounters = a});
+
+-- | The test's ARN.
+tArn :: Lens' Test (Maybe Text)
+tArn = lens _tArn (\ s a -> s{_tArn = a});
+
+-- | When the test was created.
+tCreated :: Lens' Test (Maybe UTCTime)
+tCreated = lens _tCreated (\ s a -> s{_tCreated = a}) . mapping _Time;
+
+-- | The test's stop time.
+tStopped :: Lens' Test (Maybe UTCTime)
+tStopped = lens _tStopped (\ s a -> s{_tStopped = a}) . mapping _Time;
+
+-- | The test's result. Allowed values include:     * PENDING: A pending condition.     * PASSED: A passing condition.     * WARNED: A warning condition.     * FAILED: A failed condition.     * SKIPPED: A skipped condition.     * ERRORED: An error condition.     * STOPPED: A stopped condition.
+tResult :: Lens' Test (Maybe ExecutionResult)
+tResult = lens _tResult (\ s a -> s{_tResult = a});
+
+-- | The test's name.
+tName :: Lens' Test (Maybe Text)
+tName = lens _tName (\ s a -> s{_tName = a});
+
+-- | Represents the total (metered or unmetered) minutes used by the test.
+tDeviceMinutes :: Lens' Test (Maybe DeviceMinutes)
+tDeviceMinutes = lens _tDeviceMinutes (\ s a -> s{_tDeviceMinutes = a});
+
+-- | The test's type. Must be one of the following values:     * BUILTIN_FUZZ: The built-in fuzz type.     * BUILTIN_EXPLORER: For Android, an app explorer that will traverse an Android app, interacting with it and capturing screenshots at the same time.     * APPIUM_JAVA_JUNIT: The Appium Java JUnit type.     * APPIUM_JAVA_TESTNG: The Appium Java TestNG type.     * APPIUM_PYTHON: The Appium Python type.     * APPIUM_WEB_JAVA_JUNIT: The Appium Java JUnit type for Web apps.     * APPIUM_WEB_JAVA_TESTNG: The Appium Java TestNG type for Web apps.     * APPIUM_WEB_PYTHON: The Appium Python type for Web apps.     * CALABASH: The Calabash type.     * INSTRUMENTATION: The Instrumentation type.     * UIAUTOMATION: The uiautomation type.     * UIAUTOMATOR: The uiautomator type.     * XCTEST: The XCode test type.     * XCTEST_UI: The XCode UI test type.
+tType :: Lens' Test (Maybe TestType)
+tType = lens _tType (\ s a -> s{_tType = a});
+
+-- | A message about the test's result.
+tMessage :: Lens' Test (Maybe Text)
+tMessage = lens _tMessage (\ s a -> s{_tMessage = a});
+
+-- | The test's start time.
+tStarted :: Lens' Test (Maybe UTCTime)
+tStarted = lens _tStarted (\ s a -> s{_tStarted = a}) . mapping _Time;
+
+instance FromJSON Test where
+        parseJSON
+          = withObject "Test"
+              (\ x ->
+                 Test' <$>
+                   (x .:? "status") <*> (x .:? "counters") <*>
+                     (x .:? "arn")
+                     <*> (x .:? "created")
+                     <*> (x .:? "stopped")
+                     <*> (x .:? "result")
+                     <*> (x .:? "name")
+                     <*> (x .:? "deviceMinutes")
+                     <*> (x .:? "type")
+                     <*> (x .:? "message")
+                     <*> (x .:? "started"))
+
+instance Hashable Test
+
+instance NFData Test
+
+-- | A collection of one or more problems, grouped by their result.
+--
+--
+--
+-- /See:/ 'uniqueProblem' smart constructor.
+data UniqueProblem = UniqueProblem'
+    { _upProblems :: !(Maybe [Problem])
+    , _upMessage  :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UniqueProblem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'upProblems' - Information about the problems.
+--
+-- * 'upMessage' - A message about the unique problems' result.
+uniqueProblem
+    :: UniqueProblem
+uniqueProblem =
+    UniqueProblem'
+    { _upProblems = Nothing
+    , _upMessage = Nothing
+    }
+
+-- | Information about the problems.
+upProblems :: Lens' UniqueProblem [Problem]
+upProblems = lens _upProblems (\ s a -> s{_upProblems = a}) . _Default . _Coerce;
+
+-- | A message about the unique problems' result.
+upMessage :: Lens' UniqueProblem (Maybe Text)
+upMessage = lens _upMessage (\ s a -> s{_upMessage = a});
+
+instance FromJSON UniqueProblem where
+        parseJSON
+          = withObject "UniqueProblem"
+              (\ x ->
+                 UniqueProblem' <$>
+                   (x .:? "problems" .!= mempty) <*> (x .:? "message"))
+
+instance Hashable UniqueProblem
+
+instance NFData UniqueProblem
+
+-- | An app or a set of one or more tests to upload or that have been uploaded.
+--
+--
+--
+-- /See:/ 'upload' smart constructor.
+data Upload = Upload'
+    { _uStatus      :: !(Maybe UploadStatus)
+    , _uArn         :: !(Maybe Text)
+    , _uCreated     :: !(Maybe POSIX)
+    , _uUrl         :: !(Maybe Text)
+    , _uName        :: !(Maybe Text)
+    , _uMetadata    :: !(Maybe Text)
+    , _uType        :: !(Maybe UploadType)
+    , _uMessage     :: !(Maybe Text)
+    , _uContentType :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Upload' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uStatus' - The upload's status. Must be one of the following values:     * FAILED: A failed status.     * INITIALIZED: An initialized status.     * PROCESSING: A processing status.     * SUCCEEDED: A succeeded status.
+--
+-- * 'uArn' - The upload's ARN.
+--
+-- * 'uCreated' - When the upload was created.
+--
+-- * 'uUrl' - The pre-signed Amazon S3 URL that was used to store a file through a corresponding PUT request.
+--
+-- * 'uName' - The upload's file name.
+--
+-- * 'uMetadata' - The upload's metadata. For example, for Android, this contains information that is parsed from the manifest and is displayed in the AWS Device Farm console after the associated app is uploaded.
+--
+-- * 'uType' - The upload's type. Must be one of the following values:     * ANDROID_APP: An Android upload.     * IOS_APP: An iOS upload.     * WEB_APP: A web appliction upload.     * EXTERNAL_DATA: An external data upload.     * APPIUM_JAVA_JUNIT_TEST_PACKAGE: An Appium Java JUnit test package upload.     * APPIUM_JAVA_TESTNG_TEST_PACKAGE: An Appium Java TestNG test package upload.     * APPIUM_PYTHON_TEST_PACKAGE: An Appium Python test package upload.     * APPIUM_WEB_JAVA_JUNIT_TEST_PACKAGE: An Appium Java JUnit test package upload.     * APPIUM_WEB_JAVA_TESTNG_TEST_PACKAGE: An Appium Java TestNG test package upload.     * APPIUM_WEB_PYTHON_TEST_PACKAGE: An Appium Python test package upload.     * CALABASH_TEST_PACKAGE: A Calabash test package upload.     * INSTRUMENTATION_TEST_PACKAGE: An instrumentation upload.     * UIAUTOMATION_TEST_PACKAGE: A uiautomation test package upload.     * UIAUTOMATOR_TEST_PACKAGE: A uiautomator test package upload.     * XCTEST_TEST_PACKAGE: An XCode test package upload.     * XCTEST_UI_TEST_PACKAGE: An XCode UI test package upload.
+--
+-- * 'uMessage' - A message about the upload's result.
+--
+-- * 'uContentType' - The upload's content type (for example, "application/octet-stream").
+upload
+    :: Upload
+upload =
+    Upload'
+    { _uStatus = Nothing
+    , _uArn = Nothing
+    , _uCreated = Nothing
+    , _uUrl = Nothing
+    , _uName = Nothing
+    , _uMetadata = Nothing
+    , _uType = Nothing
+    , _uMessage = Nothing
+    , _uContentType = Nothing
+    }
+
+-- | The upload's status. Must be one of the following values:     * FAILED: A failed status.     * INITIALIZED: An initialized status.     * PROCESSING: A processing status.     * SUCCEEDED: A succeeded status.
+uStatus :: Lens' Upload (Maybe UploadStatus)
+uStatus = lens _uStatus (\ s a -> s{_uStatus = a});
+
+-- | The upload's ARN.
+uArn :: Lens' Upload (Maybe Text)
+uArn = lens _uArn (\ s a -> s{_uArn = a});
+
+-- | When the upload was created.
+uCreated :: Lens' Upload (Maybe UTCTime)
+uCreated = lens _uCreated (\ s a -> s{_uCreated = a}) . mapping _Time;
+
+-- | The pre-signed Amazon S3 URL that was used to store a file through a corresponding PUT request.
+uUrl :: Lens' Upload (Maybe Text)
+uUrl = lens _uUrl (\ s a -> s{_uUrl = a});
+
+-- | The upload's file name.
+uName :: Lens' Upload (Maybe Text)
+uName = lens _uName (\ s a -> s{_uName = a});
+
+-- | The upload's metadata. For example, for Android, this contains information that is parsed from the manifest and is displayed in the AWS Device Farm console after the associated app is uploaded.
+uMetadata :: Lens' Upload (Maybe Text)
+uMetadata = lens _uMetadata (\ s a -> s{_uMetadata = a});
+
+-- | The upload's type. Must be one of the following values:     * ANDROID_APP: An Android upload.     * IOS_APP: An iOS upload.     * WEB_APP: A web appliction upload.     * EXTERNAL_DATA: An external data upload.     * APPIUM_JAVA_JUNIT_TEST_PACKAGE: An Appium Java JUnit test package upload.     * APPIUM_JAVA_TESTNG_TEST_PACKAGE: An Appium Java TestNG test package upload.     * APPIUM_PYTHON_TEST_PACKAGE: An Appium Python test package upload.     * APPIUM_WEB_JAVA_JUNIT_TEST_PACKAGE: An Appium Java JUnit test package upload.     * APPIUM_WEB_JAVA_TESTNG_TEST_PACKAGE: An Appium Java TestNG test package upload.     * APPIUM_WEB_PYTHON_TEST_PACKAGE: An Appium Python test package upload.     * CALABASH_TEST_PACKAGE: A Calabash test package upload.     * INSTRUMENTATION_TEST_PACKAGE: An instrumentation upload.     * UIAUTOMATION_TEST_PACKAGE: A uiautomation test package upload.     * UIAUTOMATOR_TEST_PACKAGE: A uiautomator test package upload.     * XCTEST_TEST_PACKAGE: An XCode test package upload.     * XCTEST_UI_TEST_PACKAGE: An XCode UI test package upload.
+uType :: Lens' Upload (Maybe UploadType)
+uType = lens _uType (\ s a -> s{_uType = a});
+
+-- | A message about the upload's result.
+uMessage :: Lens' Upload (Maybe Text)
+uMessage = lens _uMessage (\ s a -> s{_uMessage = a});
+
+-- | The upload's content type (for example, "application/octet-stream").
 uContentType :: Lens' Upload (Maybe Text)
 uContentType = lens _uContentType (\ s a -> s{_uContentType = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/UpdateDevicePool.hs b/gen/Network/AWS/DeviceFarm/UpdateDevicePool.hs
--- a/gen/Network/AWS/DeviceFarm/UpdateDevicePool.hs
+++ b/gen/Network/AWS/DeviceFarm/UpdateDevicePool.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Modifies the name, description, and rules in a device pool given the attributes and the pool ARN. Rule updates are all-or-nothing, meaning they can only be updated as a whole (or not at all).
+--
+--
 module Network.AWS.DeviceFarm.UpdateDevicePool
     (
     -- * Creating a Request
@@ -47,6 +49,8 @@
 
 -- | Represents a request to the update device pool operation.
 --
+--
+--
 -- /See:/ 'updateDevicePool' smart constructor.
 data UpdateDevicePool = UpdateDevicePool'
     { _udpRules       :: !(Maybe [Rule])
@@ -59,13 +63,13 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'udpRules'
+-- * 'udpRules' - Represents the rules you wish to modify for the device pool. Updating rules is optional; however, if you choose to update rules for your request, the update will replace the existing rules.
 --
--- * 'udpName'
+-- * 'udpName' - A string representing the name of the device pool you wish to update.
 --
--- * 'udpDescription'
+-- * 'udpDescription' - A description of the device pool you wish to update.
 --
--- * 'udpArn'
+-- * 'udpArn' - The Amazon Resourc Name (ARN) of the Device Farm device pool you wish to update.
 updateDevicePool
     :: Text -- ^ 'udpArn'
     -> UpdateDevicePool
@@ -133,6 +137,8 @@
 
 -- | Represents the result of an update device pool request.
 --
+--
+--
 -- /See:/ 'updateDevicePoolResponse' smart constructor.
 data UpdateDevicePoolResponse = UpdateDevicePoolResponse'
     { _udprsDevicePool     :: !(Maybe DevicePool)
@@ -143,9 +149,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'udprsDevicePool'
+-- * 'udprsDevicePool' - Undocumented member.
 --
--- * 'udprsResponseStatus'
+-- * 'udprsResponseStatus' - -- | The response status code.
 updateDevicePoolResponse
     :: Int -- ^ 'udprsResponseStatus'
     -> UpdateDevicePoolResponse
@@ -159,7 +165,7 @@
 udprsDevicePool :: Lens' UpdateDevicePoolResponse (Maybe DevicePool)
 udprsDevicePool = lens _udprsDevicePool (\ s a -> s{_udprsDevicePool = a});
 
--- | The response status code.
+-- | -- | The response status code.
 udprsResponseStatus :: Lens' UpdateDevicePoolResponse Int
 udprsResponseStatus = lens _udprsResponseStatus (\ s a -> s{_udprsResponseStatus = a});
 
diff --git a/gen/Network/AWS/DeviceFarm/UpdateProject.hs b/gen/Network/AWS/DeviceFarm/UpdateProject.hs
--- a/gen/Network/AWS/DeviceFarm/UpdateProject.hs
+++ b/gen/Network/AWS/DeviceFarm/UpdateProject.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Modifies the specified project name, given the project ARN and a new name.
+--
+--
 module Network.AWS.DeviceFarm.UpdateProject
     (
     -- * Creating a Request
@@ -45,6 +47,8 @@
 
 -- | Represents a request to the update project operation.
 --
+--
+--
 -- /See:/ 'updateProject' smart constructor.
 data UpdateProject = UpdateProject'
     { _upName :: !(Maybe Text)
@@ -55,9 +59,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'upName'
+-- * 'upName' - A string representing the new name of the project that you are updating.
 --
--- * 'upArn'
+-- * 'upArn' - The Amazon Resource Name (ARN) of the project whose name you wish to update.
 updateProject
     :: Text -- ^ 'upArn'
     -> UpdateProject
@@ -111,6 +115,8 @@
 
 -- | Represents the result of an update project request.
 --
+--
+--
 -- /See:/ 'updateProjectResponse' smart constructor.
 data UpdateProjectResponse = UpdateProjectResponse'
     { _uprsProject        :: !(Maybe Project)
@@ -121,9 +127,9 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'uprsProject'
+-- * 'uprsProject' - Undocumented member.
 --
--- * 'uprsResponseStatus'
+-- * 'uprsResponseStatus' - -- | The response status code.
 updateProjectResponse
     :: Int -- ^ 'uprsResponseStatus'
     -> UpdateProjectResponse
@@ -137,7 +143,7 @@
 uprsProject :: Lens' UpdateProjectResponse (Maybe Project)
 uprsProject = lens _uprsProject (\ s a -> s{_uprsProject = a});
 
--- | The response status code.
+-- | -- | The response status code.
 uprsResponseStatus :: Lens' UpdateProjectResponse Int
 uprsResponseStatus = lens _uprsResponseStatus (\ s a -> s{_uprsResponseStatus = a});
 
