diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.3.5`
+`1.3.6`
 
 
 ## Description
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.3.5
+version:               1.3.6
 synopsis:              Amazon Device Farm SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -46,6 +46,10 @@
         , Network.AWS.DeviceFarm.CreateDevicePool
         , Network.AWS.DeviceFarm.CreateProject
         , Network.AWS.DeviceFarm.CreateUpload
+        , Network.AWS.DeviceFarm.DeleteDevicePool
+        , Network.AWS.DeviceFarm.DeleteProject
+        , Network.AWS.DeviceFarm.DeleteRun
+        , Network.AWS.DeviceFarm.DeleteUpload
         , Network.AWS.DeviceFarm.GetAccountSettings
         , Network.AWS.DeviceFarm.GetDevice
         , Network.AWS.DeviceFarm.GetDevicePool
@@ -69,6 +73,8 @@
         , Network.AWS.DeviceFarm.ListUploads
         , Network.AWS.DeviceFarm.ScheduleRun
         , Network.AWS.DeviceFarm.Types
+        , Network.AWS.DeviceFarm.UpdateDevicePool
+        , Network.AWS.DeviceFarm.UpdateProject
         , Network.AWS.DeviceFarm.Waiters
 
     other-modules:
@@ -76,7 +82,7 @@
         , Network.AWS.DeviceFarm.Types.Sum
 
     build-depends:
-          amazonka-core == 1.3.5.*
+          amazonka-core == 1.3.6.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-devicefarm-test
@@ -96,9 +102,9 @@
         , Test.AWS.DeviceFarm.Internal
 
     build-depends:
-          amazonka-core == 1.3.5.*
-        , amazonka-test == 1.3.5.*
-        , amazonka-devicefarm == 1.3.5.*
+          amazonka-core == 1.3.6.*
+        , amazonka-test == 1.3.6.*
+        , amazonka-devicefarm == 1.3.6.*
         , base
         , bytestring
         , lens
diff --git a/fixture/DeleteDevicePool.yaml b/fixture/DeleteDevicePool.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDevicePool.yaml
diff --git a/fixture/DeleteDevicePoolResponse.proto b/fixture/DeleteDevicePoolResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDevicePoolResponse.proto
diff --git a/fixture/DeleteProject.yaml b/fixture/DeleteProject.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteProject.yaml
diff --git a/fixture/DeleteProjectResponse.proto b/fixture/DeleteProjectResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteProjectResponse.proto
diff --git a/fixture/DeleteRun.yaml b/fixture/DeleteRun.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteRun.yaml
diff --git a/fixture/DeleteRunResponse.proto b/fixture/DeleteRunResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteRunResponse.proto
diff --git a/fixture/DeleteUpload.yaml b/fixture/DeleteUpload.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteUpload.yaml
diff --git a/fixture/DeleteUploadResponse.proto b/fixture/DeleteUploadResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteUploadResponse.proto
diff --git a/fixture/UpdateDevicePool.yaml b/fixture/UpdateDevicePool.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDevicePool.yaml
diff --git a/fixture/UpdateDevicePoolResponse.proto b/fixture/UpdateDevicePoolResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateDevicePoolResponse.proto
diff --git a/fixture/UpdateProject.yaml b/fixture/UpdateProject.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateProject.yaml
diff --git a/fixture/UpdateProjectResponse.proto b/fixture/UpdateProjectResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateProjectResponse.proto
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
@@ -48,6 +48,12 @@
     -- ** ListProjects
     , module Network.AWS.DeviceFarm.ListProjects
 
+    -- ** DeleteProject
+    , module Network.AWS.DeviceFarm.DeleteProject
+
+    -- ** UpdateProject
+    , module Network.AWS.DeviceFarm.UpdateProject
+
     -- ** GetDevicePoolCompatibility
     , module Network.AWS.DeviceFarm.GetDevicePoolCompatibility
 
@@ -60,18 +66,30 @@
     -- ** CreateUpload
     , module Network.AWS.DeviceFarm.CreateUpload
 
+    -- ** DeleteUpload
+    , module Network.AWS.DeviceFarm.DeleteUpload
+
     -- ** GetDevicePool
     , module Network.AWS.DeviceFarm.GetDevicePool
 
     -- ** ListDevicePools
     , module Network.AWS.DeviceFarm.ListDevicePools
 
+    -- ** UpdateDevicePool
+    , module Network.AWS.DeviceFarm.UpdateDevicePool
+
+    -- ** DeleteDevicePool
+    , module Network.AWS.DeviceFarm.DeleteDevicePool
+
     -- ** GetUpload
     , module Network.AWS.DeviceFarm.GetUpload
 
     -- ** CreateDevicePool
     , module Network.AWS.DeviceFarm.CreateDevicePool
 
+    -- ** DeleteRun
+    , module Network.AWS.DeviceFarm.DeleteRun
+
     -- ** ListRuns
     , module Network.AWS.DeviceFarm.ListRuns
 
@@ -200,29 +218,36 @@
     -- ** Device
     , Device
     , device
-    , dCarrier
-    , dImage
-    , dManufacturer
-    , dPlatform
-    , dArn
-    , dFormFactor
-    , dResolution
-    , dMemory
-    , dRadio
-    , dOs
-    , dName
-    , dModel
-    , dCpu
-    , dHeapSize
+    , devCarrier
+    , devImage
+    , devManufacturer
+    , devPlatform
+    , devArn
+    , devFormFactor
+    , devResolution
+    , devMemory
+    , devRadio
+    , devOs
+    , devName
+    , devModel
+    , devCpu
+    , devHeapSize
 
+    -- ** DeviceMinutes
+    , DeviceMinutes
+    , deviceMinutes
+    , dmMetered
+    , dmTotal
+    , dmUnmetered
+
     -- ** DevicePool
     , DevicePool
     , devicePool
-    , dpArn
-    , dpRules
-    , dpName
-    , dpType
-    , dpDescription
+    , dArn
+    , dRules
+    , dName
+    , dType
+    , dDescription
 
     -- ** DevicePoolCompatibilityResult
     , DevicePoolCompatibilityResult
@@ -248,6 +273,7 @@
     , jobStopped
     , jobResult
     , jobName
+    , jobDeviceMinutes
     , jobType
     , jobMessage
     , jobStarted
@@ -316,6 +342,7 @@
     , runResult
     , runCompletedJobs
     , runName
+    , runDeviceMinutes
     , runType
     , runMessage
     , runTotalJobs
@@ -357,6 +384,7 @@
     , sStopped
     , sResult
     , sName
+    , sDeviceMinutes
     , sType
     , sMessage
     , sStarted
@@ -371,6 +399,7 @@
     , tStopped
     , tResult
     , tName
+    , tDeviceMinutes
     , tType
     , tMessage
     , tStarted
@@ -398,6 +427,10 @@
 import           Network.AWS.DeviceFarm.CreateDevicePool
 import           Network.AWS.DeviceFarm.CreateProject
 import           Network.AWS.DeviceFarm.CreateUpload
+import           Network.AWS.DeviceFarm.DeleteDevicePool
+import           Network.AWS.DeviceFarm.DeleteProject
+import           Network.AWS.DeviceFarm.DeleteRun
+import           Network.AWS.DeviceFarm.DeleteUpload
 import           Network.AWS.DeviceFarm.GetAccountSettings
 import           Network.AWS.DeviceFarm.GetDevice
 import           Network.AWS.DeviceFarm.GetDevicePool
@@ -421,6 +454,8 @@
 import           Network.AWS.DeviceFarm.ListUploads
 import           Network.AWS.DeviceFarm.ScheduleRun
 import           Network.AWS.DeviceFarm.Types
+import           Network.AWS.DeviceFarm.UpdateDevicePool
+import           Network.AWS.DeviceFarm.UpdateProject
 import           Network.AWS.DeviceFarm.Waiters
 
 {- $errors
diff --git a/gen/Network/AWS/DeviceFarm/DeleteDevicePool.hs b/gen/Network/AWS/DeviceFarm/DeleteDevicePool.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/DeviceFarm/DeleteDevicePool.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.DeviceFarm.DeleteDevicePool
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a device pool given the pool ARN. Does not allow deletion of
+-- curated pools owned by the system.
+--
+-- /See:/ <http://docs.aws.amazon.com/devicefarm/latest/APIReference/API_DeleteDevicePool.html AWS API Reference> for DeleteDevicePool.
+module Network.AWS.DeviceFarm.DeleteDevicePool
+    (
+    -- * Creating a Request
+      deleteDevicePool
+    , DeleteDevicePool
+    -- * Request Lenses
+    , ddpArn
+
+    -- * Destructuring the Response
+    , deleteDevicePoolResponse
+    , DeleteDevicePoolResponse
+    -- * Response Lenses
+    , ddprsResponseStatus
+    ) where
+
+import           Network.AWS.DeviceFarm.Types
+import           Network.AWS.DeviceFarm.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Represents a request to the delete device pool operation.
+--
+-- /See:/ 'deleteDevicePool' smart constructor.
+newtype DeleteDevicePool = DeleteDevicePool'
+    { _ddpArn :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteDevicePool' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddpArn'
+deleteDevicePool
+    :: Text -- ^ 'ddpArn'
+    -> DeleteDevicePool
+deleteDevicePool pArn_ =
+    DeleteDevicePool'
+    { _ddpArn = pArn_
+    }
+
+-- | Represents the Amazon Resource Name (ARN) of the Device Farm device pool
+-- you wish to delete.
+ddpArn :: Lens' DeleteDevicePool Text
+ddpArn = lens _ddpArn (\ s a -> s{_ddpArn = a});
+
+instance AWSRequest DeleteDevicePool where
+        type Rs DeleteDevicePool = DeleteDevicePoolResponse
+        request = postJSON deviceFarm
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 DeleteDevicePoolResponse' <$> (pure (fromEnum s)))
+
+instance ToHeaders DeleteDevicePool where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DeviceFarm_20150623.DeleteDevicePool" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeleteDevicePool where
+        toJSON DeleteDevicePool'{..}
+          = object (catMaybes [Just ("arn" .= _ddpArn)])
+
+instance ToPath DeleteDevicePool where
+        toPath = const "/"
+
+instance ToQuery DeleteDevicePool where
+        toQuery = const mempty
+
+-- | Represents the result of a delete device pool request.
+--
+-- /See:/ 'deleteDevicePoolResponse' smart constructor.
+newtype DeleteDevicePoolResponse = DeleteDevicePoolResponse'
+    { _ddprsResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteDevicePoolResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddprsResponseStatus'
+deleteDevicePoolResponse
+    :: Int -- ^ 'ddprsResponseStatus'
+    -> DeleteDevicePoolResponse
+deleteDevicePoolResponse pResponseStatus_ =
+    DeleteDevicePoolResponse'
+    { _ddprsResponseStatus = pResponseStatus_
+    }
+
+-- | 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
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/DeviceFarm/DeleteProject.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.DeviceFarm.DeleteProject
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an AWS Device Farm project, given the project ARN.
+--
+-- __Note__ Deleting this resource does not stop an in-progress run.
+--
+-- /See:/ <http://docs.aws.amazon.com/devicefarm/latest/APIReference/API_DeleteProject.html AWS API Reference> for DeleteProject.
+module Network.AWS.DeviceFarm.DeleteProject
+    (
+    -- * Creating a Request
+      deleteProject
+    , DeleteProject
+    -- * Request Lenses
+    , dpArn
+
+    -- * Destructuring the Response
+    , deleteProjectResponse
+    , DeleteProjectResponse
+    -- * Response Lenses
+    , dprsResponseStatus
+    ) where
+
+import           Network.AWS.DeviceFarm.Types
+import           Network.AWS.DeviceFarm.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Represents a request to the delete project operation.
+--
+-- /See:/ 'deleteProject' smart constructor.
+newtype DeleteProject = DeleteProject'
+    { _dpArn :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteProject' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dpArn'
+deleteProject
+    :: Text -- ^ 'dpArn'
+    -> DeleteProject
+deleteProject pArn_ =
+    DeleteProject'
+    { _dpArn = pArn_
+    }
+
+-- | Represents the Amazon Resource Name (ARN) of the Device Farm project you
+-- wish to delete.
+dpArn :: Lens' DeleteProject Text
+dpArn = lens _dpArn (\ s a -> s{_dpArn = a});
+
+instance AWSRequest DeleteProject where
+        type Rs DeleteProject = DeleteProjectResponse
+        request = postJSON deviceFarm
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 DeleteProjectResponse' <$> (pure (fromEnum s)))
+
+instance ToHeaders DeleteProject where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DeviceFarm_20150623.DeleteProject" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeleteProject where
+        toJSON DeleteProject'{..}
+          = object (catMaybes [Just ("arn" .= _dpArn)])
+
+instance ToPath DeleteProject where
+        toPath = const "/"
+
+instance ToQuery DeleteProject where
+        toQuery = const mempty
+
+-- | Represents the result of a delete project request.
+--
+-- /See:/ 'deleteProjectResponse' smart constructor.
+newtype DeleteProjectResponse = DeleteProjectResponse'
+    { _dprsResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteProjectResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dprsResponseStatus'
+deleteProjectResponse
+    :: Int -- ^ 'dprsResponseStatus'
+    -> DeleteProjectResponse
+deleteProjectResponse pResponseStatus_ =
+    DeleteProjectResponse'
+    { _dprsResponseStatus = pResponseStatus_
+    }
+
+-- | The response status code.
+dprsResponseStatus :: Lens' DeleteProjectResponse Int
+dprsResponseStatus = lens _dprsResponseStatus (\ s a -> s{_dprsResponseStatus = a});
diff --git a/gen/Network/AWS/DeviceFarm/DeleteRun.hs b/gen/Network/AWS/DeviceFarm/DeleteRun.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/DeviceFarm/DeleteRun.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.DeviceFarm.DeleteRun
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the run, given the run ARN.
+--
+-- __Note__ Deleting this resource does not stop an in-progress run.
+--
+-- /See:/ <http://docs.aws.amazon.com/devicefarm/latest/APIReference/API_DeleteRun.html AWS API Reference> for DeleteRun.
+module Network.AWS.DeviceFarm.DeleteRun
+    (
+    -- * Creating a Request
+      deleteRun
+    , DeleteRun
+    -- * Request Lenses
+    , drArn
+
+    -- * Destructuring the Response
+    , deleteRunResponse
+    , DeleteRunResponse
+    -- * Response Lenses
+    , drrsResponseStatus
+    ) where
+
+import           Network.AWS.DeviceFarm.Types
+import           Network.AWS.DeviceFarm.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Represents a request to the delete run operation.
+--
+-- /See:/ 'deleteRun' smart constructor.
+newtype DeleteRun = DeleteRun'
+    { _drArn :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteRun' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drArn'
+deleteRun
+    :: Text -- ^ 'drArn'
+    -> DeleteRun
+deleteRun pArn_ =
+    DeleteRun'
+    { _drArn = pArn_
+    }
+
+-- | The Amazon Resource Name (ARN) for the run you wish to delete.
+drArn :: Lens' DeleteRun Text
+drArn = lens _drArn (\ s a -> s{_drArn = a});
+
+instance AWSRequest DeleteRun where
+        type Rs DeleteRun = DeleteRunResponse
+        request = postJSON deviceFarm
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 DeleteRunResponse' <$> (pure (fromEnum s)))
+
+instance ToHeaders DeleteRun where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DeviceFarm_20150623.DeleteRun" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeleteRun where
+        toJSON DeleteRun'{..}
+          = object (catMaybes [Just ("arn" .= _drArn)])
+
+instance ToPath DeleteRun where
+        toPath = const "/"
+
+instance ToQuery DeleteRun where
+        toQuery = const mempty
+
+-- | Represents the result of a delete run request.
+--
+-- /See:/ 'deleteRunResponse' smart constructor.
+newtype DeleteRunResponse = DeleteRunResponse'
+    { _drrsResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteRunResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drrsResponseStatus'
+deleteRunResponse
+    :: Int -- ^ 'drrsResponseStatus'
+    -> DeleteRunResponse
+deleteRunResponse pResponseStatus_ =
+    DeleteRunResponse'
+    { _drrsResponseStatus = pResponseStatus_
+    }
+
+-- | 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
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/DeviceFarm/DeleteUpload.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.DeviceFarm.DeleteUpload
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an upload given the upload ARN.
+--
+-- /See:/ <http://docs.aws.amazon.com/devicefarm/latest/APIReference/API_DeleteUpload.html AWS API Reference> for DeleteUpload.
+module Network.AWS.DeviceFarm.DeleteUpload
+    (
+    -- * Creating a Request
+      deleteUpload
+    , DeleteUpload
+    -- * Request Lenses
+    , duArn
+
+    -- * Destructuring the Response
+    , deleteUploadResponse
+    , DeleteUploadResponse
+    -- * Response Lenses
+    , dursResponseStatus
+    ) where
+
+import           Network.AWS.DeviceFarm.Types
+import           Network.AWS.DeviceFarm.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Represents a request to the delete upload operation.
+--
+-- /See:/ 'deleteUpload' smart constructor.
+newtype DeleteUpload = DeleteUpload'
+    { _duArn :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteUpload' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'duArn'
+deleteUpload
+    :: Text -- ^ 'duArn'
+    -> DeleteUpload
+deleteUpload pArn_ =
+    DeleteUpload'
+    { _duArn = pArn_
+    }
+
+-- | Represents the Amazon Resource Name (ARN) of the Device Farm upload you
+-- wish to delete.
+duArn :: Lens' DeleteUpload Text
+duArn = lens _duArn (\ s a -> s{_duArn = a});
+
+instance AWSRequest DeleteUpload where
+        type Rs DeleteUpload = DeleteUploadResponse
+        request = postJSON deviceFarm
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 DeleteUploadResponse' <$> (pure (fromEnum s)))
+
+instance ToHeaders DeleteUpload where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DeviceFarm_20150623.DeleteUpload" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeleteUpload where
+        toJSON DeleteUpload'{..}
+          = object (catMaybes [Just ("arn" .= _duArn)])
+
+instance ToPath DeleteUpload where
+        toPath = const "/"
+
+instance ToQuery DeleteUpload where
+        toQuery = const mempty
+
+-- | Represents the result of a delete upload request.
+--
+-- /See:/ 'deleteUploadResponse' smart constructor.
+newtype DeleteUploadResponse = DeleteUploadResponse'
+    { _dursResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteUploadResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dursResponseStatus'
+deleteUploadResponse
+    :: Int -- ^ 'dursResponseStatus'
+    -> DeleteUploadResponse
+deleteUploadResponse pResponseStatus_ =
+    DeleteUploadResponse'
+    { _dursResponseStatus = pResponseStatus_
+    }
+
+-- | The response status code.
+dursResponseStatus :: Lens' DeleteUploadResponse Int
+dursResponseStatus = lens _dursResponseStatus (\ s a -> s{_dursResponseStatus = 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
@@ -100,29 +100,36 @@
     -- * Device
     , Device
     , device
-    , dCarrier
-    , dImage
-    , dManufacturer
-    , dPlatform
-    , dArn
-    , dFormFactor
-    , dResolution
-    , dMemory
-    , dRadio
-    , dOs
-    , dName
-    , dModel
-    , dCpu
-    , dHeapSize
+    , devCarrier
+    , devImage
+    , devManufacturer
+    , devPlatform
+    , devArn
+    , devFormFactor
+    , devResolution
+    , devMemory
+    , devRadio
+    , devOs
+    , devName
+    , devModel
+    , devCpu
+    , devHeapSize
 
+    -- * DeviceMinutes
+    , DeviceMinutes
+    , deviceMinutes
+    , dmMetered
+    , dmTotal
+    , dmUnmetered
+
     -- * DevicePool
     , DevicePool
     , devicePool
-    , dpArn
-    , dpRules
-    , dpName
-    , dpType
-    , dpDescription
+    , dArn
+    , dRules
+    , dName
+    , dType
+    , dDescription
 
     -- * DevicePoolCompatibilityResult
     , DevicePoolCompatibilityResult
@@ -148,6 +155,7 @@
     , jobStopped
     , jobResult
     , jobName
+    , jobDeviceMinutes
     , jobType
     , jobMessage
     , jobStarted
@@ -216,6 +224,7 @@
     , runResult
     , runCompletedJobs
     , runName
+    , runDeviceMinutes
     , runType
     , runMessage
     , runTotalJobs
@@ -257,6 +266,7 @@
     , sStopped
     , sResult
     , sName
+    , sDeviceMinutes
     , sType
     , sMessage
     , sStarted
@@ -271,6 +281,7 @@
     , tStopped
     , tResult
     , tName
+    , tDeviceMinutes
     , tType
     , tMessage
     , tStarted
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
@@ -299,84 +299,84 @@
 --
 -- /See:/ 'device' smart constructor.
 data Device = Device'
-    { _dCarrier      :: !(Maybe Text)
-    , _dImage        :: !(Maybe Text)
-    , _dManufacturer :: !(Maybe Text)
-    , _dPlatform     :: !(Maybe DevicePlatform)
-    , _dArn          :: !(Maybe Text)
-    , _dFormFactor   :: !(Maybe DeviceFormFactor)
-    , _dResolution   :: !(Maybe Resolution)
-    , _dMemory       :: !(Maybe Integer)
-    , _dRadio        :: !(Maybe Text)
-    , _dOs           :: !(Maybe Text)
-    , _dName         :: !(Maybe Text)
-    , _dModel        :: !(Maybe Text)
-    , _dCpu          :: !(Maybe CPU)
-    , _dHeapSize     :: !(Maybe Integer)
+    { _devCarrier      :: !(Maybe Text)
+    , _devImage        :: !(Maybe Text)
+    , _devManufacturer :: !(Maybe Text)
+    , _devPlatform     :: !(Maybe DevicePlatform)
+    , _devArn          :: !(Maybe Text)
+    , _devFormFactor   :: !(Maybe DeviceFormFactor)
+    , _devResolution   :: !(Maybe Resolution)
+    , _devMemory       :: !(Maybe Integer)
+    , _devRadio        :: !(Maybe Text)
+    , _devOs           :: !(Maybe Text)
+    , _devName         :: !(Maybe Text)
+    , _devModel        :: !(Maybe Text)
+    , _devCpu          :: !(Maybe CPU)
+    , _devHeapSize     :: !(Maybe Integer)
     } 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:
 --
--- * 'dCarrier'
+-- * 'devCarrier'
 --
--- * 'dImage'
+-- * 'devImage'
 --
--- * 'dManufacturer'
+-- * 'devManufacturer'
 --
--- * 'dPlatform'
+-- * 'devPlatform'
 --
--- * 'dArn'
+-- * 'devArn'
 --
--- * 'dFormFactor'
+-- * 'devFormFactor'
 --
--- * 'dResolution'
+-- * 'devResolution'
 --
--- * 'dMemory'
+-- * 'devMemory'
 --
--- * 'dRadio'
+-- * 'devRadio'
 --
--- * 'dOs'
+-- * 'devOs'
 --
--- * 'dName'
+-- * 'devName'
 --
--- * 'dModel'
+-- * 'devModel'
 --
--- * 'dCpu'
+-- * 'devCpu'
 --
--- * 'dHeapSize'
+-- * 'devHeapSize'
 device
     :: Device
 device =
     Device'
-    { _dCarrier = Nothing
-    , _dImage = Nothing
-    , _dManufacturer = Nothing
-    , _dPlatform = Nothing
-    , _dArn = Nothing
-    , _dFormFactor = Nothing
-    , _dResolution = Nothing
-    , _dMemory = Nothing
-    , _dRadio = Nothing
-    , _dOs = Nothing
-    , _dName = Nothing
-    , _dModel = Nothing
-    , _dCpu = Nothing
-    , _dHeapSize = Nothing
+    { _devCarrier = Nothing
+    , _devImage = Nothing
+    , _devManufacturer = Nothing
+    , _devPlatform = Nothing
+    , _devArn = Nothing
+    , _devFormFactor = Nothing
+    , _devResolution = Nothing
+    , _devMemory = Nothing
+    , _devRadio = Nothing
+    , _devOs = Nothing
+    , _devName = Nothing
+    , _devModel = Nothing
+    , _devCpu = Nothing
+    , _devHeapSize = Nothing
     }
 
 -- | The device\'s carrier.
-dCarrier :: Lens' Device (Maybe Text)
-dCarrier = lens _dCarrier (\ s a -> s{_dCarrier = a});
+devCarrier :: Lens' Device (Maybe Text)
+devCarrier = lens _devCarrier (\ s a -> s{_devCarrier = a});
 
 -- | The device\'s image name.
-dImage :: Lens' Device (Maybe Text)
-dImage = lens _dImage (\ s a -> s{_dImage = a});
+devImage :: Lens' Device (Maybe Text)
+devImage = lens _devImage (\ s a -> s{_devImage = a});
 
 -- | The device\'s manufacturer name.
-dManufacturer :: Lens' Device (Maybe Text)
-dManufacturer = lens _dManufacturer (\ s a -> s{_dManufacturer = a});
+devManufacturer :: Lens' Device (Maybe Text)
+devManufacturer = lens _devManufacturer (\ s a -> s{_devManufacturer = a});
 
 -- | The device\'s platform.
 --
@@ -386,12 +386,12 @@
 --
 -- -   IOS: The iOS platform.
 --
-dPlatform :: Lens' Device (Maybe DevicePlatform)
-dPlatform = lens _dPlatform (\ s a -> s{_dPlatform = a});
+devPlatform :: Lens' Device (Maybe DevicePlatform)
+devPlatform = lens _devPlatform (\ s a -> s{_devPlatform = a});
 
 -- | The device\'s ARN.
-dArn :: Lens' Device (Maybe Text)
-dArn = lens _dArn (\ s a -> s{_dArn = a});
+devArn :: Lens' Device (Maybe Text)
+devArn = lens _devArn (\ s a -> s{_devArn = a});
 
 -- | The device\'s form factor.
 --
@@ -401,40 +401,40 @@
 --
 -- -   TABLET: The tablet form factor.
 --
-dFormFactor :: Lens' Device (Maybe DeviceFormFactor)
-dFormFactor = lens _dFormFactor (\ s a -> s{_dFormFactor = a});
+devFormFactor :: Lens' Device (Maybe DeviceFormFactor)
+devFormFactor = lens _devFormFactor (\ s a -> s{_devFormFactor = a});
 
 -- | Undocumented member.
-dResolution :: Lens' Device (Maybe Resolution)
-dResolution = lens _dResolution (\ s a -> s{_dResolution = a});
+devResolution :: Lens' Device (Maybe Resolution)
+devResolution = lens _devResolution (\ s a -> s{_devResolution = a});
 
 -- | The device\'s total memory size, expressed in bytes.
-dMemory :: Lens' Device (Maybe Integer)
-dMemory = lens _dMemory (\ s a -> s{_dMemory = a});
+devMemory :: Lens' Device (Maybe Integer)
+devMemory = lens _devMemory (\ s a -> s{_devMemory = a});
 
 -- | The device\'s radio.
-dRadio :: Lens' Device (Maybe Text)
-dRadio = lens _dRadio (\ s a -> s{_dRadio = a});
+devRadio :: Lens' Device (Maybe Text)
+devRadio = lens _devRadio (\ s a -> s{_devRadio = a});
 
 -- | The device\'s operating system type.
-dOs :: Lens' Device (Maybe Text)
-dOs = lens _dOs (\ s a -> s{_dOs = a});
+devOs :: Lens' Device (Maybe Text)
+devOs = lens _devOs (\ s a -> s{_devOs = a});
 
 -- | The device\'s display name.
-dName :: Lens' Device (Maybe Text)
-dName = lens _dName (\ s a -> s{_dName = a});
+devName :: Lens' Device (Maybe Text)
+devName = lens _devName (\ s a -> s{_devName = a});
 
 -- | The device\'s model name.
-dModel :: Lens' Device (Maybe Text)
-dModel = lens _dModel (\ s a -> s{_dModel = a});
+devModel :: Lens' Device (Maybe Text)
+devModel = lens _devModel (\ s a -> s{_devModel = a});
 
 -- | Information about the device\'s CPU.
-dCpu :: Lens' Device (Maybe CPU)
-dCpu = lens _dCpu (\ s a -> s{_dCpu = a});
+devCpu :: Lens' Device (Maybe CPU)
+devCpu = lens _devCpu (\ s a -> s{_devCpu = a});
 
 -- | The device\'s heap size, expressed in bytes.
-dHeapSize :: Lens' Device (Maybe Integer)
-dHeapSize = lens _dHeapSize (\ s a -> s{_dHeapSize = a});
+devHeapSize :: Lens' Device (Maybe Integer)
+devHeapSize = lens _devHeapSize (\ s a -> s{_devHeapSize = a});
 
 instance FromJSON Device where
         parseJSON
@@ -455,52 +455,103 @@
                      <*> (x .:? "cpu")
                      <*> (x .:? "heapSize"))
 
+-- | 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"))
+
 -- | Represents a collection of device types.
 --
 -- /See:/ 'devicePool' smart constructor.
 data DevicePool = DevicePool'
-    { _dpArn         :: !(Maybe Text)
-    , _dpRules       :: !(Maybe [Rule])
-    , _dpName        :: !(Maybe Text)
-    , _dpType        :: !(Maybe DevicePoolType)
-    , _dpDescription :: !(Maybe Text)
+    { _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:
 --
--- * 'dpArn'
+-- * 'dArn'
 --
--- * 'dpRules'
+-- * 'dRules'
 --
--- * 'dpName'
+-- * 'dName'
 --
--- * 'dpType'
+-- * 'dType'
 --
--- * 'dpDescription'
+-- * 'dDescription'
 devicePool
     :: DevicePool
 devicePool =
     DevicePool'
-    { _dpArn = Nothing
-    , _dpRules = Nothing
-    , _dpName = Nothing
-    , _dpType = Nothing
-    , _dpDescription = Nothing
+    { _dArn = Nothing
+    , _dRules = Nothing
+    , _dName = Nothing
+    , _dType = Nothing
+    , _dDescription = Nothing
     }
 
 -- | The device pool\'s ARN.
-dpArn :: Lens' DevicePool (Maybe Text)
-dpArn = lens _dpArn (\ s a -> s{_dpArn = a});
+dArn :: Lens' DevicePool (Maybe Text)
+dArn = lens _dArn (\ s a -> s{_dArn = a});
 
 -- | Information about the device pool\'s rules.
-dpRules :: Lens' DevicePool [Rule]
-dpRules = lens _dpRules (\ s a -> s{_dpRules = a}) . _Default . _Coerce;
+dRules :: Lens' DevicePool [Rule]
+dRules = lens _dRules (\ s a -> s{_dRules = a}) . _Default . _Coerce;
 
 -- | The device pool\'s name.
-dpName :: Lens' DevicePool (Maybe Text)
-dpName = lens _dpName (\ s a -> s{_dpName = a});
+dName :: Lens' DevicePool (Maybe Text)
+dName = lens _dName (\ s a -> s{_dName = a});
 
 -- | The device pool\'s type.
 --
@@ -512,12 +563,12 @@
 -- -   PRIVATE: A device pool that is created and managed by the device
 --     pool developer.
 --
-dpType :: Lens' DevicePool (Maybe DevicePoolType)
-dpType = lens _dpType (\ s a -> s{_dpType = a});
+dType :: Lens' DevicePool (Maybe DevicePoolType)
+dType = lens _dType (\ s a -> s{_dType = a});
 
 -- | The device pool\'s description.
-dpDescription :: Lens' DevicePool (Maybe Text)
-dpDescription = lens _dpDescription (\ s a -> s{_dpDescription = a});
+dDescription :: Lens' DevicePool (Maybe Text)
+dDescription = lens _dDescription (\ s a -> s{_dDescription = a});
 
 instance FromJSON DevicePool where
         parseJSON
@@ -629,17 +680,18 @@
 --
 -- /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)
-    , _jobType     :: !(Maybe TestType)
-    , _jobMessage  :: !(Maybe Text)
-    , _jobStarted  :: !(Maybe POSIX)
+    { _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.
@@ -662,6 +714,8 @@
 --
 -- * 'jobName'
 --
+-- * 'jobDeviceMinutes'
+--
 -- * 'jobType'
 --
 -- * 'jobMessage'
@@ -679,6 +733,7 @@
     , _jobStopped = Nothing
     , _jobResult = Nothing
     , _jobName = Nothing
+    , _jobDeviceMinutes = Nothing
     , _jobType = Nothing
     , _jobMessage = Nothing
     , _jobStarted = Nothing
@@ -746,6 +801,10 @@
 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:
@@ -793,6 +852,7 @@
                      <*> (x .:? "stopped")
                      <*> (x .:? "result")
                      <*> (x .:? "name")
+                     <*> (x .:? "deviceMinutes")
                      <*> (x .:? "type")
                      <*> (x .:? "message")
                      <*> (x .:? "started"))
@@ -1212,6 +1272,7 @@
     , _runResult        :: !(Maybe ExecutionResult)
     , _runCompletedJobs :: !(Maybe Int)
     , _runName          :: !(Maybe Text)
+    , _runDeviceMinutes :: !(Maybe DeviceMinutes)
     , _runType          :: !(Maybe TestType)
     , _runMessage       :: !(Maybe Text)
     , _runTotalJobs     :: !(Maybe Int)
@@ -1242,6 +1303,8 @@
 --
 -- * 'runName'
 --
+-- * 'runDeviceMinutes'
+--
 -- * 'runType'
 --
 -- * 'runMessage'
@@ -1263,6 +1326,7 @@
     , _runResult = Nothing
     , _runCompletedJobs = Nothing
     , _runName = Nothing
+    , _runDeviceMinutes = Nothing
     , _runType = Nothing
     , _runMessage = Nothing
     , _runTotalJobs = Nothing
@@ -1347,6 +1411,11 @@
 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:
@@ -1400,6 +1469,7 @@
                      <*> (x .:? "result")
                      <*> (x .:? "completedJobs")
                      <*> (x .:? "name")
+                     <*> (x .:? "deviceMinutes")
                      <*> (x .:? "type")
                      <*> (x .:? "message")
                      <*> (x .:? "totalJobs")
@@ -1668,16 +1738,17 @@
 --
 -- /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)
-    , _sType     :: !(Maybe TestType)
-    , _sMessage  :: !(Maybe Text)
-    , _sStarted  :: !(Maybe POSIX)
+    { _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.
@@ -1698,6 +1769,8 @@
 --
 -- * 'sName'
 --
+-- * 'sDeviceMinutes'
+--
 -- * 'sType'
 --
 -- * 'sMessage'
@@ -1714,6 +1787,7 @@
     , _sStopped = Nothing
     , _sResult = Nothing
     , _sName = Nothing
+    , _sDeviceMinutes = Nothing
     , _sType = Nothing
     , _sMessage = Nothing
     , _sStarted = Nothing
@@ -1777,6 +1851,11 @@
 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:
@@ -1823,6 +1902,7 @@
                      <*> (x .:? "stopped")
                      <*> (x .:? "result")
                      <*> (x .:? "name")
+                     <*> (x .:? "deviceMinutes")
                      <*> (x .:? "type")
                      <*> (x .:? "message")
                      <*> (x .:? "started"))
@@ -1831,16 +1911,17 @@
 --
 -- /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)
-    , _tType     :: !(Maybe TestType)
-    , _tMessage  :: !(Maybe Text)
-    , _tStarted  :: !(Maybe POSIX)
+    { _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.
@@ -1861,6 +1942,8 @@
 --
 -- * 'tName'
 --
+-- * 'tDeviceMinutes'
+--
 -- * 'tType'
 --
 -- * 'tMessage'
@@ -1877,6 +1960,7 @@
     , _tStopped = Nothing
     , _tResult = Nothing
     , _tName = Nothing
+    , _tDeviceMinutes = Nothing
     , _tType = Nothing
     , _tMessage = Nothing
     , _tStarted = Nothing
@@ -1940,6 +2024,10 @@
 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:
@@ -1986,6 +2074,7 @@
                      <*> (x .:? "stopped")
                      <*> (x .:? "result")
                      <*> (x .:? "name")
+                     <*> (x .:? "deviceMinutes")
                      <*> (x .:? "type")
                      <*> (x .:? "message")
                      <*> (x .:? "started"))
diff --git a/gen/Network/AWS/DeviceFarm/Types/Sum.hs b/gen/Network/AWS/DeviceFarm/Types/Sum.hs
--- a/gen/Network/AWS/DeviceFarm/Types/Sum.hs
+++ b/gen/Network/AWS/DeviceFarm/Types/Sum.hs
@@ -51,6 +51,7 @@
     = AppiumJavaOutput
     | AppiumJavaXMLOutput
     | AppiumServerOutput
+    | ApplicationCrashReport
     | AutomationOutput
     | CalabashJSONOutput
     | CalabashJavaXMLOutput
@@ -58,6 +59,8 @@
     | CalabashStandardOutput
     | DeviceLog
     | ExerciserMonkeyOutput
+    | ExplorerEventLog
+    | ExplorerSummaryLog
     | InstrumentationOutput
     | MessageLog
     | ResultLog
@@ -71,6 +74,7 @@
         "appium_java_output" -> pure AppiumJavaOutput
         "appium_java_xml_output" -> pure AppiumJavaXMLOutput
         "appium_server_output" -> pure AppiumServerOutput
+        "application_crash_report" -> pure ApplicationCrashReport
         "automation_output" -> pure AutomationOutput
         "calabash_json_output" -> pure CalabashJSONOutput
         "calabash_java_xml_output" -> pure CalabashJavaXMLOutput
@@ -78,6 +82,8 @@
         "calabash_standard_output" -> pure CalabashStandardOutput
         "device_log" -> pure DeviceLog
         "exerciser_monkey_output" -> pure ExerciserMonkeyOutput
+        "explorer_event_log" -> pure ExplorerEventLog
+        "explorer_summary_log" -> pure ExplorerSummaryLog
         "instrumentation_output" -> pure InstrumentationOutput
         "message_log" -> pure MessageLog
         "result_log" -> pure ResultLog
@@ -85,13 +91,14 @@
         "service_log" -> pure ServiceLog
         "unknown" -> pure Unknown
         e -> fromTextError $ "Failure parsing ArtifactType from value: '" <> e
-           <> "'. Accepted values: APPIUM_JAVA_OUTPUT, APPIUM_JAVA_XML_OUTPUT, APPIUM_SERVER_OUTPUT, AUTOMATION_OUTPUT, CALABASH_JSON_OUTPUT, CALABASH_JAVA_XML_OUTPUT, CALABASH_PRETTY_OUTPUT, CALABASH_STANDARD_OUTPUT, DEVICE_LOG, EXERCISER_MONKEY_OUTPUT, INSTRUMENTATION_OUTPUT, MESSAGE_LOG, RESULT_LOG, SCREENSHOT, SERVICE_LOG, UNKNOWN"
+           <> "'. Accepted values: APPIUM_JAVA_OUTPUT, APPIUM_JAVA_XML_OUTPUT, APPIUM_SERVER_OUTPUT, APPLICATION_CRASH_REPORT, AUTOMATION_OUTPUT, CALABASH_JSON_OUTPUT, CALABASH_JAVA_XML_OUTPUT, CALABASH_PRETTY_OUTPUT, CALABASH_STANDARD_OUTPUT, DEVICE_LOG, EXERCISER_MONKEY_OUTPUT, EXPLORER_EVENT_LOG, EXPLORER_SUMMARY_LOG, INSTRUMENTATION_OUTPUT, MESSAGE_LOG, RESULT_LOG, SCREENSHOT, SERVICE_LOG, UNKNOWN"
 
 instance ToText ArtifactType where
     toText = \case
         AppiumJavaOutput -> "APPIUM_JAVA_OUTPUT"
         AppiumJavaXMLOutput -> "APPIUM_JAVA_XML_OUTPUT"
         AppiumServerOutput -> "APPIUM_SERVER_OUTPUT"
+        ApplicationCrashReport -> "APPLICATION_CRASH_REPORT"
         AutomationOutput -> "AUTOMATION_OUTPUT"
         CalabashJSONOutput -> "CALABASH_JSON_OUTPUT"
         CalabashJavaXMLOutput -> "CALABASH_JAVA_XML_OUTPUT"
@@ -99,6 +106,8 @@
         CalabashStandardOutput -> "CALABASH_STANDARD_OUTPUT"
         DeviceLog -> "DEVICE_LOG"
         ExerciserMonkeyOutput -> "EXERCISER_MONKEY_OUTPUT"
+        ExplorerEventLog -> "EXPLORER_EVENT_LOG"
+        ExplorerSummaryLog -> "EXPLORER_SUMMARY_LOG"
         InstrumentationOutput -> "INSTRUMENTATION_OUTPUT"
         MessageLog -> "MESSAGE_LOG"
         ResultLog -> "RESULT_LOG"
diff --git a/gen/Network/AWS/DeviceFarm/UpdateDevicePool.hs b/gen/Network/AWS/DeviceFarm/UpdateDevicePool.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/DeviceFarm/UpdateDevicePool.hs
@@ -0,0 +1,166 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.DeviceFarm.UpdateDevicePool
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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).
+--
+-- /See:/ <http://docs.aws.amazon.com/devicefarm/latest/APIReference/API_UpdateDevicePool.html AWS API Reference> for UpdateDevicePool.
+module Network.AWS.DeviceFarm.UpdateDevicePool
+    (
+    -- * Creating a Request
+      updateDevicePool
+    , UpdateDevicePool
+    -- * Request Lenses
+    , udpRules
+    , udpName
+    , udpDescription
+    , udpArn
+
+    -- * Destructuring the Response
+    , updateDevicePoolResponse
+    , UpdateDevicePoolResponse
+    -- * Response Lenses
+    , udprsDevicePool
+    , udprsResponseStatus
+    ) where
+
+import           Network.AWS.DeviceFarm.Types
+import           Network.AWS.DeviceFarm.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Represents a request to the update device pool operation.
+--
+-- /See:/ 'updateDevicePool' smart constructor.
+data UpdateDevicePool = UpdateDevicePool'
+    { _udpRules       :: !(Maybe [Rule])
+    , _udpName        :: !(Maybe Text)
+    , _udpDescription :: !(Maybe Text)
+    , _udpArn         :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateDevicePool' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'udpRules'
+--
+-- * 'udpName'
+--
+-- * 'udpDescription'
+--
+-- * 'udpArn'
+updateDevicePool
+    :: Text -- ^ 'udpArn'
+    -> UpdateDevicePool
+updateDevicePool pArn_ =
+    UpdateDevicePool'
+    { _udpRules = Nothing
+    , _udpName = Nothing
+    , _udpDescription = Nothing
+    , _udpArn = pArn_
+    }
+
+-- | 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.
+udpRules :: Lens' UpdateDevicePool [Rule]
+udpRules = lens _udpRules (\ s a -> s{_udpRules = a}) . _Default . _Coerce;
+
+-- | A string representing the name of the device pool you wish to update.
+udpName :: Lens' UpdateDevicePool (Maybe Text)
+udpName = lens _udpName (\ s a -> s{_udpName = a});
+
+-- | A description of the device pool you wish to update.
+udpDescription :: Lens' UpdateDevicePool (Maybe Text)
+udpDescription = lens _udpDescription (\ s a -> s{_udpDescription = a});
+
+-- | The Amazon Resourc Name (ARN) of the Device Farm device pool you wish to
+-- update.
+udpArn :: Lens' UpdateDevicePool Text
+udpArn = lens _udpArn (\ s a -> s{_udpArn = a});
+
+instance AWSRequest UpdateDevicePool where
+        type Rs UpdateDevicePool = UpdateDevicePoolResponse
+        request = postJSON deviceFarm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 UpdateDevicePoolResponse' <$>
+                   (x .?> "devicePool") <*> (pure (fromEnum s)))
+
+instance ToHeaders UpdateDevicePool where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DeviceFarm_20150623.UpdateDevicePool" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON UpdateDevicePool where
+        toJSON UpdateDevicePool'{..}
+          = object
+              (catMaybes
+                 [("rules" .=) <$> _udpRules,
+                  ("name" .=) <$> _udpName,
+                  ("description" .=) <$> _udpDescription,
+                  Just ("arn" .= _udpArn)])
+
+instance ToPath UpdateDevicePool where
+        toPath = const "/"
+
+instance ToQuery UpdateDevicePool where
+        toQuery = const mempty
+
+-- | Represents the result of an update device pool request.
+--
+-- /See:/ 'updateDevicePoolResponse' smart constructor.
+data UpdateDevicePoolResponse = UpdateDevicePoolResponse'
+    { _udprsDevicePool     :: !(Maybe DevicePool)
+    , _udprsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateDevicePoolResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'udprsDevicePool'
+--
+-- * 'udprsResponseStatus'
+updateDevicePoolResponse
+    :: Int -- ^ 'udprsResponseStatus'
+    -> UpdateDevicePoolResponse
+updateDevicePoolResponse pResponseStatus_ =
+    UpdateDevicePoolResponse'
+    { _udprsDevicePool = Nothing
+    , _udprsResponseStatus = pResponseStatus_
+    }
+
+-- | Undocumented member.
+udprsDevicePool :: Lens' UpdateDevicePoolResponse (Maybe DevicePool)
+udprsDevicePool = lens _udprsDevicePool (\ s a -> s{_udprsDevicePool = a});
+
+-- | 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
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/DeviceFarm/UpdateProject.hs
@@ -0,0 +1,141 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.DeviceFarm.UpdateProject
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Modifies the specified project name, given the project ARN and a new
+-- name.
+--
+-- /See:/ <http://docs.aws.amazon.com/devicefarm/latest/APIReference/API_UpdateProject.html AWS API Reference> for UpdateProject.
+module Network.AWS.DeviceFarm.UpdateProject
+    (
+    -- * Creating a Request
+      updateProject
+    , UpdateProject
+    -- * Request Lenses
+    , upName
+    , upArn
+
+    -- * Destructuring the Response
+    , updateProjectResponse
+    , UpdateProjectResponse
+    -- * Response Lenses
+    , uprsProject
+    , uprsResponseStatus
+    ) where
+
+import           Network.AWS.DeviceFarm.Types
+import           Network.AWS.DeviceFarm.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Represents a request to the update project operation.
+--
+-- /See:/ 'updateProject' smart constructor.
+data UpdateProject = UpdateProject'
+    { _upName :: !(Maybe Text)
+    , _upArn  :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateProject' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'upName'
+--
+-- * 'upArn'
+updateProject
+    :: Text -- ^ 'upArn'
+    -> UpdateProject
+updateProject pArn_ =
+    UpdateProject'
+    { _upName = Nothing
+    , _upArn = pArn_
+    }
+
+-- | A string representing the new name of the project that you are updating.
+upName :: Lens' UpdateProject (Maybe Text)
+upName = lens _upName (\ s a -> s{_upName = a});
+
+-- | The Amazon Resource Name (ARN) of the project whose name you wish to
+-- update.
+upArn :: Lens' UpdateProject Text
+upArn = lens _upArn (\ s a -> s{_upArn = a});
+
+instance AWSRequest UpdateProject where
+        type Rs UpdateProject = UpdateProjectResponse
+        request = postJSON deviceFarm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 UpdateProjectResponse' <$>
+                   (x .?> "project") <*> (pure (fromEnum s)))
+
+instance ToHeaders UpdateProject where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("DeviceFarm_20150623.UpdateProject" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON UpdateProject where
+        toJSON UpdateProject'{..}
+          = object
+              (catMaybes
+                 [("name" .=) <$> _upName, Just ("arn" .= _upArn)])
+
+instance ToPath UpdateProject where
+        toPath = const "/"
+
+instance ToQuery UpdateProject where
+        toQuery = const mempty
+
+-- | Represents the result of an update project request.
+--
+-- /See:/ 'updateProjectResponse' smart constructor.
+data UpdateProjectResponse = UpdateProjectResponse'
+    { _uprsProject        :: !(Maybe Project)
+    , _uprsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateProjectResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uprsProject'
+--
+-- * 'uprsResponseStatus'
+updateProjectResponse
+    :: Int -- ^ 'uprsResponseStatus'
+    -> UpdateProjectResponse
+updateProjectResponse pResponseStatus_ =
+    UpdateProjectResponse'
+    { _uprsProject = Nothing
+    , _uprsResponseStatus = pResponseStatus_
+    }
+
+-- | Undocumented member.
+uprsProject :: Lens' UpdateProjectResponse (Maybe Project)
+uprsProject = lens _uprsProject (\ s a -> s{_uprsProject = a});
+
+-- | The response status code.
+uprsResponseStatus :: Lens' UpdateProjectResponse Int
+uprsResponseStatus = lens _uprsResponseStatus (\ s a -> s{_uprsResponseStatus = a});
diff --git a/test/Test/AWS/Gen/DeviceFarm.hs b/test/Test/AWS/Gen/DeviceFarm.hs
--- a/test/Test/AWS/Gen/DeviceFarm.hs
+++ b/test/Test/AWS/Gen/DeviceFarm.hs
@@ -31,6 +31,12 @@
 --         [ testListProjects $
 --             listProjects
 --
+--         , testDeleteProject $
+--             deleteProject
+--
+--         , testUpdateProject $
+--             updateProject
+--
 --         , testGetDevicePoolCompatibility $
 --             getDevicePoolCompatibility
 --
@@ -43,18 +49,30 @@
 --         , testCreateUpload $
 --             createUpload
 --
+--         , testDeleteUpload $
+--             deleteUpload
+--
 --         , testGetDevicePool $
 --             getDevicePool
 --
 --         , testListDevicePools $
 --             listDevicePools
 --
+--         , testUpdateDevicePool $
+--             updateDevicePool
+--
+--         , testDeleteDevicePool $
+--             deleteDevicePool
+--
 --         , testGetUpload $
 --             getUpload
 --
 --         , testCreateDevicePool $
 --             createDevicePool
 --
+--         , testDeleteRun $
+--             deleteRun
+--
 --         , testListRuns $
 --             listRuns
 --
@@ -109,6 +127,12 @@
 --         [ testListProjectsResponse $
 --             listProjectsResponse
 --
+--         , testDeleteProjectResponse $
+--             deleteProjectResponse
+--
+--         , testUpdateProjectResponse $
+--             updateProjectResponse
+--
 --         , testGetDevicePoolCompatibilityResponse $
 --             getDevicePoolCompatibilityResponse
 --
@@ -121,18 +145,30 @@
 --         , testCreateUploadResponse $
 --             createUploadResponse
 --
+--         , testDeleteUploadResponse $
+--             deleteUploadResponse
+--
 --         , testGetDevicePoolResponse $
 --             getDevicePoolResponse
 --
 --         , testListDevicePoolsResponse $
 --             listDevicePoolsResponse
 --
+--         , testUpdateDevicePoolResponse $
+--             updateDevicePoolResponse
+--
+--         , testDeleteDevicePoolResponse $
+--             deleteDevicePoolResponse
+--
 --         , testGetUploadResponse $
 --             getUploadResponse
 --
 --         , testCreateDevicePoolResponse $
 --             createDevicePoolResponse
 --
+--         , testDeleteRunResponse $
+--             deleteRunResponse
+--
 --         , testListRunsResponse $
 --             listRunsResponse
 --
@@ -191,6 +227,16 @@
     "ListProjects"
     "fixture/ListProjects.yaml"
 
+testDeleteProject :: DeleteProject -> TestTree
+testDeleteProject = req
+    "DeleteProject"
+    "fixture/DeleteProject.yaml"
+
+testUpdateProject :: UpdateProject -> TestTree
+testUpdateProject = req
+    "UpdateProject"
+    "fixture/UpdateProject.yaml"
+
 testGetDevicePoolCompatibility :: GetDevicePoolCompatibility -> TestTree
 testGetDevicePoolCompatibility = req
     "GetDevicePoolCompatibility"
@@ -211,6 +257,11 @@
     "CreateUpload"
     "fixture/CreateUpload.yaml"
 
+testDeleteUpload :: DeleteUpload -> TestTree
+testDeleteUpload = req
+    "DeleteUpload"
+    "fixture/DeleteUpload.yaml"
+
 testGetDevicePool :: GetDevicePool -> TestTree
 testGetDevicePool = req
     "GetDevicePool"
@@ -221,6 +272,16 @@
     "ListDevicePools"
     "fixture/ListDevicePools.yaml"
 
+testUpdateDevicePool :: UpdateDevicePool -> TestTree
+testUpdateDevicePool = req
+    "UpdateDevicePool"
+    "fixture/UpdateDevicePool.yaml"
+
+testDeleteDevicePool :: DeleteDevicePool -> TestTree
+testDeleteDevicePool = req
+    "DeleteDevicePool"
+    "fixture/DeleteDevicePool.yaml"
+
 testGetUpload :: GetUpload -> TestTree
 testGetUpload = req
     "GetUpload"
@@ -231,6 +292,11 @@
     "CreateDevicePool"
     "fixture/CreateDevicePool.yaml"
 
+testDeleteRun :: DeleteRun -> TestTree
+testDeleteRun = req
+    "DeleteRun"
+    "fixture/DeleteRun.yaml"
+
 testListRuns :: ListRuns -> TestTree
 testListRuns = req
     "ListRuns"
@@ -320,6 +386,20 @@
     deviceFarm
     (Proxy :: Proxy ListProjects)
 
+testDeleteProjectResponse :: DeleteProjectResponse -> TestTree
+testDeleteProjectResponse = res
+    "DeleteProjectResponse"
+    "fixture/DeleteProjectResponse.proto"
+    deviceFarm
+    (Proxy :: Proxy DeleteProject)
+
+testUpdateProjectResponse :: UpdateProjectResponse -> TestTree
+testUpdateProjectResponse = res
+    "UpdateProjectResponse"
+    "fixture/UpdateProjectResponse.proto"
+    deviceFarm
+    (Proxy :: Proxy UpdateProject)
+
 testGetDevicePoolCompatibilityResponse :: GetDevicePoolCompatibilityResponse -> TestTree
 testGetDevicePoolCompatibilityResponse = res
     "GetDevicePoolCompatibilityResponse"
@@ -348,6 +428,13 @@
     deviceFarm
     (Proxy :: Proxy CreateUpload)
 
+testDeleteUploadResponse :: DeleteUploadResponse -> TestTree
+testDeleteUploadResponse = res
+    "DeleteUploadResponse"
+    "fixture/DeleteUploadResponse.proto"
+    deviceFarm
+    (Proxy :: Proxy DeleteUpload)
+
 testGetDevicePoolResponse :: GetDevicePoolResponse -> TestTree
 testGetDevicePoolResponse = res
     "GetDevicePoolResponse"
@@ -362,6 +449,20 @@
     deviceFarm
     (Proxy :: Proxy ListDevicePools)
 
+testUpdateDevicePoolResponse :: UpdateDevicePoolResponse -> TestTree
+testUpdateDevicePoolResponse = res
+    "UpdateDevicePoolResponse"
+    "fixture/UpdateDevicePoolResponse.proto"
+    deviceFarm
+    (Proxy :: Proxy UpdateDevicePool)
+
+testDeleteDevicePoolResponse :: DeleteDevicePoolResponse -> TestTree
+testDeleteDevicePoolResponse = res
+    "DeleteDevicePoolResponse"
+    "fixture/DeleteDevicePoolResponse.proto"
+    deviceFarm
+    (Proxy :: Proxy DeleteDevicePool)
+
 testGetUploadResponse :: GetUploadResponse -> TestTree
 testGetUploadResponse = res
     "GetUploadResponse"
@@ -375,6 +476,13 @@
     "fixture/CreateDevicePoolResponse.proto"
     deviceFarm
     (Proxy :: Proxy CreateDevicePool)
+
+testDeleteRunResponse :: DeleteRunResponse -> TestTree
+testDeleteRunResponse = res
+    "DeleteRunResponse"
+    "fixture/DeleteRunResponse.proto"
+    deviceFarm
+    (Proxy :: Proxy DeleteRun)
 
 testListRunsResponse :: ListRunsResponse -> TestTree
 testListRunsResponse = res
