diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.4.5`
+`1.5.0`
 
 
 ## Description
diff --git a/amazonka-codepipeline.cabal b/amazonka-codepipeline.cabal
--- a/amazonka-codepipeline.cabal
+++ b/amazonka-codepipeline.cabal
@@ -1,13 +1,13 @@
 name:                  amazonka-codepipeline
-version:               1.4.5
+version:               1.5.0
 synopsis:              Amazon CodePipeline SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
-license:               OtherLicense
+license:               MPL-2.0
 license-file:          LICENSE
 author:                Brendan Hay
-maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
-copyright:             Copyright (c) 2013-2016 Brendan Hay
+maintainer:            Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+copyright:             Copyright (c) 2013-2017 Brendan Hay
 category:              Network, AWS, Cloud, Distributed Computing
 build-type:            Simple
 cabal-version:         >= 1.10
@@ -29,14 +29,19 @@
     to get started.
 
 source-repository head
-    type:     git
-    location: git://github.com/brendanhay/amazonka.git
+    type:              git
+    location:          git://github.com/brendanhay/amazonka.git
+    subdir:            amazonka-codepipeline
 
 library
     default-language:  Haskell2010
     hs-source-dirs:    src gen
 
-    ghc-options:       -Wall
+    ghc-options:
+        -Wall
+        -fwarn-incomplete-uni-patterns
+        -fwarn-incomplete-record-updates
+        -funbox-strict-fields
 
     exposed-modules:
           Network.AWS.CodePipeline
@@ -54,6 +59,7 @@
         , Network.AWS.CodePipeline.GetPipelineState
         , Network.AWS.CodePipeline.GetThirdPartyJobDetails
         , Network.AWS.CodePipeline.ListActionTypes
+        , Network.AWS.CodePipeline.ListPipelineExecutions
         , Network.AWS.CodePipeline.ListPipelines
         , Network.AWS.CodePipeline.PollForJobs
         , Network.AWS.CodePipeline.PollForThirdPartyJobs
@@ -74,7 +80,7 @@
         , Network.AWS.CodePipeline.Types.Sum
 
     build-depends:
-          amazonka-core == 1.4.5.*
+          amazonka-core == 1.5.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-codepipeline-test
@@ -94,9 +100,9 @@
         , Test.AWS.CodePipeline.Internal
 
     build-depends:
-          amazonka-core == 1.4.5.*
-        , amazonka-test == 1.4.5.*
-        , amazonka-codepipeline == 1.4.5.*
+          amazonka-core == 1.5.0.*
+        , amazonka-test == 1.5.0.*
+        , amazonka-codepipeline
         , base
         , bytestring
         , tasty
diff --git a/fixture/ListPipelineExecutions.yaml b/fixture/ListPipelineExecutions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListPipelineExecutions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/codepipeline/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  codepipeline.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListPipelineExecutionsResponse.proto b/fixture/ListPipelineExecutionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListPipelineExecutionsResponse.proto
diff --git a/gen/Network/AWS/CodePipeline.hs b/gen/Network/AWS/CodePipeline.hs
--- a/gen/Network/AWS/CodePipeline.hs
+++ b/gen/Network/AWS/CodePipeline.hs
@@ -5,9 +5,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -27,7 +27,7 @@
 --
 --     * 'DeletePipeline' , which deletes the specified pipeline.
 --
---     * 'GetPipeline' , which returns information about a pipeline structure.
+--     * 'GetPipeline' , which returns information about the pipeline structure and pipeline metadata, including the pipeline Amazon Resource Name (ARN).
 --
 --     * 'GetPipelineExecution' , which returns information about a specific execution of a pipeline.
 --
@@ -35,13 +35,15 @@
 --
 --     * 'ListPipelines' , which gets a summary of all of the pipelines associated with your account.
 --
+--     * 'ListPipelineExecutions' , which gets a summary of the most recent executions for a pipeline.
+--
 --     * 'StartPipelineExecution' , which runs the the most recent revision of an artifact through the pipeline.
 --
 --     * 'UpdatePipeline' , which updates a pipeline with edits or changes to the structure of the pipeline.
 --
 --
 --
--- Pipelines include /stages/ , which are which are logical groupings of gates and actions. Each stage contains one or more actions that must complete before the next stage begins. A stage will result in success or failure. If a stage fails, then the pipeline stops at that stage and will remain stopped until either a new version of an artifact appears in the source location, or a user takes action to re-run the most recent artifact through the pipeline. You can call 'GetPipelineState' , which displays the status of a pipeline, including the status of stages in the pipeline, or 'GetPipeline' , which returns the entire structure of the pipeline, including the stages of that pipeline. For more information about the structure of stages and actions, also refer to the <http://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-structure.html AWS CodePipeline Pipeline Structure Reference> .
+-- Pipelines include /stages/ , which are logical groupings of gates and actions. Each stage contains one or more actions that must complete before the next stage begins. A stage will result in success or failure. If a stage fails, then the pipeline stops at that stage and will remain stopped until either a new version of an artifact appears in the source location, or a user takes action to re-run the most recent artifact through the pipeline. You can call 'GetPipelineState' , which displays the status of a pipeline, including the status of stages in the pipeline, or 'GetPipeline' , which returns the entire structure of the pipeline, including the stages of that pipeline. For more information about the structure of stages and actions, also refer to the <http://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-structure.html AWS CodePipeline Pipeline Structure Reference> .
 --
 -- Pipeline stages include /actions/ , which are categorized into categories such as source or build actions performed within a stage of a pipeline. For example, you can use a source action to import artifacts into a pipeline from a source such as Amazon S3. Like stages, you do not work with actions directly in most cases, but you do define and interact with actions when working with pipeline operations such as 'CreatePipeline' and 'GetPipelineState' .
 --
@@ -252,6 +254,9 @@
     -- ** CreateCustomActionType
     , module Network.AWS.CodePipeline.CreateCustomActionType
 
+    -- ** ListPipelineExecutions
+    , module Network.AWS.CodePipeline.ListPipelineExecutions
+
     -- * Types
 
     -- ** ActionCategory
@@ -536,6 +541,21 @@
     , pePipelineExecutionId
     , peArtifactRevisions
 
+    -- ** PipelineExecutionSummary
+    , PipelineExecutionSummary
+    , pipelineExecutionSummary
+    , pesStatus
+    , pesStartTime
+    , pesPipelineExecutionId
+    , pesLastUpdateTime
+
+    -- ** PipelineMetadata
+    , PipelineMetadata
+    , pipelineMetadata
+    , pmCreated
+    , pmPipelineARN
+    , pmUpdated
+
     -- ** PipelineSummary
     , PipelineSummary
     , pipelineSummary
@@ -610,34 +630,35 @@
     , tsLastChangedBy
     ) where
 
-import           Network.AWS.CodePipeline.AcknowledgeJob
-import           Network.AWS.CodePipeline.AcknowledgeThirdPartyJob
-import           Network.AWS.CodePipeline.CreateCustomActionType
-import           Network.AWS.CodePipeline.CreatePipeline
-import           Network.AWS.CodePipeline.DeleteCustomActionType
-import           Network.AWS.CodePipeline.DeletePipeline
-import           Network.AWS.CodePipeline.DisableStageTransition
-import           Network.AWS.CodePipeline.EnableStageTransition
-import           Network.AWS.CodePipeline.GetJobDetails
-import           Network.AWS.CodePipeline.GetPipeline
-import           Network.AWS.CodePipeline.GetPipelineExecution
-import           Network.AWS.CodePipeline.GetPipelineState
-import           Network.AWS.CodePipeline.GetThirdPartyJobDetails
-import           Network.AWS.CodePipeline.ListActionTypes
-import           Network.AWS.CodePipeline.ListPipelines
-import           Network.AWS.CodePipeline.PollForJobs
-import           Network.AWS.CodePipeline.PollForThirdPartyJobs
-import           Network.AWS.CodePipeline.PutActionRevision
-import           Network.AWS.CodePipeline.PutApprovalResult
-import           Network.AWS.CodePipeline.PutJobFailureResult
-import           Network.AWS.CodePipeline.PutJobSuccessResult
-import           Network.AWS.CodePipeline.PutThirdPartyJobFailureResult
-import           Network.AWS.CodePipeline.PutThirdPartyJobSuccessResult
-import           Network.AWS.CodePipeline.RetryStageExecution
-import           Network.AWS.CodePipeline.StartPipelineExecution
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.UpdatePipeline
-import           Network.AWS.CodePipeline.Waiters
+import Network.AWS.CodePipeline.AcknowledgeJob
+import Network.AWS.CodePipeline.AcknowledgeThirdPartyJob
+import Network.AWS.CodePipeline.CreateCustomActionType
+import Network.AWS.CodePipeline.CreatePipeline
+import Network.AWS.CodePipeline.DeleteCustomActionType
+import Network.AWS.CodePipeline.DeletePipeline
+import Network.AWS.CodePipeline.DisableStageTransition
+import Network.AWS.CodePipeline.EnableStageTransition
+import Network.AWS.CodePipeline.GetJobDetails
+import Network.AWS.CodePipeline.GetPipeline
+import Network.AWS.CodePipeline.GetPipelineExecution
+import Network.AWS.CodePipeline.GetPipelineState
+import Network.AWS.CodePipeline.GetThirdPartyJobDetails
+import Network.AWS.CodePipeline.ListActionTypes
+import Network.AWS.CodePipeline.ListPipelineExecutions
+import Network.AWS.CodePipeline.ListPipelines
+import Network.AWS.CodePipeline.PollForJobs
+import Network.AWS.CodePipeline.PollForThirdPartyJobs
+import Network.AWS.CodePipeline.PutActionRevision
+import Network.AWS.CodePipeline.PutApprovalResult
+import Network.AWS.CodePipeline.PutJobFailureResult
+import Network.AWS.CodePipeline.PutJobSuccessResult
+import Network.AWS.CodePipeline.PutThirdPartyJobFailureResult
+import Network.AWS.CodePipeline.PutThirdPartyJobSuccessResult
+import Network.AWS.CodePipeline.RetryStageExecution
+import Network.AWS.CodePipeline.StartPipelineExecution
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.UpdatePipeline
+import Network.AWS.CodePipeline.Waiters
 
 {- $errors
 Error matchers are designed for use with the functions provided by
diff --git a/gen/Network/AWS/CodePipeline/AcknowledgeJob.hs b/gen/Network/AWS/CodePipeline/AcknowledgeJob.hs
--- a/gen/Network/AWS/CodePipeline/AcknowledgeJob.hs
+++ b/gen/Network/AWS/CodePipeline/AcknowledgeJob.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.AcknowledgeJob
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -38,45 +38,44 @@
     , ajrsResponseStatus
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of an acknowledge job action.
+-- | Represents the input of an AcknowledgeJob action.
 --
 --
 --
 -- /See:/ 'acknowledgeJob' smart constructor.
 data AcknowledgeJob = AcknowledgeJob'
-    { _ajJobId :: !Text
-    , _ajNonce :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ajJobId :: !Text
+  , _ajNonce :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AcknowledgeJob' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'ajJobId' - The unique system-generated ID of the job for which you want to confirm receipt.
 --
--- * 'ajNonce' - A system-generated random number that AWS CodePipeline uses to ensure that the job is being worked on by only one job worker. This number must be returned in the response.
+-- * 'ajNonce' - A system-generated random number that AWS CodePipeline uses to ensure that the job is being worked on by only one job worker. Get this number from the response of the 'PollForJobs' request that returned this job.
 acknowledgeJob
     :: Text -- ^ 'ajJobId'
     -> Text -- ^ 'ajNonce'
     -> AcknowledgeJob
 acknowledgeJob pJobId_ pNonce_ =
-    AcknowledgeJob'
-    { _ajJobId = pJobId_
-    , _ajNonce = pNonce_
-    }
+  AcknowledgeJob' {_ajJobId = pJobId_, _ajNonce = pNonce_}
 
+
 -- | The unique system-generated ID of the job for which you want to confirm receipt.
 ajJobId :: Lens' AcknowledgeJob Text
 ajJobId = lens _ajJobId (\ s a -> s{_ajJobId = a});
 
--- | A system-generated random number that AWS CodePipeline uses to ensure that the job is being worked on by only one job worker. This number must be returned in the response.
+-- | A system-generated random number that AWS CodePipeline uses to ensure that the job is being worked on by only one job worker. Get this number from the response of the 'PollForJobs' request that returned this job.
 ajNonce :: Lens' AcknowledgeJob Text
 ajNonce = lens _ajNonce (\ s a -> s{_ajNonce = a});
 
@@ -89,9 +88,9 @@
                  AcknowledgeJobResponse' <$>
                    (x .?> "status") <*> (pure (fromEnum s)))
 
-instance Hashable AcknowledgeJob
+instance Hashable AcknowledgeJob where
 
-instance NFData AcknowledgeJob
+instance NFData AcknowledgeJob where
 
 instance ToHeaders AcknowledgeJob where
         toHeaders
@@ -116,16 +115,17 @@
 instance ToQuery AcknowledgeJob where
         toQuery = const mempty
 
--- | Represents the output of an acknowledge job action.
+-- | Represents the output of an AcknowledgeJob action.
 --
 --
 --
 -- /See:/ 'acknowledgeJobResponse' smart constructor.
 data AcknowledgeJobResponse = AcknowledgeJobResponse'
-    { _ajrsStatus         :: !(Maybe JobStatus)
-    , _ajrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ajrsStatus         :: !(Maybe JobStatus)
+  , _ajrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AcknowledgeJobResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -137,11 +137,10 @@
     :: Int -- ^ 'ajrsResponseStatus'
     -> AcknowledgeJobResponse
 acknowledgeJobResponse pResponseStatus_ =
-    AcknowledgeJobResponse'
-    { _ajrsStatus = Nothing
-    , _ajrsResponseStatus = pResponseStatus_
-    }
+  AcknowledgeJobResponse'
+  {_ajrsStatus = Nothing, _ajrsResponseStatus = pResponseStatus_}
 
+
 -- | Whether the job worker has received the specified job.
 ajrsStatus :: Lens' AcknowledgeJobResponse (Maybe JobStatus)
 ajrsStatus = lens _ajrsStatus (\ s a -> s{_ajrsStatus = a});
@@ -150,4 +149,4 @@
 ajrsResponseStatus :: Lens' AcknowledgeJobResponse Int
 ajrsResponseStatus = lens _ajrsResponseStatus (\ s a -> s{_ajrsResponseStatus = a});
 
-instance NFData AcknowledgeJobResponse
+instance NFData AcknowledgeJobResponse where
diff --git a/gen/Network/AWS/CodePipeline/AcknowledgeThirdPartyJob.hs b/gen/Network/AWS/CodePipeline/AcknowledgeThirdPartyJob.hs
--- a/gen/Network/AWS/CodePipeline/AcknowledgeThirdPartyJob.hs
+++ b/gen/Network/AWS/CodePipeline/AcknowledgeThirdPartyJob.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.AcknowledgeThirdPartyJob
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -39,31 +39,32 @@
     , atpjrsResponseStatus
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of an acknowledge third party job action.
+-- | Represents the input of an AcknowledgeThirdPartyJob action.
 --
 --
 --
 -- /See:/ 'acknowledgeThirdPartyJob' smart constructor.
 data AcknowledgeThirdPartyJob = AcknowledgeThirdPartyJob'
-    { _atpjJobId       :: !Text
-    , _atpjNonce       :: !Text
-    , _atpjClientToken :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _atpjJobId       :: !Text
+  , _atpjNonce       :: !Text
+  , _atpjClientToken :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AcknowledgeThirdPartyJob' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'atpjJobId' - The unique system-generated ID of the job.
 --
--- * 'atpjNonce' - A system-generated random number that AWS CodePipeline uses to ensure that the job is being worked on by only one job worker. This number must be returned in the response.
+-- * 'atpjNonce' - A system-generated random number that AWS CodePipeline uses to ensure that the job is being worked on by only one job worker. Get this number from the response to a 'GetThirdPartyJobDetails' request.
 --
 -- * 'atpjClientToken' - The clientToken portion of the clientId and clientToken pair used to verify that the calling entity is allowed access to the job and its details.
 acknowledgeThirdPartyJob
@@ -72,17 +73,15 @@
     -> Text -- ^ 'atpjClientToken'
     -> AcknowledgeThirdPartyJob
 acknowledgeThirdPartyJob pJobId_ pNonce_ pClientToken_ =
-    AcknowledgeThirdPartyJob'
-    { _atpjJobId = pJobId_
-    , _atpjNonce = pNonce_
-    , _atpjClientToken = pClientToken_
-    }
+  AcknowledgeThirdPartyJob'
+  {_atpjJobId = pJobId_, _atpjNonce = pNonce_, _atpjClientToken = pClientToken_}
 
+
 -- | The unique system-generated ID of the job.
 atpjJobId :: Lens' AcknowledgeThirdPartyJob Text
 atpjJobId = lens _atpjJobId (\ s a -> s{_atpjJobId = a});
 
--- | A system-generated random number that AWS CodePipeline uses to ensure that the job is being worked on by only one job worker. This number must be returned in the response.
+-- | A system-generated random number that AWS CodePipeline uses to ensure that the job is being worked on by only one job worker. Get this number from the response to a 'GetThirdPartyJobDetails' request.
 atpjNonce :: Lens' AcknowledgeThirdPartyJob Text
 atpjNonce = lens _atpjNonce (\ s a -> s{_atpjNonce = a});
 
@@ -100,9 +99,9 @@
                  AcknowledgeThirdPartyJobResponse' <$>
                    (x .?> "status") <*> (pure (fromEnum s)))
 
-instance Hashable AcknowledgeThirdPartyJob
+instance Hashable AcknowledgeThirdPartyJob where
 
-instance NFData AcknowledgeThirdPartyJob
+instance NFData AcknowledgeThirdPartyJob where
 
 instance ToHeaders AcknowledgeThirdPartyJob where
         toHeaders
@@ -128,16 +127,17 @@
 instance ToQuery AcknowledgeThirdPartyJob where
         toQuery = const mempty
 
--- | Represents the output of an acknowledge third party job action.
+-- | Represents the output of an AcknowledgeThirdPartyJob action.
 --
 --
 --
 -- /See:/ 'acknowledgeThirdPartyJobResponse' smart constructor.
 data AcknowledgeThirdPartyJobResponse = AcknowledgeThirdPartyJobResponse'
-    { _atpjrsStatus         :: !(Maybe JobStatus)
-    , _atpjrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _atpjrsStatus         :: !(Maybe JobStatus)
+  , _atpjrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AcknowledgeThirdPartyJobResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -149,11 +149,10 @@
     :: Int -- ^ 'atpjrsResponseStatus'
     -> AcknowledgeThirdPartyJobResponse
 acknowledgeThirdPartyJobResponse pResponseStatus_ =
-    AcknowledgeThirdPartyJobResponse'
-    { _atpjrsStatus = Nothing
-    , _atpjrsResponseStatus = pResponseStatus_
-    }
+  AcknowledgeThirdPartyJobResponse'
+  {_atpjrsStatus = Nothing, _atpjrsResponseStatus = pResponseStatus_}
 
+
 -- | The status information for the third party job, if any.
 atpjrsStatus :: Lens' AcknowledgeThirdPartyJobResponse (Maybe JobStatus)
 atpjrsStatus = lens _atpjrsStatus (\ s a -> s{_atpjrsStatus = a});
@@ -163,3 +162,4 @@
 atpjrsResponseStatus = lens _atpjrsResponseStatus (\ s a -> s{_atpjrsResponseStatus = a});
 
 instance NFData AcknowledgeThirdPartyJobResponse
+         where
diff --git a/gen/Network/AWS/CodePipeline/CreateCustomActionType.hs b/gen/Network/AWS/CodePipeline/CreateCustomActionType.hs
--- a/gen/Network/AWS/CodePipeline/CreateCustomActionType.hs
+++ b/gen/Network/AWS/CodePipeline/CreateCustomActionType.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.CreateCustomActionType
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -43,33 +43,34 @@
     , ccatrsActionType
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a create custom action operation.
+-- | Represents the input of a CreateCustomActionType operation.
 --
 --
 --
 -- /See:/ 'createCustomActionType' smart constructor.
 data CreateCustomActionType = CreateCustomActionType'
-    { _ccatSettings                :: !(Maybe ActionTypeSettings)
-    , _ccatConfigurationProperties :: !(Maybe [ActionConfigurationProperty])
-    , _ccatCategory                :: !ActionCategory
-    , _ccatProvider                :: !Text
-    , _ccatVersion                 :: !Text
-    , _ccatInputArtifactDetails    :: !ArtifactDetails
-    , _ccatOutputArtifactDetails   :: !ArtifactDetails
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ccatSettings                :: !(Maybe ActionTypeSettings)
+  , _ccatConfigurationProperties :: !(Maybe [ActionConfigurationProperty])
+  , _ccatCategory                :: !ActionCategory
+  , _ccatProvider                :: !Text
+  , _ccatVersion                 :: !Text
+  , _ccatInputArtifactDetails    :: !ArtifactDetails
+  , _ccatOutputArtifactDetails   :: !ArtifactDetails
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateCustomActionType' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ccatSettings' - Undocumented member.
+-- * 'ccatSettings' - Returns information about the settings for an action type.
 --
 -- * 'ccatConfigurationProperties' - The configuration properties for the custom action.
 --
@@ -79,9 +80,9 @@
 --
 -- * 'ccatVersion' - The version identifier of the custom action.
 --
--- * 'ccatInputArtifactDetails' - Undocumented member.
+-- * 'ccatInputArtifactDetails' - The details of the input artifact for the action, such as its commit ID.
 --
--- * 'ccatOutputArtifactDetails' - Undocumented member.
+-- * 'ccatOutputArtifactDetails' - The details of the output artifact of the action, such as its commit ID.
 createCustomActionType
     :: ActionCategory -- ^ 'ccatCategory'
     -> Text -- ^ 'ccatProvider'
@@ -90,17 +91,18 @@
     -> ArtifactDetails -- ^ 'ccatOutputArtifactDetails'
     -> CreateCustomActionType
 createCustomActionType pCategory_ pProvider_ pVersion_ pInputArtifactDetails_ pOutputArtifactDetails_ =
-    CreateCustomActionType'
-    { _ccatSettings = Nothing
-    , _ccatConfigurationProperties = Nothing
-    , _ccatCategory = pCategory_
-    , _ccatProvider = pProvider_
-    , _ccatVersion = pVersion_
-    , _ccatInputArtifactDetails = pInputArtifactDetails_
-    , _ccatOutputArtifactDetails = pOutputArtifactDetails_
-    }
+  CreateCustomActionType'
+  { _ccatSettings = Nothing
+  , _ccatConfigurationProperties = Nothing
+  , _ccatCategory = pCategory_
+  , _ccatProvider = pProvider_
+  , _ccatVersion = pVersion_
+  , _ccatInputArtifactDetails = pInputArtifactDetails_
+  , _ccatOutputArtifactDetails = pOutputArtifactDetails_
+  }
 
--- | Undocumented member.
+
+-- | Returns information about the settings for an action type.
 ccatSettings :: Lens' CreateCustomActionType (Maybe ActionTypeSettings)
 ccatSettings = lens _ccatSettings (\ s a -> s{_ccatSettings = a});
 
@@ -120,11 +122,11 @@
 ccatVersion :: Lens' CreateCustomActionType Text
 ccatVersion = lens _ccatVersion (\ s a -> s{_ccatVersion = a});
 
--- | Undocumented member.
+-- | The details of the input artifact for the action, such as its commit ID.
 ccatInputArtifactDetails :: Lens' CreateCustomActionType ArtifactDetails
 ccatInputArtifactDetails = lens _ccatInputArtifactDetails (\ s a -> s{_ccatInputArtifactDetails = a});
 
--- | Undocumented member.
+-- | The details of the output artifact of the action, such as its commit ID.
 ccatOutputArtifactDetails :: Lens' CreateCustomActionType ArtifactDetails
 ccatOutputArtifactDetails = lens _ccatOutputArtifactDetails (\ s a -> s{_ccatOutputArtifactDetails = a});
 
@@ -138,9 +140,9 @@
                  CreateCustomActionTypeResponse' <$>
                    (pure (fromEnum s)) <*> (x .:> "actionType"))
 
-instance Hashable CreateCustomActionType
+instance Hashable CreateCustomActionType where
 
-instance NFData CreateCustomActionType
+instance NFData CreateCustomActionType where
 
 instance ToHeaders CreateCustomActionType where
         toHeaders
@@ -175,39 +177,39 @@
 instance ToQuery CreateCustomActionType where
         toQuery = const mempty
 
--- | Represents the output of a create custom action operation.
+-- | Represents the output of a CreateCustomActionType operation.
 --
 --
 --
 -- /See:/ 'createCustomActionTypeResponse' smart constructor.
 data CreateCustomActionTypeResponse = CreateCustomActionTypeResponse'
-    { _ccatrsResponseStatus :: !Int
-    , _ccatrsActionType     :: !ActionType
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ccatrsResponseStatus :: !Int
+  , _ccatrsActionType     :: !ActionType
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateCustomActionTypeResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'ccatrsResponseStatus' - -- | The response status code.
 --
--- * 'ccatrsActionType' - Undocumented member.
+-- * 'ccatrsActionType' - Returns information about the details of an action type.
 createCustomActionTypeResponse
     :: Int -- ^ 'ccatrsResponseStatus'
     -> ActionType -- ^ 'ccatrsActionType'
     -> CreateCustomActionTypeResponse
 createCustomActionTypeResponse pResponseStatus_ pActionType_ =
-    CreateCustomActionTypeResponse'
-    { _ccatrsResponseStatus = pResponseStatus_
-    , _ccatrsActionType = pActionType_
-    }
+  CreateCustomActionTypeResponse'
+  {_ccatrsResponseStatus = pResponseStatus_, _ccatrsActionType = pActionType_}
 
+
 -- | -- | The response status code.
 ccatrsResponseStatus :: Lens' CreateCustomActionTypeResponse Int
 ccatrsResponseStatus = lens _ccatrsResponseStatus (\ s a -> s{_ccatrsResponseStatus = a});
 
--- | Undocumented member.
+-- | Returns information about the details of an action type.
 ccatrsActionType :: Lens' CreateCustomActionTypeResponse ActionType
 ccatrsActionType = lens _ccatrsActionType (\ s a -> s{_ccatrsActionType = a});
 
-instance NFData CreateCustomActionTypeResponse
+instance NFData CreateCustomActionTypeResponse where
diff --git a/gen/Network/AWS/CodePipeline/CreatePipeline.hs b/gen/Network/AWS/CodePipeline/CreatePipeline.hs
--- a/gen/Network/AWS/CodePipeline/CreatePipeline.hs
+++ b/gen/Network/AWS/CodePipeline/CreatePipeline.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.CreatePipeline
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -37,36 +37,35 @@
     , cprsResponseStatus
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a create pipeline action.
+-- | Represents the input of a CreatePipeline action.
 --
 --
 --
 -- /See:/ 'createPipeline' smart constructor.
 newtype CreatePipeline = CreatePipeline'
-    { _cpPipeline :: PipelineDeclaration
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _cpPipeline :: PipelineDeclaration
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreatePipeline' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cpPipeline' - Undocumented member.
+-- * 'cpPipeline' - Represents the structure of actions and stages to be performed in the pipeline.
 createPipeline
     :: PipelineDeclaration -- ^ 'cpPipeline'
     -> CreatePipeline
-createPipeline pPipeline_ =
-    CreatePipeline'
-    { _cpPipeline = pPipeline_
-    }
+createPipeline pPipeline_ = CreatePipeline' {_cpPipeline = pPipeline_}
 
--- | Undocumented member.
+
+-- | Represents the structure of actions and stages to be performed in the pipeline.
 cpPipeline :: Lens' CreatePipeline PipelineDeclaration
 cpPipeline = lens _cpPipeline (\ s a -> s{_cpPipeline = a});
 
@@ -79,9 +78,9 @@
                  CreatePipelineResponse' <$>
                    (x .?> "pipeline") <*> (pure (fromEnum s)))
 
-instance Hashable CreatePipeline
+instance Hashable CreatePipeline where
 
-instance NFData CreatePipeline
+instance NFData CreatePipeline where
 
 instance ToHeaders CreatePipeline where
         toHeaders
@@ -104,33 +103,33 @@
 instance ToQuery CreatePipeline where
         toQuery = const mempty
 
--- | Represents the output of a create pipeline action.
+-- | Represents the output of a CreatePipeline action.
 --
 --
 --
 -- /See:/ 'createPipelineResponse' smart constructor.
 data CreatePipelineResponse = CreatePipelineResponse'
-    { _cprsPipeline       :: !(Maybe PipelineDeclaration)
-    , _cprsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _cprsPipeline       :: !(Maybe PipelineDeclaration)
+  , _cprsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreatePipelineResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cprsPipeline' - Undocumented member.
+-- * 'cprsPipeline' - Represents the structure of actions and stages to be performed in the pipeline.
 --
 -- * 'cprsResponseStatus' - -- | The response status code.
 createPipelineResponse
     :: Int -- ^ 'cprsResponseStatus'
     -> CreatePipelineResponse
 createPipelineResponse pResponseStatus_ =
-    CreatePipelineResponse'
-    { _cprsPipeline = Nothing
-    , _cprsResponseStatus = pResponseStatus_
-    }
+  CreatePipelineResponse'
+  {_cprsPipeline = Nothing, _cprsResponseStatus = pResponseStatus_}
 
--- | Undocumented member.
+
+-- | Represents the structure of actions and stages to be performed in the pipeline.
 cprsPipeline :: Lens' CreatePipelineResponse (Maybe PipelineDeclaration)
 cprsPipeline = lens _cprsPipeline (\ s a -> s{_cprsPipeline = a});
 
@@ -138,4 +137,4 @@
 cprsResponseStatus :: Lens' CreatePipelineResponse Int
 cprsResponseStatus = lens _cprsResponseStatus (\ s a -> s{_cprsResponseStatus = a});
 
-instance NFData CreatePipelineResponse
+instance NFData CreatePipelineResponse where
diff --git a/gen/Network/AWS/CodePipeline/DeleteCustomActionType.hs b/gen/Network/AWS/CodePipeline/DeleteCustomActionType.hs
--- a/gen/Network/AWS/CodePipeline/DeleteCustomActionType.hs
+++ b/gen/Network/AWS/CodePipeline/DeleteCustomActionType.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.DeleteCustomActionType
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -38,24 +38,25 @@
     , DeleteCustomActionTypeResponse
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a delete custom action operation. The custom action will be marked as deleted.
+-- | Represents the input of a DeleteCustomActionType operation. The custom action will be marked as deleted.
 --
 --
 --
 -- /See:/ 'deleteCustomActionType' smart constructor.
 data DeleteCustomActionType = DeleteCustomActionType'
-    { _dcatCategory :: !ActionCategory
-    , _dcatProvider :: !Text
-    , _dcatVersion  :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dcatCategory :: !ActionCategory
+  , _dcatProvider :: !Text
+  , _dcatVersion  :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteCustomActionType' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -71,12 +72,13 @@
     -> Text -- ^ 'dcatVersion'
     -> DeleteCustomActionType
 deleteCustomActionType pCategory_ pProvider_ pVersion_ =
-    DeleteCustomActionType'
-    { _dcatCategory = pCategory_
-    , _dcatProvider = pProvider_
-    , _dcatVersion = pVersion_
-    }
+  DeleteCustomActionType'
+  { _dcatCategory = pCategory_
+  , _dcatProvider = pProvider_
+  , _dcatVersion = pVersion_
+  }
 
+
 -- | The category of the custom action that you want to delete, such as source or deploy.
 dcatCategory :: Lens' DeleteCustomActionType ActionCategory
 dcatCategory = lens _dcatCategory (\ s a -> s{_dcatCategory = a});
@@ -96,9 +98,9 @@
         response
           = receiveNull DeleteCustomActionTypeResponse'
 
-instance Hashable DeleteCustomActionType
+instance Hashable DeleteCustomActionType where
 
-instance NFData DeleteCustomActionType
+instance NFData DeleteCustomActionType where
 
 instance ToHeaders DeleteCustomActionType where
         toHeaders
@@ -126,13 +128,15 @@
 
 -- | /See:/ 'deleteCustomActionTypeResponse' smart constructor.
 data DeleteCustomActionTypeResponse =
-    DeleteCustomActionTypeResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DeleteCustomActionTypeResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteCustomActionTypeResponse' with the minimum fields required to make a request.
 --
 deleteCustomActionTypeResponse
     :: DeleteCustomActionTypeResponse
 deleteCustomActionTypeResponse = DeleteCustomActionTypeResponse'
 
-instance NFData DeleteCustomActionTypeResponse
+
+instance NFData DeleteCustomActionTypeResponse where
diff --git a/gen/Network/AWS/CodePipeline/DeletePipeline.hs b/gen/Network/AWS/CodePipeline/DeletePipeline.hs
--- a/gen/Network/AWS/CodePipeline/DeletePipeline.hs
+++ b/gen/Network/AWS/CodePipeline/DeletePipeline.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.DeletePipeline
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -34,22 +34,23 @@
     , DeletePipelineResponse
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a delete pipeline action.
+-- | Represents the input of a DeletePipeline action.
 --
 --
 --
 -- /See:/ 'deletePipeline' smart constructor.
 newtype DeletePipeline = DeletePipeline'
-    { _dpName :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dpName :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeletePipeline' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -58,11 +59,9 @@
 deletePipeline
     :: Text -- ^ 'dpName'
     -> DeletePipeline
-deletePipeline pName_ =
-    DeletePipeline'
-    { _dpName = pName_
-    }
+deletePipeline pName_ = DeletePipeline' {_dpName = pName_}
 
+
 -- | The name of the pipeline to be deleted.
 dpName :: Lens' DeletePipeline Text
 dpName = lens _dpName (\ s a -> s{_dpName = a});
@@ -72,9 +71,9 @@
         request = postJSON codePipeline
         response = receiveNull DeletePipelineResponse'
 
-instance Hashable DeletePipeline
+instance Hashable DeletePipeline where
 
-instance NFData DeletePipeline
+instance NFData DeletePipeline where
 
 instance ToHeaders DeletePipeline where
         toHeaders
@@ -98,13 +97,15 @@
 
 -- | /See:/ 'deletePipelineResponse' smart constructor.
 data DeletePipelineResponse =
-    DeletePipelineResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DeletePipelineResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeletePipelineResponse' with the minimum fields required to make a request.
 --
 deletePipelineResponse
     :: DeletePipelineResponse
 deletePipelineResponse = DeletePipelineResponse'
 
-instance NFData DeletePipelineResponse
+
+instance NFData DeletePipelineResponse where
diff --git a/gen/Network/AWS/CodePipeline/DisableStageTransition.hs b/gen/Network/AWS/CodePipeline/DisableStageTransition.hs
--- a/gen/Network/AWS/CodePipeline/DisableStageTransition.hs
+++ b/gen/Network/AWS/CodePipeline/DisableStageTransition.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.DisableStageTransition
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -37,25 +37,26 @@
     , DisableStageTransitionResponse
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a disable stage transition input action.
+-- | Represents the input of a DisableStageTransition action.
 --
 --
 --
 -- /See:/ 'disableStageTransition' smart constructor.
 data DisableStageTransition = DisableStageTransition'
-    { _dstPipelineName   :: !Text
-    , _dstStageName      :: !Text
-    , _dstTransitionType :: !StageTransitionType
-    , _dstReason         :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dstPipelineName   :: !Text
+  , _dstStageName      :: !Text
+  , _dstTransitionType :: !StageTransitionType
+  , _dstReason         :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DisableStageTransition' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -74,13 +75,14 @@
     -> Text -- ^ 'dstReason'
     -> DisableStageTransition
 disableStageTransition pPipelineName_ pStageName_ pTransitionType_ pReason_ =
-    DisableStageTransition'
-    { _dstPipelineName = pPipelineName_
-    , _dstStageName = pStageName_
-    , _dstTransitionType = pTransitionType_
-    , _dstReason = pReason_
-    }
+  DisableStageTransition'
+  { _dstPipelineName = pPipelineName_
+  , _dstStageName = pStageName_
+  , _dstTransitionType = pTransitionType_
+  , _dstReason = pReason_
+  }
 
+
 -- | The name of the pipeline in which you want to disable the flow of artifacts from one stage to another.
 dstPipelineName :: Lens' DisableStageTransition Text
 dstPipelineName = lens _dstPipelineName (\ s a -> s{_dstPipelineName = a});
@@ -104,9 +106,9 @@
         response
           = receiveNull DisableStageTransitionResponse'
 
-instance Hashable DisableStageTransition
+instance Hashable DisableStageTransition where
 
-instance NFData DisableStageTransition
+instance NFData DisableStageTransition where
 
 instance ToHeaders DisableStageTransition where
         toHeaders
@@ -135,13 +137,15 @@
 
 -- | /See:/ 'disableStageTransitionResponse' smart constructor.
 data DisableStageTransitionResponse =
-    DisableStageTransitionResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  DisableStageTransitionResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DisableStageTransitionResponse' with the minimum fields required to make a request.
 --
 disableStageTransitionResponse
     :: DisableStageTransitionResponse
 disableStageTransitionResponse = DisableStageTransitionResponse'
 
-instance NFData DisableStageTransitionResponse
+
+instance NFData DisableStageTransitionResponse where
diff --git a/gen/Network/AWS/CodePipeline/EnableStageTransition.hs b/gen/Network/AWS/CodePipeline/EnableStageTransition.hs
--- a/gen/Network/AWS/CodePipeline/EnableStageTransition.hs
+++ b/gen/Network/AWS/CodePipeline/EnableStageTransition.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.EnableStageTransition
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -36,24 +36,25 @@
     , EnableStageTransitionResponse
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of an enable stage transition action.
+-- | Represents the input of an EnableStageTransition action.
 --
 --
 --
 -- /See:/ 'enableStageTransition' smart constructor.
 data EnableStageTransition = EnableStageTransition'
-    { _estPipelineName   :: !Text
-    , _estStageName      :: !Text
-    , _estTransitionType :: !StageTransitionType
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _estPipelineName   :: !Text
+  , _estStageName      :: !Text
+  , _estTransitionType :: !StageTransitionType
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EnableStageTransition' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -69,12 +70,13 @@
     -> StageTransitionType -- ^ 'estTransitionType'
     -> EnableStageTransition
 enableStageTransition pPipelineName_ pStageName_ pTransitionType_ =
-    EnableStageTransition'
-    { _estPipelineName = pPipelineName_
-    , _estStageName = pStageName_
-    , _estTransitionType = pTransitionType_
-    }
+  EnableStageTransition'
+  { _estPipelineName = pPipelineName_
+  , _estStageName = pStageName_
+  , _estTransitionType = pTransitionType_
+  }
 
+
 -- | The name of the pipeline in which you want to enable the flow of artifacts from one stage to another.
 estPipelineName :: Lens' EnableStageTransition Text
 estPipelineName = lens _estPipelineName (\ s a -> s{_estPipelineName = a});
@@ -93,9 +95,9 @@
         request = postJSON codePipeline
         response = receiveNull EnableStageTransitionResponse'
 
-instance Hashable EnableStageTransition
+instance Hashable EnableStageTransition where
 
-instance NFData EnableStageTransition
+instance NFData EnableStageTransition where
 
 instance ToHeaders EnableStageTransition where
         toHeaders
@@ -123,13 +125,15 @@
 
 -- | /See:/ 'enableStageTransitionResponse' smart constructor.
 data EnableStageTransitionResponse =
-    EnableStageTransitionResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  EnableStageTransitionResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'EnableStageTransitionResponse' with the minimum fields required to make a request.
 --
 enableStageTransitionResponse
     :: EnableStageTransitionResponse
 enableStageTransitionResponse = EnableStageTransitionResponse'
 
-instance NFData EnableStageTransitionResponse
+
+instance NFData EnableStageTransitionResponse where
diff --git a/gen/Network/AWS/CodePipeline/GetJobDetails.hs b/gen/Network/AWS/CodePipeline/GetJobDetails.hs
--- a/gen/Network/AWS/CodePipeline/GetJobDetails.hs
+++ b/gen/Network/AWS/CodePipeline/GetJobDetails.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.GetJobDetails
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -39,22 +39,23 @@
     , gjdrsResponseStatus
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a get job details action.
+-- | Represents the input of a GetJobDetails action.
 --
 --
 --
 -- /See:/ 'getJobDetails' smart constructor.
 newtype GetJobDetails = GetJobDetails'
-    { _gjdJobId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gjdJobId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetJobDetails' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -63,11 +64,9 @@
 getJobDetails
     :: Text -- ^ 'gjdJobId'
     -> GetJobDetails
-getJobDetails pJobId_ =
-    GetJobDetails'
-    { _gjdJobId = pJobId_
-    }
+getJobDetails pJobId_ = GetJobDetails' {_gjdJobId = pJobId_}
 
+
 -- | The unique system-generated ID for the job.
 gjdJobId :: Lens' GetJobDetails Text
 gjdJobId = lens _gjdJobId (\ s a -> s{_gjdJobId = a});
@@ -81,9 +80,9 @@
                  GetJobDetailsResponse' <$>
                    (x .?> "jobDetails") <*> (pure (fromEnum s)))
 
-instance Hashable GetJobDetails
+instance Hashable GetJobDetails where
 
-instance NFData GetJobDetails
+instance NFData GetJobDetails where
 
 instance ToHeaders GetJobDetails where
         toHeaders
@@ -105,16 +104,17 @@
 instance ToQuery GetJobDetails where
         toQuery = const mempty
 
--- | Represents the output of a get job details action.
+-- | Represents the output of a GetJobDetails action.
 --
 --
 --
 -- /See:/ 'getJobDetailsResponse' smart constructor.
 data GetJobDetailsResponse = GetJobDetailsResponse'
-    { _gjdrsJobDetails     :: !(Maybe JobDetails)
-    , _gjdrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gjdrsJobDetails     :: !(Maybe JobDetails)
+  , _gjdrsResponseStatus :: !Int
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetJobDetailsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -126,11 +126,10 @@
     :: Int -- ^ 'gjdrsResponseStatus'
     -> GetJobDetailsResponse
 getJobDetailsResponse pResponseStatus_ =
-    GetJobDetailsResponse'
-    { _gjdrsJobDetails = Nothing
-    , _gjdrsResponseStatus = pResponseStatus_
-    }
+  GetJobDetailsResponse'
+  {_gjdrsJobDetails = Nothing, _gjdrsResponseStatus = pResponseStatus_}
 
+
 -- | The details of the job.
 gjdrsJobDetails :: Lens' GetJobDetailsResponse (Maybe JobDetails)
 gjdrsJobDetails = lens _gjdrsJobDetails (\ s a -> s{_gjdrsJobDetails = a});
@@ -139,4 +138,4 @@
 gjdrsResponseStatus :: Lens' GetJobDetailsResponse Int
 gjdrsResponseStatus = lens _gjdrsResponseStatus (\ s a -> s{_gjdrsResponseStatus = a});
 
-instance NFData GetJobDetailsResponse
+instance NFData GetJobDetailsResponse where
diff --git a/gen/Network/AWS/CodePipeline/GetPipeline.hs b/gen/Network/AWS/CodePipeline/GetPipeline.hs
--- a/gen/Network/AWS/CodePipeline/GetPipeline.hs
+++ b/gen/Network/AWS/CodePipeline/GetPipeline.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.GetPipeline
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -35,26 +35,28 @@
     , GetPipelineResponse
     -- * Response Lenses
     , gprsPipeline
+    , gprsMetadata
     , gprsResponseStatus
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a get pipeline action.
+-- | Represents the input of a GetPipeline action.
 --
 --
 --
 -- /See:/ 'getPipeline' smart constructor.
 data GetPipeline = GetPipeline'
-    { _gpVersion :: !(Maybe Nat)
-    , _gpName    :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gpVersion :: !(Maybe Nat)
+  , _gpName    :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetPipeline' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -65,12 +67,9 @@
 getPipeline
     :: Text -- ^ 'gpName'
     -> GetPipeline
-getPipeline pName_ =
-    GetPipeline'
-    { _gpVersion = Nothing
-    , _gpName = pName_
-    }
+getPipeline pName_ = GetPipeline' {_gpVersion = Nothing, _gpName = pName_}
 
+
 -- | The version number of the pipeline. If you do not specify a version, defaults to the most current version.
 gpVersion :: Lens' GetPipeline (Maybe Natural)
 gpVersion = lens _gpVersion (\ s a -> s{_gpVersion = a}) . mapping _Nat;
@@ -86,11 +85,12 @@
           = receiveJSON
               (\ s h x ->
                  GetPipelineResponse' <$>
-                   (x .?> "pipeline") <*> (pure (fromEnum s)))
+                   (x .?> "pipeline") <*> (x .?> "metadata") <*>
+                     (pure (fromEnum s)))
 
-instance Hashable GetPipeline
+instance Hashable GetPipeline where
 
-instance NFData GetPipeline
+instance NFData GetPipeline where
 
 instance ToHeaders GetPipeline where
         toHeaders
@@ -114,38 +114,48 @@
 instance ToQuery GetPipeline where
         toQuery = const mempty
 
--- | Represents the output of a get pipeline action.
+-- | Represents the output of a GetPipeline action.
 --
 --
 --
 -- /See:/ 'getPipelineResponse' smart constructor.
 data GetPipelineResponse = GetPipelineResponse'
-    { _gprsPipeline       :: !(Maybe PipelineDeclaration)
-    , _gprsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gprsPipeline       :: !(Maybe PipelineDeclaration)
+  , _gprsMetadata       :: !(Maybe PipelineMetadata)
+  , _gprsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetPipelineResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gprsPipeline' - Undocumented member.
+-- * 'gprsPipeline' - Represents the structure of actions and stages to be performed in the pipeline.
 --
+-- * 'gprsMetadata' - Represents the pipeline metadata information returned as part of the output of a GetPipeline action.
+--
 -- * 'gprsResponseStatus' - -- | The response status code.
 getPipelineResponse
     :: Int -- ^ 'gprsResponseStatus'
     -> GetPipelineResponse
 getPipelineResponse pResponseStatus_ =
-    GetPipelineResponse'
-    { _gprsPipeline = Nothing
-    , _gprsResponseStatus = pResponseStatus_
-    }
+  GetPipelineResponse'
+  { _gprsPipeline = Nothing
+  , _gprsMetadata = Nothing
+  , _gprsResponseStatus = pResponseStatus_
+  }
 
--- | Undocumented member.
+
+-- | Represents the structure of actions and stages to be performed in the pipeline.
 gprsPipeline :: Lens' GetPipelineResponse (Maybe PipelineDeclaration)
 gprsPipeline = lens _gprsPipeline (\ s a -> s{_gprsPipeline = a});
 
+-- | Represents the pipeline metadata information returned as part of the output of a GetPipeline action.
+gprsMetadata :: Lens' GetPipelineResponse (Maybe PipelineMetadata)
+gprsMetadata = lens _gprsMetadata (\ s a -> s{_gprsMetadata = a});
+
 -- | -- | The response status code.
 gprsResponseStatus :: Lens' GetPipelineResponse Int
 gprsResponseStatus = lens _gprsResponseStatus (\ s a -> s{_gprsResponseStatus = a});
 
-instance NFData GetPipelineResponse
+instance NFData GetPipelineResponse where
diff --git a/gen/Network/AWS/CodePipeline/GetPipelineExecution.hs b/gen/Network/AWS/CodePipeline/GetPipelineExecution.hs
--- a/gen/Network/AWS/CodePipeline/GetPipelineExecution.hs
+++ b/gen/Network/AWS/CodePipeline/GetPipelineExecution.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.GetPipelineExecution
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -38,23 +38,24 @@
     , gpersResponseStatus
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a get pipeline execution action.
+-- | Represents the input of a GetPipelineExecution action.
 --
 --
 --
 -- /See:/ 'getPipelineExecution' smart constructor.
 data GetPipelineExecution = GetPipelineExecution'
-    { _gpePipelineName        :: !Text
-    , _gpePipelineExecutionId :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gpePipelineName        :: !Text
+  , _gpePipelineExecutionId :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetPipelineExecution' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -67,11 +68,12 @@
     -> Text -- ^ 'gpePipelineExecutionId'
     -> GetPipelineExecution
 getPipelineExecution pPipelineName_ pPipelineExecutionId_ =
-    GetPipelineExecution'
-    { _gpePipelineName = pPipelineName_
-    , _gpePipelineExecutionId = pPipelineExecutionId_
-    }
+  GetPipelineExecution'
+  { _gpePipelineName = pPipelineName_
+  , _gpePipelineExecutionId = pPipelineExecutionId_
+  }
 
+
 -- | The name of the pipeline about which you want to get execution details.
 gpePipelineName :: Lens' GetPipelineExecution Text
 gpePipelineName = lens _gpePipelineName (\ s a -> s{_gpePipelineName = a});
@@ -90,9 +92,9 @@
                  GetPipelineExecutionResponse' <$>
                    (x .?> "pipelineExecution") <*> (pure (fromEnum s)))
 
-instance Hashable GetPipelineExecution
+instance Hashable GetPipelineExecution where
 
-instance NFData GetPipelineExecution
+instance NFData GetPipelineExecution where
 
 instance ToHeaders GetPipelineExecution where
         toHeaders
@@ -118,16 +120,17 @@
 instance ToQuery GetPipelineExecution where
         toQuery = const mempty
 
--- | Represents the output of a get pipeline execution action.
+-- | Represents the output of a GetPipelineExecution action.
 --
 --
 --
 -- /See:/ 'getPipelineExecutionResponse' smart constructor.
 data GetPipelineExecutionResponse = GetPipelineExecutionResponse'
-    { _gpersPipelineExecution :: !(Maybe PipelineExecution)
-    , _gpersResponseStatus    :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gpersPipelineExecution :: !(Maybe PipelineExecution)
+  , _gpersResponseStatus    :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetPipelineExecutionResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -139,11 +142,10 @@
     :: Int -- ^ 'gpersResponseStatus'
     -> GetPipelineExecutionResponse
 getPipelineExecutionResponse pResponseStatus_ =
-    GetPipelineExecutionResponse'
-    { _gpersPipelineExecution = Nothing
-    , _gpersResponseStatus = pResponseStatus_
-    }
+  GetPipelineExecutionResponse'
+  {_gpersPipelineExecution = Nothing, _gpersResponseStatus = pResponseStatus_}
 
+
 -- | Represents information about the execution of a pipeline.
 gpersPipelineExecution :: Lens' GetPipelineExecutionResponse (Maybe PipelineExecution)
 gpersPipelineExecution = lens _gpersPipelineExecution (\ s a -> s{_gpersPipelineExecution = a});
@@ -152,4 +154,4 @@
 gpersResponseStatus :: Lens' GetPipelineExecutionResponse Int
 gpersResponseStatus = lens _gpersResponseStatus (\ s a -> s{_gpersResponseStatus = a});
 
-instance NFData GetPipelineExecutionResponse
+instance NFData GetPipelineExecutionResponse where
diff --git a/gen/Network/AWS/CodePipeline/GetPipelineState.hs b/gen/Network/AWS/CodePipeline/GetPipelineState.hs
--- a/gen/Network/AWS/CodePipeline/GetPipelineState.hs
+++ b/gen/Network/AWS/CodePipeline/GetPipelineState.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.GetPipelineState
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -41,22 +41,23 @@
     , gpsrsResponseStatus
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a get pipeline state action.
+-- | Represents the input of a GetPipelineState action.
 --
 --
 --
 -- /See:/ 'getPipelineState' smart constructor.
 newtype GetPipelineState = GetPipelineState'
-    { _gpsName :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gpsName :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetPipelineState' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -65,11 +66,9 @@
 getPipelineState
     :: Text -- ^ 'gpsName'
     -> GetPipelineState
-getPipelineState pName_ =
-    GetPipelineState'
-    { _gpsName = pName_
-    }
+getPipelineState pName_ = GetPipelineState' {_gpsName = pName_}
 
+
 -- | The name of the pipeline about which you want to get information.
 gpsName :: Lens' GetPipelineState Text
 gpsName = lens _gpsName (\ s a -> s{_gpsName = a});
@@ -87,9 +86,9 @@
                      <*> (x .?> "updated")
                      <*> (pure (fromEnum s)))
 
-instance Hashable GetPipelineState
+instance Hashable GetPipelineState where
 
-instance NFData GetPipelineState
+instance NFData GetPipelineState where
 
 instance ToHeaders GetPipelineState where
         toHeaders
@@ -111,20 +110,21 @@
 instance ToQuery GetPipelineState where
         toQuery = const mempty
 
--- | Represents the output of a get pipeline state action.
+-- | Represents the output of a GetPipelineState action.
 --
 --
 --
 -- /See:/ 'getPipelineStateResponse' smart constructor.
 data GetPipelineStateResponse = GetPipelineStateResponse'
-    { _gpsrsPipelineName    :: !(Maybe Text)
-    , _gpsrsCreated         :: !(Maybe POSIX)
-    , _gpsrsStageStates     :: !(Maybe [StageState])
-    , _gpsrsPipelineVersion :: !(Maybe Nat)
-    , _gpsrsUpdated         :: !(Maybe POSIX)
-    , _gpsrsResponseStatus  :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gpsrsPipelineName    :: !(Maybe Text)
+  , _gpsrsCreated         :: !(Maybe POSIX)
+  , _gpsrsStageStates     :: !(Maybe [StageState])
+  , _gpsrsPipelineVersion :: !(Maybe Nat)
+  , _gpsrsUpdated         :: !(Maybe POSIX)
+  , _gpsrsResponseStatus  :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetPipelineStateResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -144,15 +144,16 @@
     :: Int -- ^ 'gpsrsResponseStatus'
     -> GetPipelineStateResponse
 getPipelineStateResponse pResponseStatus_ =
-    GetPipelineStateResponse'
-    { _gpsrsPipelineName = Nothing
-    , _gpsrsCreated = Nothing
-    , _gpsrsStageStates = Nothing
-    , _gpsrsPipelineVersion = Nothing
-    , _gpsrsUpdated = Nothing
-    , _gpsrsResponseStatus = pResponseStatus_
-    }
+  GetPipelineStateResponse'
+  { _gpsrsPipelineName = Nothing
+  , _gpsrsCreated = Nothing
+  , _gpsrsStageStates = Nothing
+  , _gpsrsPipelineVersion = Nothing
+  , _gpsrsUpdated = Nothing
+  , _gpsrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The name of the pipeline for which you want to get the state.
 gpsrsPipelineName :: Lens' GetPipelineStateResponse (Maybe Text)
 gpsrsPipelineName = lens _gpsrsPipelineName (\ s a -> s{_gpsrsPipelineName = a});
@@ -177,4 +178,4 @@
 gpsrsResponseStatus :: Lens' GetPipelineStateResponse Int
 gpsrsResponseStatus = lens _gpsrsResponseStatus (\ s a -> s{_gpsrsResponseStatus = a});
 
-instance NFData GetPipelineStateResponse
+instance NFData GetPipelineStateResponse where
diff --git a/gen/Network/AWS/CodePipeline/GetThirdPartyJobDetails.hs b/gen/Network/AWS/CodePipeline/GetThirdPartyJobDetails.hs
--- a/gen/Network/AWS/CodePipeline/GetThirdPartyJobDetails.hs
+++ b/gen/Network/AWS/CodePipeline/GetThirdPartyJobDetails.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.GetThirdPartyJobDetails
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -40,23 +40,24 @@
     , gtpjdrsResponseStatus
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a get third party job details action.
+-- | Represents the input of a GetThirdPartyJobDetails action.
 --
 --
 --
 -- /See:/ 'getThirdPartyJobDetails' smart constructor.
 data GetThirdPartyJobDetails = GetThirdPartyJobDetails'
-    { _gtpjdJobId       :: !Text
-    , _gtpjdClientToken :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gtpjdJobId       :: !Text
+  , _gtpjdClientToken :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetThirdPartyJobDetails' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -69,11 +70,10 @@
     -> Text -- ^ 'gtpjdClientToken'
     -> GetThirdPartyJobDetails
 getThirdPartyJobDetails pJobId_ pClientToken_ =
-    GetThirdPartyJobDetails'
-    { _gtpjdJobId = pJobId_
-    , _gtpjdClientToken = pClientToken_
-    }
+  GetThirdPartyJobDetails'
+  {_gtpjdJobId = pJobId_, _gtpjdClientToken = pClientToken_}
 
+
 -- | The unique system-generated ID used for identifying the job.
 gtpjdJobId :: Lens' GetThirdPartyJobDetails Text
 gtpjdJobId = lens _gtpjdJobId (\ s a -> s{_gtpjdJobId = a});
@@ -92,9 +92,9 @@
                  GetThirdPartyJobDetailsResponse' <$>
                    (x .?> "jobDetails") <*> (pure (fromEnum s)))
 
-instance Hashable GetThirdPartyJobDetails
+instance Hashable GetThirdPartyJobDetails where
 
-instance NFData GetThirdPartyJobDetails
+instance NFData GetThirdPartyJobDetails where
 
 instance ToHeaders GetThirdPartyJobDetails where
         toHeaders
@@ -119,16 +119,17 @@
 instance ToQuery GetThirdPartyJobDetails where
         toQuery = const mempty
 
--- | Represents the output of a get third party job details action.
+-- | Represents the output of a GetThirdPartyJobDetails action.
 --
 --
 --
 -- /See:/ 'getThirdPartyJobDetailsResponse' smart constructor.
 data GetThirdPartyJobDetailsResponse = GetThirdPartyJobDetailsResponse'
-    { _gtpjdrsJobDetails     :: !(Maybe ThirdPartyJobDetails)
-    , _gtpjdrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gtpjdrsJobDetails     :: !(Maybe ThirdPartyJobDetails)
+  , _gtpjdrsResponseStatus :: !Int
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetThirdPartyJobDetailsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -140,11 +141,10 @@
     :: Int -- ^ 'gtpjdrsResponseStatus'
     -> GetThirdPartyJobDetailsResponse
 getThirdPartyJobDetailsResponse pResponseStatus_ =
-    GetThirdPartyJobDetailsResponse'
-    { _gtpjdrsJobDetails = Nothing
-    , _gtpjdrsResponseStatus = pResponseStatus_
-    }
+  GetThirdPartyJobDetailsResponse'
+  {_gtpjdrsJobDetails = Nothing, _gtpjdrsResponseStatus = pResponseStatus_}
 
+
 -- | The details of the job, including any protected values defined for the job.
 gtpjdrsJobDetails :: Lens' GetThirdPartyJobDetailsResponse (Maybe ThirdPartyJobDetails)
 gtpjdrsJobDetails = lens _gtpjdrsJobDetails (\ s a -> s{_gtpjdrsJobDetails = a});
@@ -153,4 +153,4 @@
 gtpjdrsResponseStatus :: Lens' GetThirdPartyJobDetailsResponse Int
 gtpjdrsResponseStatus = lens _gtpjdrsResponseStatus (\ s a -> s{_gtpjdrsResponseStatus = a});
 
-instance NFData GetThirdPartyJobDetailsResponse
+instance NFData GetThirdPartyJobDetailsResponse where
diff --git a/gen/Network/AWS/CodePipeline/ListActionTypes.hs b/gen/Network/AWS/CodePipeline/ListActionTypes.hs
--- a/gen/Network/AWS/CodePipeline/ListActionTypes.hs
+++ b/gen/Network/AWS/CodePipeline/ListActionTypes.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.ListActionTypes
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -39,23 +39,24 @@
     , latrsActionTypes
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a list action types action.
+-- | Represents the input of a ListActionTypes action.
 --
 --
 --
 -- /See:/ 'listActionTypes' smart constructor.
 data ListActionTypes = ListActionTypes'
-    { _latActionOwnerFilter :: !(Maybe ActionOwner)
-    , _latNextToken         :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _latActionOwnerFilter :: !(Maybe ActionOwner)
+  , _latNextToken         :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListActionTypes' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -66,11 +67,9 @@
 listActionTypes
     :: ListActionTypes
 listActionTypes =
-    ListActionTypes'
-    { _latActionOwnerFilter = Nothing
-    , _latNextToken = Nothing
-    }
+  ListActionTypes' {_latActionOwnerFilter = Nothing, _latNextToken = Nothing}
 
+
 -- | Filters the list of action types to those created by a specified entity.
 latActionOwnerFilter :: Lens' ListActionTypes (Maybe ActionOwner)
 latActionOwnerFilter = lens _latActionOwnerFilter (\ s a -> s{_latActionOwnerFilter = a});
@@ -89,9 +88,9 @@
                    (x .?> "nextToken") <*> (pure (fromEnum s)) <*>
                      (x .?> "actionTypes" .!@ mempty))
 
-instance Hashable ListActionTypes
+instance Hashable ListActionTypes where
 
-instance NFData ListActionTypes
+instance NFData ListActionTypes where
 
 instance ToHeaders ListActionTypes where
         toHeaders
@@ -116,17 +115,18 @@
 instance ToQuery ListActionTypes where
         toQuery = const mempty
 
--- | Represents the output of a list action types action.
+-- | Represents the output of a ListActionTypes action.
 --
 --
 --
 -- /See:/ 'listActionTypesResponse' smart constructor.
 data ListActionTypesResponse = ListActionTypesResponse'
-    { _latrsNextToken      :: !(Maybe Text)
-    , _latrsResponseStatus :: !Int
-    , _latrsActionTypes    :: ![ActionType]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _latrsNextToken      :: !(Maybe Text)
+  , _latrsResponseStatus :: !Int
+  , _latrsActionTypes    :: ![ActionType]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListActionTypesResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -140,12 +140,13 @@
     :: Int -- ^ 'latrsResponseStatus'
     -> ListActionTypesResponse
 listActionTypesResponse pResponseStatus_ =
-    ListActionTypesResponse'
-    { _latrsNextToken = Nothing
-    , _latrsResponseStatus = pResponseStatus_
-    , _latrsActionTypes = mempty
-    }
+  ListActionTypesResponse'
+  { _latrsNextToken = Nothing
+  , _latrsResponseStatus = pResponseStatus_
+  , _latrsActionTypes = mempty
+  }
 
+
 -- | If the amount of returned information is significantly large, an identifier is also returned which can be used in a subsequent list action types call to return the next set of action types in the list.
 latrsNextToken :: Lens' ListActionTypesResponse (Maybe Text)
 latrsNextToken = lens _latrsNextToken (\ s a -> s{_latrsNextToken = a});
@@ -158,4 +159,4 @@
 latrsActionTypes :: Lens' ListActionTypesResponse [ActionType]
 latrsActionTypes = lens _latrsActionTypes (\ s a -> s{_latrsActionTypes = a}) . _Coerce;
 
-instance NFData ListActionTypesResponse
+instance NFData ListActionTypesResponse where
diff --git a/gen/Network/AWS/CodePipeline/ListPipelineExecutions.hs b/gen/Network/AWS/CodePipeline/ListPipelineExecutions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CodePipeline/ListPipelineExecutions.hs
@@ -0,0 +1,178 @@
+{-# 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.CodePipeline.ListPipelineExecutions
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a summary of the most recent executions for a pipeline.
+--
+--
+module Network.AWS.CodePipeline.ListPipelineExecutions
+    (
+    -- * Creating a Request
+      listPipelineExecutions
+    , ListPipelineExecutions
+    -- * Request Lenses
+    , lpeNextToken
+    , lpeMaxResults
+    , lpePipelineName
+
+    -- * Destructuring the Response
+    , listPipelineExecutionsResponse
+    , ListPipelineExecutionsResponse
+    -- * Response Lenses
+    , lpersNextToken
+    , lpersPipelineExecutionSummaries
+    , lpersResponseStatus
+    ) where
+
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+
+-- | Represents the input of a ListPipelineExecutions action.
+--
+--
+--
+-- /See:/ 'listPipelineExecutions' smart constructor.
+data ListPipelineExecutions = ListPipelineExecutions'
+  { _lpeNextToken    :: !(Maybe Text)
+  , _lpeMaxResults   :: !(Maybe Nat)
+  , _lpePipelineName :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListPipelineExecutions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lpeNextToken' - The token that was returned from the previous ListPipelineExecutions call, which can be used to return the next set of pipeline executions in the list.
+--
+-- * 'lpeMaxResults' - The maximum number of results to return in a single call. To retrieve the remaining results, make another call with the returned nextToken value. The available pipeline execution history is limited to the most recent 12 months, based on pipeline execution start times. Default value is 100.
+--
+-- * 'lpePipelineName' - The name of the pipeline for which you want to get execution summary information.
+listPipelineExecutions
+    :: Text -- ^ 'lpePipelineName'
+    -> ListPipelineExecutions
+listPipelineExecutions pPipelineName_ =
+  ListPipelineExecutions'
+  { _lpeNextToken = Nothing
+  , _lpeMaxResults = Nothing
+  , _lpePipelineName = pPipelineName_
+  }
+
+
+-- | The token that was returned from the previous ListPipelineExecutions call, which can be used to return the next set of pipeline executions in the list.
+lpeNextToken :: Lens' ListPipelineExecutions (Maybe Text)
+lpeNextToken = lens _lpeNextToken (\ s a -> s{_lpeNextToken = a});
+
+-- | The maximum number of results to return in a single call. To retrieve the remaining results, make another call with the returned nextToken value. The available pipeline execution history is limited to the most recent 12 months, based on pipeline execution start times. Default value is 100.
+lpeMaxResults :: Lens' ListPipelineExecutions (Maybe Natural)
+lpeMaxResults = lens _lpeMaxResults (\ s a -> s{_lpeMaxResults = a}) . mapping _Nat;
+
+-- | The name of the pipeline for which you want to get execution summary information.
+lpePipelineName :: Lens' ListPipelineExecutions Text
+lpePipelineName = lens _lpePipelineName (\ s a -> s{_lpePipelineName = a});
+
+instance AWSRequest ListPipelineExecutions where
+        type Rs ListPipelineExecutions =
+             ListPipelineExecutionsResponse
+        request = postJSON codePipeline
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListPipelineExecutionsResponse' <$>
+                   (x .?> "nextToken") <*>
+                     (x .?> "pipelineExecutionSummaries" .!@ mempty)
+                     <*> (pure (fromEnum s)))
+
+instance Hashable ListPipelineExecutions where
+
+instance NFData ListPipelineExecutions where
+
+instance ToHeaders ListPipelineExecutions where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CodePipeline_20150709.ListPipelineExecutions" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ListPipelineExecutions where
+        toJSON ListPipelineExecutions'{..}
+          = object
+              (catMaybes
+                 [("nextToken" .=) <$> _lpeNextToken,
+                  ("maxResults" .=) <$> _lpeMaxResults,
+                  Just ("pipelineName" .= _lpePipelineName)])
+
+instance ToPath ListPipelineExecutions where
+        toPath = const "/"
+
+instance ToQuery ListPipelineExecutions where
+        toQuery = const mempty
+
+-- | Represents the output of a ListPipelineExecutions action.
+--
+--
+--
+-- /See:/ 'listPipelineExecutionsResponse' smart constructor.
+data ListPipelineExecutionsResponse = ListPipelineExecutionsResponse'
+  { _lpersNextToken                  :: !(Maybe Text)
+  , _lpersPipelineExecutionSummaries :: !(Maybe [PipelineExecutionSummary])
+  , _lpersResponseStatus             :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListPipelineExecutionsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lpersNextToken' - A token that can be used in the next ListPipelineExecutions call. To view all items in the list, continue to call this operation with each subsequent token until no more nextToken values are returned.
+--
+-- * 'lpersPipelineExecutionSummaries' - A list of executions in the history of a pipeline.
+--
+-- * 'lpersResponseStatus' - -- | The response status code.
+listPipelineExecutionsResponse
+    :: Int -- ^ 'lpersResponseStatus'
+    -> ListPipelineExecutionsResponse
+listPipelineExecutionsResponse pResponseStatus_ =
+  ListPipelineExecutionsResponse'
+  { _lpersNextToken = Nothing
+  , _lpersPipelineExecutionSummaries = Nothing
+  , _lpersResponseStatus = pResponseStatus_
+  }
+
+
+-- | A token that can be used in the next ListPipelineExecutions call. To view all items in the list, continue to call this operation with each subsequent token until no more nextToken values are returned.
+lpersNextToken :: Lens' ListPipelineExecutionsResponse (Maybe Text)
+lpersNextToken = lens _lpersNextToken (\ s a -> s{_lpersNextToken = a});
+
+-- | A list of executions in the history of a pipeline.
+lpersPipelineExecutionSummaries :: Lens' ListPipelineExecutionsResponse [PipelineExecutionSummary]
+lpersPipelineExecutionSummaries = lens _lpersPipelineExecutionSummaries (\ s a -> s{_lpersPipelineExecutionSummaries = a}) . _Default . _Coerce;
+
+-- | -- | The response status code.
+lpersResponseStatus :: Lens' ListPipelineExecutionsResponse Int
+lpersResponseStatus = lens _lpersResponseStatus (\ s a -> s{_lpersResponseStatus = a});
+
+instance NFData ListPipelineExecutionsResponse where
diff --git a/gen/Network/AWS/CodePipeline/ListPipelines.hs b/gen/Network/AWS/CodePipeline/ListPipelines.hs
--- a/gen/Network/AWS/CodePipeline/ListPipelines.hs
+++ b/gen/Network/AWS/CodePipeline/ListPipelines.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.ListPipelines
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -38,22 +38,23 @@
     , lprsResponseStatus
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a list pipelines action.
+-- | Represents the input of a ListPipelines action.
 --
 --
 --
 -- /See:/ 'listPipelines' smart constructor.
 newtype ListPipelines = ListPipelines'
-    { _lpNextToken :: Maybe Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _lpNextToken :: Maybe Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListPipelines' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -61,11 +62,9 @@
 -- * 'lpNextToken' - An identifier that was returned from the previous list pipelines call, which can be used to return the next set of pipelines in the list.
 listPipelines
     :: ListPipelines
-listPipelines =
-    ListPipelines'
-    { _lpNextToken = Nothing
-    }
+listPipelines = ListPipelines' {_lpNextToken = Nothing}
 
+
 -- | An identifier that was returned from the previous list pipelines call, which can be used to return the next set of pipelines in the list.
 lpNextToken :: Lens' ListPipelines (Maybe Text)
 lpNextToken = lens _lpNextToken (\ s a -> s{_lpNextToken = a});
@@ -81,9 +80,9 @@
                      (x .?> "nextToken")
                      <*> (pure (fromEnum s)))
 
-instance Hashable ListPipelines
+instance Hashable ListPipelines where
 
-instance NFData ListPipelines
+instance NFData ListPipelines where
 
 instance ToHeaders ListPipelines where
         toHeaders
@@ -106,17 +105,18 @@
 instance ToQuery ListPipelines where
         toQuery = const mempty
 
--- | Represents the output of a list pipelines action.
+-- | Represents the output of a ListPipelines action.
 --
 --
 --
 -- /See:/ 'listPipelinesResponse' smart constructor.
 data ListPipelinesResponse = ListPipelinesResponse'
-    { _lprsPipelines      :: !(Maybe [PipelineSummary])
-    , _lprsNextToken      :: !(Maybe Text)
-    , _lprsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _lprsPipelines      :: !(Maybe [PipelineSummary])
+  , _lprsNextToken      :: !(Maybe Text)
+  , _lprsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListPipelinesResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -130,12 +130,13 @@
     :: Int -- ^ 'lprsResponseStatus'
     -> ListPipelinesResponse
 listPipelinesResponse pResponseStatus_ =
-    ListPipelinesResponse'
-    { _lprsPipelines = Nothing
-    , _lprsNextToken = Nothing
-    , _lprsResponseStatus = pResponseStatus_
-    }
+  ListPipelinesResponse'
+  { _lprsPipelines = Nothing
+  , _lprsNextToken = Nothing
+  , _lprsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The list of pipelines.
 lprsPipelines :: Lens' ListPipelinesResponse [PipelineSummary]
 lprsPipelines = lens _lprsPipelines (\ s a -> s{_lprsPipelines = a}) . _Default . _Coerce;
@@ -148,4 +149,4 @@
 lprsResponseStatus :: Lens' ListPipelinesResponse Int
 lprsResponseStatus = lens _lprsResponseStatus (\ s a -> s{_lprsResponseStatus = a});
 
-instance NFData ListPipelinesResponse
+instance NFData ListPipelinesResponse where
diff --git a/gen/Network/AWS/CodePipeline/PollForJobs.hs b/gen/Network/AWS/CodePipeline/PollForJobs.hs
--- a/gen/Network/AWS/CodePipeline/PollForJobs.hs
+++ b/gen/Network/AWS/CodePipeline/PollForJobs.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.PollForJobs
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -41,24 +41,25 @@
     , pfjrsResponseStatus
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a poll for jobs action.
+-- | Represents the input of a PollForJobs action.
 --
 --
 --
 -- /See:/ 'pollForJobs' smart constructor.
 data PollForJobs = PollForJobs'
-    { _pfjMaxBatchSize :: !(Maybe Nat)
-    , _pfjQueryParam   :: !(Maybe (Map Text Text))
-    , _pfjActionTypeId :: !ActionTypeId
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _pfjMaxBatchSize :: !(Maybe Nat)
+  , _pfjQueryParam   :: !(Maybe (Map Text Text))
+  , _pfjActionTypeId :: !ActionTypeId
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PollForJobs' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -67,17 +68,18 @@
 --
 -- * 'pfjQueryParam' - A map of property names and values. For an action type with no queryable properties, this value must be null or an empty map. For an action type with a queryable property, you must supply that property as a key in the map. Only jobs whose action configuration matches the mapped value will be returned.
 --
--- * 'pfjActionTypeId' - Undocumented member.
+-- * 'pfjActionTypeId' - Represents information about an action type.
 pollForJobs
     :: ActionTypeId -- ^ 'pfjActionTypeId'
     -> PollForJobs
 pollForJobs pActionTypeId_ =
-    PollForJobs'
-    { _pfjMaxBatchSize = Nothing
-    , _pfjQueryParam = Nothing
-    , _pfjActionTypeId = pActionTypeId_
-    }
+  PollForJobs'
+  { _pfjMaxBatchSize = Nothing
+  , _pfjQueryParam = Nothing
+  , _pfjActionTypeId = pActionTypeId_
+  }
 
+
 -- | The maximum number of jobs to return in a poll for jobs call.
 pfjMaxBatchSize :: Lens' PollForJobs (Maybe Natural)
 pfjMaxBatchSize = lens _pfjMaxBatchSize (\ s a -> s{_pfjMaxBatchSize = a}) . mapping _Nat;
@@ -86,7 +88,7 @@
 pfjQueryParam :: Lens' PollForJobs (HashMap Text Text)
 pfjQueryParam = lens _pfjQueryParam (\ s a -> s{_pfjQueryParam = a}) . _Default . _Map;
 
--- | Undocumented member.
+-- | Represents information about an action type.
 pfjActionTypeId :: Lens' PollForJobs ActionTypeId
 pfjActionTypeId = lens _pfjActionTypeId (\ s a -> s{_pfjActionTypeId = a});
 
@@ -99,9 +101,9 @@
                  PollForJobsResponse' <$>
                    (x .?> "jobs" .!@ mempty) <*> (pure (fromEnum s)))
 
-instance Hashable PollForJobs
+instance Hashable PollForJobs where
 
-instance NFData PollForJobs
+instance NFData PollForJobs where
 
 instance ToHeaders PollForJobs where
         toHeaders
@@ -126,16 +128,17 @@
 instance ToQuery PollForJobs where
         toQuery = const mempty
 
--- | Represents the output of a poll for jobs action.
+-- | Represents the output of a PollForJobs action.
 --
 --
 --
 -- /See:/ 'pollForJobsResponse' smart constructor.
 data PollForJobsResponse = PollForJobsResponse'
-    { _pfjrsJobs           :: !(Maybe [Job])
-    , _pfjrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _pfjrsJobs           :: !(Maybe [Job])
+  , _pfjrsResponseStatus :: !Int
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PollForJobsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -147,11 +150,10 @@
     :: Int -- ^ 'pfjrsResponseStatus'
     -> PollForJobsResponse
 pollForJobsResponse pResponseStatus_ =
-    PollForJobsResponse'
-    { _pfjrsJobs = Nothing
-    , _pfjrsResponseStatus = pResponseStatus_
-    }
+  PollForJobsResponse'
+  {_pfjrsJobs = Nothing, _pfjrsResponseStatus = pResponseStatus_}
 
+
 -- | Information about the jobs to take action on.
 pfjrsJobs :: Lens' PollForJobsResponse [Job]
 pfjrsJobs = lens _pfjrsJobs (\ s a -> s{_pfjrsJobs = a}) . _Default . _Coerce;
@@ -160,4 +162,4 @@
 pfjrsResponseStatus :: Lens' PollForJobsResponse Int
 pfjrsResponseStatus = lens _pfjrsResponseStatus (\ s a -> s{_pfjrsResponseStatus = a});
 
-instance NFData PollForJobsResponse
+instance NFData PollForJobsResponse where
diff --git a/gen/Network/AWS/CodePipeline/PollForThirdPartyJobs.hs b/gen/Network/AWS/CodePipeline/PollForThirdPartyJobs.hs
--- a/gen/Network/AWS/CodePipeline/PollForThirdPartyJobs.hs
+++ b/gen/Network/AWS/CodePipeline/PollForThirdPartyJobs.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.PollForThirdPartyJobs
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -40,44 +40,44 @@
     , pftpjrsResponseStatus
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a poll for third party jobs action.
+-- | Represents the input of a PollForThirdPartyJobs action.
 --
 --
 --
 -- /See:/ 'pollForThirdPartyJobs' smart constructor.
 data PollForThirdPartyJobs = PollForThirdPartyJobs'
-    { _pftpjMaxBatchSize :: !(Maybe Nat)
-    , _pftpjActionTypeId :: !ActionTypeId
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _pftpjMaxBatchSize :: !(Maybe Nat)
+  , _pftpjActionTypeId :: !ActionTypeId
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PollForThirdPartyJobs' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'pftpjMaxBatchSize' - The maximum number of jobs to return in a poll for jobs call.
 --
--- * 'pftpjActionTypeId' - Undocumented member.
+-- * 'pftpjActionTypeId' - Represents information about an action type.
 pollForThirdPartyJobs
     :: ActionTypeId -- ^ 'pftpjActionTypeId'
     -> PollForThirdPartyJobs
 pollForThirdPartyJobs pActionTypeId_ =
-    PollForThirdPartyJobs'
-    { _pftpjMaxBatchSize = Nothing
-    , _pftpjActionTypeId = pActionTypeId_
-    }
+  PollForThirdPartyJobs'
+  {_pftpjMaxBatchSize = Nothing, _pftpjActionTypeId = pActionTypeId_}
 
+
 -- | The maximum number of jobs to return in a poll for jobs call.
 pftpjMaxBatchSize :: Lens' PollForThirdPartyJobs (Maybe Natural)
 pftpjMaxBatchSize = lens _pftpjMaxBatchSize (\ s a -> s{_pftpjMaxBatchSize = a}) . mapping _Nat;
 
--- | Undocumented member.
+-- | Represents information about an action type.
 pftpjActionTypeId :: Lens' PollForThirdPartyJobs ActionTypeId
 pftpjActionTypeId = lens _pftpjActionTypeId (\ s a -> s{_pftpjActionTypeId = a});
 
@@ -91,9 +91,9 @@
                  PollForThirdPartyJobsResponse' <$>
                    (x .?> "jobs" .!@ mempty) <*> (pure (fromEnum s)))
 
-instance Hashable PollForThirdPartyJobs
+instance Hashable PollForThirdPartyJobs where
 
-instance NFData PollForThirdPartyJobs
+instance NFData PollForThirdPartyJobs where
 
 instance ToHeaders PollForThirdPartyJobs where
         toHeaders
@@ -118,16 +118,17 @@
 instance ToQuery PollForThirdPartyJobs where
         toQuery = const mempty
 
--- | Represents the output of a poll for third party jobs action.
+-- | Represents the output of a PollForThirdPartyJobs action.
 --
 --
 --
 -- /See:/ 'pollForThirdPartyJobsResponse' smart constructor.
 data PollForThirdPartyJobsResponse = PollForThirdPartyJobsResponse'
-    { _pftpjrsJobs           :: !(Maybe [ThirdPartyJob])
-    , _pftpjrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _pftpjrsJobs           :: !(Maybe [ThirdPartyJob])
+  , _pftpjrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PollForThirdPartyJobsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -139,11 +140,10 @@
     :: Int -- ^ 'pftpjrsResponseStatus'
     -> PollForThirdPartyJobsResponse
 pollForThirdPartyJobsResponse pResponseStatus_ =
-    PollForThirdPartyJobsResponse'
-    { _pftpjrsJobs = Nothing
-    , _pftpjrsResponseStatus = pResponseStatus_
-    }
+  PollForThirdPartyJobsResponse'
+  {_pftpjrsJobs = Nothing, _pftpjrsResponseStatus = pResponseStatus_}
 
+
 -- | Information about the jobs to take action on.
 pftpjrsJobs :: Lens' PollForThirdPartyJobsResponse [ThirdPartyJob]
 pftpjrsJobs = lens _pftpjrsJobs (\ s a -> s{_pftpjrsJobs = a}) . _Default . _Coerce;
@@ -152,4 +152,4 @@
 pftpjrsResponseStatus :: Lens' PollForThirdPartyJobsResponse Int
 pftpjrsResponseStatus = lens _pftpjrsResponseStatus (\ s a -> s{_pftpjrsResponseStatus = a});
 
-instance NFData PollForThirdPartyJobsResponse
+instance NFData PollForThirdPartyJobsResponse where
diff --git a/gen/Network/AWS/CodePipeline/PutActionRevision.hs b/gen/Network/AWS/CodePipeline/PutActionRevision.hs
--- a/gen/Network/AWS/CodePipeline/PutActionRevision.hs
+++ b/gen/Network/AWS/CodePipeline/PutActionRevision.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.PutActionRevision
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -41,25 +41,26 @@
     , prsResponseStatus
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a put action revision action.
+-- | Represents the input of a PutActionRevision action.
 --
 --
 --
 -- /See:/ 'putActionRevision' smart constructor.
 data PutActionRevision = PutActionRevision'
-    { _pPipelineName   :: !Text
-    , _pStageName      :: !Text
-    , _pActionName     :: !Text
-    , _pActionRevision :: !ActionRevision
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _pPipelineName   :: !Text
+  , _pStageName      :: !Text
+  , _pActionName     :: !Text
+  , _pActionRevision :: !ActionRevision
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutActionRevision' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -70,7 +71,7 @@
 --
 -- * 'pActionName' - The name of the action that will process the revision.
 --
--- * 'pActionRevision' - Undocumented member.
+-- * 'pActionRevision' - Represents information about the version (or revision) of an action.
 putActionRevision
     :: Text -- ^ 'pPipelineName'
     -> Text -- ^ 'pStageName'
@@ -78,13 +79,14 @@
     -> ActionRevision -- ^ 'pActionRevision'
     -> PutActionRevision
 putActionRevision pPipelineName_ pStageName_ pActionName_ pActionRevision_ =
-    PutActionRevision'
-    { _pPipelineName = pPipelineName_
-    , _pStageName = pStageName_
-    , _pActionName = pActionName_
-    , _pActionRevision = pActionRevision_
-    }
+  PutActionRevision'
+  { _pPipelineName = pPipelineName_
+  , _pStageName = pStageName_
+  , _pActionName = pActionName_
+  , _pActionRevision = pActionRevision_
+  }
 
+
 -- | The name of the pipeline that will start processing the revision to the source.
 pPipelineName :: Lens' PutActionRevision Text
 pPipelineName = lens _pPipelineName (\ s a -> s{_pPipelineName = a});
@@ -97,7 +99,7 @@
 pActionName :: Lens' PutActionRevision Text
 pActionName = lens _pActionName (\ s a -> s{_pActionName = a});
 
--- | Undocumented member.
+-- | Represents information about the version (or revision) of an action.
 pActionRevision :: Lens' PutActionRevision ActionRevision
 pActionRevision = lens _pActionRevision (\ s a -> s{_pActionRevision = a});
 
@@ -112,9 +114,9 @@
                      (x .?> "pipelineExecutionId")
                      <*> (pure (fromEnum s)))
 
-instance Hashable PutActionRevision
+instance Hashable PutActionRevision where
 
-instance NFData PutActionRevision
+instance NFData PutActionRevision where
 
 instance ToHeaders PutActionRevision where
         toHeaders
@@ -141,17 +143,18 @@
 instance ToQuery PutActionRevision where
         toQuery = const mempty
 
--- | Represents the output of a put action revision action.
+-- | Represents the output of a PutActionRevision action.
 --
 --
 --
 -- /See:/ 'putActionRevisionResponse' smart constructor.
 data PutActionRevisionResponse = PutActionRevisionResponse'
-    { _prsNewRevision         :: !(Maybe Bool)
-    , _prsPipelineExecutionId :: !(Maybe Text)
-    , _prsResponseStatus      :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _prsNewRevision         :: !(Maybe Bool)
+  , _prsPipelineExecutionId :: !(Maybe Text)
+  , _prsResponseStatus      :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutActionRevisionResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -165,12 +168,13 @@
     :: Int -- ^ 'prsResponseStatus'
     -> PutActionRevisionResponse
 putActionRevisionResponse pResponseStatus_ =
-    PutActionRevisionResponse'
-    { _prsNewRevision = Nothing
-    , _prsPipelineExecutionId = Nothing
-    , _prsResponseStatus = pResponseStatus_
-    }
+  PutActionRevisionResponse'
+  { _prsNewRevision = Nothing
+  , _prsPipelineExecutionId = Nothing
+  , _prsResponseStatus = pResponseStatus_
+  }
 
+
 -- | Indicates whether the artifact revision was previously used in an execution of the specified pipeline.
 prsNewRevision :: Lens' PutActionRevisionResponse (Maybe Bool)
 prsNewRevision = lens _prsNewRevision (\ s a -> s{_prsNewRevision = a});
@@ -183,4 +187,4 @@
 prsResponseStatus :: Lens' PutActionRevisionResponse Int
 prsResponseStatus = lens _prsResponseStatus (\ s a -> s{_prsResponseStatus = a});
 
-instance NFData PutActionRevisionResponse
+instance NFData PutActionRevisionResponse where
diff --git a/gen/Network/AWS/CodePipeline/PutApprovalResult.hs b/gen/Network/AWS/CodePipeline/PutApprovalResult.hs
--- a/gen/Network/AWS/CodePipeline/PutApprovalResult.hs
+++ b/gen/Network/AWS/CodePipeline/PutApprovalResult.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.PutApprovalResult
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -41,26 +41,27 @@
     , parrsResponseStatus
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a put approval result action.
+-- | Represents the input of a PutApprovalResult action.
 --
 --
 --
 -- /See:/ 'putApprovalResult' smart constructor.
 data PutApprovalResult = PutApprovalResult'
-    { _parPipelineName :: !Text
-    , _parStageName    :: !Text
-    , _parActionName   :: !Text
-    , _parResult       :: !ApprovalResult
-    , _parToken        :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _parPipelineName :: !Text
+  , _parStageName    :: !Text
+  , _parActionName   :: !Text
+  , _parResult       :: !ApprovalResult
+  , _parToken        :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutApprovalResult' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -82,14 +83,15 @@
     -> Text -- ^ 'parToken'
     -> PutApprovalResult
 putApprovalResult pPipelineName_ pStageName_ pActionName_ pResult_ pToken_ =
-    PutApprovalResult'
-    { _parPipelineName = pPipelineName_
-    , _parStageName = pStageName_
-    , _parActionName = pActionName_
-    , _parResult = pResult_
-    , _parToken = pToken_
-    }
+  PutApprovalResult'
+  { _parPipelineName = pPipelineName_
+  , _parStageName = pStageName_
+  , _parActionName = pActionName_
+  , _parResult = pResult_
+  , _parToken = pToken_
+  }
 
+
 -- | The name of the pipeline that contains the action.
 parPipelineName :: Lens' PutApprovalResult Text
 parPipelineName = lens _parPipelineName (\ s a -> s{_parPipelineName = a});
@@ -119,9 +121,9 @@
                  PutApprovalResultResponse' <$>
                    (x .?> "approvedAt") <*> (pure (fromEnum s)))
 
-instance Hashable PutApprovalResult
+instance Hashable PutApprovalResult where
 
-instance NFData PutApprovalResult
+instance NFData PutApprovalResult where
 
 instance ToHeaders PutApprovalResult where
         toHeaders
@@ -149,16 +151,17 @@
 instance ToQuery PutApprovalResult where
         toQuery = const mempty
 
--- | Represents the output of a put approval result action.
+-- | Represents the output of a PutApprovalResult action.
 --
 --
 --
 -- /See:/ 'putApprovalResultResponse' smart constructor.
 data PutApprovalResultResponse = PutApprovalResultResponse'
-    { _parrsApprovedAt     :: !(Maybe POSIX)
-    , _parrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _parrsApprovedAt     :: !(Maybe POSIX)
+  , _parrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutApprovalResultResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -170,11 +173,10 @@
     :: Int -- ^ 'parrsResponseStatus'
     -> PutApprovalResultResponse
 putApprovalResultResponse pResponseStatus_ =
-    PutApprovalResultResponse'
-    { _parrsApprovedAt = Nothing
-    , _parrsResponseStatus = pResponseStatus_
-    }
+  PutApprovalResultResponse'
+  {_parrsApprovedAt = Nothing, _parrsResponseStatus = pResponseStatus_}
 
+
 -- | The timestamp showing when the approval or rejection was submitted.
 parrsApprovedAt :: Lens' PutApprovalResultResponse (Maybe UTCTime)
 parrsApprovedAt = lens _parrsApprovedAt (\ s a -> s{_parrsApprovedAt = a}) . mapping _Time;
@@ -183,4 +185,4 @@
 parrsResponseStatus :: Lens' PutApprovalResultResponse Int
 parrsResponseStatus = lens _parrsResponseStatus (\ s a -> s{_parrsResponseStatus = a});
 
-instance NFData PutApprovalResultResponse
+instance NFData PutApprovalResultResponse where
diff --git a/gen/Network/AWS/CodePipeline/PutJobFailureResult.hs b/gen/Network/AWS/CodePipeline/PutJobFailureResult.hs
--- a/gen/Network/AWS/CodePipeline/PutJobFailureResult.hs
+++ b/gen/Network/AWS/CodePipeline/PutJobFailureResult.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.PutJobFailureResult
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -35,23 +35,24 @@
     , PutJobFailureResultResponse
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a put job failure result action.
+-- | Represents the input of a PutJobFailureResult action.
 --
 --
 --
 -- /See:/ 'putJobFailureResult' smart constructor.
 data PutJobFailureResult = PutJobFailureResult'
-    { _pjfrJobId          :: !Text
-    , _pjfrFailureDetails :: !FailureDetails
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _pjfrJobId          :: !Text
+  , _pjfrFailureDetails :: !FailureDetails
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutJobFailureResult' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -64,11 +65,10 @@
     -> FailureDetails -- ^ 'pjfrFailureDetails'
     -> PutJobFailureResult
 putJobFailureResult pJobId_ pFailureDetails_ =
-    PutJobFailureResult'
-    { _pjfrJobId = pJobId_
-    , _pjfrFailureDetails = pFailureDetails_
-    }
+  PutJobFailureResult'
+  {_pjfrJobId = pJobId_, _pjfrFailureDetails = pFailureDetails_}
 
+
 -- | The unique system-generated ID of the job that failed. This is the same ID returned from PollForJobs.
 pjfrJobId :: Lens' PutJobFailureResult Text
 pjfrJobId = lens _pjfrJobId (\ s a -> s{_pjfrJobId = a});
@@ -83,9 +83,9 @@
         request = postJSON codePipeline
         response = receiveNull PutJobFailureResultResponse'
 
-instance Hashable PutJobFailureResult
+instance Hashable PutJobFailureResult where
 
-instance NFData PutJobFailureResult
+instance NFData PutJobFailureResult where
 
 instance ToHeaders PutJobFailureResult where
         toHeaders
@@ -112,13 +112,15 @@
 
 -- | /See:/ 'putJobFailureResultResponse' smart constructor.
 data PutJobFailureResultResponse =
-    PutJobFailureResultResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  PutJobFailureResultResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutJobFailureResultResponse' with the minimum fields required to make a request.
 --
 putJobFailureResultResponse
     :: PutJobFailureResultResponse
 putJobFailureResultResponse = PutJobFailureResultResponse'
 
-instance NFData PutJobFailureResultResponse
+
+instance NFData PutJobFailureResultResponse where
diff --git a/gen/Network/AWS/CodePipeline/PutJobSuccessResult.hs b/gen/Network/AWS/CodePipeline/PutJobSuccessResult.hs
--- a/gen/Network/AWS/CodePipeline/PutJobSuccessResult.hs
+++ b/gen/Network/AWS/CodePipeline/PutJobSuccessResult.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.PutJobSuccessResult
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -37,25 +37,26 @@
     , PutJobSuccessResultResponse
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a put job success result action.
+-- | Represents the input of a PutJobSuccessResult action.
 --
 --
 --
 -- /See:/ 'putJobSuccessResult' smart constructor.
 data PutJobSuccessResult = PutJobSuccessResult'
-    { _pjsrContinuationToken :: !(Maybe Text)
-    , _pjsrExecutionDetails  :: !(Maybe ExecutionDetails)
-    , _pjsrCurrentRevision   :: !(Maybe CurrentRevision)
-    , _pjsrJobId             :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _pjsrContinuationToken :: !(Maybe Text)
+  , _pjsrExecutionDetails  :: !(Maybe ExecutionDetails)
+  , _pjsrCurrentRevision   :: !(Maybe CurrentRevision)
+  , _pjsrJobId             :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutJobSuccessResult' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -71,13 +72,14 @@
     :: Text -- ^ 'pjsrJobId'
     -> PutJobSuccessResult
 putJobSuccessResult pJobId_ =
-    PutJobSuccessResult'
-    { _pjsrContinuationToken = Nothing
-    , _pjsrExecutionDetails = Nothing
-    , _pjsrCurrentRevision = Nothing
-    , _pjsrJobId = pJobId_
-    }
+  PutJobSuccessResult'
+  { _pjsrContinuationToken = Nothing
+  , _pjsrExecutionDetails = Nothing
+  , _pjsrCurrentRevision = Nothing
+  , _pjsrJobId = pJobId_
+  }
 
+
 -- | A token generated by a job worker, such as an AWS CodeDeploy deployment ID, that a successful job provides to identify a custom action in progress. Future jobs will use this token in order to identify the running instance of the action. It can be reused to return additional information about the progress of the custom action. When the action is complete, no continuation token should be supplied.
 pjsrContinuationToken :: Lens' PutJobSuccessResult (Maybe Text)
 pjsrContinuationToken = lens _pjsrContinuationToken (\ s a -> s{_pjsrContinuationToken = a});
@@ -100,9 +102,9 @@
         request = postJSON codePipeline
         response = receiveNull PutJobSuccessResultResponse'
 
-instance Hashable PutJobSuccessResult
+instance Hashable PutJobSuccessResult where
 
-instance NFData PutJobSuccessResult
+instance NFData PutJobSuccessResult where
 
 instance ToHeaders PutJobSuccessResult where
         toHeaders
@@ -131,13 +133,15 @@
 
 -- | /See:/ 'putJobSuccessResultResponse' smart constructor.
 data PutJobSuccessResultResponse =
-    PutJobSuccessResultResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  PutJobSuccessResultResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutJobSuccessResultResponse' with the minimum fields required to make a request.
 --
 putJobSuccessResultResponse
     :: PutJobSuccessResultResponse
 putJobSuccessResultResponse = PutJobSuccessResultResponse'
 
-instance NFData PutJobSuccessResultResponse
+
+instance NFData PutJobSuccessResultResponse where
diff --git a/gen/Network/AWS/CodePipeline/PutThirdPartyJobFailureResult.hs b/gen/Network/AWS/CodePipeline/PutThirdPartyJobFailureResult.hs
--- a/gen/Network/AWS/CodePipeline/PutThirdPartyJobFailureResult.hs
+++ b/gen/Network/AWS/CodePipeline/PutThirdPartyJobFailureResult.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.PutThirdPartyJobFailureResult
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -36,24 +36,25 @@
     , PutThirdPartyJobFailureResultResponse
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a third party job failure result action.
+-- | Represents the input of a PutThirdPartyJobFailureResult action.
 --
 --
 --
 -- /See:/ 'putThirdPartyJobFailureResult' smart constructor.
 data PutThirdPartyJobFailureResult = PutThirdPartyJobFailureResult'
-    { _ptpjfrJobId          :: !Text
-    , _ptpjfrClientToken    :: !Text
-    , _ptpjfrFailureDetails :: !FailureDetails
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ptpjfrJobId          :: !Text
+  , _ptpjfrClientToken    :: !Text
+  , _ptpjfrFailureDetails :: !FailureDetails
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutThirdPartyJobFailureResult' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -62,19 +63,20 @@
 --
 -- * 'ptpjfrClientToken' - The clientToken portion of the clientId and clientToken pair used to verify that the calling entity is allowed access to the job and its details.
 --
--- * 'ptpjfrFailureDetails' - Undocumented member.
+-- * 'ptpjfrFailureDetails' - Represents information about failure details.
 putThirdPartyJobFailureResult
     :: Text -- ^ 'ptpjfrJobId'
     -> Text -- ^ 'ptpjfrClientToken'
     -> FailureDetails -- ^ 'ptpjfrFailureDetails'
     -> PutThirdPartyJobFailureResult
 putThirdPartyJobFailureResult pJobId_ pClientToken_ pFailureDetails_ =
-    PutThirdPartyJobFailureResult'
-    { _ptpjfrJobId = pJobId_
-    , _ptpjfrClientToken = pClientToken_
-    , _ptpjfrFailureDetails = pFailureDetails_
-    }
+  PutThirdPartyJobFailureResult'
+  { _ptpjfrJobId = pJobId_
+  , _ptpjfrClientToken = pClientToken_
+  , _ptpjfrFailureDetails = pFailureDetails_
+  }
 
+
 -- | The ID of the job that failed. This is the same ID returned from PollForThirdPartyJobs.
 ptpjfrJobId :: Lens' PutThirdPartyJobFailureResult Text
 ptpjfrJobId = lens _ptpjfrJobId (\ s a -> s{_ptpjfrJobId = a});
@@ -83,7 +85,7 @@
 ptpjfrClientToken :: Lens' PutThirdPartyJobFailureResult Text
 ptpjfrClientToken = lens _ptpjfrClientToken (\ s a -> s{_ptpjfrClientToken = a});
 
--- | Undocumented member.
+-- | Represents information about failure details.
 ptpjfrFailureDetails :: Lens' PutThirdPartyJobFailureResult FailureDetails
 ptpjfrFailureDetails = lens _ptpjfrFailureDetails (\ s a -> s{_ptpjfrFailureDetails = a});
 
@@ -95,9 +97,9 @@
         response
           = receiveNull PutThirdPartyJobFailureResultResponse'
 
-instance Hashable PutThirdPartyJobFailureResult
+instance Hashable PutThirdPartyJobFailureResult where
 
-instance NFData PutThirdPartyJobFailureResult
+instance NFData PutThirdPartyJobFailureResult where
 
 instance ToHeaders PutThirdPartyJobFailureResult
          where
@@ -126,13 +128,16 @@
 
 -- | /See:/ 'putThirdPartyJobFailureResultResponse' smart constructor.
 data PutThirdPartyJobFailureResultResponse =
-    PutThirdPartyJobFailureResultResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  PutThirdPartyJobFailureResultResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutThirdPartyJobFailureResultResponse' with the minimum fields required to make a request.
 --
 putThirdPartyJobFailureResultResponse
     :: PutThirdPartyJobFailureResultResponse
 putThirdPartyJobFailureResultResponse = PutThirdPartyJobFailureResultResponse'
 
+
 instance NFData PutThirdPartyJobFailureResultResponse
+         where
diff --git a/gen/Network/AWS/CodePipeline/PutThirdPartyJobSuccessResult.hs b/gen/Network/AWS/CodePipeline/PutThirdPartyJobSuccessResult.hs
--- a/gen/Network/AWS/CodePipeline/PutThirdPartyJobSuccessResult.hs
+++ b/gen/Network/AWS/CodePipeline/PutThirdPartyJobSuccessResult.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.PutThirdPartyJobSuccessResult
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -38,35 +38,36 @@
     , PutThirdPartyJobSuccessResultResponse
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a put third party job success result action.
+-- | Represents the input of a PutThirdPartyJobSuccessResult action.
 --
 --
 --
 -- /See:/ 'putThirdPartyJobSuccessResult' smart constructor.
 data PutThirdPartyJobSuccessResult = PutThirdPartyJobSuccessResult'
-    { _ptpjsrContinuationToken :: !(Maybe Text)
-    , _ptpjsrExecutionDetails  :: !(Maybe ExecutionDetails)
-    , _ptpjsrCurrentRevision   :: !(Maybe CurrentRevision)
-    , _ptpjsrJobId             :: !Text
-    , _ptpjsrClientToken       :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ptpjsrContinuationToken :: !(Maybe Text)
+  , _ptpjsrExecutionDetails  :: !(Maybe ExecutionDetails)
+  , _ptpjsrCurrentRevision   :: !(Maybe CurrentRevision)
+  , _ptpjsrJobId             :: !Text
+  , _ptpjsrClientToken       :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutThirdPartyJobSuccessResult' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'ptpjsrContinuationToken' - A token generated by a job worker, such as an AWS CodeDeploy deployment ID, that a successful job provides to identify a partner action in progress. Future jobs will use this token in order to identify the running instance of the action. It can be reused to return additional information about the progress of the partner action. When the action is complete, no continuation token should be supplied.
 --
--- * 'ptpjsrExecutionDetails' - Undocumented member.
+-- * 'ptpjsrExecutionDetails' - The details of the actions taken and results produced on an artifact as it passes through stages in the pipeline.
 --
--- * 'ptpjsrCurrentRevision' - Undocumented member.
+-- * 'ptpjsrCurrentRevision' - Represents information about a current revision.
 --
 -- * 'ptpjsrJobId' - The ID of the job that successfully completed. This is the same ID returned from PollForThirdPartyJobs.
 --
@@ -76,23 +77,24 @@
     -> Text -- ^ 'ptpjsrClientToken'
     -> PutThirdPartyJobSuccessResult
 putThirdPartyJobSuccessResult pJobId_ pClientToken_ =
-    PutThirdPartyJobSuccessResult'
-    { _ptpjsrContinuationToken = Nothing
-    , _ptpjsrExecutionDetails = Nothing
-    , _ptpjsrCurrentRevision = Nothing
-    , _ptpjsrJobId = pJobId_
-    , _ptpjsrClientToken = pClientToken_
-    }
+  PutThirdPartyJobSuccessResult'
+  { _ptpjsrContinuationToken = Nothing
+  , _ptpjsrExecutionDetails = Nothing
+  , _ptpjsrCurrentRevision = Nothing
+  , _ptpjsrJobId = pJobId_
+  , _ptpjsrClientToken = pClientToken_
+  }
 
+
 -- | A token generated by a job worker, such as an AWS CodeDeploy deployment ID, that a successful job provides to identify a partner action in progress. Future jobs will use this token in order to identify the running instance of the action. It can be reused to return additional information about the progress of the partner action. When the action is complete, no continuation token should be supplied.
 ptpjsrContinuationToken :: Lens' PutThirdPartyJobSuccessResult (Maybe Text)
 ptpjsrContinuationToken = lens _ptpjsrContinuationToken (\ s a -> s{_ptpjsrContinuationToken = a});
 
--- | Undocumented member.
+-- | The details of the actions taken and results produced on an artifact as it passes through stages in the pipeline.
 ptpjsrExecutionDetails :: Lens' PutThirdPartyJobSuccessResult (Maybe ExecutionDetails)
 ptpjsrExecutionDetails = lens _ptpjsrExecutionDetails (\ s a -> s{_ptpjsrExecutionDetails = a});
 
--- | Undocumented member.
+-- | Represents information about a current revision.
 ptpjsrCurrentRevision :: Lens' PutThirdPartyJobSuccessResult (Maybe CurrentRevision)
 ptpjsrCurrentRevision = lens _ptpjsrCurrentRevision (\ s a -> s{_ptpjsrCurrentRevision = a});
 
@@ -112,9 +114,9 @@
         response
           = receiveNull PutThirdPartyJobSuccessResultResponse'
 
-instance Hashable PutThirdPartyJobSuccessResult
+instance Hashable PutThirdPartyJobSuccessResult where
 
-instance NFData PutThirdPartyJobSuccessResult
+instance NFData PutThirdPartyJobSuccessResult where
 
 instance ToHeaders PutThirdPartyJobSuccessResult
          where
@@ -146,13 +148,16 @@
 
 -- | /See:/ 'putThirdPartyJobSuccessResultResponse' smart constructor.
 data PutThirdPartyJobSuccessResultResponse =
-    PutThirdPartyJobSuccessResultResponse'
-    deriving (Eq,Read,Show,Data,Typeable,Generic)
+  PutThirdPartyJobSuccessResultResponse'
+  deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutThirdPartyJobSuccessResultResponse' with the minimum fields required to make a request.
 --
 putThirdPartyJobSuccessResultResponse
     :: PutThirdPartyJobSuccessResultResponse
 putThirdPartyJobSuccessResultResponse = PutThirdPartyJobSuccessResultResponse'
 
+
 instance NFData PutThirdPartyJobSuccessResultResponse
+         where
diff --git a/gen/Network/AWS/CodePipeline/RetryStageExecution.hs b/gen/Network/AWS/CodePipeline/RetryStageExecution.hs
--- a/gen/Network/AWS/CodePipeline/RetryStageExecution.hs
+++ b/gen/Network/AWS/CodePipeline/RetryStageExecution.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.RetryStageExecution
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -40,25 +40,26 @@
     , rsersResponseStatus
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a retry stage execution action.
+-- | Represents the input of a RetryStageExecution action.
 --
 --
 --
 -- /See:/ 'retryStageExecution' smart constructor.
 data RetryStageExecution = RetryStageExecution'
-    { _rsePipelineName        :: !Text
-    , _rseStageName           :: !Text
-    , _rsePipelineExecutionId :: !Text
-    , _rseRetryMode           :: !StageRetryMode
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _rsePipelineName        :: !Text
+  , _rseStageName           :: !Text
+  , _rsePipelineExecutionId :: !Text
+  , _rseRetryMode           :: !StageRetryMode
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RetryStageExecution' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -77,13 +78,14 @@
     -> StageRetryMode -- ^ 'rseRetryMode'
     -> RetryStageExecution
 retryStageExecution pPipelineName_ pStageName_ pPipelineExecutionId_ pRetryMode_ =
-    RetryStageExecution'
-    { _rsePipelineName = pPipelineName_
-    , _rseStageName = pStageName_
-    , _rsePipelineExecutionId = pPipelineExecutionId_
-    , _rseRetryMode = pRetryMode_
-    }
+  RetryStageExecution'
+  { _rsePipelineName = pPipelineName_
+  , _rseStageName = pStageName_
+  , _rsePipelineExecutionId = pPipelineExecutionId_
+  , _rseRetryMode = pRetryMode_
+  }
 
+
 -- | The name of the pipeline that contains the failed stage.
 rsePipelineName :: Lens' RetryStageExecution Text
 rsePipelineName = lens _rsePipelineName (\ s a -> s{_rsePipelineName = a});
@@ -111,9 +113,9 @@
                    (x .?> "pipelineExecutionId") <*>
                      (pure (fromEnum s)))
 
-instance Hashable RetryStageExecution
+instance Hashable RetryStageExecution where
 
-instance NFData RetryStageExecution
+instance NFData RetryStageExecution where
 
 instance ToHeaders RetryStageExecution where
         toHeaders
@@ -141,16 +143,17 @@
 instance ToQuery RetryStageExecution where
         toQuery = const mempty
 
--- | Represents the output of a retry stage execution action.
+-- | Represents the output of a RetryStageExecution action.
 --
 --
 --
 -- /See:/ 'retryStageExecutionResponse' smart constructor.
 data RetryStageExecutionResponse = RetryStageExecutionResponse'
-    { _rsersPipelineExecutionId :: !(Maybe Text)
-    , _rsersResponseStatus      :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _rsersPipelineExecutionId :: !(Maybe Text)
+  , _rsersResponseStatus      :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RetryStageExecutionResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -162,11 +165,10 @@
     :: Int -- ^ 'rsersResponseStatus'
     -> RetryStageExecutionResponse
 retryStageExecutionResponse pResponseStatus_ =
-    RetryStageExecutionResponse'
-    { _rsersPipelineExecutionId = Nothing
-    , _rsersResponseStatus = pResponseStatus_
-    }
+  RetryStageExecutionResponse'
+  {_rsersPipelineExecutionId = Nothing, _rsersResponseStatus = pResponseStatus_}
 
+
 -- | The ID of the current workflow execution in the failed stage.
 rsersPipelineExecutionId :: Lens' RetryStageExecutionResponse (Maybe Text)
 rsersPipelineExecutionId = lens _rsersPipelineExecutionId (\ s a -> s{_rsersPipelineExecutionId = a});
@@ -175,4 +177,4 @@
 rsersResponseStatus :: Lens' RetryStageExecutionResponse Int
 rsersResponseStatus = lens _rsersResponseStatus (\ s a -> s{_rsersResponseStatus = a});
 
-instance NFData RetryStageExecutionResponse
+instance NFData RetryStageExecutionResponse where
diff --git a/gen/Network/AWS/CodePipeline/StartPipelineExecution.hs b/gen/Network/AWS/CodePipeline/StartPipelineExecution.hs
--- a/gen/Network/AWS/CodePipeline/StartPipelineExecution.hs
+++ b/gen/Network/AWS/CodePipeline/StartPipelineExecution.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.StartPipelineExecution
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -37,22 +37,23 @@
     , spersResponseStatus
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of a start pipeline execution action.
+-- | Represents the input of a StartPipelineExecution action.
 --
 --
 --
 -- /See:/ 'startPipelineExecution' smart constructor.
 newtype StartPipelineExecution = StartPipelineExecution'
-    { _speName :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _speName :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StartPipelineExecution' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -61,11 +62,9 @@
 startPipelineExecution
     :: Text -- ^ 'speName'
     -> StartPipelineExecution
-startPipelineExecution pName_ =
-    StartPipelineExecution'
-    { _speName = pName_
-    }
+startPipelineExecution pName_ = StartPipelineExecution' {_speName = pName_}
 
+
 -- | The name of the pipeline to start.
 speName :: Lens' StartPipelineExecution Text
 speName = lens _speName (\ s a -> s{_speName = a});
@@ -81,9 +80,9 @@
                    (x .?> "pipelineExecutionId") <*>
                      (pure (fromEnum s)))
 
-instance Hashable StartPipelineExecution
+instance Hashable StartPipelineExecution where
 
-instance NFData StartPipelineExecution
+instance NFData StartPipelineExecution where
 
 instance ToHeaders StartPipelineExecution where
         toHeaders
@@ -105,16 +104,17 @@
 instance ToQuery StartPipelineExecution where
         toQuery = const mempty
 
--- | Represents the output of a start pipeline execution action.
+-- | Represents the output of a StartPipelineExecution action.
 --
 --
 --
 -- /See:/ 'startPipelineExecutionResponse' smart constructor.
 data StartPipelineExecutionResponse = StartPipelineExecutionResponse'
-    { _spersPipelineExecutionId :: !(Maybe Text)
-    , _spersResponseStatus      :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _spersPipelineExecutionId :: !(Maybe Text)
+  , _spersResponseStatus      :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StartPipelineExecutionResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -126,11 +126,10 @@
     :: Int -- ^ 'spersResponseStatus'
     -> StartPipelineExecutionResponse
 startPipelineExecutionResponse pResponseStatus_ =
-    StartPipelineExecutionResponse'
-    { _spersPipelineExecutionId = Nothing
-    , _spersResponseStatus = pResponseStatus_
-    }
+  StartPipelineExecutionResponse'
+  {_spersPipelineExecutionId = Nothing, _spersResponseStatus = pResponseStatus_}
 
+
 -- | The unique system-generated ID of the pipeline execution that was started.
 spersPipelineExecutionId :: Lens' StartPipelineExecutionResponse (Maybe Text)
 spersPipelineExecutionId = lens _spersPipelineExecutionId (\ s a -> s{_spersPipelineExecutionId = a});
@@ -139,4 +138,4 @@
 spersResponseStatus :: Lens' StartPipelineExecutionResponse Int
 spersResponseStatus = lens _spersResponseStatus (\ s a -> s{_spersResponseStatus = a});
 
-instance NFData StartPipelineExecutionResponse
+instance NFData StartPipelineExecutionResponse where
diff --git a/gen/Network/AWS/CodePipeline/Types.hs b/gen/Network/AWS/CodePipeline/Types.hs
--- a/gen/Network/AWS/CodePipeline/Types.hs
+++ b/gen/Network/AWS/CodePipeline/Types.hs
@@ -4,9 +4,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.Types
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -322,6 +322,21 @@
     , pePipelineExecutionId
     , peArtifactRevisions
 
+    -- * PipelineExecutionSummary
+    , PipelineExecutionSummary
+    , pipelineExecutionSummary
+    , pesStatus
+    , pesStartTime
+    , pesPipelineExecutionId
+    , pesLastUpdateTime
+
+    -- * PipelineMetadata
+    , PipelineMetadata
+    , pipelineMetadata
+    , pmCreated
+    , pmPipelineARN
+    , pmUpdated
+
     -- * PipelineSummary
     , PipelineSummary
     , pipelineSummary
@@ -396,38 +411,40 @@
     , tsLastChangedBy
     ) where
 
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.CodePipeline.Types.Sum
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Sign.V4
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.CodePipeline.Types.Sum
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Sign.V4
 
 -- | API version @2015-07-09@ of the Amazon CodePipeline SDK configuration.
 codePipeline :: Service
 codePipeline =
-    Service
-    { _svcAbbrev = "CodePipeline"
-    , _svcSigner = v4
-    , _svcPrefix = "codepipeline"
-    , _svcVersion = "2015-07-09"
-    , _svcEndpoint = defaultEndpoint codePipeline
-    , _svcTimeout = Just 70
-    , _svcCheck = statusSuccess
-    , _svcError = parseJSONError "CodePipeline"
-    , _svcRetry = retry
-    }
+  Service
+  { _svcAbbrev = "CodePipeline"
+  , _svcSigner = v4
+  , _svcPrefix = "codepipeline"
+  , _svcVersion = "2015-07-09"
+  , _svcEndpoint = defaultEndpoint codePipeline
+  , _svcTimeout = Just 70
+  , _svcCheck = statusSuccess
+  , _svcError = parseJSONError "CodePipeline"
+  , _svcRetry = retry
+  }
   where
     retry =
-        Exponential
-        { _retryBase = 5.0e-2
-        , _retryGrowth = 2
-        , _retryAttempts = 5
-        , _retryCheck = check
-        }
+      Exponential
+      { _retryBase = 5.0e-2
+      , _retryGrowth = 2
+      , _retryAttempts = 5
+      , _retryCheck = check
+      }
     check e
+      | has (hasCode "ThrottledException" . hasStatus 400) e =
+        Just "throttled_exception"
       | has (hasStatus 429) e = Just "too_many_requests"
       | has (hasCode "ThrottlingException" . hasStatus 400) e =
-          Just "throttling_exception"
+        Just "throttling_exception"
       | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
       | has (hasStatus 504) e = Just "gateway_timeout"
       | has (hasStatus 502) e = Just "bad_gateway"
@@ -436,155 +453,183 @@
       | has (hasStatus 509) e = Just "limit_exceeded"
       | otherwise = Nothing
 
+
 -- | The client token was specified in an invalid format
 --
 --
 _InvalidClientTokenException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidClientTokenException =
-    _ServiceError . hasCode "InvalidClientTokenException"
+  _MatchServiceError codePipeline "InvalidClientTokenException"
 
+
 -- | The validation was specified in an invalid format.
 --
 --
 _ValidationException :: AsError a => Getting (First ServiceError) a ServiceError
-_ValidationException = _ServiceError . hasCode "ValidationException"
+_ValidationException = _MatchServiceError codePipeline "ValidationException"
 
+
 -- | The specified nonce was specified in an invalid format.
 --
 --
 _InvalidNonceException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidNonceException = _ServiceError . hasCode "InvalidNonceException"
+_InvalidNonceException = _MatchServiceError codePipeline "InvalidNonceException"
 
+
 -- | The specified action cannot be found.
 --
 --
 _ActionNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
-_ActionNotFoundException = _ServiceError . hasCode "ActionNotFoundException"
+_ActionNotFoundException =
+  _MatchServiceError codePipeline "ActionNotFoundException"
 
+
 -- | The approval request already received a response or has expired.
 --
 --
 _InvalidApprovalTokenException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidApprovalTokenException =
-    _ServiceError . hasCode "InvalidApprovalTokenException"
+  _MatchServiceError codePipeline "InvalidApprovalTokenException"
 
+
 -- | Reserved for future use.
 --
 --
 _InvalidBlockerDeclarationException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidBlockerDeclarationException =
-    _ServiceError . hasCode "InvalidBlockerDeclarationException"
+  _MatchServiceError codePipeline "InvalidBlockerDeclarationException"
 
+
 -- | The specified job state was specified in an invalid format.
 --
 --
 _InvalidJobStateException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidJobStateException = _ServiceError . hasCode "InvalidJobStateException"
+_InvalidJobStateException =
+  _MatchServiceError codePipeline "InvalidJobStateException"
 
+
 -- | The specified job was specified in an invalid format or cannot be found.
 --
 --
 _InvalidJobException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidJobException = _ServiceError . hasCode "InvalidJobException"
+_InvalidJobException = _MatchServiceError codePipeline "InvalidJobException"
 
+
 -- | The specified pipeline version was specified in an invalid format or cannot be found.
 --
 --
 _PipelineVersionNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
 _PipelineVersionNotFoundException =
-    _ServiceError . hasCode "PipelineVersionNotFoundException"
+  _MatchServiceError codePipeline "PipelineVersionNotFoundException"
 
+
 -- | The specified stage can't be retried because the pipeline structure or stage state changed after the stage was not completed; the stage contains no failed actions; one or more actions are still in progress; or another retry attempt is already in progress.
 --
 --
 _StageNotRetryableException :: AsError a => Getting (First ServiceError) a ServiceError
 _StageNotRetryableException =
-    _ServiceError . hasCode "StageNotRetryableException"
+  _MatchServiceError codePipeline "StageNotRetryableException"
 
+
 -- | The pipeline execution was specified in an invalid format or cannot be found, or an execution ID does not belong to the specified pipeline.
 --
 --
 _PipelineExecutionNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
 _PipelineExecutionNotFoundException =
-    _ServiceError . hasCode "PipelineExecutionNotFoundException"
+  _MatchServiceError codePipeline "PipelineExecutionNotFoundException"
 
+
 -- | The specified action type cannot be found.
 --
 --
 _ActionTypeNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
 _ActionTypeNotFoundException =
-    _ServiceError . hasCode "ActionTypeNotFoundException"
+  _MatchServiceError codePipeline "ActionTypeNotFoundException"
 
+
 -- | The next token was specified in an invalid format. Make sure that the next token you provided is the token returned by a previous call.
 --
 --
 _InvalidNextTokenException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidNextTokenException =
-    _ServiceError . hasCode "InvalidNextTokenException"
+  _MatchServiceError codePipeline "InvalidNextTokenException"
 
+
 -- | The specified stage declaration was specified in an invalid format.
 --
 --
 _InvalidStageDeclarationException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidStageDeclarationException =
-    _ServiceError . hasCode "InvalidStageDeclarationException"
+  _MatchServiceError codePipeline "InvalidStageDeclarationException"
 
+
 -- | The specified action declaration was specified in an invalid format.
 --
 --
 _InvalidActionDeclarationException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidActionDeclarationException =
-    _ServiceError . hasCode "InvalidActionDeclarationException"
+  _MatchServiceError codePipeline "InvalidActionDeclarationException"
 
+
 -- | The specified stage was specified in an invalid format or cannot be found.
 --
 --
 _StageNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
-_StageNotFoundException = _ServiceError . hasCode "StageNotFoundException"
+_StageNotFoundException =
+  _MatchServiceError codePipeline "StageNotFoundException"
 
+
 -- | The specified structure was specified in an invalid format.
 --
 --
 _InvalidStructureException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidStructureException =
-    _ServiceError . hasCode "InvalidStructureException"
+  _MatchServiceError codePipeline "InvalidStructureException"
 
+
 -- | The specified job was specified in an invalid format or cannot be found.
 --
 --
 _JobNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
-_JobNotFoundException = _ServiceError . hasCode "JobNotFoundException"
+_JobNotFoundException = _MatchServiceError codePipeline "JobNotFoundException"
 
+
 -- | The approval action has already been approved or rejected.
 --
 --
 _ApprovalAlreadyCompletedException :: AsError a => Getting (First ServiceError) a ServiceError
 _ApprovalAlreadyCompletedException =
-    _ServiceError . hasCode "ApprovalAlreadyCompletedException"
+  _MatchServiceError codePipeline "ApprovalAlreadyCompletedException"
 
+
 -- | The specified pipeline name is already in use.
 --
 --
 _PipelineNameInUseException :: AsError a => Getting (First ServiceError) a ServiceError
 _PipelineNameInUseException =
-    _ServiceError . hasCode "PipelineNameInUseException"
+  _MatchServiceError codePipeline "PipelineNameInUseException"
 
+
 -- | The specified pipeline was specified in an invalid format or cannot be found.
 --
 --
 _PipelineNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
 _PipelineNotFoundException =
-    _ServiceError . hasCode "PipelineNotFoundException"
+  _MatchServiceError codePipeline "PipelineNotFoundException"
 
+
 -- | The number of pipelines associated with the AWS account has exceeded the limit allowed for the account.
 --
 --
 _LimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
-_LimitExceededException = _ServiceError . hasCode "LimitExceededException"
+_LimitExceededException =
+  _MatchServiceError codePipeline "LimitExceededException"
 
+
 -- | The stage has failed in a later run of the pipeline and the pipelineExecutionId associated with the request is out of date.
 --
 --
 _NotLatestPipelineExecutionException :: AsError a => Getting (First ServiceError) a ServiceError
 _NotLatestPipelineExecutionException =
-    _ServiceError . hasCode "NotLatestPipelineExecutionException"
+  _MatchServiceError codePipeline "NotLatestPipelineExecutionException"
+
diff --git a/gen/Network/AWS/CodePipeline/Types/Product.hs b/gen/Network/AWS/CodePipeline/Types/Product.hs
--- a/gen/Network/AWS/CodePipeline/Types/Product.hs
+++ b/gen/Network/AWS/CodePipeline/Types/Product.hs
@@ -9,2546 +9,2677 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.Types.Product
--- Copyright   : (c) 2013-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.CodePipeline.Types.Product where
-
-import           Network.AWS.CodePipeline.Types.Sum
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-
--- | Represents an AWS session credentials object. These credentials are temporary credentials that are issued by AWS Secure Token Service (STS). They can be used to access input and output artifacts in the Amazon S3 bucket used to store artifact for the pipeline in AWS CodePipeline.
---
---
---
--- /See:/ 'awsSessionCredentials' smart constructor.
-data AWSSessionCredentials = AWSSessionCredentials'
-    { _ascAccessKeyId     :: !Text
-    , _ascSecretAccessKey :: !Text
-    , _ascSessionToken    :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AWSSessionCredentials' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ascAccessKeyId' - The access key for the session.
---
--- * 'ascSecretAccessKey' - The secret access key for the session.
---
--- * 'ascSessionToken' - The token for the session.
-awsSessionCredentials
-    :: Text -- ^ 'ascAccessKeyId'
-    -> Text -- ^ 'ascSecretAccessKey'
-    -> Text -- ^ 'ascSessionToken'
-    -> AWSSessionCredentials
-awsSessionCredentials pAccessKeyId_ pSecretAccessKey_ pSessionToken_ =
-    AWSSessionCredentials'
-    { _ascAccessKeyId = pAccessKeyId_
-    , _ascSecretAccessKey = pSecretAccessKey_
-    , _ascSessionToken = pSessionToken_
-    }
-
--- | The access key for the session.
-ascAccessKeyId :: Lens' AWSSessionCredentials Text
-ascAccessKeyId = lens _ascAccessKeyId (\ s a -> s{_ascAccessKeyId = a});
-
--- | The secret access key for the session.
-ascSecretAccessKey :: Lens' AWSSessionCredentials Text
-ascSecretAccessKey = lens _ascSecretAccessKey (\ s a -> s{_ascSecretAccessKey = a});
-
--- | The token for the session.
-ascSessionToken :: Lens' AWSSessionCredentials Text
-ascSessionToken = lens _ascSessionToken (\ s a -> s{_ascSessionToken = a});
-
-instance FromJSON AWSSessionCredentials where
-        parseJSON
-          = withObject "AWSSessionCredentials"
-              (\ x ->
-                 AWSSessionCredentials' <$>
-                   (x .: "accessKeyId") <*> (x .: "secretAccessKey") <*>
-                     (x .: "sessionToken"))
-
-instance Hashable AWSSessionCredentials
-
-instance NFData AWSSessionCredentials
-
--- | Represents information about an action configuration.
---
---
---
--- /See:/ 'actionConfiguration' smart constructor.
-newtype ActionConfiguration = ActionConfiguration'
-    { _acConfiguration :: Maybe (Map Text Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ActionConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'acConfiguration' - The configuration data for the action.
-actionConfiguration
-    :: ActionConfiguration
-actionConfiguration =
-    ActionConfiguration'
-    { _acConfiguration = Nothing
-    }
-
--- | The configuration data for the action.
-acConfiguration :: Lens' ActionConfiguration (HashMap Text Text)
-acConfiguration = lens _acConfiguration (\ s a -> s{_acConfiguration = a}) . _Default . _Map;
-
-instance FromJSON ActionConfiguration where
-        parseJSON
-          = withObject "ActionConfiguration"
-              (\ x ->
-                 ActionConfiguration' <$>
-                   (x .:? "configuration" .!= mempty))
-
-instance Hashable ActionConfiguration
-
-instance NFData ActionConfiguration
-
--- | Represents information about an action configuration property.
---
---
---
--- /See:/ 'actionConfigurationProperty' smart constructor.
-data ActionConfigurationProperty = ActionConfigurationProperty'
-    { _acpQueryable   :: !(Maybe Bool)
-    , _acpType        :: !(Maybe ActionConfigurationPropertyType)
-    , _acpDescription :: !(Maybe Text)
-    , _acpName        :: !Text
-    , _acpRequired    :: !Bool
-    , _acpKey         :: !Bool
-    , _acpSecret      :: !Bool
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ActionConfigurationProperty' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'acpQueryable' - Indicates that the proprety will be used in conjunction with PollForJobs. When creating a custom action, an action can have up to one queryable property. If it has one, that property must be both required and not secret. If you create a pipeline with a custom action type, and that custom action contains a queryable property, the value for that configuration property is subject to additional restrictions. The value must be less than or equal to twenty (20) characters. The value can contain only alphanumeric characters, underscores, and hyphens.
---
--- * 'acpType' - The type of the configuration property.
---
--- * 'acpDescription' - The description of the action configuration property that will be displayed to users.
---
--- * 'acpName' - The name of the action configuration property.
---
--- * 'acpRequired' - Whether the configuration property is a required value.
---
--- * 'acpKey' - Whether the configuration property is a key.
---
--- * 'acpSecret' - Whether the configuration property is secret. Secrets are hidden from all calls except for GetJobDetails, GetThirdPartyJobDetails, PollForJobs, and PollForThirdPartyJobs. When updating a pipeline, passing * * * * * without changing any other values of the action will preserve the prior value of the secret.
-actionConfigurationProperty
-    :: Text -- ^ 'acpName'
-    -> Bool -- ^ 'acpRequired'
-    -> Bool -- ^ 'acpKey'
-    -> Bool -- ^ 'acpSecret'
-    -> ActionConfigurationProperty
-actionConfigurationProperty pName_ pRequired_ pKey_ pSecret_ =
-    ActionConfigurationProperty'
-    { _acpQueryable = Nothing
-    , _acpType = Nothing
-    , _acpDescription = Nothing
-    , _acpName = pName_
-    , _acpRequired = pRequired_
-    , _acpKey = pKey_
-    , _acpSecret = pSecret_
-    }
-
--- | Indicates that the proprety will be used in conjunction with PollForJobs. When creating a custom action, an action can have up to one queryable property. If it has one, that property must be both required and not secret. If you create a pipeline with a custom action type, and that custom action contains a queryable property, the value for that configuration property is subject to additional restrictions. The value must be less than or equal to twenty (20) characters. The value can contain only alphanumeric characters, underscores, and hyphens.
-acpQueryable :: Lens' ActionConfigurationProperty (Maybe Bool)
-acpQueryable = lens _acpQueryable (\ s a -> s{_acpQueryable = a});
-
--- | The type of the configuration property.
-acpType :: Lens' ActionConfigurationProperty (Maybe ActionConfigurationPropertyType)
-acpType = lens _acpType (\ s a -> s{_acpType = a});
-
--- | The description of the action configuration property that will be displayed to users.
-acpDescription :: Lens' ActionConfigurationProperty (Maybe Text)
-acpDescription = lens _acpDescription (\ s a -> s{_acpDescription = a});
-
--- | The name of the action configuration property.
-acpName :: Lens' ActionConfigurationProperty Text
-acpName = lens _acpName (\ s a -> s{_acpName = a});
-
--- | Whether the configuration property is a required value.
-acpRequired :: Lens' ActionConfigurationProperty Bool
-acpRequired = lens _acpRequired (\ s a -> s{_acpRequired = a});
-
--- | Whether the configuration property is a key.
-acpKey :: Lens' ActionConfigurationProperty Bool
-acpKey = lens _acpKey (\ s a -> s{_acpKey = a});
-
--- | Whether the configuration property is secret. Secrets are hidden from all calls except for GetJobDetails, GetThirdPartyJobDetails, PollForJobs, and PollForThirdPartyJobs. When updating a pipeline, passing * * * * * without changing any other values of the action will preserve the prior value of the secret.
-acpSecret :: Lens' ActionConfigurationProperty Bool
-acpSecret = lens _acpSecret (\ s a -> s{_acpSecret = a});
-
-instance FromJSON ActionConfigurationProperty where
-        parseJSON
-          = withObject "ActionConfigurationProperty"
-              (\ x ->
-                 ActionConfigurationProperty' <$>
-                   (x .:? "queryable") <*> (x .:? "type") <*>
-                     (x .:? "description")
-                     <*> (x .: "name")
-                     <*> (x .: "required")
-                     <*> (x .: "key")
-                     <*> (x .: "secret"))
-
-instance Hashable ActionConfigurationProperty
-
-instance NFData ActionConfigurationProperty
-
-instance ToJSON ActionConfigurationProperty where
-        toJSON ActionConfigurationProperty'{..}
-          = object
-              (catMaybes
-                 [("queryable" .=) <$> _acpQueryable,
-                  ("type" .=) <$> _acpType,
-                  ("description" .=) <$> _acpDescription,
-                  Just ("name" .= _acpName),
-                  Just ("required" .= _acpRequired),
-                  Just ("key" .= _acpKey),
-                  Just ("secret" .= _acpSecret)])
-
--- | Represents the context of an action within the stage of a pipeline to a job worker.
---
---
---
--- /See:/ 'actionContext' smart constructor.
-newtype ActionContext = ActionContext'
-    { _acName :: Maybe Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ActionContext' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'acName' - The name of the action within the context of a job.
-actionContext
-    :: ActionContext
-actionContext =
-    ActionContext'
-    { _acName = Nothing
-    }
-
--- | The name of the action within the context of a job.
-acName :: Lens' ActionContext (Maybe Text)
-acName = lens _acName (\ s a -> s{_acName = a});
-
-instance FromJSON ActionContext where
-        parseJSON
-          = withObject "ActionContext"
-              (\ x -> ActionContext' <$> (x .:? "name"))
-
-instance Hashable ActionContext
-
-instance NFData ActionContext
-
--- | Represents information about an action declaration.
---
---
---
--- /See:/ 'actionDeclaration' smart constructor.
-data ActionDeclaration = ActionDeclaration'
-    { _adOutputArtifacts :: !(Maybe [OutputArtifact])
-    , _adRunOrder        :: !(Maybe Nat)
-    , _adConfiguration   :: !(Maybe (Map Text Text))
-    , _adInputArtifacts  :: !(Maybe [InputArtifact])
-    , _adRoleARN         :: !(Maybe Text)
-    , _adName            :: !Text
-    , _adActionTypeId    :: !ActionTypeId
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ActionDeclaration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'adOutputArtifacts' - The name or ID of the result of the action declaration, such as a test or build artifact.
---
--- * 'adRunOrder' - The order in which actions are run.
---
--- * 'adConfiguration' - The action declaration's configuration.
---
--- * 'adInputArtifacts' - The name or ID of the artifact consumed by the action, such as a test or build artifact.
---
--- * 'adRoleARN' - The ARN of the IAM service role that will perform the declared action. This is assumed through the roleArn for the pipeline.
---
--- * 'adName' - The action declaration's name.
---
--- * 'adActionTypeId' - The configuration information for the action type.
-actionDeclaration
-    :: Text -- ^ 'adName'
-    -> ActionTypeId -- ^ 'adActionTypeId'
-    -> ActionDeclaration
-actionDeclaration pName_ pActionTypeId_ =
-    ActionDeclaration'
-    { _adOutputArtifacts = Nothing
-    , _adRunOrder = Nothing
-    , _adConfiguration = Nothing
-    , _adInputArtifacts = Nothing
-    , _adRoleARN = Nothing
-    , _adName = pName_
-    , _adActionTypeId = pActionTypeId_
-    }
-
--- | The name or ID of the result of the action declaration, such as a test or build artifact.
-adOutputArtifacts :: Lens' ActionDeclaration [OutputArtifact]
-adOutputArtifacts = lens _adOutputArtifacts (\ s a -> s{_adOutputArtifacts = a}) . _Default . _Coerce;
-
--- | The order in which actions are run.
-adRunOrder :: Lens' ActionDeclaration (Maybe Natural)
-adRunOrder = lens _adRunOrder (\ s a -> s{_adRunOrder = a}) . mapping _Nat;
-
--- | The action declaration's configuration.
-adConfiguration :: Lens' ActionDeclaration (HashMap Text Text)
-adConfiguration = lens _adConfiguration (\ s a -> s{_adConfiguration = a}) . _Default . _Map;
-
--- | The name or ID of the artifact consumed by the action, such as a test or build artifact.
-adInputArtifacts :: Lens' ActionDeclaration [InputArtifact]
-adInputArtifacts = lens _adInputArtifacts (\ s a -> s{_adInputArtifacts = a}) . _Default . _Coerce;
-
--- | The ARN of the IAM service role that will perform the declared action. This is assumed through the roleArn for the pipeline.
-adRoleARN :: Lens' ActionDeclaration (Maybe Text)
-adRoleARN = lens _adRoleARN (\ s a -> s{_adRoleARN = a});
-
--- | The action declaration's name.
-adName :: Lens' ActionDeclaration Text
-adName = lens _adName (\ s a -> s{_adName = a});
-
--- | The configuration information for the action type.
-adActionTypeId :: Lens' ActionDeclaration ActionTypeId
-adActionTypeId = lens _adActionTypeId (\ s a -> s{_adActionTypeId = a});
-
-instance FromJSON ActionDeclaration where
-        parseJSON
-          = withObject "ActionDeclaration"
-              (\ x ->
-                 ActionDeclaration' <$>
-                   (x .:? "outputArtifacts" .!= mempty) <*>
-                     (x .:? "runOrder")
-                     <*> (x .:? "configuration" .!= mempty)
-                     <*> (x .:? "inputArtifacts" .!= mempty)
-                     <*> (x .:? "roleArn")
-                     <*> (x .: "name")
-                     <*> (x .: "actionTypeId"))
-
-instance Hashable ActionDeclaration
-
-instance NFData ActionDeclaration
-
-instance ToJSON ActionDeclaration where
-        toJSON ActionDeclaration'{..}
-          = object
-              (catMaybes
-                 [("outputArtifacts" .=) <$> _adOutputArtifacts,
-                  ("runOrder" .=) <$> _adRunOrder,
-                  ("configuration" .=) <$> _adConfiguration,
-                  ("inputArtifacts" .=) <$> _adInputArtifacts,
-                  ("roleArn" .=) <$> _adRoleARN,
-                  Just ("name" .= _adName),
-                  Just ("actionTypeId" .= _adActionTypeId)])
-
--- | Represents information about the run of an action.
---
---
---
--- /See:/ 'actionExecution' smart constructor.
-data ActionExecution = ActionExecution'
-    { _aeLastUpdatedBy        :: !(Maybe Text)
-    , _aeSummary              :: !(Maybe Text)
-    , _aeStatus               :: !(Maybe ActionExecutionStatus)
-    , _aeLastStatusChange     :: !(Maybe POSIX)
-    , _aeToken                :: !(Maybe Text)
-    , _aeExternalExecutionURL :: !(Maybe Text)
-    , _aeExternalExecutionId  :: !(Maybe Text)
-    , _aeErrorDetails         :: !(Maybe ErrorDetails)
-    , _aePercentComplete      :: !(Maybe Nat)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ActionExecution' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aeLastUpdatedBy' - The ARN of the user who last changed the pipeline.
---
--- * 'aeSummary' - A summary of the run of the action.
---
--- * 'aeStatus' - The status of the action, or for a completed action, the last status of the action.
---
--- * 'aeLastStatusChange' - The last status change of the action.
---
--- * 'aeToken' - The system-generated token used to identify a unique approval request. The token for each open approval request can be obtained using the GetPipelineState command and is used to validate that the approval request corresponding to this token is still valid.
---
--- * 'aeExternalExecutionURL' - The URL of a resource external to AWS that will be used when running the action, for example an external repository URL.
---
--- * 'aeExternalExecutionId' - The external ID of the run of the action.
---
--- * 'aeErrorDetails' - The details of an error returned by a URL external to AWS.
---
--- * 'aePercentComplete' - A percentage of completeness of the action as it runs.
-actionExecution
-    :: ActionExecution
-actionExecution =
-    ActionExecution'
-    { _aeLastUpdatedBy = Nothing
-    , _aeSummary = Nothing
-    , _aeStatus = Nothing
-    , _aeLastStatusChange = Nothing
-    , _aeToken = Nothing
-    , _aeExternalExecutionURL = Nothing
-    , _aeExternalExecutionId = Nothing
-    , _aeErrorDetails = Nothing
-    , _aePercentComplete = Nothing
-    }
-
--- | The ARN of the user who last changed the pipeline.
-aeLastUpdatedBy :: Lens' ActionExecution (Maybe Text)
-aeLastUpdatedBy = lens _aeLastUpdatedBy (\ s a -> s{_aeLastUpdatedBy = a});
-
--- | A summary of the run of the action.
-aeSummary :: Lens' ActionExecution (Maybe Text)
-aeSummary = lens _aeSummary (\ s a -> s{_aeSummary = a});
-
--- | The status of the action, or for a completed action, the last status of the action.
-aeStatus :: Lens' ActionExecution (Maybe ActionExecutionStatus)
-aeStatus = lens _aeStatus (\ s a -> s{_aeStatus = a});
-
--- | The last status change of the action.
-aeLastStatusChange :: Lens' ActionExecution (Maybe UTCTime)
-aeLastStatusChange = lens _aeLastStatusChange (\ s a -> s{_aeLastStatusChange = a}) . mapping _Time;
-
--- | The system-generated token used to identify a unique approval request. The token for each open approval request can be obtained using the GetPipelineState command and is used to validate that the approval request corresponding to this token is still valid.
-aeToken :: Lens' ActionExecution (Maybe Text)
-aeToken = lens _aeToken (\ s a -> s{_aeToken = a});
-
--- | The URL of a resource external to AWS that will be used when running the action, for example an external repository URL.
-aeExternalExecutionURL :: Lens' ActionExecution (Maybe Text)
-aeExternalExecutionURL = lens _aeExternalExecutionURL (\ s a -> s{_aeExternalExecutionURL = a});
-
--- | The external ID of the run of the action.
-aeExternalExecutionId :: Lens' ActionExecution (Maybe Text)
-aeExternalExecutionId = lens _aeExternalExecutionId (\ s a -> s{_aeExternalExecutionId = a});
-
--- | The details of an error returned by a URL external to AWS.
-aeErrorDetails :: Lens' ActionExecution (Maybe ErrorDetails)
-aeErrorDetails = lens _aeErrorDetails (\ s a -> s{_aeErrorDetails = a});
-
--- | A percentage of completeness of the action as it runs.
-aePercentComplete :: Lens' ActionExecution (Maybe Natural)
-aePercentComplete = lens _aePercentComplete (\ s a -> s{_aePercentComplete = a}) . mapping _Nat;
-
-instance FromJSON ActionExecution where
-        parseJSON
-          = withObject "ActionExecution"
-              (\ x ->
-                 ActionExecution' <$>
-                   (x .:? "lastUpdatedBy") <*> (x .:? "summary") <*>
-                     (x .:? "status")
-                     <*> (x .:? "lastStatusChange")
-                     <*> (x .:? "token")
-                     <*> (x .:? "externalExecutionUrl")
-                     <*> (x .:? "externalExecutionId")
-                     <*> (x .:? "errorDetails")
-                     <*> (x .:? "percentComplete"))
-
-instance Hashable ActionExecution
-
-instance NFData ActionExecution
-
--- | Represents information about the version (or revision) of an action.
---
---
---
--- /See:/ 'actionRevision' smart constructor.
-data ActionRevision = ActionRevision'
-    { _aRevisionId       :: !Text
-    , _aRevisionChangeId :: !Text
-    , _aCreated          :: !POSIX
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ActionRevision' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aRevisionId' - The system-generated unique ID that identifies the revision number of the action.
---
--- * 'aRevisionChangeId' - The unique identifier of the change that set the state to this revision, for example a deployment ID or timestamp.
---
--- * 'aCreated' - The date and time when the most recent version of the action was created, in timestamp format.
-actionRevision
-    :: Text -- ^ 'aRevisionId'
-    -> Text -- ^ 'aRevisionChangeId'
-    -> UTCTime -- ^ 'aCreated'
-    -> ActionRevision
-actionRevision pRevisionId_ pRevisionChangeId_ pCreated_ =
-    ActionRevision'
-    { _aRevisionId = pRevisionId_
-    , _aRevisionChangeId = pRevisionChangeId_
-    , _aCreated = _Time # pCreated_
-    }
-
--- | The system-generated unique ID that identifies the revision number of the action.
-aRevisionId :: Lens' ActionRevision Text
-aRevisionId = lens _aRevisionId (\ s a -> s{_aRevisionId = a});
-
--- | The unique identifier of the change that set the state to this revision, for example a deployment ID or timestamp.
-aRevisionChangeId :: Lens' ActionRevision Text
-aRevisionChangeId = lens _aRevisionChangeId (\ s a -> s{_aRevisionChangeId = a});
-
--- | The date and time when the most recent version of the action was created, in timestamp format.
-aCreated :: Lens' ActionRevision UTCTime
-aCreated = lens _aCreated (\ s a -> s{_aCreated = a}) . _Time;
-
-instance FromJSON ActionRevision where
-        parseJSON
-          = withObject "ActionRevision"
-              (\ x ->
-                 ActionRevision' <$>
-                   (x .: "revisionId") <*> (x .: "revisionChangeId") <*>
-                     (x .: "created"))
-
-instance Hashable ActionRevision
-
-instance NFData ActionRevision
-
-instance ToJSON ActionRevision where
-        toJSON ActionRevision'{..}
-          = object
-              (catMaybes
-                 [Just ("revisionId" .= _aRevisionId),
-                  Just ("revisionChangeId" .= _aRevisionChangeId),
-                  Just ("created" .= _aCreated)])
-
--- | Represents information about the state of an action.
---
---
---
--- /See:/ 'actionState' smart constructor.
-data ActionState = ActionState'
-    { _asRevisionURL     :: !(Maybe Text)
-    , _asEntityURL       :: !(Maybe Text)
-    , _asActionName      :: !(Maybe Text)
-    , _asCurrentRevision :: !(Maybe ActionRevision)
-    , _asLatestExecution :: !(Maybe ActionExecution)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ActionState' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'asRevisionURL' - A URL link for more information about the revision, such as a commit details page.
---
--- * 'asEntityURL' - A URL link for more information about the state of the action, such as a deployment group details page.
---
--- * 'asActionName' - The name of the action.
---
--- * 'asCurrentRevision' - Undocumented member.
---
--- * 'asLatestExecution' - Undocumented member.
-actionState
-    :: ActionState
-actionState =
-    ActionState'
-    { _asRevisionURL = Nothing
-    , _asEntityURL = Nothing
-    , _asActionName = Nothing
-    , _asCurrentRevision = Nothing
-    , _asLatestExecution = Nothing
-    }
-
--- | A URL link for more information about the revision, such as a commit details page.
-asRevisionURL :: Lens' ActionState (Maybe Text)
-asRevisionURL = lens _asRevisionURL (\ s a -> s{_asRevisionURL = a});
-
--- | A URL link for more information about the state of the action, such as a deployment group details page.
-asEntityURL :: Lens' ActionState (Maybe Text)
-asEntityURL = lens _asEntityURL (\ s a -> s{_asEntityURL = a});
-
--- | The name of the action.
-asActionName :: Lens' ActionState (Maybe Text)
-asActionName = lens _asActionName (\ s a -> s{_asActionName = a});
-
--- | Undocumented member.
-asCurrentRevision :: Lens' ActionState (Maybe ActionRevision)
-asCurrentRevision = lens _asCurrentRevision (\ s a -> s{_asCurrentRevision = a});
-
--- | Undocumented member.
-asLatestExecution :: Lens' ActionState (Maybe ActionExecution)
-asLatestExecution = lens _asLatestExecution (\ s a -> s{_asLatestExecution = a});
-
-instance FromJSON ActionState where
-        parseJSON
-          = withObject "ActionState"
-              (\ x ->
-                 ActionState' <$>
-                   (x .:? "revisionUrl") <*> (x .:? "entityUrl") <*>
-                     (x .:? "actionName")
-                     <*> (x .:? "currentRevision")
-                     <*> (x .:? "latestExecution"))
-
-instance Hashable ActionState
-
-instance NFData ActionState
-
--- | Returns information about the details of an action type.
---
---
---
--- /See:/ 'actionType' smart constructor.
-data ActionType = ActionType'
-    { _atSettings                      :: !(Maybe ActionTypeSettings)
-    , _atActionConfigurationProperties :: !(Maybe [ActionConfigurationProperty])
-    , _atId                            :: !ActionTypeId
-    , _atInputArtifactDetails          :: !ArtifactDetails
-    , _atOutputArtifactDetails         :: !ArtifactDetails
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ActionType' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'atSettings' - The settings for the action type.
---
--- * 'atActionConfigurationProperties' - The configuration properties for the action type.
---
--- * 'atId' - Undocumented member.
---
--- * 'atInputArtifactDetails' - The details of the input artifact for the action, such as its commit ID.
---
--- * 'atOutputArtifactDetails' - The details of the output artifact of the action, such as its commit ID.
-actionType
-    :: ActionTypeId -- ^ 'atId'
-    -> ArtifactDetails -- ^ 'atInputArtifactDetails'
-    -> ArtifactDetails -- ^ 'atOutputArtifactDetails'
-    -> ActionType
-actionType pId_ pInputArtifactDetails_ pOutputArtifactDetails_ =
-    ActionType'
-    { _atSettings = Nothing
-    , _atActionConfigurationProperties = Nothing
-    , _atId = pId_
-    , _atInputArtifactDetails = pInputArtifactDetails_
-    , _atOutputArtifactDetails = pOutputArtifactDetails_
-    }
-
--- | The settings for the action type.
-atSettings :: Lens' ActionType (Maybe ActionTypeSettings)
-atSettings = lens _atSettings (\ s a -> s{_atSettings = a});
-
--- | The configuration properties for the action type.
-atActionConfigurationProperties :: Lens' ActionType [ActionConfigurationProperty]
-atActionConfigurationProperties = lens _atActionConfigurationProperties (\ s a -> s{_atActionConfigurationProperties = a}) . _Default . _Coerce;
-
--- | Undocumented member.
-atId :: Lens' ActionType ActionTypeId
-atId = lens _atId (\ s a -> s{_atId = a});
-
--- | The details of the input artifact for the action, such as its commit ID.
-atInputArtifactDetails :: Lens' ActionType ArtifactDetails
-atInputArtifactDetails = lens _atInputArtifactDetails (\ s a -> s{_atInputArtifactDetails = a});
-
--- | The details of the output artifact of the action, such as its commit ID.
-atOutputArtifactDetails :: Lens' ActionType ArtifactDetails
-atOutputArtifactDetails = lens _atOutputArtifactDetails (\ s a -> s{_atOutputArtifactDetails = a});
-
-instance FromJSON ActionType where
-        parseJSON
-          = withObject "ActionType"
-              (\ x ->
-                 ActionType' <$>
-                   (x .:? "settings") <*>
-                     (x .:? "actionConfigurationProperties" .!= mempty)
-                     <*> (x .: "id")
-                     <*> (x .: "inputArtifactDetails")
-                     <*> (x .: "outputArtifactDetails"))
-
-instance Hashable ActionType
-
-instance NFData ActionType
-
--- | Represents information about an action type.
---
---
---
--- /See:/ 'actionTypeId' smart constructor.
-data ActionTypeId = ActionTypeId'
-    { _atiCategory :: !ActionCategory
-    , _atiOwner    :: !ActionOwner
-    , _atiProvider :: !Text
-    , _atiVersion  :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ActionTypeId' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'atiCategory' - A category defines what kind of action can be taken in the stage, and constrains the provider type for the action. Valid categories are limited to one of the values below.
---
--- * 'atiOwner' - The creator of the action being called.
---
--- * 'atiProvider' - The provider of the service being called by the action. Valid providers are determined by the action category. For example, an action in the Deploy category type might have a provider of AWS CodeDeploy, which would be specified as CodeDeploy.
---
--- * 'atiVersion' - A string that identifies the action type.
-actionTypeId
-    :: ActionCategory -- ^ 'atiCategory'
-    -> ActionOwner -- ^ 'atiOwner'
-    -> Text -- ^ 'atiProvider'
-    -> Text -- ^ 'atiVersion'
-    -> ActionTypeId
-actionTypeId pCategory_ pOwner_ pProvider_ pVersion_ =
-    ActionTypeId'
-    { _atiCategory = pCategory_
-    , _atiOwner = pOwner_
-    , _atiProvider = pProvider_
-    , _atiVersion = pVersion_
-    }
-
--- | A category defines what kind of action can be taken in the stage, and constrains the provider type for the action. Valid categories are limited to one of the values below.
-atiCategory :: Lens' ActionTypeId ActionCategory
-atiCategory = lens _atiCategory (\ s a -> s{_atiCategory = a});
-
--- | The creator of the action being called.
-atiOwner :: Lens' ActionTypeId ActionOwner
-atiOwner = lens _atiOwner (\ s a -> s{_atiOwner = a});
-
--- | The provider of the service being called by the action. Valid providers are determined by the action category. For example, an action in the Deploy category type might have a provider of AWS CodeDeploy, which would be specified as CodeDeploy.
-atiProvider :: Lens' ActionTypeId Text
-atiProvider = lens _atiProvider (\ s a -> s{_atiProvider = a});
-
--- | A string that identifies the action type.
-atiVersion :: Lens' ActionTypeId Text
-atiVersion = lens _atiVersion (\ s a -> s{_atiVersion = a});
-
-instance FromJSON ActionTypeId where
-        parseJSON
-          = withObject "ActionTypeId"
-              (\ x ->
-                 ActionTypeId' <$>
-                   (x .: "category") <*> (x .: "owner") <*>
-                     (x .: "provider")
-                     <*> (x .: "version"))
-
-instance Hashable ActionTypeId
-
-instance NFData ActionTypeId
-
-instance ToJSON ActionTypeId where
-        toJSON ActionTypeId'{..}
-          = object
-              (catMaybes
-                 [Just ("category" .= _atiCategory),
-                  Just ("owner" .= _atiOwner),
-                  Just ("provider" .= _atiProvider),
-                  Just ("version" .= _atiVersion)])
-
--- | Returns information about the settings for an action type.
---
---
---
--- /See:/ 'actionTypeSettings' smart constructor.
-data ActionTypeSettings = ActionTypeSettings'
-    { _atsThirdPartyConfigurationURL :: !(Maybe Text)
-    , _atsExecutionURLTemplate       :: !(Maybe Text)
-    , _atsRevisionURLTemplate        :: !(Maybe Text)
-    , _atsEntityURLTemplate          :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ActionTypeSettings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'atsThirdPartyConfigurationURL' - The URL of a sign-up page where users can sign up for an external service and perform initial configuration of the action provided by that service.
---
--- * 'atsExecutionURLTemplate' - The URL returned to the AWS CodePipeline console that contains a link to the top-level landing page for the external system, such as console page for AWS CodeDeploy. This link is shown on the pipeline view page in the AWS CodePipeline console and provides a link to the execution entity of the external action.
---
--- * 'atsRevisionURLTemplate' - The URL returned to the AWS CodePipeline console that contains a link to the page where customers can update or change the configuration of the external action.
---
--- * 'atsEntityURLTemplate' - The URL returned to the AWS CodePipeline console that provides a deep link to the resources of the external system, such as the configuration page for an AWS CodeDeploy deployment group. This link is provided as part of the action display within the pipeline.
-actionTypeSettings
-    :: ActionTypeSettings
-actionTypeSettings =
-    ActionTypeSettings'
-    { _atsThirdPartyConfigurationURL = Nothing
-    , _atsExecutionURLTemplate = Nothing
-    , _atsRevisionURLTemplate = Nothing
-    , _atsEntityURLTemplate = Nothing
-    }
-
--- | The URL of a sign-up page where users can sign up for an external service and perform initial configuration of the action provided by that service.
-atsThirdPartyConfigurationURL :: Lens' ActionTypeSettings (Maybe Text)
-atsThirdPartyConfigurationURL = lens _atsThirdPartyConfigurationURL (\ s a -> s{_atsThirdPartyConfigurationURL = a});
-
--- | The URL returned to the AWS CodePipeline console that contains a link to the top-level landing page for the external system, such as console page for AWS CodeDeploy. This link is shown on the pipeline view page in the AWS CodePipeline console and provides a link to the execution entity of the external action.
-atsExecutionURLTemplate :: Lens' ActionTypeSettings (Maybe Text)
-atsExecutionURLTemplate = lens _atsExecutionURLTemplate (\ s a -> s{_atsExecutionURLTemplate = a});
-
--- | The URL returned to the AWS CodePipeline console that contains a link to the page where customers can update or change the configuration of the external action.
-atsRevisionURLTemplate :: Lens' ActionTypeSettings (Maybe Text)
-atsRevisionURLTemplate = lens _atsRevisionURLTemplate (\ s a -> s{_atsRevisionURLTemplate = a});
-
--- | The URL returned to the AWS CodePipeline console that provides a deep link to the resources of the external system, such as the configuration page for an AWS CodeDeploy deployment group. This link is provided as part of the action display within the pipeline.
-atsEntityURLTemplate :: Lens' ActionTypeSettings (Maybe Text)
-atsEntityURLTemplate = lens _atsEntityURLTemplate (\ s a -> s{_atsEntityURLTemplate = a});
-
-instance FromJSON ActionTypeSettings where
-        parseJSON
-          = withObject "ActionTypeSettings"
-              (\ x ->
-                 ActionTypeSettings' <$>
-                   (x .:? "thirdPartyConfigurationUrl") <*>
-                     (x .:? "executionUrlTemplate")
-                     <*> (x .:? "revisionUrlTemplate")
-                     <*> (x .:? "entityUrlTemplate"))
-
-instance Hashable ActionTypeSettings
-
-instance NFData ActionTypeSettings
-
-instance ToJSON ActionTypeSettings where
-        toJSON ActionTypeSettings'{..}
-          = object
-              (catMaybes
-                 [("thirdPartyConfigurationUrl" .=) <$>
-                    _atsThirdPartyConfigurationURL,
-                  ("executionUrlTemplate" .=) <$>
-                    _atsExecutionURLTemplate,
-                  ("revisionUrlTemplate" .=) <$>
-                    _atsRevisionURLTemplate,
-                  ("entityUrlTemplate" .=) <$> _atsEntityURLTemplate])
-
--- | Represents information about the result of an approval request.
---
---
---
--- /See:/ 'approvalResult' smart constructor.
-data ApprovalResult = ApprovalResult'
-    { _arSummary :: !Text
-    , _arStatus  :: !ApprovalStatus
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ApprovalResult' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'arSummary' - The summary of the current status of the approval request.
---
--- * 'arStatus' - The response submitted by a reviewer assigned to an approval action request.
-approvalResult
-    :: Text -- ^ 'arSummary'
-    -> ApprovalStatus -- ^ 'arStatus'
-    -> ApprovalResult
-approvalResult pSummary_ pStatus_ =
-    ApprovalResult'
-    { _arSummary = pSummary_
-    , _arStatus = pStatus_
-    }
-
--- | The summary of the current status of the approval request.
-arSummary :: Lens' ApprovalResult Text
-arSummary = lens _arSummary (\ s a -> s{_arSummary = a});
-
--- | The response submitted by a reviewer assigned to an approval action request.
-arStatus :: Lens' ApprovalResult ApprovalStatus
-arStatus = lens _arStatus (\ s a -> s{_arStatus = a});
-
-instance Hashable ApprovalResult
-
-instance NFData ApprovalResult
-
-instance ToJSON ApprovalResult where
-        toJSON ApprovalResult'{..}
-          = object
-              (catMaybes
-                 [Just ("summary" .= _arSummary),
-                  Just ("status" .= _arStatus)])
-
--- | Represents information about an artifact that will be worked upon by actions in the pipeline.
---
---
---
--- /See:/ 'artifact' smart constructor.
-data Artifact = Artifact'
-    { _aLocation :: !(Maybe ArtifactLocation)
-    , _aName     :: !(Maybe Text)
-    , _aRevision :: !(Maybe Text)
-    } 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:
---
--- * 'aLocation' - The location of an artifact.
---
--- * 'aName' - The artifact's name.
---
--- * 'aRevision' - The artifact's revision ID. Depending on the type of object, this could be a commit ID (GitHub) or a revision ID (Amazon S3).
-artifact
-    :: Artifact
-artifact =
-    Artifact'
-    { _aLocation = Nothing
-    , _aName = Nothing
-    , _aRevision = Nothing
-    }
-
--- | The location of an artifact.
-aLocation :: Lens' Artifact (Maybe ArtifactLocation)
-aLocation = lens _aLocation (\ s a -> s{_aLocation = a});
-
--- | The artifact's name.
-aName :: Lens' Artifact (Maybe Text)
-aName = lens _aName (\ s a -> s{_aName = a});
-
--- | The artifact's revision ID. Depending on the type of object, this could be a commit ID (GitHub) or a revision ID (Amazon S3).
-aRevision :: Lens' Artifact (Maybe Text)
-aRevision = lens _aRevision (\ s a -> s{_aRevision = a});
-
-instance FromJSON Artifact where
-        parseJSON
-          = withObject "Artifact"
-              (\ x ->
-                 Artifact' <$>
-                   (x .:? "location") <*> (x .:? "name") <*>
-                     (x .:? "revision"))
-
-instance Hashable Artifact
-
-instance NFData Artifact
-
--- | Returns information about the details of an artifact.
---
---
---
--- /See:/ 'artifactDetails' smart constructor.
-data ArtifactDetails = ArtifactDetails'
-    { _adMinimumCount :: !Nat
-    , _adMaximumCount :: !Nat
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ArtifactDetails' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'adMinimumCount' - The minimum number of artifacts allowed for the action type.
---
--- * 'adMaximumCount' - The maximum number of artifacts allowed for the action type.
-artifactDetails
-    :: Natural -- ^ 'adMinimumCount'
-    -> Natural -- ^ 'adMaximumCount'
-    -> ArtifactDetails
-artifactDetails pMinimumCount_ pMaximumCount_ =
-    ArtifactDetails'
-    { _adMinimumCount = _Nat # pMinimumCount_
-    , _adMaximumCount = _Nat # pMaximumCount_
-    }
-
--- | The minimum number of artifacts allowed for the action type.
-adMinimumCount :: Lens' ArtifactDetails Natural
-adMinimumCount = lens _adMinimumCount (\ s a -> s{_adMinimumCount = a}) . _Nat;
-
--- | The maximum number of artifacts allowed for the action type.
-adMaximumCount :: Lens' ArtifactDetails Natural
-adMaximumCount = lens _adMaximumCount (\ s a -> s{_adMaximumCount = a}) . _Nat;
-
-instance FromJSON ArtifactDetails where
-        parseJSON
-          = withObject "ArtifactDetails"
-              (\ x ->
-                 ArtifactDetails' <$>
-                   (x .: "minimumCount") <*> (x .: "maximumCount"))
-
-instance Hashable ArtifactDetails
-
-instance NFData ArtifactDetails
-
-instance ToJSON ArtifactDetails where
-        toJSON ArtifactDetails'{..}
-          = object
-              (catMaybes
-                 [Just ("minimumCount" .= _adMinimumCount),
-                  Just ("maximumCount" .= _adMaximumCount)])
-
--- | Represents information about the location of an artifact.
---
---
---
--- /See:/ 'artifactLocation' smart constructor.
-data ArtifactLocation = ArtifactLocation'
-    { _alS3Location :: !(Maybe S3ArtifactLocation)
-    , _alType       :: !(Maybe ArtifactLocationType)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ArtifactLocation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'alS3Location' - The Amazon S3 bucket that contains the artifact.
---
--- * 'alType' - The type of artifact in the location.
-artifactLocation
-    :: ArtifactLocation
-artifactLocation =
-    ArtifactLocation'
-    { _alS3Location = Nothing
-    , _alType = Nothing
-    }
-
--- | The Amazon S3 bucket that contains the artifact.
-alS3Location :: Lens' ArtifactLocation (Maybe S3ArtifactLocation)
-alS3Location = lens _alS3Location (\ s a -> s{_alS3Location = a});
-
--- | The type of artifact in the location.
-alType :: Lens' ArtifactLocation (Maybe ArtifactLocationType)
-alType = lens _alType (\ s a -> s{_alType = a});
-
-instance FromJSON ArtifactLocation where
-        parseJSON
-          = withObject "ArtifactLocation"
-              (\ x ->
-                 ArtifactLocation' <$>
-                   (x .:? "s3Location") <*> (x .:? "type"))
-
-instance Hashable ArtifactLocation
-
-instance NFData ArtifactLocation
-
--- | Represents revision details of an artifact.
---
---
---
--- /See:/ 'artifactRevision' smart constructor.
-data ArtifactRevision = ArtifactRevision'
-    { _arRevisionSummary          :: !(Maybe Text)
-    , _arRevisionURL              :: !(Maybe Text)
-    , _arCreated                  :: !(Maybe POSIX)
-    , _arName                     :: !(Maybe Text)
-    , _arRevisionId               :: !(Maybe Text)
-    , _arRevisionChangeIdentifier :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ArtifactRevision' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'arRevisionSummary' - Summary information about the most recent revision of the artifact. For GitHub and AWS CodeCommit repositories, the commit message. For Amazon S3 buckets or actions, the user-provided content of a @codepipeline-artifact-revision-summary@ key specified in the object metadata.
---
--- * 'arRevisionURL' - The commit ID for the artifact revision. For artifacts stored in GitHub or AWS CodeCommit repositories, the commit ID is linked to a commit details page.
---
--- * 'arCreated' - The date and time when the most recent revision of the artifact was created, in timestamp format.
---
--- * 'arName' - The name of an artifact. This name might be system-generated, such as "MyApp", or might be defined by the user when an action is created.
---
--- * 'arRevisionId' - The revision ID of the artifact.
---
--- * 'arRevisionChangeIdentifier' - An additional identifier for a revision, such as a commit date or, for artifacts stored in Amazon S3 buckets, the ETag value.
-artifactRevision
-    :: ArtifactRevision
-artifactRevision =
-    ArtifactRevision'
-    { _arRevisionSummary = Nothing
-    , _arRevisionURL = Nothing
-    , _arCreated = Nothing
-    , _arName = Nothing
-    , _arRevisionId = Nothing
-    , _arRevisionChangeIdentifier = Nothing
-    }
-
--- | Summary information about the most recent revision of the artifact. For GitHub and AWS CodeCommit repositories, the commit message. For Amazon S3 buckets or actions, the user-provided content of a @codepipeline-artifact-revision-summary@ key specified in the object metadata.
-arRevisionSummary :: Lens' ArtifactRevision (Maybe Text)
-arRevisionSummary = lens _arRevisionSummary (\ s a -> s{_arRevisionSummary = a});
-
--- | The commit ID for the artifact revision. For artifacts stored in GitHub or AWS CodeCommit repositories, the commit ID is linked to a commit details page.
-arRevisionURL :: Lens' ArtifactRevision (Maybe Text)
-arRevisionURL = lens _arRevisionURL (\ s a -> s{_arRevisionURL = a});
-
--- | The date and time when the most recent revision of the artifact was created, in timestamp format.
-arCreated :: Lens' ArtifactRevision (Maybe UTCTime)
-arCreated = lens _arCreated (\ s a -> s{_arCreated = a}) . mapping _Time;
-
--- | The name of an artifact. This name might be system-generated, such as "MyApp", or might be defined by the user when an action is created.
-arName :: Lens' ArtifactRevision (Maybe Text)
-arName = lens _arName (\ s a -> s{_arName = a});
-
--- | The revision ID of the artifact.
-arRevisionId :: Lens' ArtifactRevision (Maybe Text)
-arRevisionId = lens _arRevisionId (\ s a -> s{_arRevisionId = a});
-
--- | An additional identifier for a revision, such as a commit date or, for artifacts stored in Amazon S3 buckets, the ETag value.
-arRevisionChangeIdentifier :: Lens' ArtifactRevision (Maybe Text)
-arRevisionChangeIdentifier = lens _arRevisionChangeIdentifier (\ s a -> s{_arRevisionChangeIdentifier = a});
-
-instance FromJSON ArtifactRevision where
-        parseJSON
-          = withObject "ArtifactRevision"
-              (\ x ->
-                 ArtifactRevision' <$>
-                   (x .:? "revisionSummary") <*> (x .:? "revisionUrl")
-                     <*> (x .:? "created")
-                     <*> (x .:? "name")
-                     <*> (x .:? "revisionId")
-                     <*> (x .:? "revisionChangeIdentifier"))
-
-instance Hashable ArtifactRevision
-
-instance NFData ArtifactRevision
-
--- | The Amazon S3 location where artifacts are stored for the pipeline. If this Amazon S3 bucket is created manually, it must meet the requirements for AWS CodePipeline. For more information, see the <http://docs.aws.amazon.com/codepipeline/latest/userguide/concepts.html#CPS3Bucket Concepts> .
---
---
---
--- /See:/ 'artifactStore' smart constructor.
-data ArtifactStore = ArtifactStore'
-    { _asEncryptionKey :: !(Maybe EncryptionKey)
-    , _asType          :: !ArtifactStoreType
-    , _asLocation      :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ArtifactStore' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'asEncryptionKey' - The encryption key used to encrypt the data in the artifact store, such as an AWS Key Management Service (AWS KMS) key. If this is undefined, the default key for Amazon S3 is used.
---
--- * 'asType' - The type of the artifact store, such as S3.
---
--- * 'asLocation' - The location for storing the artifacts for a pipeline, such as an S3 bucket or folder.
-artifactStore
-    :: ArtifactStoreType -- ^ 'asType'
-    -> Text -- ^ 'asLocation'
-    -> ArtifactStore
-artifactStore pType_ pLocation_ =
-    ArtifactStore'
-    { _asEncryptionKey = Nothing
-    , _asType = pType_
-    , _asLocation = pLocation_
-    }
-
--- | The encryption key used to encrypt the data in the artifact store, such as an AWS Key Management Service (AWS KMS) key. If this is undefined, the default key for Amazon S3 is used.
-asEncryptionKey :: Lens' ArtifactStore (Maybe EncryptionKey)
-asEncryptionKey = lens _asEncryptionKey (\ s a -> s{_asEncryptionKey = a});
-
--- | The type of the artifact store, such as S3.
-asType :: Lens' ArtifactStore ArtifactStoreType
-asType = lens _asType (\ s a -> s{_asType = a});
-
--- | The location for storing the artifacts for a pipeline, such as an S3 bucket or folder.
-asLocation :: Lens' ArtifactStore Text
-asLocation = lens _asLocation (\ s a -> s{_asLocation = a});
-
-instance FromJSON ArtifactStore where
-        parseJSON
-          = withObject "ArtifactStore"
-              (\ x ->
-                 ArtifactStore' <$>
-                   (x .:? "encryptionKey") <*> (x .: "type") <*>
-                     (x .: "location"))
-
-instance Hashable ArtifactStore
-
-instance NFData ArtifactStore
-
-instance ToJSON ArtifactStore where
-        toJSON ArtifactStore'{..}
-          = object
-              (catMaybes
-                 [("encryptionKey" .=) <$> _asEncryptionKey,
-                  Just ("type" .= _asType),
-                  Just ("location" .= _asLocation)])
-
--- | Reserved for future use.
---
---
---
--- /See:/ 'blockerDeclaration' smart constructor.
-data BlockerDeclaration = BlockerDeclaration'
-    { _bdName :: !Text
-    , _bdType :: !BlockerType
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BlockerDeclaration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bdName' - Reserved for future use.
---
--- * 'bdType' - Reserved for future use.
-blockerDeclaration
-    :: Text -- ^ 'bdName'
-    -> BlockerType -- ^ 'bdType'
-    -> BlockerDeclaration
-blockerDeclaration pName_ pType_ =
-    BlockerDeclaration'
-    { _bdName = pName_
-    , _bdType = pType_
-    }
-
--- | Reserved for future use.
-bdName :: Lens' BlockerDeclaration Text
-bdName = lens _bdName (\ s a -> s{_bdName = a});
-
--- | Reserved for future use.
-bdType :: Lens' BlockerDeclaration BlockerType
-bdType = lens _bdType (\ s a -> s{_bdType = a});
-
-instance FromJSON BlockerDeclaration where
-        parseJSON
-          = withObject "BlockerDeclaration"
-              (\ x ->
-                 BlockerDeclaration' <$>
-                   (x .: "name") <*> (x .: "type"))
-
-instance Hashable BlockerDeclaration
-
-instance NFData BlockerDeclaration
-
-instance ToJSON BlockerDeclaration where
-        toJSON BlockerDeclaration'{..}
-          = object
-              (catMaybes
-                 [Just ("name" .= _bdName), Just ("type" .= _bdType)])
-
--- | Represents information about a current revision.
---
---
---
--- /See:/ 'currentRevision' smart constructor.
-data CurrentRevision = CurrentRevision'
-    { _crRevisionSummary  :: !(Maybe Text)
-    , _crCreated          :: !(Maybe POSIX)
-    , _crRevision         :: !Text
-    , _crChangeIdentifier :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CurrentRevision' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'crRevisionSummary' - The summary of the most recent revision of the artifact.
---
--- * 'crCreated' - The date and time when the most recent revision of the artifact was created, in timestamp format.
---
--- * 'crRevision' - The revision ID of the current version of an artifact.
---
--- * 'crChangeIdentifier' - The change identifier for the current revision.
-currentRevision
-    :: Text -- ^ 'crRevision'
-    -> Text -- ^ 'crChangeIdentifier'
-    -> CurrentRevision
-currentRevision pRevision_ pChangeIdentifier_ =
-    CurrentRevision'
-    { _crRevisionSummary = Nothing
-    , _crCreated = Nothing
-    , _crRevision = pRevision_
-    , _crChangeIdentifier = pChangeIdentifier_
-    }
-
--- | The summary of the most recent revision of the artifact.
-crRevisionSummary :: Lens' CurrentRevision (Maybe Text)
-crRevisionSummary = lens _crRevisionSummary (\ s a -> s{_crRevisionSummary = a});
-
--- | The date and time when the most recent revision of the artifact was created, in timestamp format.
-crCreated :: Lens' CurrentRevision (Maybe UTCTime)
-crCreated = lens _crCreated (\ s a -> s{_crCreated = a}) . mapping _Time;
-
--- | The revision ID of the current version of an artifact.
-crRevision :: Lens' CurrentRevision Text
-crRevision = lens _crRevision (\ s a -> s{_crRevision = a});
-
--- | The change identifier for the current revision.
-crChangeIdentifier :: Lens' CurrentRevision Text
-crChangeIdentifier = lens _crChangeIdentifier (\ s a -> s{_crChangeIdentifier = a});
-
-instance Hashable CurrentRevision
-
-instance NFData CurrentRevision
-
-instance ToJSON CurrentRevision where
-        toJSON CurrentRevision'{..}
-          = object
-              (catMaybes
-                 [("revisionSummary" .=) <$> _crRevisionSummary,
-                  ("created" .=) <$> _crCreated,
-                  Just ("revision" .= _crRevision),
-                  Just ("changeIdentifier" .= _crChangeIdentifier)])
-
--- | Represents information about the key used to encrypt data in the artifact store, such as an AWS Key Management Service (AWS KMS) key.
---
---
---
--- /See:/ 'encryptionKey' smart constructor.
-data EncryptionKey = EncryptionKey'
-    { _ekId   :: !Text
-    , _ekType :: !EncryptionKeyType
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EncryptionKey' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ekId' - The ID used to identify the key. For an AWS KMS key, this is the key ID or key ARN.
---
--- * 'ekType' - The type of encryption key, such as an AWS Key Management Service (AWS KMS) key. When creating or updating a pipeline, the value must be set to 'KMS'.
-encryptionKey
-    :: Text -- ^ 'ekId'
-    -> EncryptionKeyType -- ^ 'ekType'
-    -> EncryptionKey
-encryptionKey pId_ pType_ =
-    EncryptionKey'
-    { _ekId = pId_
-    , _ekType = pType_
-    }
-
--- | The ID used to identify the key. For an AWS KMS key, this is the key ID or key ARN.
-ekId :: Lens' EncryptionKey Text
-ekId = lens _ekId (\ s a -> s{_ekId = a});
-
--- | The type of encryption key, such as an AWS Key Management Service (AWS KMS) key. When creating or updating a pipeline, the value must be set to 'KMS'.
-ekType :: Lens' EncryptionKey EncryptionKeyType
-ekType = lens _ekType (\ s a -> s{_ekType = a});
-
-instance FromJSON EncryptionKey where
-        parseJSON
-          = withObject "EncryptionKey"
-              (\ x ->
-                 EncryptionKey' <$> (x .: "id") <*> (x .: "type"))
-
-instance Hashable EncryptionKey
-
-instance NFData EncryptionKey
-
-instance ToJSON EncryptionKey where
-        toJSON EncryptionKey'{..}
-          = object
-              (catMaybes
-                 [Just ("id" .= _ekId), Just ("type" .= _ekType)])
-
--- | Represents information about an error in AWS CodePipeline.
---
---
---
--- /See:/ 'errorDetails' smart constructor.
-data ErrorDetails = ErrorDetails'
-    { _edCode    :: !(Maybe Text)
-    , _edMessage :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ErrorDetails' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'edCode' - The system ID or error number code of the error.
---
--- * 'edMessage' - The text of the error message.
-errorDetails
-    :: ErrorDetails
-errorDetails =
-    ErrorDetails'
-    { _edCode = Nothing
-    , _edMessage = Nothing
-    }
-
--- | The system ID or error number code of the error.
-edCode :: Lens' ErrorDetails (Maybe Text)
-edCode = lens _edCode (\ s a -> s{_edCode = a});
-
--- | The text of the error message.
-edMessage :: Lens' ErrorDetails (Maybe Text)
-edMessage = lens _edMessage (\ s a -> s{_edMessage = a});
-
-instance FromJSON ErrorDetails where
-        parseJSON
-          = withObject "ErrorDetails"
-              (\ x ->
-                 ErrorDetails' <$>
-                   (x .:? "code") <*> (x .:? "message"))
-
-instance Hashable ErrorDetails
-
-instance NFData ErrorDetails
-
--- | The details of the actions taken and results produced on an artifact as it passes through stages in the pipeline.
---
---
---
--- /See:/ 'executionDetails' smart constructor.
-data ExecutionDetails = ExecutionDetails'
-    { _edSummary             :: !(Maybe Text)
-    , _edExternalExecutionId :: !(Maybe Text)
-    , _edPercentComplete     :: !(Maybe Nat)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ExecutionDetails' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'edSummary' - The summary of the current status of the actions.
---
--- * 'edExternalExecutionId' - The system-generated unique ID of this action used to identify this job worker in any external systems, such as AWS CodeDeploy.
---
--- * 'edPercentComplete' - The percentage of work completed on the action, represented on a scale of zero to one hundred percent.
-executionDetails
-    :: ExecutionDetails
-executionDetails =
-    ExecutionDetails'
-    { _edSummary = Nothing
-    , _edExternalExecutionId = Nothing
-    , _edPercentComplete = Nothing
-    }
-
--- | The summary of the current status of the actions.
-edSummary :: Lens' ExecutionDetails (Maybe Text)
-edSummary = lens _edSummary (\ s a -> s{_edSummary = a});
-
--- | The system-generated unique ID of this action used to identify this job worker in any external systems, such as AWS CodeDeploy.
-edExternalExecutionId :: Lens' ExecutionDetails (Maybe Text)
-edExternalExecutionId = lens _edExternalExecutionId (\ s a -> s{_edExternalExecutionId = a});
-
--- | The percentage of work completed on the action, represented on a scale of zero to one hundred percent.
-edPercentComplete :: Lens' ExecutionDetails (Maybe Natural)
-edPercentComplete = lens _edPercentComplete (\ s a -> s{_edPercentComplete = a}) . mapping _Nat;
-
-instance Hashable ExecutionDetails
-
-instance NFData ExecutionDetails
-
-instance ToJSON ExecutionDetails where
-        toJSON ExecutionDetails'{..}
-          = object
-              (catMaybes
-                 [("summary" .=) <$> _edSummary,
-                  ("externalExecutionId" .=) <$>
-                    _edExternalExecutionId,
-                  ("percentComplete" .=) <$> _edPercentComplete])
-
--- | Represents information about failure details.
---
---
---
--- /See:/ 'failureDetails' smart constructor.
-data FailureDetails = FailureDetails'
-    { _fdExternalExecutionId :: !(Maybe Text)
-    , _fdType                :: !FailureType
-    , _fdMessage             :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FailureDetails' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fdExternalExecutionId' - The external ID of the run of the action that failed.
---
--- * 'fdType' - The type of the failure.
---
--- * 'fdMessage' - The message about the failure.
-failureDetails
-    :: FailureType -- ^ 'fdType'
-    -> Text -- ^ 'fdMessage'
-    -> FailureDetails
-failureDetails pType_ pMessage_ =
-    FailureDetails'
-    { _fdExternalExecutionId = Nothing
-    , _fdType = pType_
-    , _fdMessage = pMessage_
-    }
-
--- | The external ID of the run of the action that failed.
-fdExternalExecutionId :: Lens' FailureDetails (Maybe Text)
-fdExternalExecutionId = lens _fdExternalExecutionId (\ s a -> s{_fdExternalExecutionId = a});
-
--- | The type of the failure.
-fdType :: Lens' FailureDetails FailureType
-fdType = lens _fdType (\ s a -> s{_fdType = a});
-
--- | The message about the failure.
-fdMessage :: Lens' FailureDetails Text
-fdMessage = lens _fdMessage (\ s a -> s{_fdMessage = a});
-
-instance Hashable FailureDetails
-
-instance NFData FailureDetails
-
-instance ToJSON FailureDetails where
-        toJSON FailureDetails'{..}
-          = object
-              (catMaybes
-                 [("externalExecutionId" .=) <$>
-                    _fdExternalExecutionId,
-                  Just ("type" .= _fdType),
-                  Just ("message" .= _fdMessage)])
-
--- | Represents information about an artifact to be worked on, such as a test or build artifact.
---
---
---
--- /See:/ 'inputArtifact' smart constructor.
-newtype InputArtifact = InputArtifact'
-    { _iaName :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InputArtifact' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iaName' - The name of the artifact to be worked on, for example, "My App". The input artifact of an action must exactly match the output artifact declared in a preceding action, but the input artifact does not have to be the next action in strict sequence from the action that provided the output artifact. Actions in parallel can declare different output artifacts, which are in turn consumed by different following actions.
-inputArtifact
-    :: Text -- ^ 'iaName'
-    -> InputArtifact
-inputArtifact pName_ =
-    InputArtifact'
-    { _iaName = pName_
-    }
-
--- | The name of the artifact to be worked on, for example, "My App". The input artifact of an action must exactly match the output artifact declared in a preceding action, but the input artifact does not have to be the next action in strict sequence from the action that provided the output artifact. Actions in parallel can declare different output artifacts, which are in turn consumed by different following actions.
-iaName :: Lens' InputArtifact Text
-iaName = lens _iaName (\ s a -> s{_iaName = a});
-
-instance FromJSON InputArtifact where
-        parseJSON
-          = withObject "InputArtifact"
-              (\ x -> InputArtifact' <$> (x .: "name"))
-
-instance Hashable InputArtifact
-
-instance NFData InputArtifact
-
-instance ToJSON InputArtifact where
-        toJSON InputArtifact'{..}
-          = object (catMaybes [Just ("name" .= _iaName)])
-
--- | Represents information about a job.
---
---
---
--- /See:/ 'job' smart constructor.
-data Job = Job'
-    { _jData      :: !(Maybe JobData)
-    , _jAccountId :: !(Maybe Text)
-    , _jId        :: !(Maybe Text)
-    , _jNonce     :: !(Maybe Text)
-    } 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:
---
--- * 'jData' - Additional data about a job.
---
--- * 'jAccountId' - The ID of the AWS account to use when performing the job.
---
--- * 'jId' - The unique system-generated ID of the job.
---
--- * 'jNonce' - A system-generated random number that AWS CodePipeline uses to ensure that the job is being worked on by only one job worker. This number must be returned in the response.
-job
-    :: Job
-job =
-    Job'
-    { _jData = Nothing
-    , _jAccountId = Nothing
-    , _jId = Nothing
-    , _jNonce = Nothing
-    }
-
--- | Additional data about a job.
-jData :: Lens' Job (Maybe JobData)
-jData = lens _jData (\ s a -> s{_jData = a});
-
--- | The ID of the AWS account to use when performing the job.
-jAccountId :: Lens' Job (Maybe Text)
-jAccountId = lens _jAccountId (\ s a -> s{_jAccountId = a});
-
--- | The unique system-generated ID of the job.
-jId :: Lens' Job (Maybe Text)
-jId = lens _jId (\ s a -> s{_jId = a});
-
--- | A system-generated random number that AWS CodePipeline uses to ensure that the job is being worked on by only one job worker. This number must be returned in the response.
-jNonce :: Lens' Job (Maybe Text)
-jNonce = lens _jNonce (\ s a -> s{_jNonce = a});
-
-instance FromJSON Job where
-        parseJSON
-          = withObject "Job"
-              (\ x ->
-                 Job' <$>
-                   (x .:? "data") <*> (x .:? "accountId") <*>
-                     (x .:? "id")
-                     <*> (x .:? "nonce"))
-
-instance Hashable Job
-
-instance NFData Job
-
--- | Represents additional information about a job required for a job worker to complete the job.
---
---
---
--- /See:/ 'jobData' smart constructor.
-data JobData = JobData'
-    { _jdContinuationToken   :: !(Maybe Text)
-    , _jdOutputArtifacts     :: !(Maybe [Artifact])
-    , _jdArtifactCredentials :: !(Maybe (Sensitive AWSSessionCredentials))
-    , _jdPipelineContext     :: !(Maybe PipelineContext)
-    , _jdEncryptionKey       :: !(Maybe EncryptionKey)
-    , _jdActionTypeId        :: !(Maybe ActionTypeId)
-    , _jdInputArtifacts      :: !(Maybe [Artifact])
-    , _jdActionConfiguration :: !(Maybe ActionConfiguration)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'JobData' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'jdContinuationToken' - A system-generated token, such as a AWS CodeDeploy deployment ID, that a job requires in order to continue the job asynchronously.
---
--- * 'jdOutputArtifacts' - The output of the job.
---
--- * 'jdArtifactCredentials' - Undocumented member.
---
--- * 'jdPipelineContext' - Undocumented member.
---
--- * 'jdEncryptionKey' - Undocumented member.
---
--- * 'jdActionTypeId' - Undocumented member.
---
--- * 'jdInputArtifacts' - The artifact supplied to the job.
---
--- * 'jdActionConfiguration' - Undocumented member.
-jobData
-    :: JobData
-jobData =
-    JobData'
-    { _jdContinuationToken = Nothing
-    , _jdOutputArtifacts = Nothing
-    , _jdArtifactCredentials = Nothing
-    , _jdPipelineContext = Nothing
-    , _jdEncryptionKey = Nothing
-    , _jdActionTypeId = Nothing
-    , _jdInputArtifacts = Nothing
-    , _jdActionConfiguration = Nothing
-    }
-
--- | A system-generated token, such as a AWS CodeDeploy deployment ID, that a job requires in order to continue the job asynchronously.
-jdContinuationToken :: Lens' JobData (Maybe Text)
-jdContinuationToken = lens _jdContinuationToken (\ s a -> s{_jdContinuationToken = a});
-
--- | The output of the job.
-jdOutputArtifacts :: Lens' JobData [Artifact]
-jdOutputArtifacts = lens _jdOutputArtifacts (\ s a -> s{_jdOutputArtifacts = a}) . _Default . _Coerce;
-
--- | Undocumented member.
-jdArtifactCredentials :: Lens' JobData (Maybe AWSSessionCredentials)
-jdArtifactCredentials = lens _jdArtifactCredentials (\ s a -> s{_jdArtifactCredentials = a}) . mapping _Sensitive;
-
--- | Undocumented member.
-jdPipelineContext :: Lens' JobData (Maybe PipelineContext)
-jdPipelineContext = lens _jdPipelineContext (\ s a -> s{_jdPipelineContext = a});
-
--- | Undocumented member.
-jdEncryptionKey :: Lens' JobData (Maybe EncryptionKey)
-jdEncryptionKey = lens _jdEncryptionKey (\ s a -> s{_jdEncryptionKey = a});
-
--- | Undocumented member.
-jdActionTypeId :: Lens' JobData (Maybe ActionTypeId)
-jdActionTypeId = lens _jdActionTypeId (\ s a -> s{_jdActionTypeId = a});
-
--- | The artifact supplied to the job.
-jdInputArtifacts :: Lens' JobData [Artifact]
-jdInputArtifacts = lens _jdInputArtifacts (\ s a -> s{_jdInputArtifacts = a}) . _Default . _Coerce;
-
--- | Undocumented member.
-jdActionConfiguration :: Lens' JobData (Maybe ActionConfiguration)
-jdActionConfiguration = lens _jdActionConfiguration (\ s a -> s{_jdActionConfiguration = a});
-
-instance FromJSON JobData where
-        parseJSON
-          = withObject "JobData"
-              (\ x ->
-                 JobData' <$>
-                   (x .:? "continuationToken") <*>
-                     (x .:? "outputArtifacts" .!= mempty)
-                     <*> (x .:? "artifactCredentials")
-                     <*> (x .:? "pipelineContext")
-                     <*> (x .:? "encryptionKey")
-                     <*> (x .:? "actionTypeId")
-                     <*> (x .:? "inputArtifacts" .!= mempty)
-                     <*> (x .:? "actionConfiguration"))
-
-instance Hashable JobData
-
-instance NFData JobData
-
--- | Represents information about the details of a job.
---
---
---
--- /See:/ 'jobDetails' smart constructor.
-data JobDetails = JobDetails'
-    { _jdData      :: !(Maybe JobData)
-    , _jdAccountId :: !(Maybe Text)
-    , _jdId        :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'JobDetails' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'jdData' - Undocumented member.
---
--- * 'jdAccountId' - The AWS account ID associated with the job.
---
--- * 'jdId' - The unique system-generated ID of the job.
-jobDetails
-    :: JobDetails
-jobDetails =
-    JobDetails'
-    { _jdData = Nothing
-    , _jdAccountId = Nothing
-    , _jdId = Nothing
-    }
-
--- | Undocumented member.
-jdData :: Lens' JobDetails (Maybe JobData)
-jdData = lens _jdData (\ s a -> s{_jdData = a});
-
--- | The AWS account ID associated with the job.
-jdAccountId :: Lens' JobDetails (Maybe Text)
-jdAccountId = lens _jdAccountId (\ s a -> s{_jdAccountId = a});
-
--- | The unique system-generated ID of the job.
-jdId :: Lens' JobDetails (Maybe Text)
-jdId = lens _jdId (\ s a -> s{_jdId = a});
-
-instance FromJSON JobDetails where
-        parseJSON
-          = withObject "JobDetails"
-              (\ x ->
-                 JobDetails' <$>
-                   (x .:? "data") <*> (x .:? "accountId") <*>
-                     (x .:? "id"))
-
-instance Hashable JobDetails
-
-instance NFData JobDetails
-
--- | Represents information about the output of an action.
---
---
---
--- /See:/ 'outputArtifact' smart constructor.
-newtype OutputArtifact = OutputArtifact'
-    { _oaName :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'OutputArtifact' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'oaName' - The name of the output of an artifact, such as "My App". The input artifact of an action must exactly match the output artifact declared in a preceding action, but the input artifact does not have to be the next action in strict sequence from the action that provided the output artifact. Actions in parallel can declare different output artifacts, which are in turn consumed by different following actions. Output artifact names must be unique within a pipeline.
-outputArtifact
-    :: Text -- ^ 'oaName'
-    -> OutputArtifact
-outputArtifact pName_ =
-    OutputArtifact'
-    { _oaName = pName_
-    }
-
--- | The name of the output of an artifact, such as "My App". The input artifact of an action must exactly match the output artifact declared in a preceding action, but the input artifact does not have to be the next action in strict sequence from the action that provided the output artifact. Actions in parallel can declare different output artifacts, which are in turn consumed by different following actions. Output artifact names must be unique within a pipeline.
-oaName :: Lens' OutputArtifact Text
-oaName = lens _oaName (\ s a -> s{_oaName = a});
-
-instance FromJSON OutputArtifact where
-        parseJSON
-          = withObject "OutputArtifact"
-              (\ x -> OutputArtifact' <$> (x .: "name"))
-
-instance Hashable OutputArtifact
-
-instance NFData OutputArtifact
-
-instance ToJSON OutputArtifact where
-        toJSON OutputArtifact'{..}
-          = object (catMaybes [Just ("name" .= _oaName)])
-
--- | Represents information about a pipeline to a job worker.
---
---
---
--- /See:/ 'pipelineContext' smart constructor.
-data PipelineContext = PipelineContext'
-    { _pcStage        :: !(Maybe StageContext)
-    , _pcPipelineName :: !(Maybe Text)
-    , _pcAction       :: !(Maybe ActionContext)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PipelineContext' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pcStage' - The stage of the pipeline.
---
--- * 'pcPipelineName' - The name of the pipeline. This is a user-specified value. Pipeline names must be unique across all pipeline names under an Amazon Web Services account.
---
--- * 'pcAction' - Undocumented member.
-pipelineContext
-    :: PipelineContext
-pipelineContext =
-    PipelineContext'
-    { _pcStage = Nothing
-    , _pcPipelineName = Nothing
-    , _pcAction = Nothing
-    }
-
--- | The stage of the pipeline.
-pcStage :: Lens' PipelineContext (Maybe StageContext)
-pcStage = lens _pcStage (\ s a -> s{_pcStage = a});
-
--- | The name of the pipeline. This is a user-specified value. Pipeline names must be unique across all pipeline names under an Amazon Web Services account.
-pcPipelineName :: Lens' PipelineContext (Maybe Text)
-pcPipelineName = lens _pcPipelineName (\ s a -> s{_pcPipelineName = a});
-
--- | Undocumented member.
-pcAction :: Lens' PipelineContext (Maybe ActionContext)
-pcAction = lens _pcAction (\ s a -> s{_pcAction = a});
-
-instance FromJSON PipelineContext where
-        parseJSON
-          = withObject "PipelineContext"
-              (\ x ->
-                 PipelineContext' <$>
-                   (x .:? "stage") <*> (x .:? "pipelineName") <*>
-                     (x .:? "action"))
-
-instance Hashable PipelineContext
-
-instance NFData PipelineContext
-
--- | Represents the structure of actions and stages to be performed in the pipeline.
---
---
---
--- /See:/ 'pipelineDeclaration' smart constructor.
-data PipelineDeclaration = PipelineDeclaration'
-    { _pdVersion       :: !(Maybe Nat)
-    , _pdName          :: !Text
-    , _pdRoleARN       :: !Text
-    , _pdArtifactStore :: !ArtifactStore
-    , _pdStages        :: ![StageDeclaration]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PipelineDeclaration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pdVersion' - The version number of the pipeline. A new pipeline always has a version number of 1. This number is automatically incremented when a pipeline is updated.
---
--- * 'pdName' - The name of the action to be performed.
---
--- * 'pdRoleARN' - The Amazon Resource Name (ARN) for AWS CodePipeline to use to either perform actions with no actionRoleArn, or to use to assume roles for actions with an actionRoleArn.
---
--- * 'pdArtifactStore' - Undocumented member.
---
--- * 'pdStages' - The stage in which to perform the action.
-pipelineDeclaration
-    :: Text -- ^ 'pdName'
-    -> Text -- ^ 'pdRoleARN'
-    -> ArtifactStore -- ^ 'pdArtifactStore'
-    -> PipelineDeclaration
-pipelineDeclaration pName_ pRoleARN_ pArtifactStore_ =
-    PipelineDeclaration'
-    { _pdVersion = Nothing
-    , _pdName = pName_
-    , _pdRoleARN = pRoleARN_
-    , _pdArtifactStore = pArtifactStore_
-    , _pdStages = mempty
-    }
-
--- | The version number of the pipeline. A new pipeline always has a version number of 1. This number is automatically incremented when a pipeline is updated.
-pdVersion :: Lens' PipelineDeclaration (Maybe Natural)
-pdVersion = lens _pdVersion (\ s a -> s{_pdVersion = a}) . mapping _Nat;
-
--- | The name of the action to be performed.
-pdName :: Lens' PipelineDeclaration Text
-pdName = lens _pdName (\ s a -> s{_pdName = a});
-
--- | The Amazon Resource Name (ARN) for AWS CodePipeline to use to either perform actions with no actionRoleArn, or to use to assume roles for actions with an actionRoleArn.
-pdRoleARN :: Lens' PipelineDeclaration Text
-pdRoleARN = lens _pdRoleARN (\ s a -> s{_pdRoleARN = a});
-
--- | Undocumented member.
-pdArtifactStore :: Lens' PipelineDeclaration ArtifactStore
-pdArtifactStore = lens _pdArtifactStore (\ s a -> s{_pdArtifactStore = a});
-
--- | The stage in which to perform the action.
-pdStages :: Lens' PipelineDeclaration [StageDeclaration]
-pdStages = lens _pdStages (\ s a -> s{_pdStages = a}) . _Coerce;
-
-instance FromJSON PipelineDeclaration where
-        parseJSON
-          = withObject "PipelineDeclaration"
-              (\ x ->
-                 PipelineDeclaration' <$>
-                   (x .:? "version") <*> (x .: "name") <*>
-                     (x .: "roleArn")
-                     <*> (x .: "artifactStore")
-                     <*> (x .:? "stages" .!= mempty))
-
-instance Hashable PipelineDeclaration
-
-instance NFData PipelineDeclaration
-
-instance ToJSON PipelineDeclaration where
-        toJSON PipelineDeclaration'{..}
-          = object
-              (catMaybes
-                 [("version" .=) <$> _pdVersion,
-                  Just ("name" .= _pdName),
-                  Just ("roleArn" .= _pdRoleARN),
-                  Just ("artifactStore" .= _pdArtifactStore),
-                  Just ("stages" .= _pdStages)])
-
--- | Represents information about an execution of a pipeline.
---
---
---
--- /See:/ 'pipelineExecution' smart constructor.
-data PipelineExecution = PipelineExecution'
-    { _peStatus              :: !(Maybe PipelineExecutionStatus)
-    , _pePipelineName        :: !(Maybe Text)
-    , _pePipelineVersion     :: !(Maybe Nat)
-    , _pePipelineExecutionId :: !(Maybe Text)
-    , _peArtifactRevisions   :: !(Maybe [ArtifactRevision])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PipelineExecution' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'peStatus' - The status of the pipeline execution.     * InProgress: The pipeline execution is currently running.     * Succeeded: The pipeline execution completed successfully.      * Superseded: While this pipeline execution was waiting for the next stage to be completed, a newer pipeline execution caught up and continued through the pipeline instead.      * Failed: The pipeline did not complete successfully.
---
--- * 'pePipelineName' - The name of the pipeline that was executed.
---
--- * 'pePipelineVersion' - The version number of the pipeline that was executed.
---
--- * 'pePipelineExecutionId' - The ID of the pipeline execution.
---
--- * 'peArtifactRevisions' - A list of ArtifactRevision objects included in a pipeline execution.
-pipelineExecution
-    :: PipelineExecution
-pipelineExecution =
-    PipelineExecution'
-    { _peStatus = Nothing
-    , _pePipelineName = Nothing
-    , _pePipelineVersion = Nothing
-    , _pePipelineExecutionId = Nothing
-    , _peArtifactRevisions = Nothing
-    }
-
--- | The status of the pipeline execution.     * InProgress: The pipeline execution is currently running.     * Succeeded: The pipeline execution completed successfully.      * Superseded: While this pipeline execution was waiting for the next stage to be completed, a newer pipeline execution caught up and continued through the pipeline instead.      * Failed: The pipeline did not complete successfully.
-peStatus :: Lens' PipelineExecution (Maybe PipelineExecutionStatus)
-peStatus = lens _peStatus (\ s a -> s{_peStatus = a});
-
--- | The name of the pipeline that was executed.
-pePipelineName :: Lens' PipelineExecution (Maybe Text)
-pePipelineName = lens _pePipelineName (\ s a -> s{_pePipelineName = a});
-
--- | The version number of the pipeline that was executed.
-pePipelineVersion :: Lens' PipelineExecution (Maybe Natural)
-pePipelineVersion = lens _pePipelineVersion (\ s a -> s{_pePipelineVersion = a}) . mapping _Nat;
-
--- | The ID of the pipeline execution.
-pePipelineExecutionId :: Lens' PipelineExecution (Maybe Text)
-pePipelineExecutionId = lens _pePipelineExecutionId (\ s a -> s{_pePipelineExecutionId = a});
-
--- | A list of ArtifactRevision objects included in a pipeline execution.
-peArtifactRevisions :: Lens' PipelineExecution [ArtifactRevision]
-peArtifactRevisions = lens _peArtifactRevisions (\ s a -> s{_peArtifactRevisions = a}) . _Default . _Coerce;
-
-instance FromJSON PipelineExecution where
-        parseJSON
-          = withObject "PipelineExecution"
-              (\ x ->
-                 PipelineExecution' <$>
-                   (x .:? "status") <*> (x .:? "pipelineName") <*>
-                     (x .:? "pipelineVersion")
-                     <*> (x .:? "pipelineExecutionId")
-                     <*> (x .:? "artifactRevisions" .!= mempty))
-
-instance Hashable PipelineExecution
-
-instance NFData PipelineExecution
-
--- | Returns a summary of a pipeline.
---
---
---
--- /See:/ 'pipelineSummary' smart constructor.
-data PipelineSummary = PipelineSummary'
-    { _psCreated :: !(Maybe POSIX)
-    , _psName    :: !(Maybe Text)
-    , _psVersion :: !(Maybe Nat)
-    , _psUpdated :: !(Maybe POSIX)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PipelineSummary' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'psCreated' - The date and time the pipeline was created, in timestamp format.
---
--- * 'psName' - The name of the pipeline.
---
--- * 'psVersion' - The version number of the pipeline.
---
--- * 'psUpdated' - The date and time of the last update to the pipeline, in timestamp format.
-pipelineSummary
-    :: PipelineSummary
-pipelineSummary =
-    PipelineSummary'
-    { _psCreated = Nothing
-    , _psName = Nothing
-    , _psVersion = Nothing
-    , _psUpdated = Nothing
-    }
-
--- | The date and time the pipeline was created, in timestamp format.
-psCreated :: Lens' PipelineSummary (Maybe UTCTime)
-psCreated = lens _psCreated (\ s a -> s{_psCreated = a}) . mapping _Time;
-
--- | The name of the pipeline.
-psName :: Lens' PipelineSummary (Maybe Text)
-psName = lens _psName (\ s a -> s{_psName = a});
-
--- | The version number of the pipeline.
-psVersion :: Lens' PipelineSummary (Maybe Natural)
-psVersion = lens _psVersion (\ s a -> s{_psVersion = a}) . mapping _Nat;
-
--- | The date and time of the last update to the pipeline, in timestamp format.
-psUpdated :: Lens' PipelineSummary (Maybe UTCTime)
-psUpdated = lens _psUpdated (\ s a -> s{_psUpdated = a}) . mapping _Time;
-
-instance FromJSON PipelineSummary where
-        parseJSON
-          = withObject "PipelineSummary"
-              (\ x ->
-                 PipelineSummary' <$>
-                   (x .:? "created") <*> (x .:? "name") <*>
-                     (x .:? "version")
-                     <*> (x .:? "updated"))
-
-instance Hashable PipelineSummary
-
-instance NFData PipelineSummary
-
--- | The location of the Amazon S3 bucket that contains a revision.
---
---
---
--- /See:/ 's3ArtifactLocation' smart constructor.
-data S3ArtifactLocation = S3ArtifactLocation'
-    { _salBucketName :: !Text
-    , _salObjectKey  :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'S3ArtifactLocation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'salBucketName' - The name of the Amazon S3 bucket.
---
--- * 'salObjectKey' - The key of the object in the Amazon S3 bucket, which uniquely identifies the object in the bucket.
-s3ArtifactLocation
-    :: Text -- ^ 'salBucketName'
-    -> Text -- ^ 'salObjectKey'
-    -> S3ArtifactLocation
-s3ArtifactLocation pBucketName_ pObjectKey_ =
-    S3ArtifactLocation'
-    { _salBucketName = pBucketName_
-    , _salObjectKey = pObjectKey_
-    }
-
--- | The name of the Amazon S3 bucket.
-salBucketName :: Lens' S3ArtifactLocation Text
-salBucketName = lens _salBucketName (\ s a -> s{_salBucketName = a});
-
--- | The key of the object in the Amazon S3 bucket, which uniquely identifies the object in the bucket.
-salObjectKey :: Lens' S3ArtifactLocation Text
-salObjectKey = lens _salObjectKey (\ s a -> s{_salObjectKey = a});
-
-instance FromJSON S3ArtifactLocation where
-        parseJSON
-          = withObject "S3ArtifactLocation"
-              (\ x ->
-                 S3ArtifactLocation' <$>
-                   (x .: "bucketName") <*> (x .: "objectKey"))
-
-instance Hashable S3ArtifactLocation
-
-instance NFData S3ArtifactLocation
-
--- | Represents information about a stage to a job worker.
---
---
---
--- /See:/ 'stageContext' smart constructor.
-newtype StageContext = StageContext'
-    { _scName :: Maybe Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'StageContext' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'scName' - The name of the stage.
-stageContext
-    :: StageContext
-stageContext =
-    StageContext'
-    { _scName = Nothing
-    }
-
--- | The name of the stage.
-scName :: Lens' StageContext (Maybe Text)
-scName = lens _scName (\ s a -> s{_scName = a});
-
-instance FromJSON StageContext where
-        parseJSON
-          = withObject "StageContext"
-              (\ x -> StageContext' <$> (x .:? "name"))
-
-instance Hashable StageContext
-
-instance NFData StageContext
-
--- | Represents information about a stage and its definition.
---
---
---
--- /See:/ 'stageDeclaration' smart constructor.
-data StageDeclaration = StageDeclaration'
-    { _sdBlockers :: !(Maybe [BlockerDeclaration])
-    , _sdName     :: !Text
-    , _sdActions  :: ![ActionDeclaration]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'StageDeclaration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sdBlockers' - Reserved for future use.
---
--- * 'sdName' - The name of the stage.
---
--- * 'sdActions' - The actions included in a stage.
-stageDeclaration
-    :: Text -- ^ 'sdName'
-    -> StageDeclaration
-stageDeclaration pName_ =
-    StageDeclaration'
-    { _sdBlockers = Nothing
-    , _sdName = pName_
-    , _sdActions = mempty
-    }
-
--- | Reserved for future use.
-sdBlockers :: Lens' StageDeclaration [BlockerDeclaration]
-sdBlockers = lens _sdBlockers (\ s a -> s{_sdBlockers = a}) . _Default . _Coerce;
-
--- | The name of the stage.
-sdName :: Lens' StageDeclaration Text
-sdName = lens _sdName (\ s a -> s{_sdName = a});
-
--- | The actions included in a stage.
-sdActions :: Lens' StageDeclaration [ActionDeclaration]
-sdActions = lens _sdActions (\ s a -> s{_sdActions = a}) . _Coerce;
-
-instance FromJSON StageDeclaration where
-        parseJSON
-          = withObject "StageDeclaration"
-              (\ x ->
-                 StageDeclaration' <$>
-                   (x .:? "blockers" .!= mempty) <*> (x .: "name") <*>
-                     (x .:? "actions" .!= mempty))
-
-instance Hashable StageDeclaration
-
-instance NFData StageDeclaration
-
-instance ToJSON StageDeclaration where
-        toJSON StageDeclaration'{..}
-          = object
-              (catMaybes
-                 [("blockers" .=) <$> _sdBlockers,
-                  Just ("name" .= _sdName),
-                  Just ("actions" .= _sdActions)])
-
--- | Represents information about the run of a stage.
---
---
---
--- /See:/ 'stageExecution' smart constructor.
-data StageExecution = StageExecution'
-    { _sePipelineExecutionId :: !Text
-    , _seStatus              :: !StageExecutionStatus
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'StageExecution' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sePipelineExecutionId' - The ID of the pipeline execution associated with the stage.
---
--- * 'seStatus' - The status of the stage, or for a completed stage, the last status of the stage.
-stageExecution
-    :: Text -- ^ 'sePipelineExecutionId'
-    -> StageExecutionStatus -- ^ 'seStatus'
-    -> StageExecution
-stageExecution pPipelineExecutionId_ pStatus_ =
-    StageExecution'
-    { _sePipelineExecutionId = pPipelineExecutionId_
-    , _seStatus = pStatus_
-    }
-
--- | The ID of the pipeline execution associated with the stage.
-sePipelineExecutionId :: Lens' StageExecution Text
-sePipelineExecutionId = lens _sePipelineExecutionId (\ s a -> s{_sePipelineExecutionId = a});
-
--- | The status of the stage, or for a completed stage, the last status of the stage.
-seStatus :: Lens' StageExecution StageExecutionStatus
-seStatus = lens _seStatus (\ s a -> s{_seStatus = a});
-
-instance FromJSON StageExecution where
-        parseJSON
-          = withObject "StageExecution"
-              (\ x ->
-                 StageExecution' <$>
-                   (x .: "pipelineExecutionId") <*> (x .: "status"))
-
-instance Hashable StageExecution
-
-instance NFData StageExecution
-
--- | Represents information about the state of the stage.
---
---
---
--- /See:/ 'stageState' smart constructor.
-data StageState = StageState'
-    { _ssInboundTransitionState :: !(Maybe TransitionState)
-    , _ssActionStates           :: !(Maybe [ActionState])
-    , _ssStageName              :: !(Maybe Text)
-    , _ssLatestExecution        :: !(Maybe StageExecution)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'StageState' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ssInboundTransitionState' - The state of the inbound transition, which is either enabled or disabled.
---
--- * 'ssActionStates' - The state of the stage.
---
--- * 'ssStageName' - The name of the stage.
---
--- * 'ssLatestExecution' - Information about the latest execution in the stage, including its ID and status.
-stageState
-    :: StageState
-stageState =
-    StageState'
-    { _ssInboundTransitionState = Nothing
-    , _ssActionStates = Nothing
-    , _ssStageName = Nothing
-    , _ssLatestExecution = Nothing
-    }
-
--- | The state of the inbound transition, which is either enabled or disabled.
-ssInboundTransitionState :: Lens' StageState (Maybe TransitionState)
-ssInboundTransitionState = lens _ssInboundTransitionState (\ s a -> s{_ssInboundTransitionState = a});
-
--- | The state of the stage.
-ssActionStates :: Lens' StageState [ActionState]
-ssActionStates = lens _ssActionStates (\ s a -> s{_ssActionStates = a}) . _Default . _Coerce;
-
--- | The name of the stage.
-ssStageName :: Lens' StageState (Maybe Text)
-ssStageName = lens _ssStageName (\ s a -> s{_ssStageName = a});
-
--- | Information about the latest execution in the stage, including its ID and status.
-ssLatestExecution :: Lens' StageState (Maybe StageExecution)
-ssLatestExecution = lens _ssLatestExecution (\ s a -> s{_ssLatestExecution = a});
-
-instance FromJSON StageState where
-        parseJSON
-          = withObject "StageState"
-              (\ x ->
-                 StageState' <$>
-                   (x .:? "inboundTransitionState") <*>
-                     (x .:? "actionStates" .!= mempty)
-                     <*> (x .:? "stageName")
-                     <*> (x .:? "latestExecution"))
-
-instance Hashable StageState
-
-instance NFData StageState
-
--- | A response to a PollForThirdPartyJobs request returned by AWS CodePipeline when there is a job to be worked upon by a partner action.
---
---
---
--- /See:/ 'thirdPartyJob' smart constructor.
-data ThirdPartyJob = ThirdPartyJob'
-    { _tpjClientId :: !(Maybe Text)
-    , _tpjJobId    :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ThirdPartyJob' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tpjClientId' - The clientToken portion of the clientId and clientToken pair used to verify that the calling entity is allowed access to the job and its details.
---
--- * 'tpjJobId' - The identifier used to identify the job in AWS CodePipeline.
-thirdPartyJob
-    :: ThirdPartyJob
-thirdPartyJob =
-    ThirdPartyJob'
-    { _tpjClientId = Nothing
-    , _tpjJobId = Nothing
-    }
-
--- | The clientToken portion of the clientId and clientToken pair used to verify that the calling entity is allowed access to the job and its details.
-tpjClientId :: Lens' ThirdPartyJob (Maybe Text)
-tpjClientId = lens _tpjClientId (\ s a -> s{_tpjClientId = a});
-
--- | The identifier used to identify the job in AWS CodePipeline.
-tpjJobId :: Lens' ThirdPartyJob (Maybe Text)
-tpjJobId = lens _tpjJobId (\ s a -> s{_tpjJobId = a});
-
-instance FromJSON ThirdPartyJob where
-        parseJSON
-          = withObject "ThirdPartyJob"
-              (\ x ->
-                 ThirdPartyJob' <$>
-                   (x .:? "clientId") <*> (x .:? "jobId"))
-
-instance Hashable ThirdPartyJob
-
-instance NFData ThirdPartyJob
-
--- | Represents information about the job data for a partner action.
---
---
---
--- /See:/ 'thirdPartyJobData' smart constructor.
-data ThirdPartyJobData = ThirdPartyJobData'
-    { _tpjdContinuationToken   :: !(Maybe Text)
-    , _tpjdOutputArtifacts     :: !(Maybe [Artifact])
-    , _tpjdArtifactCredentials :: !(Maybe (Sensitive AWSSessionCredentials))
-    , _tpjdPipelineContext     :: !(Maybe PipelineContext)
-    , _tpjdEncryptionKey       :: !(Maybe EncryptionKey)
-    , _tpjdActionTypeId        :: !(Maybe ActionTypeId)
-    , _tpjdInputArtifacts      :: !(Maybe [Artifact])
-    , _tpjdActionConfiguration :: !(Maybe ActionConfiguration)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ThirdPartyJobData' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tpjdContinuationToken' - A system-generated token, such as a AWS CodeDeploy deployment ID, that a job requires in order to continue the job asynchronously.
---
--- * 'tpjdOutputArtifacts' - The name of the artifact that will be the result of the action, if any. This name might be system-generated, such as "MyBuiltApp", or might be defined by the user when the action is created.
---
--- * 'tpjdArtifactCredentials' - Undocumented member.
---
--- * 'tpjdPipelineContext' - Undocumented member.
---
--- * 'tpjdEncryptionKey' - The encryption key used to encrypt and decrypt data in the artifact store for the pipeline, such as an AWS Key Management Service (AWS KMS) key. This is optional and might not be present.
---
--- * 'tpjdActionTypeId' - Undocumented member.
---
--- * 'tpjdInputArtifacts' - The name of the artifact that will be worked upon by the action, if any. This name might be system-generated, such as "MyApp", or might be defined by the user when the action is created. The input artifact name must match the name of an output artifact generated by an action in an earlier action or stage of the pipeline.
---
--- * 'tpjdActionConfiguration' - Undocumented member.
-thirdPartyJobData
-    :: ThirdPartyJobData
-thirdPartyJobData =
-    ThirdPartyJobData'
-    { _tpjdContinuationToken = Nothing
-    , _tpjdOutputArtifacts = Nothing
-    , _tpjdArtifactCredentials = Nothing
-    , _tpjdPipelineContext = Nothing
-    , _tpjdEncryptionKey = Nothing
-    , _tpjdActionTypeId = Nothing
-    , _tpjdInputArtifacts = Nothing
-    , _tpjdActionConfiguration = Nothing
-    }
-
--- | A system-generated token, such as a AWS CodeDeploy deployment ID, that a job requires in order to continue the job asynchronously.
-tpjdContinuationToken :: Lens' ThirdPartyJobData (Maybe Text)
-tpjdContinuationToken = lens _tpjdContinuationToken (\ s a -> s{_tpjdContinuationToken = a});
-
--- | The name of the artifact that will be the result of the action, if any. This name might be system-generated, such as "MyBuiltApp", or might be defined by the user when the action is created.
-tpjdOutputArtifacts :: Lens' ThirdPartyJobData [Artifact]
-tpjdOutputArtifacts = lens _tpjdOutputArtifacts (\ s a -> s{_tpjdOutputArtifacts = a}) . _Default . _Coerce;
-
--- | Undocumented member.
-tpjdArtifactCredentials :: Lens' ThirdPartyJobData (Maybe AWSSessionCredentials)
-tpjdArtifactCredentials = lens _tpjdArtifactCredentials (\ s a -> s{_tpjdArtifactCredentials = a}) . mapping _Sensitive;
-
--- | Undocumented member.
-tpjdPipelineContext :: Lens' ThirdPartyJobData (Maybe PipelineContext)
-tpjdPipelineContext = lens _tpjdPipelineContext (\ s a -> s{_tpjdPipelineContext = a});
-
--- | The encryption key used to encrypt and decrypt data in the artifact store for the pipeline, such as an AWS Key Management Service (AWS KMS) key. This is optional and might not be present.
-tpjdEncryptionKey :: Lens' ThirdPartyJobData (Maybe EncryptionKey)
-tpjdEncryptionKey = lens _tpjdEncryptionKey (\ s a -> s{_tpjdEncryptionKey = a});
-
--- | Undocumented member.
-tpjdActionTypeId :: Lens' ThirdPartyJobData (Maybe ActionTypeId)
-tpjdActionTypeId = lens _tpjdActionTypeId (\ s a -> s{_tpjdActionTypeId = a});
-
--- | The name of the artifact that will be worked upon by the action, if any. This name might be system-generated, such as "MyApp", or might be defined by the user when the action is created. The input artifact name must match the name of an output artifact generated by an action in an earlier action or stage of the pipeline.
-tpjdInputArtifacts :: Lens' ThirdPartyJobData [Artifact]
-tpjdInputArtifacts = lens _tpjdInputArtifacts (\ s a -> s{_tpjdInputArtifacts = a}) . _Default . _Coerce;
-
--- | Undocumented member.
-tpjdActionConfiguration :: Lens' ThirdPartyJobData (Maybe ActionConfiguration)
-tpjdActionConfiguration = lens _tpjdActionConfiguration (\ s a -> s{_tpjdActionConfiguration = a});
-
-instance FromJSON ThirdPartyJobData where
-        parseJSON
-          = withObject "ThirdPartyJobData"
-              (\ x ->
-                 ThirdPartyJobData' <$>
-                   (x .:? "continuationToken") <*>
-                     (x .:? "outputArtifacts" .!= mempty)
-                     <*> (x .:? "artifactCredentials")
-                     <*> (x .:? "pipelineContext")
-                     <*> (x .:? "encryptionKey")
-                     <*> (x .:? "actionTypeId")
-                     <*> (x .:? "inputArtifacts" .!= mempty)
-                     <*> (x .:? "actionConfiguration"))
-
-instance Hashable ThirdPartyJobData
-
-instance NFData ThirdPartyJobData
-
--- | The details of a job sent in response to a GetThirdPartyJobDetails request.
---
---
---
--- /See:/ 'thirdPartyJobDetails' smart constructor.
-data ThirdPartyJobDetails = ThirdPartyJobDetails'
-    { _tpjdData  :: !(Maybe ThirdPartyJobData)
-    , _tpjdId    :: !(Maybe Text)
-    , _tpjdNonce :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ThirdPartyJobDetails' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tpjdData' - The data to be returned by the third party job worker.
---
--- * 'tpjdId' - The identifier used to identify the job details in AWS CodePipeline.
---
--- * 'tpjdNonce' - A system-generated random number that AWS CodePipeline uses to ensure that the job is being worked on by only one job worker. This number must be returned in the response.
-thirdPartyJobDetails
-    :: ThirdPartyJobDetails
-thirdPartyJobDetails =
-    ThirdPartyJobDetails'
-    { _tpjdData = Nothing
-    , _tpjdId = Nothing
-    , _tpjdNonce = Nothing
-    }
-
--- | The data to be returned by the third party job worker.
-tpjdData :: Lens' ThirdPartyJobDetails (Maybe ThirdPartyJobData)
-tpjdData = lens _tpjdData (\ s a -> s{_tpjdData = a});
-
--- | The identifier used to identify the job details in AWS CodePipeline.
-tpjdId :: Lens' ThirdPartyJobDetails (Maybe Text)
-tpjdId = lens _tpjdId (\ s a -> s{_tpjdId = a});
-
--- | A system-generated random number that AWS CodePipeline uses to ensure that the job is being worked on by only one job worker. This number must be returned in the response.
-tpjdNonce :: Lens' ThirdPartyJobDetails (Maybe Text)
-tpjdNonce = lens _tpjdNonce (\ s a -> s{_tpjdNonce = a});
-
-instance FromJSON ThirdPartyJobDetails where
-        parseJSON
-          = withObject "ThirdPartyJobDetails"
-              (\ x ->
-                 ThirdPartyJobDetails' <$>
-                   (x .:? "data") <*> (x .:? "id") <*> (x .:? "nonce"))
-
-instance Hashable ThirdPartyJobDetails
-
-instance NFData ThirdPartyJobDetails
-
--- | Represents information about the state of transitions between one stage and another stage.
---
---
---
--- /See:/ 'transitionState' smart constructor.
-data TransitionState = TransitionState'
-    { _tsEnabled        :: !(Maybe Bool)
-    , _tsDisabledReason :: !(Maybe Text)
-    , _tsLastChangedAt  :: !(Maybe POSIX)
-    , _tsLastChangedBy  :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TransitionState' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tsEnabled' - Whether the transition between stages is enabled (true) or disabled (false).
---
--- * 'tsDisabledReason' - The user-specified reason why the transition between two stages of a pipeline was disabled.
---
--- * 'tsLastChangedAt' - The timestamp when the transition state was last changed.
---
--- * 'tsLastChangedBy' - The ID of the user who last changed the transition state.
-transitionState
-    :: TransitionState
-transitionState =
-    TransitionState'
-    { _tsEnabled = Nothing
-    , _tsDisabledReason = Nothing
-    , _tsLastChangedAt = Nothing
-    , _tsLastChangedBy = Nothing
-    }
-
--- | Whether the transition between stages is enabled (true) or disabled (false).
-tsEnabled :: Lens' TransitionState (Maybe Bool)
-tsEnabled = lens _tsEnabled (\ s a -> s{_tsEnabled = a});
-
--- | The user-specified reason why the transition between two stages of a pipeline was disabled.
-tsDisabledReason :: Lens' TransitionState (Maybe Text)
-tsDisabledReason = lens _tsDisabledReason (\ s a -> s{_tsDisabledReason = a});
-
--- | The timestamp when the transition state was last changed.
-tsLastChangedAt :: Lens' TransitionState (Maybe UTCTime)
-tsLastChangedAt = lens _tsLastChangedAt (\ s a -> s{_tsLastChangedAt = a}) . mapping _Time;
-
--- | The ID of the user who last changed the transition state.
-tsLastChangedBy :: Lens' TransitionState (Maybe Text)
-tsLastChangedBy = lens _tsLastChangedBy (\ s a -> s{_tsLastChangedBy = a});
-
-instance FromJSON TransitionState where
-        parseJSON
-          = withObject "TransitionState"
-              (\ x ->
-                 TransitionState' <$>
-                   (x .:? "enabled") <*> (x .:? "disabledReason") <*>
-                     (x .:? "lastChangedAt")
-                     <*> (x .:? "lastChangedBy"))
-
-instance Hashable TransitionState
-
-instance NFData TransitionState
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.AWS.CodePipeline.Types.Product where
+
+import Network.AWS.CodePipeline.Types.Sum
+import Network.AWS.Lens
+import Network.AWS.Prelude
+
+-- | Represents an AWS session credentials object. These credentials are temporary credentials that are issued by AWS Secure Token Service (STS). They can be used to access input and output artifacts in the Amazon S3 bucket used to store artifact for the pipeline in AWS CodePipeline.
+--
+--
+--
+-- /See:/ 'awsSessionCredentials' smart constructor.
+data AWSSessionCredentials = AWSSessionCredentials'
+  { _ascAccessKeyId     :: !Text
+  , _ascSecretAccessKey :: !Text
+  , _ascSessionToken    :: !Text
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AWSSessionCredentials' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ascAccessKeyId' - The access key for the session.
+--
+-- * 'ascSecretAccessKey' - The secret access key for the session.
+--
+-- * 'ascSessionToken' - The token for the session.
+awsSessionCredentials
+    :: Text -- ^ 'ascAccessKeyId'
+    -> Text -- ^ 'ascSecretAccessKey'
+    -> Text -- ^ 'ascSessionToken'
+    -> AWSSessionCredentials
+awsSessionCredentials pAccessKeyId_ pSecretAccessKey_ pSessionToken_ =
+  AWSSessionCredentials'
+  { _ascAccessKeyId = pAccessKeyId_
+  , _ascSecretAccessKey = pSecretAccessKey_
+  , _ascSessionToken = pSessionToken_
+  }
+
+
+-- | The access key for the session.
+ascAccessKeyId :: Lens' AWSSessionCredentials Text
+ascAccessKeyId = lens _ascAccessKeyId (\ s a -> s{_ascAccessKeyId = a});
+
+-- | The secret access key for the session.
+ascSecretAccessKey :: Lens' AWSSessionCredentials Text
+ascSecretAccessKey = lens _ascSecretAccessKey (\ s a -> s{_ascSecretAccessKey = a});
+
+-- | The token for the session.
+ascSessionToken :: Lens' AWSSessionCredentials Text
+ascSessionToken = lens _ascSessionToken (\ s a -> s{_ascSessionToken = a});
+
+instance FromJSON AWSSessionCredentials where
+        parseJSON
+          = withObject "AWSSessionCredentials"
+              (\ x ->
+                 AWSSessionCredentials' <$>
+                   (x .: "accessKeyId") <*> (x .: "secretAccessKey") <*>
+                     (x .: "sessionToken"))
+
+instance Hashable AWSSessionCredentials where
+
+instance NFData AWSSessionCredentials where
+
+-- | Represents information about an action configuration.
+--
+--
+--
+-- /See:/ 'actionConfiguration' smart constructor.
+newtype ActionConfiguration = ActionConfiguration'
+  { _acConfiguration :: Maybe (Map Text Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ActionConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'acConfiguration' - The configuration data for the action.
+actionConfiguration
+    :: ActionConfiguration
+actionConfiguration = ActionConfiguration' {_acConfiguration = Nothing}
+
+
+-- | The configuration data for the action.
+acConfiguration :: Lens' ActionConfiguration (HashMap Text Text)
+acConfiguration = lens _acConfiguration (\ s a -> s{_acConfiguration = a}) . _Default . _Map;
+
+instance FromJSON ActionConfiguration where
+        parseJSON
+          = withObject "ActionConfiguration"
+              (\ x ->
+                 ActionConfiguration' <$>
+                   (x .:? "configuration" .!= mempty))
+
+instance Hashable ActionConfiguration where
+
+instance NFData ActionConfiguration where
+
+-- | Represents information about an action configuration property.
+--
+--
+--
+-- /See:/ 'actionConfigurationProperty' smart constructor.
+data ActionConfigurationProperty = ActionConfigurationProperty'
+  { _acpQueryable   :: !(Maybe Bool)
+  , _acpType        :: !(Maybe ActionConfigurationPropertyType)
+  , _acpDescription :: !(Maybe Text)
+  , _acpName        :: !Text
+  , _acpRequired    :: !Bool
+  , _acpKey         :: !Bool
+  , _acpSecret      :: !Bool
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ActionConfigurationProperty' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'acpQueryable' - Indicates that the property will be used in conjunction with PollForJobs. When creating a custom action, an action can have up to one queryable property. If it has one, that property must be both required and not secret. If you create a pipeline with a custom action type, and that custom action contains a queryable property, the value for that configuration property is subject to additional restrictions. The value must be less than or equal to twenty (20) characters. The value can contain only alphanumeric characters, underscores, and hyphens.
+--
+-- * 'acpType' - The type of the configuration property.
+--
+-- * 'acpDescription' - The description of the action configuration property that will be displayed to users.
+--
+-- * 'acpName' - The name of the action configuration property.
+--
+-- * 'acpRequired' - Whether the configuration property is a required value.
+--
+-- * 'acpKey' - Whether the configuration property is a key.
+--
+-- * 'acpSecret' - Whether the configuration property is secret. Secrets are hidden from all calls except for GetJobDetails, GetThirdPartyJobDetails, PollForJobs, and PollForThirdPartyJobs. When updating a pipeline, passing * * * * * without changing any other values of the action will preserve the prior value of the secret.
+actionConfigurationProperty
+    :: Text -- ^ 'acpName'
+    -> Bool -- ^ 'acpRequired'
+    -> Bool -- ^ 'acpKey'
+    -> Bool -- ^ 'acpSecret'
+    -> ActionConfigurationProperty
+actionConfigurationProperty pName_ pRequired_ pKey_ pSecret_ =
+  ActionConfigurationProperty'
+  { _acpQueryable = Nothing
+  , _acpType = Nothing
+  , _acpDescription = Nothing
+  , _acpName = pName_
+  , _acpRequired = pRequired_
+  , _acpKey = pKey_
+  , _acpSecret = pSecret_
+  }
+
+
+-- | Indicates that the property will be used in conjunction with PollForJobs. When creating a custom action, an action can have up to one queryable property. If it has one, that property must be both required and not secret. If you create a pipeline with a custom action type, and that custom action contains a queryable property, the value for that configuration property is subject to additional restrictions. The value must be less than or equal to twenty (20) characters. The value can contain only alphanumeric characters, underscores, and hyphens.
+acpQueryable :: Lens' ActionConfigurationProperty (Maybe Bool)
+acpQueryable = lens _acpQueryable (\ s a -> s{_acpQueryable = a});
+
+-- | The type of the configuration property.
+acpType :: Lens' ActionConfigurationProperty (Maybe ActionConfigurationPropertyType)
+acpType = lens _acpType (\ s a -> s{_acpType = a});
+
+-- | The description of the action configuration property that will be displayed to users.
+acpDescription :: Lens' ActionConfigurationProperty (Maybe Text)
+acpDescription = lens _acpDescription (\ s a -> s{_acpDescription = a});
+
+-- | The name of the action configuration property.
+acpName :: Lens' ActionConfigurationProperty Text
+acpName = lens _acpName (\ s a -> s{_acpName = a});
+
+-- | Whether the configuration property is a required value.
+acpRequired :: Lens' ActionConfigurationProperty Bool
+acpRequired = lens _acpRequired (\ s a -> s{_acpRequired = a});
+
+-- | Whether the configuration property is a key.
+acpKey :: Lens' ActionConfigurationProperty Bool
+acpKey = lens _acpKey (\ s a -> s{_acpKey = a});
+
+-- | Whether the configuration property is secret. Secrets are hidden from all calls except for GetJobDetails, GetThirdPartyJobDetails, PollForJobs, and PollForThirdPartyJobs. When updating a pipeline, passing * * * * * without changing any other values of the action will preserve the prior value of the secret.
+acpSecret :: Lens' ActionConfigurationProperty Bool
+acpSecret = lens _acpSecret (\ s a -> s{_acpSecret = a});
+
+instance FromJSON ActionConfigurationProperty where
+        parseJSON
+          = withObject "ActionConfigurationProperty"
+              (\ x ->
+                 ActionConfigurationProperty' <$>
+                   (x .:? "queryable") <*> (x .:? "type") <*>
+                     (x .:? "description")
+                     <*> (x .: "name")
+                     <*> (x .: "required")
+                     <*> (x .: "key")
+                     <*> (x .: "secret"))
+
+instance Hashable ActionConfigurationProperty where
+
+instance NFData ActionConfigurationProperty where
+
+instance ToJSON ActionConfigurationProperty where
+        toJSON ActionConfigurationProperty'{..}
+          = object
+              (catMaybes
+                 [("queryable" .=) <$> _acpQueryable,
+                  ("type" .=) <$> _acpType,
+                  ("description" .=) <$> _acpDescription,
+                  Just ("name" .= _acpName),
+                  Just ("required" .= _acpRequired),
+                  Just ("key" .= _acpKey),
+                  Just ("secret" .= _acpSecret)])
+
+-- | Represents the context of an action within the stage of a pipeline to a job worker.
+--
+--
+--
+-- /See:/ 'actionContext' smart constructor.
+newtype ActionContext = ActionContext'
+  { _acName :: Maybe Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ActionContext' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'acName' - The name of the action within the context of a job.
+actionContext
+    :: ActionContext
+actionContext = ActionContext' {_acName = Nothing}
+
+
+-- | The name of the action within the context of a job.
+acName :: Lens' ActionContext (Maybe Text)
+acName = lens _acName (\ s a -> s{_acName = a});
+
+instance FromJSON ActionContext where
+        parseJSON
+          = withObject "ActionContext"
+              (\ x -> ActionContext' <$> (x .:? "name"))
+
+instance Hashable ActionContext where
+
+instance NFData ActionContext where
+
+-- | Represents information about an action declaration.
+--
+--
+--
+-- /See:/ 'actionDeclaration' smart constructor.
+data ActionDeclaration = ActionDeclaration'
+  { _adOutputArtifacts :: !(Maybe [OutputArtifact])
+  , _adRunOrder        :: !(Maybe Nat)
+  , _adConfiguration   :: !(Maybe (Map Text Text))
+  , _adInputArtifacts  :: !(Maybe [InputArtifact])
+  , _adRoleARN         :: !(Maybe Text)
+  , _adName            :: !Text
+  , _adActionTypeId    :: !ActionTypeId
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ActionDeclaration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'adOutputArtifacts' - The name or ID of the result of the action declaration, such as a test or build artifact.
+--
+-- * 'adRunOrder' - The order in which actions are run.
+--
+-- * 'adConfiguration' - The action declaration's configuration.
+--
+-- * 'adInputArtifacts' - The name or ID of the artifact consumed by the action, such as a test or build artifact.
+--
+-- * 'adRoleARN' - The ARN of the IAM service role that will perform the declared action. This is assumed through the roleArn for the pipeline.
+--
+-- * 'adName' - The action declaration's name.
+--
+-- * 'adActionTypeId' - The configuration information for the action type.
+actionDeclaration
+    :: Text -- ^ 'adName'
+    -> ActionTypeId -- ^ 'adActionTypeId'
+    -> ActionDeclaration
+actionDeclaration pName_ pActionTypeId_ =
+  ActionDeclaration'
+  { _adOutputArtifacts = Nothing
+  , _adRunOrder = Nothing
+  , _adConfiguration = Nothing
+  , _adInputArtifacts = Nothing
+  , _adRoleARN = Nothing
+  , _adName = pName_
+  , _adActionTypeId = pActionTypeId_
+  }
+
+
+-- | The name or ID of the result of the action declaration, such as a test or build artifact.
+adOutputArtifacts :: Lens' ActionDeclaration [OutputArtifact]
+adOutputArtifacts = lens _adOutputArtifacts (\ s a -> s{_adOutputArtifacts = a}) . _Default . _Coerce;
+
+-- | The order in which actions are run.
+adRunOrder :: Lens' ActionDeclaration (Maybe Natural)
+adRunOrder = lens _adRunOrder (\ s a -> s{_adRunOrder = a}) . mapping _Nat;
+
+-- | The action declaration's configuration.
+adConfiguration :: Lens' ActionDeclaration (HashMap Text Text)
+adConfiguration = lens _adConfiguration (\ s a -> s{_adConfiguration = a}) . _Default . _Map;
+
+-- | The name or ID of the artifact consumed by the action, such as a test or build artifact.
+adInputArtifacts :: Lens' ActionDeclaration [InputArtifact]
+adInputArtifacts = lens _adInputArtifacts (\ s a -> s{_adInputArtifacts = a}) . _Default . _Coerce;
+
+-- | The ARN of the IAM service role that will perform the declared action. This is assumed through the roleArn for the pipeline.
+adRoleARN :: Lens' ActionDeclaration (Maybe Text)
+adRoleARN = lens _adRoleARN (\ s a -> s{_adRoleARN = a});
+
+-- | The action declaration's name.
+adName :: Lens' ActionDeclaration Text
+adName = lens _adName (\ s a -> s{_adName = a});
+
+-- | The configuration information for the action type.
+adActionTypeId :: Lens' ActionDeclaration ActionTypeId
+adActionTypeId = lens _adActionTypeId (\ s a -> s{_adActionTypeId = a});
+
+instance FromJSON ActionDeclaration where
+        parseJSON
+          = withObject "ActionDeclaration"
+              (\ x ->
+                 ActionDeclaration' <$>
+                   (x .:? "outputArtifacts" .!= mempty) <*>
+                     (x .:? "runOrder")
+                     <*> (x .:? "configuration" .!= mempty)
+                     <*> (x .:? "inputArtifacts" .!= mempty)
+                     <*> (x .:? "roleArn")
+                     <*> (x .: "name")
+                     <*> (x .: "actionTypeId"))
+
+instance Hashable ActionDeclaration where
+
+instance NFData ActionDeclaration where
+
+instance ToJSON ActionDeclaration where
+        toJSON ActionDeclaration'{..}
+          = object
+              (catMaybes
+                 [("outputArtifacts" .=) <$> _adOutputArtifacts,
+                  ("runOrder" .=) <$> _adRunOrder,
+                  ("configuration" .=) <$> _adConfiguration,
+                  ("inputArtifacts" .=) <$> _adInputArtifacts,
+                  ("roleArn" .=) <$> _adRoleARN,
+                  Just ("name" .= _adName),
+                  Just ("actionTypeId" .= _adActionTypeId)])
+
+-- | Represents information about the run of an action.
+--
+--
+--
+-- /See:/ 'actionExecution' smart constructor.
+data ActionExecution = ActionExecution'
+  { _aeLastUpdatedBy        :: !(Maybe Text)
+  , _aeSummary              :: !(Maybe Text)
+  , _aeStatus               :: !(Maybe ActionExecutionStatus)
+  , _aeLastStatusChange     :: !(Maybe POSIX)
+  , _aeToken                :: !(Maybe Text)
+  , _aeExternalExecutionURL :: !(Maybe Text)
+  , _aeExternalExecutionId  :: !(Maybe Text)
+  , _aeErrorDetails         :: !(Maybe ErrorDetails)
+  , _aePercentComplete      :: !(Maybe Nat)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ActionExecution' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aeLastUpdatedBy' - The ARN of the user who last changed the pipeline.
+--
+-- * 'aeSummary' - A summary of the run of the action.
+--
+-- * 'aeStatus' - The status of the action, or for a completed action, the last status of the action.
+--
+-- * 'aeLastStatusChange' - The last status change of the action.
+--
+-- * 'aeToken' - The system-generated token used to identify a unique approval request. The token for each open approval request can be obtained using the GetPipelineState command and is used to validate that the approval request corresponding to this token is still valid.
+--
+-- * 'aeExternalExecutionURL' - The URL of a resource external to AWS that will be used when running the action, for example an external repository URL.
+--
+-- * 'aeExternalExecutionId' - The external ID of the run of the action.
+--
+-- * 'aeErrorDetails' - The details of an error returned by a URL external to AWS.
+--
+-- * 'aePercentComplete' - A percentage of completeness of the action as it runs.
+actionExecution
+    :: ActionExecution
+actionExecution =
+  ActionExecution'
+  { _aeLastUpdatedBy = Nothing
+  , _aeSummary = Nothing
+  , _aeStatus = Nothing
+  , _aeLastStatusChange = Nothing
+  , _aeToken = Nothing
+  , _aeExternalExecutionURL = Nothing
+  , _aeExternalExecutionId = Nothing
+  , _aeErrorDetails = Nothing
+  , _aePercentComplete = Nothing
+  }
+
+
+-- | The ARN of the user who last changed the pipeline.
+aeLastUpdatedBy :: Lens' ActionExecution (Maybe Text)
+aeLastUpdatedBy = lens _aeLastUpdatedBy (\ s a -> s{_aeLastUpdatedBy = a});
+
+-- | A summary of the run of the action.
+aeSummary :: Lens' ActionExecution (Maybe Text)
+aeSummary = lens _aeSummary (\ s a -> s{_aeSummary = a});
+
+-- | The status of the action, or for a completed action, the last status of the action.
+aeStatus :: Lens' ActionExecution (Maybe ActionExecutionStatus)
+aeStatus = lens _aeStatus (\ s a -> s{_aeStatus = a});
+
+-- | The last status change of the action.
+aeLastStatusChange :: Lens' ActionExecution (Maybe UTCTime)
+aeLastStatusChange = lens _aeLastStatusChange (\ s a -> s{_aeLastStatusChange = a}) . mapping _Time;
+
+-- | The system-generated token used to identify a unique approval request. The token for each open approval request can be obtained using the GetPipelineState command and is used to validate that the approval request corresponding to this token is still valid.
+aeToken :: Lens' ActionExecution (Maybe Text)
+aeToken = lens _aeToken (\ s a -> s{_aeToken = a});
+
+-- | The URL of a resource external to AWS that will be used when running the action, for example an external repository URL.
+aeExternalExecutionURL :: Lens' ActionExecution (Maybe Text)
+aeExternalExecutionURL = lens _aeExternalExecutionURL (\ s a -> s{_aeExternalExecutionURL = a});
+
+-- | The external ID of the run of the action.
+aeExternalExecutionId :: Lens' ActionExecution (Maybe Text)
+aeExternalExecutionId = lens _aeExternalExecutionId (\ s a -> s{_aeExternalExecutionId = a});
+
+-- | The details of an error returned by a URL external to AWS.
+aeErrorDetails :: Lens' ActionExecution (Maybe ErrorDetails)
+aeErrorDetails = lens _aeErrorDetails (\ s a -> s{_aeErrorDetails = a});
+
+-- | A percentage of completeness of the action as it runs.
+aePercentComplete :: Lens' ActionExecution (Maybe Natural)
+aePercentComplete = lens _aePercentComplete (\ s a -> s{_aePercentComplete = a}) . mapping _Nat;
+
+instance FromJSON ActionExecution where
+        parseJSON
+          = withObject "ActionExecution"
+              (\ x ->
+                 ActionExecution' <$>
+                   (x .:? "lastUpdatedBy") <*> (x .:? "summary") <*>
+                     (x .:? "status")
+                     <*> (x .:? "lastStatusChange")
+                     <*> (x .:? "token")
+                     <*> (x .:? "externalExecutionUrl")
+                     <*> (x .:? "externalExecutionId")
+                     <*> (x .:? "errorDetails")
+                     <*> (x .:? "percentComplete"))
+
+instance Hashable ActionExecution where
+
+instance NFData ActionExecution where
+
+-- | Represents information about the version (or revision) of an action.
+--
+--
+--
+-- /See:/ 'actionRevision' smart constructor.
+data ActionRevision = ActionRevision'
+  { _aRevisionId       :: !Text
+  , _aRevisionChangeId :: !Text
+  , _aCreated          :: !POSIX
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ActionRevision' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aRevisionId' - The system-generated unique ID that identifies the revision number of the action.
+--
+-- * 'aRevisionChangeId' - The unique identifier of the change that set the state to this revision, for example a deployment ID or timestamp.
+--
+-- * 'aCreated' - The date and time when the most recent version of the action was created, in timestamp format.
+actionRevision
+    :: Text -- ^ 'aRevisionId'
+    -> Text -- ^ 'aRevisionChangeId'
+    -> UTCTime -- ^ 'aCreated'
+    -> ActionRevision
+actionRevision pRevisionId_ pRevisionChangeId_ pCreated_ =
+  ActionRevision'
+  { _aRevisionId = pRevisionId_
+  , _aRevisionChangeId = pRevisionChangeId_
+  , _aCreated = _Time # pCreated_
+  }
+
+
+-- | The system-generated unique ID that identifies the revision number of the action.
+aRevisionId :: Lens' ActionRevision Text
+aRevisionId = lens _aRevisionId (\ s a -> s{_aRevisionId = a});
+
+-- | The unique identifier of the change that set the state to this revision, for example a deployment ID or timestamp.
+aRevisionChangeId :: Lens' ActionRevision Text
+aRevisionChangeId = lens _aRevisionChangeId (\ s a -> s{_aRevisionChangeId = a});
+
+-- | The date and time when the most recent version of the action was created, in timestamp format.
+aCreated :: Lens' ActionRevision UTCTime
+aCreated = lens _aCreated (\ s a -> s{_aCreated = a}) . _Time;
+
+instance FromJSON ActionRevision where
+        parseJSON
+          = withObject "ActionRevision"
+              (\ x ->
+                 ActionRevision' <$>
+                   (x .: "revisionId") <*> (x .: "revisionChangeId") <*>
+                     (x .: "created"))
+
+instance Hashable ActionRevision where
+
+instance NFData ActionRevision where
+
+instance ToJSON ActionRevision where
+        toJSON ActionRevision'{..}
+          = object
+              (catMaybes
+                 [Just ("revisionId" .= _aRevisionId),
+                  Just ("revisionChangeId" .= _aRevisionChangeId),
+                  Just ("created" .= _aCreated)])
+
+-- | Represents information about the state of an action.
+--
+--
+--
+-- /See:/ 'actionState' smart constructor.
+data ActionState = ActionState'
+  { _asRevisionURL     :: !(Maybe Text)
+  , _asEntityURL       :: !(Maybe Text)
+  , _asActionName      :: !(Maybe Text)
+  , _asCurrentRevision :: !(Maybe ActionRevision)
+  , _asLatestExecution :: !(Maybe ActionExecution)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ActionState' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'asRevisionURL' - A URL link for more information about the revision, such as a commit details page.
+--
+-- * 'asEntityURL' - A URL link for more information about the state of the action, such as a deployment group details page.
+--
+-- * 'asActionName' - The name of the action.
+--
+-- * 'asCurrentRevision' - Represents information about the version (or revision) of an action.
+--
+-- * 'asLatestExecution' - Represents information about the run of an action.
+actionState
+    :: ActionState
+actionState =
+  ActionState'
+  { _asRevisionURL = Nothing
+  , _asEntityURL = Nothing
+  , _asActionName = Nothing
+  , _asCurrentRevision = Nothing
+  , _asLatestExecution = Nothing
+  }
+
+
+-- | A URL link for more information about the revision, such as a commit details page.
+asRevisionURL :: Lens' ActionState (Maybe Text)
+asRevisionURL = lens _asRevisionURL (\ s a -> s{_asRevisionURL = a});
+
+-- | A URL link for more information about the state of the action, such as a deployment group details page.
+asEntityURL :: Lens' ActionState (Maybe Text)
+asEntityURL = lens _asEntityURL (\ s a -> s{_asEntityURL = a});
+
+-- | The name of the action.
+asActionName :: Lens' ActionState (Maybe Text)
+asActionName = lens _asActionName (\ s a -> s{_asActionName = a});
+
+-- | Represents information about the version (or revision) of an action.
+asCurrentRevision :: Lens' ActionState (Maybe ActionRevision)
+asCurrentRevision = lens _asCurrentRevision (\ s a -> s{_asCurrentRevision = a});
+
+-- | Represents information about the run of an action.
+asLatestExecution :: Lens' ActionState (Maybe ActionExecution)
+asLatestExecution = lens _asLatestExecution (\ s a -> s{_asLatestExecution = a});
+
+instance FromJSON ActionState where
+        parseJSON
+          = withObject "ActionState"
+              (\ x ->
+                 ActionState' <$>
+                   (x .:? "revisionUrl") <*> (x .:? "entityUrl") <*>
+                     (x .:? "actionName")
+                     <*> (x .:? "currentRevision")
+                     <*> (x .:? "latestExecution"))
+
+instance Hashable ActionState where
+
+instance NFData ActionState where
+
+-- | Returns information about the details of an action type.
+--
+--
+--
+-- /See:/ 'actionType' smart constructor.
+data ActionType = ActionType'
+  { _atSettings                      :: !(Maybe ActionTypeSettings)
+  , _atActionConfigurationProperties :: !(Maybe [ActionConfigurationProperty])
+  , _atId                            :: !ActionTypeId
+  , _atInputArtifactDetails          :: !ArtifactDetails
+  , _atOutputArtifactDetails         :: !ArtifactDetails
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ActionType' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atSettings' - The settings for the action type.
+--
+-- * 'atActionConfigurationProperties' - The configuration properties for the action type.
+--
+-- * 'atId' - Represents information about an action type.
+--
+-- * 'atInputArtifactDetails' - The details of the input artifact for the action, such as its commit ID.
+--
+-- * 'atOutputArtifactDetails' - The details of the output artifact of the action, such as its commit ID.
+actionType
+    :: ActionTypeId -- ^ 'atId'
+    -> ArtifactDetails -- ^ 'atInputArtifactDetails'
+    -> ArtifactDetails -- ^ 'atOutputArtifactDetails'
+    -> ActionType
+actionType pId_ pInputArtifactDetails_ pOutputArtifactDetails_ =
+  ActionType'
+  { _atSettings = Nothing
+  , _atActionConfigurationProperties = Nothing
+  , _atId = pId_
+  , _atInputArtifactDetails = pInputArtifactDetails_
+  , _atOutputArtifactDetails = pOutputArtifactDetails_
+  }
+
+
+-- | The settings for the action type.
+atSettings :: Lens' ActionType (Maybe ActionTypeSettings)
+atSettings = lens _atSettings (\ s a -> s{_atSettings = a});
+
+-- | The configuration properties for the action type.
+atActionConfigurationProperties :: Lens' ActionType [ActionConfigurationProperty]
+atActionConfigurationProperties = lens _atActionConfigurationProperties (\ s a -> s{_atActionConfigurationProperties = a}) . _Default . _Coerce;
+
+-- | Represents information about an action type.
+atId :: Lens' ActionType ActionTypeId
+atId = lens _atId (\ s a -> s{_atId = a});
+
+-- | The details of the input artifact for the action, such as its commit ID.
+atInputArtifactDetails :: Lens' ActionType ArtifactDetails
+atInputArtifactDetails = lens _atInputArtifactDetails (\ s a -> s{_atInputArtifactDetails = a});
+
+-- | The details of the output artifact of the action, such as its commit ID.
+atOutputArtifactDetails :: Lens' ActionType ArtifactDetails
+atOutputArtifactDetails = lens _atOutputArtifactDetails (\ s a -> s{_atOutputArtifactDetails = a});
+
+instance FromJSON ActionType where
+        parseJSON
+          = withObject "ActionType"
+              (\ x ->
+                 ActionType' <$>
+                   (x .:? "settings") <*>
+                     (x .:? "actionConfigurationProperties" .!= mempty)
+                     <*> (x .: "id")
+                     <*> (x .: "inputArtifactDetails")
+                     <*> (x .: "outputArtifactDetails"))
+
+instance Hashable ActionType where
+
+instance NFData ActionType where
+
+-- | Represents information about an action type.
+--
+--
+--
+-- /See:/ 'actionTypeId' smart constructor.
+data ActionTypeId = ActionTypeId'
+  { _atiCategory :: !ActionCategory
+  , _atiOwner    :: !ActionOwner
+  , _atiProvider :: !Text
+  , _atiVersion  :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ActionTypeId' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atiCategory' - A category defines what kind of action can be taken in the stage, and constrains the provider type for the action. Valid categories are limited to one of the values below.
+--
+-- * 'atiOwner' - The creator of the action being called.
+--
+-- * 'atiProvider' - The provider of the service being called by the action. Valid providers are determined by the action category. For example, an action in the Deploy category type might have a provider of AWS CodeDeploy, which would be specified as CodeDeploy.
+--
+-- * 'atiVersion' - A string that identifies the action type.
+actionTypeId
+    :: ActionCategory -- ^ 'atiCategory'
+    -> ActionOwner -- ^ 'atiOwner'
+    -> Text -- ^ 'atiProvider'
+    -> Text -- ^ 'atiVersion'
+    -> ActionTypeId
+actionTypeId pCategory_ pOwner_ pProvider_ pVersion_ =
+  ActionTypeId'
+  { _atiCategory = pCategory_
+  , _atiOwner = pOwner_
+  , _atiProvider = pProvider_
+  , _atiVersion = pVersion_
+  }
+
+
+-- | A category defines what kind of action can be taken in the stage, and constrains the provider type for the action. Valid categories are limited to one of the values below.
+atiCategory :: Lens' ActionTypeId ActionCategory
+atiCategory = lens _atiCategory (\ s a -> s{_atiCategory = a});
+
+-- | The creator of the action being called.
+atiOwner :: Lens' ActionTypeId ActionOwner
+atiOwner = lens _atiOwner (\ s a -> s{_atiOwner = a});
+
+-- | The provider of the service being called by the action. Valid providers are determined by the action category. For example, an action in the Deploy category type might have a provider of AWS CodeDeploy, which would be specified as CodeDeploy.
+atiProvider :: Lens' ActionTypeId Text
+atiProvider = lens _atiProvider (\ s a -> s{_atiProvider = a});
+
+-- | A string that identifies the action type.
+atiVersion :: Lens' ActionTypeId Text
+atiVersion = lens _atiVersion (\ s a -> s{_atiVersion = a});
+
+instance FromJSON ActionTypeId where
+        parseJSON
+          = withObject "ActionTypeId"
+              (\ x ->
+                 ActionTypeId' <$>
+                   (x .: "category") <*> (x .: "owner") <*>
+                     (x .: "provider")
+                     <*> (x .: "version"))
+
+instance Hashable ActionTypeId where
+
+instance NFData ActionTypeId where
+
+instance ToJSON ActionTypeId where
+        toJSON ActionTypeId'{..}
+          = object
+              (catMaybes
+                 [Just ("category" .= _atiCategory),
+                  Just ("owner" .= _atiOwner),
+                  Just ("provider" .= _atiProvider),
+                  Just ("version" .= _atiVersion)])
+
+-- | Returns information about the settings for an action type.
+--
+--
+--
+-- /See:/ 'actionTypeSettings' smart constructor.
+data ActionTypeSettings = ActionTypeSettings'
+  { _atsThirdPartyConfigurationURL :: !(Maybe Text)
+  , _atsExecutionURLTemplate       :: !(Maybe Text)
+  , _atsRevisionURLTemplate        :: !(Maybe Text)
+  , _atsEntityURLTemplate          :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ActionTypeSettings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atsThirdPartyConfigurationURL' - The URL of a sign-up page where users can sign up for an external service and perform initial configuration of the action provided by that service.
+--
+-- * 'atsExecutionURLTemplate' - The URL returned to the AWS CodePipeline console that contains a link to the top-level landing page for the external system, such as console page for AWS CodeDeploy. This link is shown on the pipeline view page in the AWS CodePipeline console and provides a link to the execution entity of the external action.
+--
+-- * 'atsRevisionURLTemplate' - The URL returned to the AWS CodePipeline console that contains a link to the page where customers can update or change the configuration of the external action.
+--
+-- * 'atsEntityURLTemplate' - The URL returned to the AWS CodePipeline console that provides a deep link to the resources of the external system, such as the configuration page for an AWS CodeDeploy deployment group. This link is provided as part of the action display within the pipeline.
+actionTypeSettings
+    :: ActionTypeSettings
+actionTypeSettings =
+  ActionTypeSettings'
+  { _atsThirdPartyConfigurationURL = Nothing
+  , _atsExecutionURLTemplate = Nothing
+  , _atsRevisionURLTemplate = Nothing
+  , _atsEntityURLTemplate = Nothing
+  }
+
+
+-- | The URL of a sign-up page where users can sign up for an external service and perform initial configuration of the action provided by that service.
+atsThirdPartyConfigurationURL :: Lens' ActionTypeSettings (Maybe Text)
+atsThirdPartyConfigurationURL = lens _atsThirdPartyConfigurationURL (\ s a -> s{_atsThirdPartyConfigurationURL = a});
+
+-- | The URL returned to the AWS CodePipeline console that contains a link to the top-level landing page for the external system, such as console page for AWS CodeDeploy. This link is shown on the pipeline view page in the AWS CodePipeline console and provides a link to the execution entity of the external action.
+atsExecutionURLTemplate :: Lens' ActionTypeSettings (Maybe Text)
+atsExecutionURLTemplate = lens _atsExecutionURLTemplate (\ s a -> s{_atsExecutionURLTemplate = a});
+
+-- | The URL returned to the AWS CodePipeline console that contains a link to the page where customers can update or change the configuration of the external action.
+atsRevisionURLTemplate :: Lens' ActionTypeSettings (Maybe Text)
+atsRevisionURLTemplate = lens _atsRevisionURLTemplate (\ s a -> s{_atsRevisionURLTemplate = a});
+
+-- | The URL returned to the AWS CodePipeline console that provides a deep link to the resources of the external system, such as the configuration page for an AWS CodeDeploy deployment group. This link is provided as part of the action display within the pipeline.
+atsEntityURLTemplate :: Lens' ActionTypeSettings (Maybe Text)
+atsEntityURLTemplate = lens _atsEntityURLTemplate (\ s a -> s{_atsEntityURLTemplate = a});
+
+instance FromJSON ActionTypeSettings where
+        parseJSON
+          = withObject "ActionTypeSettings"
+              (\ x ->
+                 ActionTypeSettings' <$>
+                   (x .:? "thirdPartyConfigurationUrl") <*>
+                     (x .:? "executionUrlTemplate")
+                     <*> (x .:? "revisionUrlTemplate")
+                     <*> (x .:? "entityUrlTemplate"))
+
+instance Hashable ActionTypeSettings where
+
+instance NFData ActionTypeSettings where
+
+instance ToJSON ActionTypeSettings where
+        toJSON ActionTypeSettings'{..}
+          = object
+              (catMaybes
+                 [("thirdPartyConfigurationUrl" .=) <$>
+                    _atsThirdPartyConfigurationURL,
+                  ("executionUrlTemplate" .=) <$>
+                    _atsExecutionURLTemplate,
+                  ("revisionUrlTemplate" .=) <$>
+                    _atsRevisionURLTemplate,
+                  ("entityUrlTemplate" .=) <$> _atsEntityURLTemplate])
+
+-- | Represents information about the result of an approval request.
+--
+--
+--
+-- /See:/ 'approvalResult' smart constructor.
+data ApprovalResult = ApprovalResult'
+  { _arSummary :: !Text
+  , _arStatus  :: !ApprovalStatus
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ApprovalResult' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'arSummary' - The summary of the current status of the approval request.
+--
+-- * 'arStatus' - The response submitted by a reviewer assigned to an approval action request.
+approvalResult
+    :: Text -- ^ 'arSummary'
+    -> ApprovalStatus -- ^ 'arStatus'
+    -> ApprovalResult
+approvalResult pSummary_ pStatus_ =
+  ApprovalResult' {_arSummary = pSummary_, _arStatus = pStatus_}
+
+
+-- | The summary of the current status of the approval request.
+arSummary :: Lens' ApprovalResult Text
+arSummary = lens _arSummary (\ s a -> s{_arSummary = a});
+
+-- | The response submitted by a reviewer assigned to an approval action request.
+arStatus :: Lens' ApprovalResult ApprovalStatus
+arStatus = lens _arStatus (\ s a -> s{_arStatus = a});
+
+instance Hashable ApprovalResult where
+
+instance NFData ApprovalResult where
+
+instance ToJSON ApprovalResult where
+        toJSON ApprovalResult'{..}
+          = object
+              (catMaybes
+                 [Just ("summary" .= _arSummary),
+                  Just ("status" .= _arStatus)])
+
+-- | Represents information about an artifact that will be worked upon by actions in the pipeline.
+--
+--
+--
+-- /See:/ 'artifact' smart constructor.
+data Artifact = Artifact'
+  { _aLocation :: !(Maybe ArtifactLocation)
+  , _aName     :: !(Maybe Text)
+  , _aRevision :: !(Maybe Text)
+  } 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:
+--
+-- * 'aLocation' - The location of an artifact.
+--
+-- * 'aName' - The artifact's name.
+--
+-- * 'aRevision' - The artifact's revision ID. Depending on the type of object, this could be a commit ID (GitHub) or a revision ID (Amazon S3).
+artifact
+    :: Artifact
+artifact =
+  Artifact' {_aLocation = Nothing, _aName = Nothing, _aRevision = Nothing}
+
+
+-- | The location of an artifact.
+aLocation :: Lens' Artifact (Maybe ArtifactLocation)
+aLocation = lens _aLocation (\ s a -> s{_aLocation = a});
+
+-- | The artifact's name.
+aName :: Lens' Artifact (Maybe Text)
+aName = lens _aName (\ s a -> s{_aName = a});
+
+-- | The artifact's revision ID. Depending on the type of object, this could be a commit ID (GitHub) or a revision ID (Amazon S3).
+aRevision :: Lens' Artifact (Maybe Text)
+aRevision = lens _aRevision (\ s a -> s{_aRevision = a});
+
+instance FromJSON Artifact where
+        parseJSON
+          = withObject "Artifact"
+              (\ x ->
+                 Artifact' <$>
+                   (x .:? "location") <*> (x .:? "name") <*>
+                     (x .:? "revision"))
+
+instance Hashable Artifact where
+
+instance NFData Artifact where
+
+-- | Returns information about the details of an artifact.
+--
+--
+--
+-- /See:/ 'artifactDetails' smart constructor.
+data ArtifactDetails = ArtifactDetails'
+  { _adMinimumCount :: !Nat
+  , _adMaximumCount :: !Nat
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ArtifactDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'adMinimumCount' - The minimum number of artifacts allowed for the action type.
+--
+-- * 'adMaximumCount' - The maximum number of artifacts allowed for the action type.
+artifactDetails
+    :: Natural -- ^ 'adMinimumCount'
+    -> Natural -- ^ 'adMaximumCount'
+    -> ArtifactDetails
+artifactDetails pMinimumCount_ pMaximumCount_ =
+  ArtifactDetails'
+  { _adMinimumCount = _Nat # pMinimumCount_
+  , _adMaximumCount = _Nat # pMaximumCount_
+  }
+
+
+-- | The minimum number of artifacts allowed for the action type.
+adMinimumCount :: Lens' ArtifactDetails Natural
+adMinimumCount = lens _adMinimumCount (\ s a -> s{_adMinimumCount = a}) . _Nat;
+
+-- | The maximum number of artifacts allowed for the action type.
+adMaximumCount :: Lens' ArtifactDetails Natural
+adMaximumCount = lens _adMaximumCount (\ s a -> s{_adMaximumCount = a}) . _Nat;
+
+instance FromJSON ArtifactDetails where
+        parseJSON
+          = withObject "ArtifactDetails"
+              (\ x ->
+                 ArtifactDetails' <$>
+                   (x .: "minimumCount") <*> (x .: "maximumCount"))
+
+instance Hashable ArtifactDetails where
+
+instance NFData ArtifactDetails where
+
+instance ToJSON ArtifactDetails where
+        toJSON ArtifactDetails'{..}
+          = object
+              (catMaybes
+                 [Just ("minimumCount" .= _adMinimumCount),
+                  Just ("maximumCount" .= _adMaximumCount)])
+
+-- | Represents information about the location of an artifact.
+--
+--
+--
+-- /See:/ 'artifactLocation' smart constructor.
+data ArtifactLocation = ArtifactLocation'
+  { _alS3Location :: !(Maybe S3ArtifactLocation)
+  , _alType       :: !(Maybe ArtifactLocationType)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ArtifactLocation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'alS3Location' - The Amazon S3 bucket that contains the artifact.
+--
+-- * 'alType' - The type of artifact in the location.
+artifactLocation
+    :: ArtifactLocation
+artifactLocation =
+  ArtifactLocation' {_alS3Location = Nothing, _alType = Nothing}
+
+
+-- | The Amazon S3 bucket that contains the artifact.
+alS3Location :: Lens' ArtifactLocation (Maybe S3ArtifactLocation)
+alS3Location = lens _alS3Location (\ s a -> s{_alS3Location = a});
+
+-- | The type of artifact in the location.
+alType :: Lens' ArtifactLocation (Maybe ArtifactLocationType)
+alType = lens _alType (\ s a -> s{_alType = a});
+
+instance FromJSON ArtifactLocation where
+        parseJSON
+          = withObject "ArtifactLocation"
+              (\ x ->
+                 ArtifactLocation' <$>
+                   (x .:? "s3Location") <*> (x .:? "type"))
+
+instance Hashable ArtifactLocation where
+
+instance NFData ArtifactLocation where
+
+-- | Represents revision details of an artifact.
+--
+--
+--
+-- /See:/ 'artifactRevision' smart constructor.
+data ArtifactRevision = ArtifactRevision'
+  { _arRevisionSummary          :: !(Maybe Text)
+  , _arRevisionURL              :: !(Maybe Text)
+  , _arCreated                  :: !(Maybe POSIX)
+  , _arName                     :: !(Maybe Text)
+  , _arRevisionId               :: !(Maybe Text)
+  , _arRevisionChangeIdentifier :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ArtifactRevision' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'arRevisionSummary' - Summary information about the most recent revision of the artifact. For GitHub and AWS CodeCommit repositories, the commit message. For Amazon S3 buckets or actions, the user-provided content of a @codepipeline-artifact-revision-summary@ key specified in the object metadata.
+--
+-- * 'arRevisionURL' - The commit ID for the artifact revision. For artifacts stored in GitHub or AWS CodeCommit repositories, the commit ID is linked to a commit details page.
+--
+-- * 'arCreated' - The date and time when the most recent revision of the artifact was created, in timestamp format.
+--
+-- * 'arName' - The name of an artifact. This name might be system-generated, such as "MyApp", or might be defined by the user when an action is created.
+--
+-- * 'arRevisionId' - The revision ID of the artifact.
+--
+-- * 'arRevisionChangeIdentifier' - An additional identifier for a revision, such as a commit date or, for artifacts stored in Amazon S3 buckets, the ETag value.
+artifactRevision
+    :: ArtifactRevision
+artifactRevision =
+  ArtifactRevision'
+  { _arRevisionSummary = Nothing
+  , _arRevisionURL = Nothing
+  , _arCreated = Nothing
+  , _arName = Nothing
+  , _arRevisionId = Nothing
+  , _arRevisionChangeIdentifier = Nothing
+  }
+
+
+-- | Summary information about the most recent revision of the artifact. For GitHub and AWS CodeCommit repositories, the commit message. For Amazon S3 buckets or actions, the user-provided content of a @codepipeline-artifact-revision-summary@ key specified in the object metadata.
+arRevisionSummary :: Lens' ArtifactRevision (Maybe Text)
+arRevisionSummary = lens _arRevisionSummary (\ s a -> s{_arRevisionSummary = a});
+
+-- | The commit ID for the artifact revision. For artifacts stored in GitHub or AWS CodeCommit repositories, the commit ID is linked to a commit details page.
+arRevisionURL :: Lens' ArtifactRevision (Maybe Text)
+arRevisionURL = lens _arRevisionURL (\ s a -> s{_arRevisionURL = a});
+
+-- | The date and time when the most recent revision of the artifact was created, in timestamp format.
+arCreated :: Lens' ArtifactRevision (Maybe UTCTime)
+arCreated = lens _arCreated (\ s a -> s{_arCreated = a}) . mapping _Time;
+
+-- | The name of an artifact. This name might be system-generated, such as "MyApp", or might be defined by the user when an action is created.
+arName :: Lens' ArtifactRevision (Maybe Text)
+arName = lens _arName (\ s a -> s{_arName = a});
+
+-- | The revision ID of the artifact.
+arRevisionId :: Lens' ArtifactRevision (Maybe Text)
+arRevisionId = lens _arRevisionId (\ s a -> s{_arRevisionId = a});
+
+-- | An additional identifier for a revision, such as a commit date or, for artifacts stored in Amazon S3 buckets, the ETag value.
+arRevisionChangeIdentifier :: Lens' ArtifactRevision (Maybe Text)
+arRevisionChangeIdentifier = lens _arRevisionChangeIdentifier (\ s a -> s{_arRevisionChangeIdentifier = a});
+
+instance FromJSON ArtifactRevision where
+        parseJSON
+          = withObject "ArtifactRevision"
+              (\ x ->
+                 ArtifactRevision' <$>
+                   (x .:? "revisionSummary") <*> (x .:? "revisionUrl")
+                     <*> (x .:? "created")
+                     <*> (x .:? "name")
+                     <*> (x .:? "revisionId")
+                     <*> (x .:? "revisionChangeIdentifier"))
+
+instance Hashable ArtifactRevision where
+
+instance NFData ArtifactRevision where
+
+-- | The Amazon S3 bucket where artifacts are stored for the pipeline.
+--
+--
+--
+-- /See:/ 'artifactStore' smart constructor.
+data ArtifactStore = ArtifactStore'
+  { _asEncryptionKey :: !(Maybe EncryptionKey)
+  , _asType          :: !ArtifactStoreType
+  , _asLocation      :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ArtifactStore' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'asEncryptionKey' - The encryption key used to encrypt the data in the artifact store, such as an AWS Key Management Service (AWS KMS) key. If this is undefined, the default key for Amazon S3 is used.
+--
+-- * 'asType' - The type of the artifact store, such as S3.
+--
+-- * 'asLocation' - The Amazon S3 bucket used for storing the artifacts for a pipeline. You can specify the name of an S3 bucket but not a folder within the bucket. A folder to contain the pipeline artifacts is created for you based on the name of the pipeline. You can use any Amazon S3 bucket in the same AWS Region as the pipeline to store your pipeline artifacts.
+artifactStore
+    :: ArtifactStoreType -- ^ 'asType'
+    -> Text -- ^ 'asLocation'
+    -> ArtifactStore
+artifactStore pType_ pLocation_ =
+  ArtifactStore'
+  {_asEncryptionKey = Nothing, _asType = pType_, _asLocation = pLocation_}
+
+
+-- | The encryption key used to encrypt the data in the artifact store, such as an AWS Key Management Service (AWS KMS) key. If this is undefined, the default key for Amazon S3 is used.
+asEncryptionKey :: Lens' ArtifactStore (Maybe EncryptionKey)
+asEncryptionKey = lens _asEncryptionKey (\ s a -> s{_asEncryptionKey = a});
+
+-- | The type of the artifact store, such as S3.
+asType :: Lens' ArtifactStore ArtifactStoreType
+asType = lens _asType (\ s a -> s{_asType = a});
+
+-- | The Amazon S3 bucket used for storing the artifacts for a pipeline. You can specify the name of an S3 bucket but not a folder within the bucket. A folder to contain the pipeline artifacts is created for you based on the name of the pipeline. You can use any Amazon S3 bucket in the same AWS Region as the pipeline to store your pipeline artifacts.
+asLocation :: Lens' ArtifactStore Text
+asLocation = lens _asLocation (\ s a -> s{_asLocation = a});
+
+instance FromJSON ArtifactStore where
+        parseJSON
+          = withObject "ArtifactStore"
+              (\ x ->
+                 ArtifactStore' <$>
+                   (x .:? "encryptionKey") <*> (x .: "type") <*>
+                     (x .: "location"))
+
+instance Hashable ArtifactStore where
+
+instance NFData ArtifactStore where
+
+instance ToJSON ArtifactStore where
+        toJSON ArtifactStore'{..}
+          = object
+              (catMaybes
+                 [("encryptionKey" .=) <$> _asEncryptionKey,
+                  Just ("type" .= _asType),
+                  Just ("location" .= _asLocation)])
+
+-- | Reserved for future use.
+--
+--
+--
+-- /See:/ 'blockerDeclaration' smart constructor.
+data BlockerDeclaration = BlockerDeclaration'
+  { _bdName :: !Text
+  , _bdType :: !BlockerType
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'BlockerDeclaration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bdName' - Reserved for future use.
+--
+-- * 'bdType' - Reserved for future use.
+blockerDeclaration
+    :: Text -- ^ 'bdName'
+    -> BlockerType -- ^ 'bdType'
+    -> BlockerDeclaration
+blockerDeclaration pName_ pType_ =
+  BlockerDeclaration' {_bdName = pName_, _bdType = pType_}
+
+
+-- | Reserved for future use.
+bdName :: Lens' BlockerDeclaration Text
+bdName = lens _bdName (\ s a -> s{_bdName = a});
+
+-- | Reserved for future use.
+bdType :: Lens' BlockerDeclaration BlockerType
+bdType = lens _bdType (\ s a -> s{_bdType = a});
+
+instance FromJSON BlockerDeclaration where
+        parseJSON
+          = withObject "BlockerDeclaration"
+              (\ x ->
+                 BlockerDeclaration' <$>
+                   (x .: "name") <*> (x .: "type"))
+
+instance Hashable BlockerDeclaration where
+
+instance NFData BlockerDeclaration where
+
+instance ToJSON BlockerDeclaration where
+        toJSON BlockerDeclaration'{..}
+          = object
+              (catMaybes
+                 [Just ("name" .= _bdName), Just ("type" .= _bdType)])
+
+-- | Represents information about a current revision.
+--
+--
+--
+-- /See:/ 'currentRevision' smart constructor.
+data CurrentRevision = CurrentRevision'
+  { _crRevisionSummary  :: !(Maybe Text)
+  , _crCreated          :: !(Maybe POSIX)
+  , _crRevision         :: !Text
+  , _crChangeIdentifier :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CurrentRevision' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crRevisionSummary' - The summary of the most recent revision of the artifact.
+--
+-- * 'crCreated' - The date and time when the most recent revision of the artifact was created, in timestamp format.
+--
+-- * 'crRevision' - The revision ID of the current version of an artifact.
+--
+-- * 'crChangeIdentifier' - The change identifier for the current revision.
+currentRevision
+    :: Text -- ^ 'crRevision'
+    -> Text -- ^ 'crChangeIdentifier'
+    -> CurrentRevision
+currentRevision pRevision_ pChangeIdentifier_ =
+  CurrentRevision'
+  { _crRevisionSummary = Nothing
+  , _crCreated = Nothing
+  , _crRevision = pRevision_
+  , _crChangeIdentifier = pChangeIdentifier_
+  }
+
+
+-- | The summary of the most recent revision of the artifact.
+crRevisionSummary :: Lens' CurrentRevision (Maybe Text)
+crRevisionSummary = lens _crRevisionSummary (\ s a -> s{_crRevisionSummary = a});
+
+-- | The date and time when the most recent revision of the artifact was created, in timestamp format.
+crCreated :: Lens' CurrentRevision (Maybe UTCTime)
+crCreated = lens _crCreated (\ s a -> s{_crCreated = a}) . mapping _Time;
+
+-- | The revision ID of the current version of an artifact.
+crRevision :: Lens' CurrentRevision Text
+crRevision = lens _crRevision (\ s a -> s{_crRevision = a});
+
+-- | The change identifier for the current revision.
+crChangeIdentifier :: Lens' CurrentRevision Text
+crChangeIdentifier = lens _crChangeIdentifier (\ s a -> s{_crChangeIdentifier = a});
+
+instance Hashable CurrentRevision where
+
+instance NFData CurrentRevision where
+
+instance ToJSON CurrentRevision where
+        toJSON CurrentRevision'{..}
+          = object
+              (catMaybes
+                 [("revisionSummary" .=) <$> _crRevisionSummary,
+                  ("created" .=) <$> _crCreated,
+                  Just ("revision" .= _crRevision),
+                  Just ("changeIdentifier" .= _crChangeIdentifier)])
+
+-- | Represents information about the key used to encrypt data in the artifact store, such as an AWS Key Management Service (AWS KMS) key.
+--
+--
+--
+-- /See:/ 'encryptionKey' smart constructor.
+data EncryptionKey = EncryptionKey'
+  { _ekId   :: !Text
+  , _ekType :: !EncryptionKeyType
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'EncryptionKey' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ekId' - The ID used to identify the key. For an AWS KMS key, this is the key ID or key ARN.
+--
+-- * 'ekType' - The type of encryption key, such as an AWS Key Management Service (AWS KMS) key. When creating or updating a pipeline, the value must be set to 'KMS'.
+encryptionKey
+    :: Text -- ^ 'ekId'
+    -> EncryptionKeyType -- ^ 'ekType'
+    -> EncryptionKey
+encryptionKey pId_ pType_ = EncryptionKey' {_ekId = pId_, _ekType = pType_}
+
+
+-- | The ID used to identify the key. For an AWS KMS key, this is the key ID or key ARN.
+ekId :: Lens' EncryptionKey Text
+ekId = lens _ekId (\ s a -> s{_ekId = a});
+
+-- | The type of encryption key, such as an AWS Key Management Service (AWS KMS) key. When creating or updating a pipeline, the value must be set to 'KMS'.
+ekType :: Lens' EncryptionKey EncryptionKeyType
+ekType = lens _ekType (\ s a -> s{_ekType = a});
+
+instance FromJSON EncryptionKey where
+        parseJSON
+          = withObject "EncryptionKey"
+              (\ x ->
+                 EncryptionKey' <$> (x .: "id") <*> (x .: "type"))
+
+instance Hashable EncryptionKey where
+
+instance NFData EncryptionKey where
+
+instance ToJSON EncryptionKey where
+        toJSON EncryptionKey'{..}
+          = object
+              (catMaybes
+                 [Just ("id" .= _ekId), Just ("type" .= _ekType)])
+
+-- | Represents information about an error in AWS CodePipeline.
+--
+--
+--
+-- /See:/ 'errorDetails' smart constructor.
+data ErrorDetails = ErrorDetails'
+  { _edCode    :: !(Maybe Text)
+  , _edMessage :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ErrorDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'edCode' - The system ID or error number code of the error.
+--
+-- * 'edMessage' - The text of the error message.
+errorDetails
+    :: ErrorDetails
+errorDetails = ErrorDetails' {_edCode = Nothing, _edMessage = Nothing}
+
+
+-- | The system ID or error number code of the error.
+edCode :: Lens' ErrorDetails (Maybe Text)
+edCode = lens _edCode (\ s a -> s{_edCode = a});
+
+-- | The text of the error message.
+edMessage :: Lens' ErrorDetails (Maybe Text)
+edMessage = lens _edMessage (\ s a -> s{_edMessage = a});
+
+instance FromJSON ErrorDetails where
+        parseJSON
+          = withObject "ErrorDetails"
+              (\ x ->
+                 ErrorDetails' <$>
+                   (x .:? "code") <*> (x .:? "message"))
+
+instance Hashable ErrorDetails where
+
+instance NFData ErrorDetails where
+
+-- | The details of the actions taken and results produced on an artifact as it passes through stages in the pipeline.
+--
+--
+--
+-- /See:/ 'executionDetails' smart constructor.
+data ExecutionDetails = ExecutionDetails'
+  { _edSummary             :: !(Maybe Text)
+  , _edExternalExecutionId :: !(Maybe Text)
+  , _edPercentComplete     :: !(Maybe Nat)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ExecutionDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'edSummary' - The summary of the current status of the actions.
+--
+-- * 'edExternalExecutionId' - The system-generated unique ID of this action used to identify this job worker in any external systems, such as AWS CodeDeploy.
+--
+-- * 'edPercentComplete' - The percentage of work completed on the action, represented on a scale of zero to one hundred percent.
+executionDetails
+    :: ExecutionDetails
+executionDetails =
+  ExecutionDetails'
+  { _edSummary = Nothing
+  , _edExternalExecutionId = Nothing
+  , _edPercentComplete = Nothing
+  }
+
+
+-- | The summary of the current status of the actions.
+edSummary :: Lens' ExecutionDetails (Maybe Text)
+edSummary = lens _edSummary (\ s a -> s{_edSummary = a});
+
+-- | The system-generated unique ID of this action used to identify this job worker in any external systems, such as AWS CodeDeploy.
+edExternalExecutionId :: Lens' ExecutionDetails (Maybe Text)
+edExternalExecutionId = lens _edExternalExecutionId (\ s a -> s{_edExternalExecutionId = a});
+
+-- | The percentage of work completed on the action, represented on a scale of zero to one hundred percent.
+edPercentComplete :: Lens' ExecutionDetails (Maybe Natural)
+edPercentComplete = lens _edPercentComplete (\ s a -> s{_edPercentComplete = a}) . mapping _Nat;
+
+instance Hashable ExecutionDetails where
+
+instance NFData ExecutionDetails where
+
+instance ToJSON ExecutionDetails where
+        toJSON ExecutionDetails'{..}
+          = object
+              (catMaybes
+                 [("summary" .=) <$> _edSummary,
+                  ("externalExecutionId" .=) <$>
+                    _edExternalExecutionId,
+                  ("percentComplete" .=) <$> _edPercentComplete])
+
+-- | Represents information about failure details.
+--
+--
+--
+-- /See:/ 'failureDetails' smart constructor.
+data FailureDetails = FailureDetails'
+  { _fdExternalExecutionId :: !(Maybe Text)
+  , _fdType                :: !FailureType
+  , _fdMessage             :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FailureDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fdExternalExecutionId' - The external ID of the run of the action that failed.
+--
+-- * 'fdType' - The type of the failure.
+--
+-- * 'fdMessage' - The message about the failure.
+failureDetails
+    :: FailureType -- ^ 'fdType'
+    -> Text -- ^ 'fdMessage'
+    -> FailureDetails
+failureDetails pType_ pMessage_ =
+  FailureDetails'
+  {_fdExternalExecutionId = Nothing, _fdType = pType_, _fdMessage = pMessage_}
+
+
+-- | The external ID of the run of the action that failed.
+fdExternalExecutionId :: Lens' FailureDetails (Maybe Text)
+fdExternalExecutionId = lens _fdExternalExecutionId (\ s a -> s{_fdExternalExecutionId = a});
+
+-- | The type of the failure.
+fdType :: Lens' FailureDetails FailureType
+fdType = lens _fdType (\ s a -> s{_fdType = a});
+
+-- | The message about the failure.
+fdMessage :: Lens' FailureDetails Text
+fdMessage = lens _fdMessage (\ s a -> s{_fdMessage = a});
+
+instance Hashable FailureDetails where
+
+instance NFData FailureDetails where
+
+instance ToJSON FailureDetails where
+        toJSON FailureDetails'{..}
+          = object
+              (catMaybes
+                 [("externalExecutionId" .=) <$>
+                    _fdExternalExecutionId,
+                  Just ("type" .= _fdType),
+                  Just ("message" .= _fdMessage)])
+
+-- | Represents information about an artifact to be worked on, such as a test or build artifact.
+--
+--
+--
+-- /See:/ 'inputArtifact' smart constructor.
+newtype InputArtifact = InputArtifact'
+  { _iaName :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InputArtifact' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iaName' - The name of the artifact to be worked on, for example, "My App". The input artifact of an action must exactly match the output artifact declared in a preceding action, but the input artifact does not have to be the next action in strict sequence from the action that provided the output artifact. Actions in parallel can declare different output artifacts, which are in turn consumed by different following actions.
+inputArtifact
+    :: Text -- ^ 'iaName'
+    -> InputArtifact
+inputArtifact pName_ = InputArtifact' {_iaName = pName_}
+
+
+-- | The name of the artifact to be worked on, for example, "My App". The input artifact of an action must exactly match the output artifact declared in a preceding action, but the input artifact does not have to be the next action in strict sequence from the action that provided the output artifact. Actions in parallel can declare different output artifacts, which are in turn consumed by different following actions.
+iaName :: Lens' InputArtifact Text
+iaName = lens _iaName (\ s a -> s{_iaName = a});
+
+instance FromJSON InputArtifact where
+        parseJSON
+          = withObject "InputArtifact"
+              (\ x -> InputArtifact' <$> (x .: "name"))
+
+instance Hashable InputArtifact where
+
+instance NFData InputArtifact where
+
+instance ToJSON InputArtifact where
+        toJSON InputArtifact'{..}
+          = object (catMaybes [Just ("name" .= _iaName)])
+
+-- | Represents information about a job.
+--
+--
+--
+-- /See:/ 'job' smart constructor.
+data Job = Job'
+  { _jData      :: !(Maybe JobData)
+  , _jAccountId :: !(Maybe Text)
+  , _jId        :: !(Maybe Text)
+  , _jNonce     :: !(Maybe Text)
+  } deriving (Eq, 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:
+--
+-- * 'jData' - Additional data about a job.
+--
+-- * 'jAccountId' - The ID of the AWS account to use when performing the job.
+--
+-- * 'jId' - The unique system-generated ID of the job.
+--
+-- * 'jNonce' - A system-generated random number that AWS CodePipeline uses to ensure that the job is being worked on by only one job worker. Use this number in an 'AcknowledgeJob' request.
+job
+    :: Job
+job =
+  Job'
+  {_jData = Nothing, _jAccountId = Nothing, _jId = Nothing, _jNonce = Nothing}
+
+
+-- | Additional data about a job.
+jData :: Lens' Job (Maybe JobData)
+jData = lens _jData (\ s a -> s{_jData = a});
+
+-- | The ID of the AWS account to use when performing the job.
+jAccountId :: Lens' Job (Maybe Text)
+jAccountId = lens _jAccountId (\ s a -> s{_jAccountId = a});
+
+-- | The unique system-generated ID of the job.
+jId :: Lens' Job (Maybe Text)
+jId = lens _jId (\ s a -> s{_jId = a});
+
+-- | A system-generated random number that AWS CodePipeline uses to ensure that the job is being worked on by only one job worker. Use this number in an 'AcknowledgeJob' request.
+jNonce :: Lens' Job (Maybe Text)
+jNonce = lens _jNonce (\ s a -> s{_jNonce = a});
+
+instance FromJSON Job where
+        parseJSON
+          = withObject "Job"
+              (\ x ->
+                 Job' <$>
+                   (x .:? "data") <*> (x .:? "accountId") <*>
+                     (x .:? "id")
+                     <*> (x .:? "nonce"))
+
+instance Hashable Job where
+
+instance NFData Job where
+
+-- | Represents additional information about a job required for a job worker to complete the job.
+--
+--
+--
+-- /See:/ 'jobData' smart constructor.
+data JobData = JobData'
+  { _jdContinuationToken   :: !(Maybe Text)
+  , _jdOutputArtifacts     :: !(Maybe [Artifact])
+  , _jdArtifactCredentials :: !(Maybe (Sensitive AWSSessionCredentials))
+  , _jdPipelineContext     :: !(Maybe PipelineContext)
+  , _jdEncryptionKey       :: !(Maybe EncryptionKey)
+  , _jdActionTypeId        :: !(Maybe ActionTypeId)
+  , _jdInputArtifacts      :: !(Maybe [Artifact])
+  , _jdActionConfiguration :: !(Maybe ActionConfiguration)
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'JobData' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'jdContinuationToken' - A system-generated token, such as a AWS CodeDeploy deployment ID, that a job requires in order to continue the job asynchronously.
+--
+-- * 'jdOutputArtifacts' - The output of the job.
+--
+-- * 'jdArtifactCredentials' - Represents an AWS session credentials object. These credentials are temporary credentials that are issued by AWS Secure Token Service (STS). They can be used to access input and output artifacts in the Amazon S3 bucket used to store artifact for the pipeline in AWS CodePipeline.
+--
+-- * 'jdPipelineContext' - Represents information about a pipeline to a job worker.
+--
+-- * 'jdEncryptionKey' - Represents information about the key used to encrypt data in the artifact store, such as an AWS Key Management Service (AWS KMS) key.
+--
+-- * 'jdActionTypeId' - Represents information about an action type.
+--
+-- * 'jdInputArtifacts' - The artifact supplied to the job.
+--
+-- * 'jdActionConfiguration' - Represents information about an action configuration.
+jobData
+    :: JobData
+jobData =
+  JobData'
+  { _jdContinuationToken = Nothing
+  , _jdOutputArtifacts = Nothing
+  , _jdArtifactCredentials = Nothing
+  , _jdPipelineContext = Nothing
+  , _jdEncryptionKey = Nothing
+  , _jdActionTypeId = Nothing
+  , _jdInputArtifacts = Nothing
+  , _jdActionConfiguration = Nothing
+  }
+
+
+-- | A system-generated token, such as a AWS CodeDeploy deployment ID, that a job requires in order to continue the job asynchronously.
+jdContinuationToken :: Lens' JobData (Maybe Text)
+jdContinuationToken = lens _jdContinuationToken (\ s a -> s{_jdContinuationToken = a});
+
+-- | The output of the job.
+jdOutputArtifacts :: Lens' JobData [Artifact]
+jdOutputArtifacts = lens _jdOutputArtifacts (\ s a -> s{_jdOutputArtifacts = a}) . _Default . _Coerce;
+
+-- | Represents an AWS session credentials object. These credentials are temporary credentials that are issued by AWS Secure Token Service (STS). They can be used to access input and output artifacts in the Amazon S3 bucket used to store artifact for the pipeline in AWS CodePipeline.
+jdArtifactCredentials :: Lens' JobData (Maybe AWSSessionCredentials)
+jdArtifactCredentials = lens _jdArtifactCredentials (\ s a -> s{_jdArtifactCredentials = a}) . mapping _Sensitive;
+
+-- | Represents information about a pipeline to a job worker.
+jdPipelineContext :: Lens' JobData (Maybe PipelineContext)
+jdPipelineContext = lens _jdPipelineContext (\ s a -> s{_jdPipelineContext = a});
+
+-- | Represents information about the key used to encrypt data in the artifact store, such as an AWS Key Management Service (AWS KMS) key.
+jdEncryptionKey :: Lens' JobData (Maybe EncryptionKey)
+jdEncryptionKey = lens _jdEncryptionKey (\ s a -> s{_jdEncryptionKey = a});
+
+-- | Represents information about an action type.
+jdActionTypeId :: Lens' JobData (Maybe ActionTypeId)
+jdActionTypeId = lens _jdActionTypeId (\ s a -> s{_jdActionTypeId = a});
+
+-- | The artifact supplied to the job.
+jdInputArtifacts :: Lens' JobData [Artifact]
+jdInputArtifacts = lens _jdInputArtifacts (\ s a -> s{_jdInputArtifacts = a}) . _Default . _Coerce;
+
+-- | Represents information about an action configuration.
+jdActionConfiguration :: Lens' JobData (Maybe ActionConfiguration)
+jdActionConfiguration = lens _jdActionConfiguration (\ s a -> s{_jdActionConfiguration = a});
+
+instance FromJSON JobData where
+        parseJSON
+          = withObject "JobData"
+              (\ x ->
+                 JobData' <$>
+                   (x .:? "continuationToken") <*>
+                     (x .:? "outputArtifacts" .!= mempty)
+                     <*> (x .:? "artifactCredentials")
+                     <*> (x .:? "pipelineContext")
+                     <*> (x .:? "encryptionKey")
+                     <*> (x .:? "actionTypeId")
+                     <*> (x .:? "inputArtifacts" .!= mempty)
+                     <*> (x .:? "actionConfiguration"))
+
+instance Hashable JobData where
+
+instance NFData JobData where
+
+-- | Represents information about the details of a job.
+--
+--
+--
+-- /See:/ 'jobDetails' smart constructor.
+data JobDetails = JobDetails'
+  { _jdData      :: !(Maybe JobData)
+  , _jdAccountId :: !(Maybe Text)
+  , _jdId        :: !(Maybe Text)
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'JobDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'jdData' - Represents additional information about a job required for a job worker to complete the job.
+--
+-- * 'jdAccountId' - The AWS account ID associated with the job.
+--
+-- * 'jdId' - The unique system-generated ID of the job.
+jobDetails
+    :: JobDetails
+jobDetails =
+  JobDetails' {_jdData = Nothing, _jdAccountId = Nothing, _jdId = Nothing}
+
+
+-- | Represents additional information about a job required for a job worker to complete the job.
+jdData :: Lens' JobDetails (Maybe JobData)
+jdData = lens _jdData (\ s a -> s{_jdData = a});
+
+-- | The AWS account ID associated with the job.
+jdAccountId :: Lens' JobDetails (Maybe Text)
+jdAccountId = lens _jdAccountId (\ s a -> s{_jdAccountId = a});
+
+-- | The unique system-generated ID of the job.
+jdId :: Lens' JobDetails (Maybe Text)
+jdId = lens _jdId (\ s a -> s{_jdId = a});
+
+instance FromJSON JobDetails where
+        parseJSON
+          = withObject "JobDetails"
+              (\ x ->
+                 JobDetails' <$>
+                   (x .:? "data") <*> (x .:? "accountId") <*>
+                     (x .:? "id"))
+
+instance Hashable JobDetails where
+
+instance NFData JobDetails where
+
+-- | Represents information about the output of an action.
+--
+--
+--
+-- /See:/ 'outputArtifact' smart constructor.
+newtype OutputArtifact = OutputArtifact'
+  { _oaName :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'OutputArtifact' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oaName' - The name of the output of an artifact, such as "My App". The input artifact of an action must exactly match the output artifact declared in a preceding action, but the input artifact does not have to be the next action in strict sequence from the action that provided the output artifact. Actions in parallel can declare different output artifacts, which are in turn consumed by different following actions. Output artifact names must be unique within a pipeline.
+outputArtifact
+    :: Text -- ^ 'oaName'
+    -> OutputArtifact
+outputArtifact pName_ = OutputArtifact' {_oaName = pName_}
+
+
+-- | The name of the output of an artifact, such as "My App". The input artifact of an action must exactly match the output artifact declared in a preceding action, but the input artifact does not have to be the next action in strict sequence from the action that provided the output artifact. Actions in parallel can declare different output artifacts, which are in turn consumed by different following actions. Output artifact names must be unique within a pipeline.
+oaName :: Lens' OutputArtifact Text
+oaName = lens _oaName (\ s a -> s{_oaName = a});
+
+instance FromJSON OutputArtifact where
+        parseJSON
+          = withObject "OutputArtifact"
+              (\ x -> OutputArtifact' <$> (x .: "name"))
+
+instance Hashable OutputArtifact where
+
+instance NFData OutputArtifact where
+
+instance ToJSON OutputArtifact where
+        toJSON OutputArtifact'{..}
+          = object (catMaybes [Just ("name" .= _oaName)])
+
+-- | Represents information about a pipeline to a job worker.
+--
+--
+--
+-- /See:/ 'pipelineContext' smart constructor.
+data PipelineContext = PipelineContext'
+  { _pcStage        :: !(Maybe StageContext)
+  , _pcPipelineName :: !(Maybe Text)
+  , _pcAction       :: !(Maybe ActionContext)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PipelineContext' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pcStage' - The stage of the pipeline.
+--
+-- * 'pcPipelineName' - The name of the pipeline. This is a user-specified value. Pipeline names must be unique across all pipeline names under an Amazon Web Services account.
+--
+-- * 'pcAction' - The context of an action to a job worker within the stage of a pipeline.
+pipelineContext
+    :: PipelineContext
+pipelineContext =
+  PipelineContext'
+  {_pcStage = Nothing, _pcPipelineName = Nothing, _pcAction = Nothing}
+
+
+-- | The stage of the pipeline.
+pcStage :: Lens' PipelineContext (Maybe StageContext)
+pcStage = lens _pcStage (\ s a -> s{_pcStage = a});
+
+-- | The name of the pipeline. This is a user-specified value. Pipeline names must be unique across all pipeline names under an Amazon Web Services account.
+pcPipelineName :: Lens' PipelineContext (Maybe Text)
+pcPipelineName = lens _pcPipelineName (\ s a -> s{_pcPipelineName = a});
+
+-- | The context of an action to a job worker within the stage of a pipeline.
+pcAction :: Lens' PipelineContext (Maybe ActionContext)
+pcAction = lens _pcAction (\ s a -> s{_pcAction = a});
+
+instance FromJSON PipelineContext where
+        parseJSON
+          = withObject "PipelineContext"
+              (\ x ->
+                 PipelineContext' <$>
+                   (x .:? "stage") <*> (x .:? "pipelineName") <*>
+                     (x .:? "action"))
+
+instance Hashable PipelineContext where
+
+instance NFData PipelineContext where
+
+-- | Represents the structure of actions and stages to be performed in the pipeline.
+--
+--
+--
+-- /See:/ 'pipelineDeclaration' smart constructor.
+data PipelineDeclaration = PipelineDeclaration'
+  { _pdVersion       :: !(Maybe Nat)
+  , _pdName          :: !Text
+  , _pdRoleARN       :: !Text
+  , _pdArtifactStore :: !ArtifactStore
+  , _pdStages        :: ![StageDeclaration]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PipelineDeclaration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pdVersion' - The version number of the pipeline. A new pipeline always has a version number of 1. This number is automatically incremented when a pipeline is updated.
+--
+-- * 'pdName' - The name of the action to be performed.
+--
+-- * 'pdRoleARN' - The Amazon Resource Name (ARN) for AWS CodePipeline to use to either perform actions with no actionRoleArn, or to use to assume roles for actions with an actionRoleArn.
+--
+-- * 'pdArtifactStore' - Represents information about the Amazon S3 bucket where artifacts are stored for the pipeline.
+--
+-- * 'pdStages' - The stage in which to perform the action.
+pipelineDeclaration
+    :: Text -- ^ 'pdName'
+    -> Text -- ^ 'pdRoleARN'
+    -> ArtifactStore -- ^ 'pdArtifactStore'
+    -> PipelineDeclaration
+pipelineDeclaration pName_ pRoleARN_ pArtifactStore_ =
+  PipelineDeclaration'
+  { _pdVersion = Nothing
+  , _pdName = pName_
+  , _pdRoleARN = pRoleARN_
+  , _pdArtifactStore = pArtifactStore_
+  , _pdStages = mempty
+  }
+
+
+-- | The version number of the pipeline. A new pipeline always has a version number of 1. This number is automatically incremented when a pipeline is updated.
+pdVersion :: Lens' PipelineDeclaration (Maybe Natural)
+pdVersion = lens _pdVersion (\ s a -> s{_pdVersion = a}) . mapping _Nat;
+
+-- | The name of the action to be performed.
+pdName :: Lens' PipelineDeclaration Text
+pdName = lens _pdName (\ s a -> s{_pdName = a});
+
+-- | The Amazon Resource Name (ARN) for AWS CodePipeline to use to either perform actions with no actionRoleArn, or to use to assume roles for actions with an actionRoleArn.
+pdRoleARN :: Lens' PipelineDeclaration Text
+pdRoleARN = lens _pdRoleARN (\ s a -> s{_pdRoleARN = a});
+
+-- | Represents information about the Amazon S3 bucket where artifacts are stored for the pipeline.
+pdArtifactStore :: Lens' PipelineDeclaration ArtifactStore
+pdArtifactStore = lens _pdArtifactStore (\ s a -> s{_pdArtifactStore = a});
+
+-- | The stage in which to perform the action.
+pdStages :: Lens' PipelineDeclaration [StageDeclaration]
+pdStages = lens _pdStages (\ s a -> s{_pdStages = a}) . _Coerce;
+
+instance FromJSON PipelineDeclaration where
+        parseJSON
+          = withObject "PipelineDeclaration"
+              (\ x ->
+                 PipelineDeclaration' <$>
+                   (x .:? "version") <*> (x .: "name") <*>
+                     (x .: "roleArn")
+                     <*> (x .: "artifactStore")
+                     <*> (x .:? "stages" .!= mempty))
+
+instance Hashable PipelineDeclaration where
+
+instance NFData PipelineDeclaration where
+
+instance ToJSON PipelineDeclaration where
+        toJSON PipelineDeclaration'{..}
+          = object
+              (catMaybes
+                 [("version" .=) <$> _pdVersion,
+                  Just ("name" .= _pdName),
+                  Just ("roleArn" .= _pdRoleARN),
+                  Just ("artifactStore" .= _pdArtifactStore),
+                  Just ("stages" .= _pdStages)])
+
+-- | Represents information about an execution of a pipeline.
+--
+--
+--
+-- /See:/ 'pipelineExecution' smart constructor.
+data PipelineExecution = PipelineExecution'
+  { _peStatus              :: !(Maybe PipelineExecutionStatus)
+  , _pePipelineName        :: !(Maybe Text)
+  , _pePipelineVersion     :: !(Maybe Nat)
+  , _pePipelineExecutionId :: !(Maybe Text)
+  , _peArtifactRevisions   :: !(Maybe [ArtifactRevision])
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PipelineExecution' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'peStatus' - The status of the pipeline execution.     * InProgress: The pipeline execution is currently running.     * Succeeded: The pipeline execution was completed successfully.      * Superseded: While this pipeline execution was waiting for the next stage to be completed, a newer pipeline execution advanced and continued through the pipeline instead.      * Failed: The pipeline execution was not completed successfully.
+--
+-- * 'pePipelineName' - The name of the pipeline that was executed.
+--
+-- * 'pePipelineVersion' - The version number of the pipeline that was executed.
+--
+-- * 'pePipelineExecutionId' - The ID of the pipeline execution.
+--
+-- * 'peArtifactRevisions' - A list of ArtifactRevision objects included in a pipeline execution.
+pipelineExecution
+    :: PipelineExecution
+pipelineExecution =
+  PipelineExecution'
+  { _peStatus = Nothing
+  , _pePipelineName = Nothing
+  , _pePipelineVersion = Nothing
+  , _pePipelineExecutionId = Nothing
+  , _peArtifactRevisions = Nothing
+  }
+
+
+-- | The status of the pipeline execution.     * InProgress: The pipeline execution is currently running.     * Succeeded: The pipeline execution was completed successfully.      * Superseded: While this pipeline execution was waiting for the next stage to be completed, a newer pipeline execution advanced and continued through the pipeline instead.      * Failed: The pipeline execution was not completed successfully.
+peStatus :: Lens' PipelineExecution (Maybe PipelineExecutionStatus)
+peStatus = lens _peStatus (\ s a -> s{_peStatus = a});
+
+-- | The name of the pipeline that was executed.
+pePipelineName :: Lens' PipelineExecution (Maybe Text)
+pePipelineName = lens _pePipelineName (\ s a -> s{_pePipelineName = a});
+
+-- | The version number of the pipeline that was executed.
+pePipelineVersion :: Lens' PipelineExecution (Maybe Natural)
+pePipelineVersion = lens _pePipelineVersion (\ s a -> s{_pePipelineVersion = a}) . mapping _Nat;
+
+-- | The ID of the pipeline execution.
+pePipelineExecutionId :: Lens' PipelineExecution (Maybe Text)
+pePipelineExecutionId = lens _pePipelineExecutionId (\ s a -> s{_pePipelineExecutionId = a});
+
+-- | A list of ArtifactRevision objects included in a pipeline execution.
+peArtifactRevisions :: Lens' PipelineExecution [ArtifactRevision]
+peArtifactRevisions = lens _peArtifactRevisions (\ s a -> s{_peArtifactRevisions = a}) . _Default . _Coerce;
+
+instance FromJSON PipelineExecution where
+        parseJSON
+          = withObject "PipelineExecution"
+              (\ x ->
+                 PipelineExecution' <$>
+                   (x .:? "status") <*> (x .:? "pipelineName") <*>
+                     (x .:? "pipelineVersion")
+                     <*> (x .:? "pipelineExecutionId")
+                     <*> (x .:? "artifactRevisions" .!= mempty))
+
+instance Hashable PipelineExecution where
+
+instance NFData PipelineExecution where
+
+-- | Summary information about a pipeline execution.
+--
+--
+--
+-- /See:/ 'pipelineExecutionSummary' smart constructor.
+data PipelineExecutionSummary = PipelineExecutionSummary'
+  { _pesStatus              :: !(Maybe PipelineExecutionStatus)
+  , _pesStartTime           :: !(Maybe POSIX)
+  , _pesPipelineExecutionId :: !(Maybe Text)
+  , _pesLastUpdateTime      :: !(Maybe POSIX)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PipelineExecutionSummary' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pesStatus' - The status of the pipeline execution.     * InProgress: The pipeline execution is currently running.     * Succeeded: The pipeline execution was completed successfully.      * Superseded: While this pipeline execution was waiting for the next stage to be completed, a newer pipeline execution advanced and continued through the pipeline instead.      * Failed: The pipeline execution was not completed successfully.
+--
+-- * 'pesStartTime' - The date and time when the pipeline execution began, in timestamp format.
+--
+-- * 'pesPipelineExecutionId' - The ID of the pipeline execution.
+--
+-- * 'pesLastUpdateTime' - The date and time of the last change to the pipeline execution, in timestamp format.
+pipelineExecutionSummary
+    :: PipelineExecutionSummary
+pipelineExecutionSummary =
+  PipelineExecutionSummary'
+  { _pesStatus = Nothing
+  , _pesStartTime = Nothing
+  , _pesPipelineExecutionId = Nothing
+  , _pesLastUpdateTime = Nothing
+  }
+
+
+-- | The status of the pipeline execution.     * InProgress: The pipeline execution is currently running.     * Succeeded: The pipeline execution was completed successfully.      * Superseded: While this pipeline execution was waiting for the next stage to be completed, a newer pipeline execution advanced and continued through the pipeline instead.      * Failed: The pipeline execution was not completed successfully.
+pesStatus :: Lens' PipelineExecutionSummary (Maybe PipelineExecutionStatus)
+pesStatus = lens _pesStatus (\ s a -> s{_pesStatus = a});
+
+-- | The date and time when the pipeline execution began, in timestamp format.
+pesStartTime :: Lens' PipelineExecutionSummary (Maybe UTCTime)
+pesStartTime = lens _pesStartTime (\ s a -> s{_pesStartTime = a}) . mapping _Time;
+
+-- | The ID of the pipeline execution.
+pesPipelineExecutionId :: Lens' PipelineExecutionSummary (Maybe Text)
+pesPipelineExecutionId = lens _pesPipelineExecutionId (\ s a -> s{_pesPipelineExecutionId = a});
+
+-- | The date and time of the last change to the pipeline execution, in timestamp format.
+pesLastUpdateTime :: Lens' PipelineExecutionSummary (Maybe UTCTime)
+pesLastUpdateTime = lens _pesLastUpdateTime (\ s a -> s{_pesLastUpdateTime = a}) . mapping _Time;
+
+instance FromJSON PipelineExecutionSummary where
+        parseJSON
+          = withObject "PipelineExecutionSummary"
+              (\ x ->
+                 PipelineExecutionSummary' <$>
+                   (x .:? "status") <*> (x .:? "startTime") <*>
+                     (x .:? "pipelineExecutionId")
+                     <*> (x .:? "lastUpdateTime"))
+
+instance Hashable PipelineExecutionSummary where
+
+instance NFData PipelineExecutionSummary where
+
+-- | Information about a pipeline.
+--
+--
+--
+-- /See:/ 'pipelineMetadata' smart constructor.
+data PipelineMetadata = PipelineMetadata'
+  { _pmCreated     :: !(Maybe POSIX)
+  , _pmPipelineARN :: !(Maybe Text)
+  , _pmUpdated     :: !(Maybe POSIX)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PipelineMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pmCreated' - The date and time the pipeline was created, in timestamp format.
+--
+-- * 'pmPipelineARN' - The Amazon Resource Name (ARN) of the pipeline.
+--
+-- * 'pmUpdated' - The date and time the pipeline was last updated, in timestamp format.
+pipelineMetadata
+    :: PipelineMetadata
+pipelineMetadata =
+  PipelineMetadata'
+  {_pmCreated = Nothing, _pmPipelineARN = Nothing, _pmUpdated = Nothing}
+
+
+-- | The date and time the pipeline was created, in timestamp format.
+pmCreated :: Lens' PipelineMetadata (Maybe UTCTime)
+pmCreated = lens _pmCreated (\ s a -> s{_pmCreated = a}) . mapping _Time;
+
+-- | The Amazon Resource Name (ARN) of the pipeline.
+pmPipelineARN :: Lens' PipelineMetadata (Maybe Text)
+pmPipelineARN = lens _pmPipelineARN (\ s a -> s{_pmPipelineARN = a});
+
+-- | The date and time the pipeline was last updated, in timestamp format.
+pmUpdated :: Lens' PipelineMetadata (Maybe UTCTime)
+pmUpdated = lens _pmUpdated (\ s a -> s{_pmUpdated = a}) . mapping _Time;
+
+instance FromJSON PipelineMetadata where
+        parseJSON
+          = withObject "PipelineMetadata"
+              (\ x ->
+                 PipelineMetadata' <$>
+                   (x .:? "created") <*> (x .:? "pipelineArn") <*>
+                     (x .:? "updated"))
+
+instance Hashable PipelineMetadata where
+
+instance NFData PipelineMetadata where
+
+-- | Returns a summary of a pipeline.
+--
+--
+--
+-- /See:/ 'pipelineSummary' smart constructor.
+data PipelineSummary = PipelineSummary'
+  { _psCreated :: !(Maybe POSIX)
+  , _psName    :: !(Maybe Text)
+  , _psVersion :: !(Maybe Nat)
+  , _psUpdated :: !(Maybe POSIX)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PipelineSummary' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'psCreated' - The date and time the pipeline was created, in timestamp format.
+--
+-- * 'psName' - The name of the pipeline.
+--
+-- * 'psVersion' - The version number of the pipeline.
+--
+-- * 'psUpdated' - The date and time of the last update to the pipeline, in timestamp format.
+pipelineSummary
+    :: PipelineSummary
+pipelineSummary =
+  PipelineSummary'
+  { _psCreated = Nothing
+  , _psName = Nothing
+  , _psVersion = Nothing
+  , _psUpdated = Nothing
+  }
+
+
+-- | The date and time the pipeline was created, in timestamp format.
+psCreated :: Lens' PipelineSummary (Maybe UTCTime)
+psCreated = lens _psCreated (\ s a -> s{_psCreated = a}) . mapping _Time;
+
+-- | The name of the pipeline.
+psName :: Lens' PipelineSummary (Maybe Text)
+psName = lens _psName (\ s a -> s{_psName = a});
+
+-- | The version number of the pipeline.
+psVersion :: Lens' PipelineSummary (Maybe Natural)
+psVersion = lens _psVersion (\ s a -> s{_psVersion = a}) . mapping _Nat;
+
+-- | The date and time of the last update to the pipeline, in timestamp format.
+psUpdated :: Lens' PipelineSummary (Maybe UTCTime)
+psUpdated = lens _psUpdated (\ s a -> s{_psUpdated = a}) . mapping _Time;
+
+instance FromJSON PipelineSummary where
+        parseJSON
+          = withObject "PipelineSummary"
+              (\ x ->
+                 PipelineSummary' <$>
+                   (x .:? "created") <*> (x .:? "name") <*>
+                     (x .:? "version")
+                     <*> (x .:? "updated"))
+
+instance Hashable PipelineSummary where
+
+instance NFData PipelineSummary where
+
+-- | The location of the Amazon S3 bucket that contains a revision.
+--
+--
+--
+-- /See:/ 's3ArtifactLocation' smart constructor.
+data S3ArtifactLocation = S3ArtifactLocation'
+  { _salBucketName :: !Text
+  , _salObjectKey  :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'S3ArtifactLocation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'salBucketName' - The name of the Amazon S3 bucket.
+--
+-- * 'salObjectKey' - The key of the object in the Amazon S3 bucket, which uniquely identifies the object in the bucket.
+s3ArtifactLocation
+    :: Text -- ^ 'salBucketName'
+    -> Text -- ^ 'salObjectKey'
+    -> S3ArtifactLocation
+s3ArtifactLocation pBucketName_ pObjectKey_ =
+  S3ArtifactLocation'
+  {_salBucketName = pBucketName_, _salObjectKey = pObjectKey_}
+
+
+-- | The name of the Amazon S3 bucket.
+salBucketName :: Lens' S3ArtifactLocation Text
+salBucketName = lens _salBucketName (\ s a -> s{_salBucketName = a});
+
+-- | The key of the object in the Amazon S3 bucket, which uniquely identifies the object in the bucket.
+salObjectKey :: Lens' S3ArtifactLocation Text
+salObjectKey = lens _salObjectKey (\ s a -> s{_salObjectKey = a});
+
+instance FromJSON S3ArtifactLocation where
+        parseJSON
+          = withObject "S3ArtifactLocation"
+              (\ x ->
+                 S3ArtifactLocation' <$>
+                   (x .: "bucketName") <*> (x .: "objectKey"))
+
+instance Hashable S3ArtifactLocation where
+
+instance NFData S3ArtifactLocation where
+
+-- | Represents information about a stage to a job worker.
+--
+--
+--
+-- /See:/ 'stageContext' smart constructor.
+newtype StageContext = StageContext'
+  { _scName :: Maybe Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StageContext' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'scName' - The name of the stage.
+stageContext
+    :: StageContext
+stageContext = StageContext' {_scName = Nothing}
+
+
+-- | The name of the stage.
+scName :: Lens' StageContext (Maybe Text)
+scName = lens _scName (\ s a -> s{_scName = a});
+
+instance FromJSON StageContext where
+        parseJSON
+          = withObject "StageContext"
+              (\ x -> StageContext' <$> (x .:? "name"))
+
+instance Hashable StageContext where
+
+instance NFData StageContext where
+
+-- | Represents information about a stage and its definition.
+--
+--
+--
+-- /See:/ 'stageDeclaration' smart constructor.
+data StageDeclaration = StageDeclaration'
+  { _sdBlockers :: !(Maybe [BlockerDeclaration])
+  , _sdName     :: !Text
+  , _sdActions  :: ![ActionDeclaration]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StageDeclaration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sdBlockers' - Reserved for future use.
+--
+-- * 'sdName' - The name of the stage.
+--
+-- * 'sdActions' - The actions included in a stage.
+stageDeclaration
+    :: Text -- ^ 'sdName'
+    -> StageDeclaration
+stageDeclaration pName_ =
+  StageDeclaration'
+  {_sdBlockers = Nothing, _sdName = pName_, _sdActions = mempty}
+
+
+-- | Reserved for future use.
+sdBlockers :: Lens' StageDeclaration [BlockerDeclaration]
+sdBlockers = lens _sdBlockers (\ s a -> s{_sdBlockers = a}) . _Default . _Coerce;
+
+-- | The name of the stage.
+sdName :: Lens' StageDeclaration Text
+sdName = lens _sdName (\ s a -> s{_sdName = a});
+
+-- | The actions included in a stage.
+sdActions :: Lens' StageDeclaration [ActionDeclaration]
+sdActions = lens _sdActions (\ s a -> s{_sdActions = a}) . _Coerce;
+
+instance FromJSON StageDeclaration where
+        parseJSON
+          = withObject "StageDeclaration"
+              (\ x ->
+                 StageDeclaration' <$>
+                   (x .:? "blockers" .!= mempty) <*> (x .: "name") <*>
+                     (x .:? "actions" .!= mempty))
+
+instance Hashable StageDeclaration where
+
+instance NFData StageDeclaration where
+
+instance ToJSON StageDeclaration where
+        toJSON StageDeclaration'{..}
+          = object
+              (catMaybes
+                 [("blockers" .=) <$> _sdBlockers,
+                  Just ("name" .= _sdName),
+                  Just ("actions" .= _sdActions)])
+
+-- | Represents information about the run of a stage.
+--
+--
+--
+-- /See:/ 'stageExecution' smart constructor.
+data StageExecution = StageExecution'
+  { _sePipelineExecutionId :: !Text
+  , _seStatus              :: !StageExecutionStatus
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StageExecution' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sePipelineExecutionId' - The ID of the pipeline execution associated with the stage.
+--
+-- * 'seStatus' - The status of the stage, or for a completed stage, the last status of the stage.
+stageExecution
+    :: Text -- ^ 'sePipelineExecutionId'
+    -> StageExecutionStatus -- ^ 'seStatus'
+    -> StageExecution
+stageExecution pPipelineExecutionId_ pStatus_ =
+  StageExecution'
+  {_sePipelineExecutionId = pPipelineExecutionId_, _seStatus = pStatus_}
+
+
+-- | The ID of the pipeline execution associated with the stage.
+sePipelineExecutionId :: Lens' StageExecution Text
+sePipelineExecutionId = lens _sePipelineExecutionId (\ s a -> s{_sePipelineExecutionId = a});
+
+-- | The status of the stage, or for a completed stage, the last status of the stage.
+seStatus :: Lens' StageExecution StageExecutionStatus
+seStatus = lens _seStatus (\ s a -> s{_seStatus = a});
+
+instance FromJSON StageExecution where
+        parseJSON
+          = withObject "StageExecution"
+              (\ x ->
+                 StageExecution' <$>
+                   (x .: "pipelineExecutionId") <*> (x .: "status"))
+
+instance Hashable StageExecution where
+
+instance NFData StageExecution where
+
+-- | Represents information about the state of the stage.
+--
+--
+--
+-- /See:/ 'stageState' smart constructor.
+data StageState = StageState'
+  { _ssInboundTransitionState :: !(Maybe TransitionState)
+  , _ssActionStates           :: !(Maybe [ActionState])
+  , _ssStageName              :: !(Maybe Text)
+  , _ssLatestExecution        :: !(Maybe StageExecution)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StageState' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ssInboundTransitionState' - The state of the inbound transition, which is either enabled or disabled.
+--
+-- * 'ssActionStates' - The state of the stage.
+--
+-- * 'ssStageName' - The name of the stage.
+--
+-- * 'ssLatestExecution' - Information about the latest execution in the stage, including its ID and status.
+stageState
+    :: StageState
+stageState =
+  StageState'
+  { _ssInboundTransitionState = Nothing
+  , _ssActionStates = Nothing
+  , _ssStageName = Nothing
+  , _ssLatestExecution = Nothing
+  }
+
+
+-- | The state of the inbound transition, which is either enabled or disabled.
+ssInboundTransitionState :: Lens' StageState (Maybe TransitionState)
+ssInboundTransitionState = lens _ssInboundTransitionState (\ s a -> s{_ssInboundTransitionState = a});
+
+-- | The state of the stage.
+ssActionStates :: Lens' StageState [ActionState]
+ssActionStates = lens _ssActionStates (\ s a -> s{_ssActionStates = a}) . _Default . _Coerce;
+
+-- | The name of the stage.
+ssStageName :: Lens' StageState (Maybe Text)
+ssStageName = lens _ssStageName (\ s a -> s{_ssStageName = a});
+
+-- | Information about the latest execution in the stage, including its ID and status.
+ssLatestExecution :: Lens' StageState (Maybe StageExecution)
+ssLatestExecution = lens _ssLatestExecution (\ s a -> s{_ssLatestExecution = a});
+
+instance FromJSON StageState where
+        parseJSON
+          = withObject "StageState"
+              (\ x ->
+                 StageState' <$>
+                   (x .:? "inboundTransitionState") <*>
+                     (x .:? "actionStates" .!= mempty)
+                     <*> (x .:? "stageName")
+                     <*> (x .:? "latestExecution"))
+
+instance Hashable StageState where
+
+instance NFData StageState where
+
+-- | A response to a PollForThirdPartyJobs request returned by AWS CodePipeline when there is a job to be worked upon by a partner action.
+--
+--
+--
+-- /See:/ 'thirdPartyJob' smart constructor.
+data ThirdPartyJob = ThirdPartyJob'
+  { _tpjClientId :: !(Maybe Text)
+  , _tpjJobId    :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ThirdPartyJob' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpjClientId' - The clientToken portion of the clientId and clientToken pair used to verify that the calling entity is allowed access to the job and its details.
+--
+-- * 'tpjJobId' - The identifier used to identify the job in AWS CodePipeline.
+thirdPartyJob
+    :: ThirdPartyJob
+thirdPartyJob = ThirdPartyJob' {_tpjClientId = Nothing, _tpjJobId = Nothing}
+
+
+-- | The clientToken portion of the clientId and clientToken pair used to verify that the calling entity is allowed access to the job and its details.
+tpjClientId :: Lens' ThirdPartyJob (Maybe Text)
+tpjClientId = lens _tpjClientId (\ s a -> s{_tpjClientId = a});
+
+-- | The identifier used to identify the job in AWS CodePipeline.
+tpjJobId :: Lens' ThirdPartyJob (Maybe Text)
+tpjJobId = lens _tpjJobId (\ s a -> s{_tpjJobId = a});
+
+instance FromJSON ThirdPartyJob where
+        parseJSON
+          = withObject "ThirdPartyJob"
+              (\ x ->
+                 ThirdPartyJob' <$>
+                   (x .:? "clientId") <*> (x .:? "jobId"))
+
+instance Hashable ThirdPartyJob where
+
+instance NFData ThirdPartyJob where
+
+-- | Represents information about the job data for a partner action.
+--
+--
+--
+-- /See:/ 'thirdPartyJobData' smart constructor.
+data ThirdPartyJobData = ThirdPartyJobData'
+  { _tpjdContinuationToken   :: !(Maybe Text)
+  , _tpjdOutputArtifacts     :: !(Maybe [Artifact])
+  , _tpjdArtifactCredentials :: !(Maybe (Sensitive AWSSessionCredentials))
+  , _tpjdPipelineContext     :: !(Maybe PipelineContext)
+  , _tpjdEncryptionKey       :: !(Maybe EncryptionKey)
+  , _tpjdActionTypeId        :: !(Maybe ActionTypeId)
+  , _tpjdInputArtifacts      :: !(Maybe [Artifact])
+  , _tpjdActionConfiguration :: !(Maybe ActionConfiguration)
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ThirdPartyJobData' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpjdContinuationToken' - A system-generated token, such as a AWS CodeDeploy deployment ID, that a job requires in order to continue the job asynchronously.
+--
+-- * 'tpjdOutputArtifacts' - The name of the artifact that will be the result of the action, if any. This name might be system-generated, such as "MyBuiltApp", or might be defined by the user when the action is created.
+--
+-- * 'tpjdArtifactCredentials' - Represents an AWS session credentials object. These credentials are temporary credentials that are issued by AWS Secure Token Service (STS). They can be used to access input and output artifacts in the Amazon S3 bucket used to store artifact for the pipeline in AWS CodePipeline.
+--
+-- * 'tpjdPipelineContext' - Represents information about a pipeline to a job worker.
+--
+-- * 'tpjdEncryptionKey' - The encryption key used to encrypt and decrypt data in the artifact store for the pipeline, such as an AWS Key Management Service (AWS KMS) key. This is optional and might not be present.
+--
+-- * 'tpjdActionTypeId' - Represents information about an action type.
+--
+-- * 'tpjdInputArtifacts' - The name of the artifact that will be worked upon by the action, if any. This name might be system-generated, such as "MyApp", or might be defined by the user when the action is created. The input artifact name must match the name of an output artifact generated by an action in an earlier action or stage of the pipeline.
+--
+-- * 'tpjdActionConfiguration' - Represents information about an action configuration.
+thirdPartyJobData
+    :: ThirdPartyJobData
+thirdPartyJobData =
+  ThirdPartyJobData'
+  { _tpjdContinuationToken = Nothing
+  , _tpjdOutputArtifacts = Nothing
+  , _tpjdArtifactCredentials = Nothing
+  , _tpjdPipelineContext = Nothing
+  , _tpjdEncryptionKey = Nothing
+  , _tpjdActionTypeId = Nothing
+  , _tpjdInputArtifacts = Nothing
+  , _tpjdActionConfiguration = Nothing
+  }
+
+
+-- | A system-generated token, such as a AWS CodeDeploy deployment ID, that a job requires in order to continue the job asynchronously.
+tpjdContinuationToken :: Lens' ThirdPartyJobData (Maybe Text)
+tpjdContinuationToken = lens _tpjdContinuationToken (\ s a -> s{_tpjdContinuationToken = a});
+
+-- | The name of the artifact that will be the result of the action, if any. This name might be system-generated, such as "MyBuiltApp", or might be defined by the user when the action is created.
+tpjdOutputArtifacts :: Lens' ThirdPartyJobData [Artifact]
+tpjdOutputArtifacts = lens _tpjdOutputArtifacts (\ s a -> s{_tpjdOutputArtifacts = a}) . _Default . _Coerce;
+
+-- | Represents an AWS session credentials object. These credentials are temporary credentials that are issued by AWS Secure Token Service (STS). They can be used to access input and output artifacts in the Amazon S3 bucket used to store artifact for the pipeline in AWS CodePipeline.
+tpjdArtifactCredentials :: Lens' ThirdPartyJobData (Maybe AWSSessionCredentials)
+tpjdArtifactCredentials = lens _tpjdArtifactCredentials (\ s a -> s{_tpjdArtifactCredentials = a}) . mapping _Sensitive;
+
+-- | Represents information about a pipeline to a job worker.
+tpjdPipelineContext :: Lens' ThirdPartyJobData (Maybe PipelineContext)
+tpjdPipelineContext = lens _tpjdPipelineContext (\ s a -> s{_tpjdPipelineContext = a});
+
+-- | The encryption key used to encrypt and decrypt data in the artifact store for the pipeline, such as an AWS Key Management Service (AWS KMS) key. This is optional and might not be present.
+tpjdEncryptionKey :: Lens' ThirdPartyJobData (Maybe EncryptionKey)
+tpjdEncryptionKey = lens _tpjdEncryptionKey (\ s a -> s{_tpjdEncryptionKey = a});
+
+-- | Represents information about an action type.
+tpjdActionTypeId :: Lens' ThirdPartyJobData (Maybe ActionTypeId)
+tpjdActionTypeId = lens _tpjdActionTypeId (\ s a -> s{_tpjdActionTypeId = a});
+
+-- | The name of the artifact that will be worked upon by the action, if any. This name might be system-generated, such as "MyApp", or might be defined by the user when the action is created. The input artifact name must match the name of an output artifact generated by an action in an earlier action or stage of the pipeline.
+tpjdInputArtifacts :: Lens' ThirdPartyJobData [Artifact]
+tpjdInputArtifacts = lens _tpjdInputArtifacts (\ s a -> s{_tpjdInputArtifacts = a}) . _Default . _Coerce;
+
+-- | Represents information about an action configuration.
+tpjdActionConfiguration :: Lens' ThirdPartyJobData (Maybe ActionConfiguration)
+tpjdActionConfiguration = lens _tpjdActionConfiguration (\ s a -> s{_tpjdActionConfiguration = a});
+
+instance FromJSON ThirdPartyJobData where
+        parseJSON
+          = withObject "ThirdPartyJobData"
+              (\ x ->
+                 ThirdPartyJobData' <$>
+                   (x .:? "continuationToken") <*>
+                     (x .:? "outputArtifacts" .!= mempty)
+                     <*> (x .:? "artifactCredentials")
+                     <*> (x .:? "pipelineContext")
+                     <*> (x .:? "encryptionKey")
+                     <*> (x .:? "actionTypeId")
+                     <*> (x .:? "inputArtifacts" .!= mempty)
+                     <*> (x .:? "actionConfiguration"))
+
+instance Hashable ThirdPartyJobData where
+
+instance NFData ThirdPartyJobData where
+
+-- | The details of a job sent in response to a GetThirdPartyJobDetails request.
+--
+--
+--
+-- /See:/ 'thirdPartyJobDetails' smart constructor.
+data ThirdPartyJobDetails = ThirdPartyJobDetails'
+  { _tpjdData  :: !(Maybe ThirdPartyJobData)
+  , _tpjdId    :: !(Maybe Text)
+  , _tpjdNonce :: !(Maybe Text)
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ThirdPartyJobDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpjdData' - The data to be returned by the third party job worker.
+--
+-- * 'tpjdId' - The identifier used to identify the job details in AWS CodePipeline.
+--
+-- * 'tpjdNonce' - A system-generated random number that AWS CodePipeline uses to ensure that the job is being worked on by only one job worker. Use this number in an 'AcknowledgeThirdPartyJob' request.
+thirdPartyJobDetails
+    :: ThirdPartyJobDetails
+thirdPartyJobDetails =
+  ThirdPartyJobDetails'
+  {_tpjdData = Nothing, _tpjdId = Nothing, _tpjdNonce = Nothing}
+
+
+-- | The data to be returned by the third party job worker.
+tpjdData :: Lens' ThirdPartyJobDetails (Maybe ThirdPartyJobData)
+tpjdData = lens _tpjdData (\ s a -> s{_tpjdData = a});
+
+-- | The identifier used to identify the job details in AWS CodePipeline.
+tpjdId :: Lens' ThirdPartyJobDetails (Maybe Text)
+tpjdId = lens _tpjdId (\ s a -> s{_tpjdId = a});
+
+-- | A system-generated random number that AWS CodePipeline uses to ensure that the job is being worked on by only one job worker. Use this number in an 'AcknowledgeThirdPartyJob' request.
+tpjdNonce :: Lens' ThirdPartyJobDetails (Maybe Text)
+tpjdNonce = lens _tpjdNonce (\ s a -> s{_tpjdNonce = a});
+
+instance FromJSON ThirdPartyJobDetails where
+        parseJSON
+          = withObject "ThirdPartyJobDetails"
+              (\ x ->
+                 ThirdPartyJobDetails' <$>
+                   (x .:? "data") <*> (x .:? "id") <*> (x .:? "nonce"))
+
+instance Hashable ThirdPartyJobDetails where
+
+instance NFData ThirdPartyJobDetails where
+
+-- | Represents information about the state of transitions between one stage and another stage.
+--
+--
+--
+-- /See:/ 'transitionState' smart constructor.
+data TransitionState = TransitionState'
+  { _tsEnabled        :: !(Maybe Bool)
+  , _tsDisabledReason :: !(Maybe Text)
+  , _tsLastChangedAt  :: !(Maybe POSIX)
+  , _tsLastChangedBy  :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TransitionState' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tsEnabled' - Whether the transition between stages is enabled (true) or disabled (false).
+--
+-- * 'tsDisabledReason' - The user-specified reason why the transition between two stages of a pipeline was disabled.
+--
+-- * 'tsLastChangedAt' - The timestamp when the transition state was last changed.
+--
+-- * 'tsLastChangedBy' - The ID of the user who last changed the transition state.
+transitionState
+    :: TransitionState
+transitionState =
+  TransitionState'
+  { _tsEnabled = Nothing
+  , _tsDisabledReason = Nothing
+  , _tsLastChangedAt = Nothing
+  , _tsLastChangedBy = Nothing
+  }
+
+
+-- | Whether the transition between stages is enabled (true) or disabled (false).
+tsEnabled :: Lens' TransitionState (Maybe Bool)
+tsEnabled = lens _tsEnabled (\ s a -> s{_tsEnabled = a});
+
+-- | The user-specified reason why the transition between two stages of a pipeline was disabled.
+tsDisabledReason :: Lens' TransitionState (Maybe Text)
+tsDisabledReason = lens _tsDisabledReason (\ s a -> s{_tsDisabledReason = a});
+
+-- | The timestamp when the transition state was last changed.
+tsLastChangedAt :: Lens' TransitionState (Maybe UTCTime)
+tsLastChangedAt = lens _tsLastChangedAt (\ s a -> s{_tsLastChangedAt = a}) . mapping _Time;
+
+-- | The ID of the user who last changed the transition state.
+tsLastChangedBy :: Lens' TransitionState (Maybe Text)
+tsLastChangedBy = lens _tsLastChangedBy (\ s a -> s{_tsLastChangedBy = a});
+
+instance FromJSON TransitionState where
+        parseJSON
+          = withObject "TransitionState"
+              (\ x ->
+                 TransitionState' <$>
+                   (x .:? "enabled") <*> (x .:? "disabledReason") <*>
+                     (x .:? "lastChangedAt")
+                     <*> (x .:? "lastChangedBy"))
+
+instance Hashable TransitionState where
+
+instance NFData TransitionState where
diff --git a/gen/Network/AWS/CodePipeline/Types/Sum.hs b/gen/Network/AWS/CodePipeline/Types/Sum.hs
--- a/gen/Network/AWS/CodePipeline/Types/Sum.hs
+++ b/gen/Network/AWS/CodePipeline/Types/Sum.hs
@@ -9,25 +9,26 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.Types.Sum
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 module Network.AWS.CodePipeline.Types.Sum where
 
-import           Network.AWS.Prelude
+import Network.AWS.Prelude
 
 data ActionCategory
-    = Approval
-    | Build
-    | Deploy
-    | Invoke
-    | Source
-    | Test
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = Approval
+  | Build
+  | Deploy
+  | Invoke
+  | Source
+  | Test
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText ActionCategory where
     parser = takeLowerText >>= \case
         "approval" -> pure Approval
@@ -61,11 +62,12 @@
     parseJSON = parseJSONText "ActionCategory"
 
 data ActionConfigurationPropertyType
-    = Boolean
-    | Number
-    | String
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = Boolean
+  | Number
+  | String
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText ActionConfigurationPropertyType where
     parser = takeLowerText >>= \case
         "boolean" -> pure Boolean
@@ -93,11 +95,12 @@
     parseJSON = parseJSONText "ActionConfigurationPropertyType"
 
 data ActionExecutionStatus
-    = AESFailed
-    | AESInProgress
-    | AESSucceeded
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = AESFailed
+  | AESInProgress
+  | AESSucceeded
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText ActionExecutionStatus where
     parser = takeLowerText >>= \case
         "failed" -> pure AESFailed
@@ -122,11 +125,12 @@
     parseJSON = parseJSONText "ActionExecutionStatus"
 
 data ActionOwner
-    = AWS
-    | Custom
-    | ThirdParty
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = AWS
+  | Custom
+  | ThirdParty
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText ActionOwner where
     parser = takeLowerText >>= \case
         "aws" -> pure AWS
@@ -154,10 +158,11 @@
     parseJSON = parseJSONText "ActionOwner"
 
 data ApprovalStatus
-    = Approved
-    | Rejected
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = Approved
+  | Rejected
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText ApprovalStatus where
     parser = takeLowerText >>= \case
         "approved" -> pure Approved
@@ -180,9 +185,10 @@
     toJSON = toJSONText
 
 data ArtifactLocationType =
-    ALTS3
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  ALTS3
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText ArtifactLocationType where
     parser = takeLowerText >>= \case
         "s3" -> pure ALTS3
@@ -203,9 +209,10 @@
     parseJSON = parseJSONText "ArtifactLocationType"
 
 data ArtifactStoreType =
-    S3
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  S3
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText ArtifactStoreType where
     parser = takeLowerText >>= \case
         "s3" -> pure S3
@@ -229,9 +236,10 @@
     parseJSON = parseJSONText "ArtifactStoreType"
 
 data BlockerType =
-    Schedule
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  Schedule
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText BlockerType where
     parser = takeLowerText >>= \case
         "schedule" -> pure Schedule
@@ -255,9 +263,10 @@
     parseJSON = parseJSONText "BlockerType"
 
 data EncryptionKeyType =
-    KMS
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  KMS
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText EncryptionKeyType where
     parser = takeLowerText >>= \case
         "kms" -> pure KMS
@@ -281,14 +290,15 @@
     parseJSON = parseJSONText "EncryptionKeyType"
 
 data FailureType
-    = ConfigurationError
-    | JobFailed
-    | PermissionError
-    | RevisionOutOfSync
-    | RevisionUnavailable
-    | SystemUnavailable
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = ConfigurationError
+  | JobFailed
+  | PermissionError
+  | RevisionOutOfSync
+  | RevisionUnavailable
+  | SystemUnavailable
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText FailureType where
     parser = takeLowerText >>= \case
         "configurationerror" -> pure ConfigurationError
@@ -319,15 +329,16 @@
     toJSON = toJSONText
 
 data JobStatus
-    = JSCreated
-    | JSDispatched
-    | JSFailed
-    | JSInProgress
-    | JSQueued
-    | JSSucceeded
-    | JSTimedOut
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = JSCreated
+  | JSDispatched
+  | JSFailed
+  | JSInProgress
+  | JSQueued
+  | JSSucceeded
+  | JSTimedOut
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText JobStatus where
     parser = takeLowerText >>= \case
         "created" -> pure JSCreated
@@ -360,12 +371,13 @@
     parseJSON = parseJSONText "JobStatus"
 
 data PipelineExecutionStatus
-    = Failed
-    | InProgress
-    | Succeeded
-    | Superseded
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = Failed
+  | InProgress
+  | Succeeded
+  | Superseded
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText PipelineExecutionStatus where
     parser = takeLowerText >>= \case
         "failed" -> pure Failed
@@ -392,11 +404,12 @@
     parseJSON = parseJSONText "PipelineExecutionStatus"
 
 data StageExecutionStatus
-    = SESFailed
-    | SESInProgress
-    | SESSucceeded
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = SESFailed
+  | SESInProgress
+  | SESSucceeded
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText StageExecutionStatus where
     parser = takeLowerText >>= \case
         "failed" -> pure SESFailed
@@ -421,9 +434,10 @@
     parseJSON = parseJSONText "StageExecutionStatus"
 
 data StageRetryMode =
-    FailedActions
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  FailedActions
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText StageRetryMode where
     parser = takeLowerText >>= \case
         "failed_actions" -> pure FailedActions
@@ -444,9 +458,10 @@
     toJSON = toJSONText
 
 data StageTransitionType
-    = Inbound
-    | Outbound
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = Inbound
+  | Outbound
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
 
 instance FromText StageTransitionType where
     parser = takeLowerText >>= \case
diff --git a/gen/Network/AWS/CodePipeline/UpdatePipeline.hs b/gen/Network/AWS/CodePipeline/UpdatePipeline.hs
--- a/gen/Network/AWS/CodePipeline/UpdatePipeline.hs
+++ b/gen/Network/AWS/CodePipeline/UpdatePipeline.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.UpdatePipeline
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -37,22 +37,23 @@
     , uprsResponseStatus
     ) where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.CodePipeline.Types.Product
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
+import Network.AWS.CodePipeline.Types
+import Network.AWS.CodePipeline.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
 
--- | Represents the input of an update pipeline action.
+-- | Represents the input of an UpdatePipeline action.
 --
 --
 --
 -- /See:/ 'updatePipeline' smart constructor.
 newtype UpdatePipeline = UpdatePipeline'
-    { _upPipeline :: PipelineDeclaration
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _upPipeline :: PipelineDeclaration
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdatePipeline' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -61,11 +62,9 @@
 updatePipeline
     :: PipelineDeclaration -- ^ 'upPipeline'
     -> UpdatePipeline
-updatePipeline pPipeline_ =
-    UpdatePipeline'
-    { _upPipeline = pPipeline_
-    }
+updatePipeline pPipeline_ = UpdatePipeline' {_upPipeline = pPipeline_}
 
+
 -- | The name of the pipeline to be updated.
 upPipeline :: Lens' UpdatePipeline PipelineDeclaration
 upPipeline = lens _upPipeline (\ s a -> s{_upPipeline = a});
@@ -79,9 +78,9 @@
                  UpdatePipelineResponse' <$>
                    (x .?> "pipeline") <*> (pure (fromEnum s)))
 
-instance Hashable UpdatePipeline
+instance Hashable UpdatePipeline where
 
-instance NFData UpdatePipeline
+instance NFData UpdatePipeline where
 
 instance ToHeaders UpdatePipeline where
         toHeaders
@@ -104,16 +103,17 @@
 instance ToQuery UpdatePipeline where
         toQuery = const mempty
 
--- | Represents the output of an update pipeline action.
+-- | Represents the output of an UpdatePipeline action.
 --
 --
 --
 -- /See:/ 'updatePipelineResponse' smart constructor.
 data UpdatePipelineResponse = UpdatePipelineResponse'
-    { _uprsPipeline       :: !(Maybe PipelineDeclaration)
-    , _uprsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _uprsPipeline       :: !(Maybe PipelineDeclaration)
+  , _uprsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdatePipelineResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -125,11 +125,10 @@
     :: Int -- ^ 'uprsResponseStatus'
     -> UpdatePipelineResponse
 updatePipelineResponse pResponseStatus_ =
-    UpdatePipelineResponse'
-    { _uprsPipeline = Nothing
-    , _uprsResponseStatus = pResponseStatus_
-    }
+  UpdatePipelineResponse'
+  {_uprsPipeline = Nothing, _uprsResponseStatus = pResponseStatus_}
 
+
 -- | The structure of the updated pipeline.
 uprsPipeline :: Lens' UpdatePipelineResponse (Maybe PipelineDeclaration)
 uprsPipeline = lens _uprsPipeline (\ s a -> s{_uprsPipeline = a});
@@ -138,4 +137,4 @@
 uprsResponseStatus :: Lens' UpdatePipelineResponse Int
 uprsResponseStatus = lens _uprsResponseStatus (\ s a -> s{_uprsResponseStatus = a});
 
-instance NFData UpdatePipelineResponse
+instance NFData UpdatePipelineResponse where
diff --git a/gen/Network/AWS/CodePipeline/Waiters.hs b/gen/Network/AWS/CodePipeline/Waiters.hs
--- a/gen/Network/AWS/CodePipeline/Waiters.hs
+++ b/gen/Network/AWS/CodePipeline/Waiters.hs
@@ -7,15 +7,15 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.Waiters
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 module Network.AWS.CodePipeline.Waiters where
 
-import           Network.AWS.CodePipeline.Types
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Waiter
+import Network.AWS.CodePipeline.Types
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Waiter
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -2,9 +2,9 @@
 
 -- |
 -- Module      : Main
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
diff --git a/test/Test/AWS/Gen/CodePipeline.hs b/test/Test/AWS/Gen/CodePipeline.hs
--- a/test/Test/AWS/Gen/CodePipeline.hs
+++ b/test/Test/AWS/Gen/CodePipeline.hs
@@ -5,20 +5,20 @@
 
 -- |
 -- Module      : Test.AWS.Gen.CodePipeline
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 module Test.AWS.Gen.CodePipeline where
 
 import Data.Proxy
+import Network.AWS.CodePipeline
+import Test.AWS.CodePipeline.Internal
 import Test.AWS.Fixture
 import Test.AWS.Prelude
 import Test.Tasty
-import Network.AWS.CodePipeline
-import Test.AWS.CodePipeline.Internal
 
 -- Auto-generated: the actual test selection needs to be manually placed into
 -- the top-level so that real test data can be incrementally added.
@@ -106,6 +106,9 @@
 --         , requestCreateCustomActionType $
 --             createCustomActionType
 --
+--         , requestListPipelineExecutions $
+--             listPipelineExecutions
+--
 --           ]
 
 --     , testGroup "response"
@@ -187,6 +190,9 @@
 --         , responseCreateCustomActionType $
 --             createCustomActionTypeResponse
 --
+--         , responseListPipelineExecutions $
+--             listPipelineExecutionsResponse
+--
 --           ]
 --     ]
 
@@ -322,6 +328,11 @@
     "CreateCustomActionType"
     "fixture/CreateCustomActionType.yaml"
 
+requestListPipelineExecutions :: ListPipelineExecutions -> TestTree
+requestListPipelineExecutions = req
+    "ListPipelineExecutions"
+    "fixture/ListPipelineExecutions.yaml"
+
 -- Responses
 
 responseGetPipeline :: GetPipelineResponse -> TestTree
@@ -505,3 +516,10 @@
     "fixture/CreateCustomActionTypeResponse.proto"
     codePipeline
     (Proxy :: Proxy CreateCustomActionType)
+
+responseListPipelineExecutions :: ListPipelineExecutionsResponse -> TestTree
+responseListPipelineExecutions = res
+    "ListPipelineExecutionsResponse"
+    "fixture/ListPipelineExecutionsResponse.proto"
+    codePipeline
+    (Proxy :: Proxy ListPipelineExecutions)
