diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.5.0`
+`1.6.0`
 
 
 ## Description
diff --git a/amazonka-codepipeline.cabal b/amazonka-codepipeline.cabal
--- a/amazonka-codepipeline.cabal
+++ b/amazonka-codepipeline.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-codepipeline
-version:               1.5.0
+version:               1.6.0
 synopsis:              Amazon CodePipeline SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -7,7 +7,7 @@
 license-file:          LICENSE
 author:                Brendan Hay
 maintainer:            Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-copyright:             Copyright (c) 2013-2017 Brendan Hay
+copyright:             Copyright (c) 2013-2018 Brendan Hay
 category:              Network, AWS, Cloud, Distributed Computing
 build-type:            Simple
 cabal-version:         >= 1.10
@@ -51,6 +51,8 @@
         , Network.AWS.CodePipeline.CreatePipeline
         , Network.AWS.CodePipeline.DeleteCustomActionType
         , Network.AWS.CodePipeline.DeletePipeline
+        , Network.AWS.CodePipeline.DeleteWebhook
+        , Network.AWS.CodePipeline.DeregisterWebhookWithThirdParty
         , Network.AWS.CodePipeline.DisableStageTransition
         , Network.AWS.CodePipeline.EnableStageTransition
         , Network.AWS.CodePipeline.GetJobDetails
@@ -61,6 +63,7 @@
         , Network.AWS.CodePipeline.ListActionTypes
         , Network.AWS.CodePipeline.ListPipelineExecutions
         , Network.AWS.CodePipeline.ListPipelines
+        , Network.AWS.CodePipeline.ListWebhooks
         , Network.AWS.CodePipeline.PollForJobs
         , Network.AWS.CodePipeline.PollForThirdPartyJobs
         , Network.AWS.CodePipeline.PutActionRevision
@@ -69,6 +72,8 @@
         , Network.AWS.CodePipeline.PutJobSuccessResult
         , Network.AWS.CodePipeline.PutThirdPartyJobFailureResult
         , Network.AWS.CodePipeline.PutThirdPartyJobSuccessResult
+        , Network.AWS.CodePipeline.PutWebhook
+        , Network.AWS.CodePipeline.RegisterWebhookWithThirdParty
         , Network.AWS.CodePipeline.RetryStageExecution
         , Network.AWS.CodePipeline.StartPipelineExecution
         , Network.AWS.CodePipeline.Types
@@ -80,7 +85,7 @@
         , Network.AWS.CodePipeline.Types.Sum
 
     build-depends:
-          amazonka-core == 1.5.0.*
+          amazonka-core == 1.6.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-codepipeline-test
@@ -100,8 +105,8 @@
         , Test.AWS.CodePipeline.Internal
 
     build-depends:
-          amazonka-core == 1.5.0.*
-        , amazonka-test == 1.5.0.*
+          amazonka-core == 1.6.0.*
+        , amazonka-test == 1.6.0.*
         , amazonka-codepipeline
         , base
         , bytestring
diff --git a/fixture/DeleteWebhook.yaml b/fixture/DeleteWebhook.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteWebhook.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/DeleteWebhookResponse.proto b/fixture/DeleteWebhookResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteWebhookResponse.proto
diff --git a/fixture/DeregisterWebhookWithThirdParty.yaml b/fixture/DeregisterWebhookWithThirdParty.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeregisterWebhookWithThirdParty.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/DeregisterWebhookWithThirdPartyResponse.proto b/fixture/DeregisterWebhookWithThirdPartyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeregisterWebhookWithThirdPartyResponse.proto
diff --git a/fixture/ListWebhooks.yaml b/fixture/ListWebhooks.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListWebhooks.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/ListWebhooksResponse.proto b/fixture/ListWebhooksResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListWebhooksResponse.proto
diff --git a/fixture/PutWebhook.yaml b/fixture/PutWebhook.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutWebhook.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/PutWebhookResponse.proto b/fixture/PutWebhookResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutWebhookResponse.proto
diff --git a/fixture/RegisterWebhookWithThirdParty.yaml b/fixture/RegisterWebhookWithThirdParty.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RegisterWebhookWithThirdParty.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/RegisterWebhookWithThirdPartyResponse.proto b/fixture/RegisterWebhookWithThirdPartyResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RegisterWebhookWithThirdPartyResponse.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,7 +5,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -17,9 +17,9 @@
 --
 -- This is the AWS CodePipeline API Reference. This guide provides descriptions of the actions and data types for AWS CodePipeline. Some functionality for your pipeline is only configurable through the API. For additional information, see the <http://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html AWS CodePipeline User Guide> .
 --
--- You can use the AWS CodePipeline API to work with pipelines, stages, actions, gates, and transitions, as described below.
+-- You can use the AWS CodePipeline API to work with pipelines, stages, actions, and transitions, as described below.
 --
--- /Pipelines/ are models of automated release processes. Each pipeline is uniquely named, and consists of actions, gates, and stages.
+-- /Pipelines/ are models of automated release processes. Each pipeline is uniquely named, and consists of stages, actions, and transitions.
 --
 -- You can work with pipelines by calling:
 --
@@ -43,10 +43,24 @@
 --
 --
 --
--- 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> .
+-- Pipelines include /stages/ . 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' .
+-- 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' . Valid action categories are:
 --
+--     * Source
+--
+--     * Build
+--
+--     * Test
+--
+--     * Deploy
+--
+--     * Approval
+--
+--     * Invoke
+--
+--
+--
 -- Pipelines also include /transitions/ , which allow the transition of artifacts from one stage to the next in a pipeline after the actions in one stage complete.
 --
 -- You can work with transitions by calling:
@@ -134,6 +148,12 @@
     -- ** PipelineExecutionNotFoundException
     , _PipelineExecutionNotFoundException
 
+    -- ** InvalidWebhookAuthenticationParametersException
+    , _InvalidWebhookAuthenticationParametersException
+
+    -- ** WebhookNotFoundException
+    , _WebhookNotFoundException
+
     -- ** ActionTypeNotFoundException
     , _ActionTypeNotFoundException
 
@@ -143,6 +163,9 @@
     -- ** InvalidStageDeclarationException
     , _InvalidStageDeclarationException
 
+    -- ** InvalidWebhookFilterPatternException
+    , _InvalidWebhookFilterPatternException
+
     -- ** InvalidActionDeclarationException
     , _InvalidActionDeclarationException
 
@@ -191,6 +214,9 @@
     -- ** PutThirdPartyJobFailureResult
     , module Network.AWS.CodePipeline.PutThirdPartyJobFailureResult
 
+    -- ** RegisterWebhookWithThirdParty
+    , module Network.AWS.CodePipeline.RegisterWebhookWithThirdParty
+
     -- ** PollForThirdPartyJobs
     , module Network.AWS.CodePipeline.PollForThirdPartyJobs
 
@@ -224,6 +250,9 @@
     -- ** PutJobSuccessResult
     , module Network.AWS.CodePipeline.PutJobSuccessResult
 
+    -- ** DeregisterWebhookWithThirdParty
+    , module Network.AWS.CodePipeline.DeregisterWebhookWithThirdParty
+
     -- ** DeleteCustomActionType
     , module Network.AWS.CodePipeline.DeleteCustomActionType
 
@@ -242,6 +271,15 @@
     -- ** EnableStageTransition
     , module Network.AWS.CodePipeline.EnableStageTransition
 
+    -- ** DeleteWebhook
+    , module Network.AWS.CodePipeline.DeleteWebhook
+
+    -- ** PutWebhook
+    , module Network.AWS.CodePipeline.PutWebhook
+
+    -- ** ListWebhooks
+    , module Network.AWS.CodePipeline.ListWebhooks
+
     -- ** CreatePipeline
     , module Network.AWS.CodePipeline.CreatePipeline
 
@@ -304,6 +342,9 @@
     -- ** StageTransitionType
     , StageTransitionType (..)
 
+    -- ** WebhookAuthenticationType
+    , WebhookAuthenticationType (..)
+
     -- ** AWSSessionCredentials
     , AWSSessionCredentials
     , awsSessionCredentials
@@ -511,6 +552,16 @@
     , jdAccountId
     , jdId
 
+    -- ** ListWebhookItem
+    , ListWebhookItem
+    , listWebhookItem
+    , lwiArn
+    , lwiErrorCode
+    , lwiLastTriggered
+    , lwiErrorMessage
+    , lwiDefinition
+    , lwiUrl
+
     -- ** OutputArtifact
     , OutputArtifact
     , outputArtifact
@@ -547,6 +598,7 @@
     , pesStatus
     , pesStartTime
     , pesPipelineExecutionId
+    , pesSourceRevisions
     , pesLastUpdateTime
 
     -- ** PipelineMetadata
@@ -570,6 +622,14 @@
     , salBucketName
     , salObjectKey
 
+    -- ** SourceRevision
+    , SourceRevision
+    , sourceRevision
+    , srRevisionSummary
+    , srRevisionURL
+    , srRevisionId
+    , srActionName
+
     -- ** StageContext
     , StageContext
     , stageContext
@@ -628,6 +688,28 @@
     , tsDisabledReason
     , tsLastChangedAt
     , tsLastChangedBy
+
+    -- ** WebhookAuthConfiguration
+    , WebhookAuthConfiguration
+    , webhookAuthConfiguration
+    , wacAllowedIPRange
+    , wacSecretToken
+
+    -- ** WebhookDefinition
+    , WebhookDefinition
+    , webhookDefinition
+    , wdName
+    , wdTargetPipeline
+    , wdTargetAction
+    , wdFilters
+    , wdAuthentication
+    , wdAuthenticationConfiguration
+
+    -- ** WebhookFilterRule
+    , WebhookFilterRule
+    , webhookFilterRule
+    , wfrMatchEquals
+    , wfrJsonPath
     ) where
 
 import Network.AWS.CodePipeline.AcknowledgeJob
@@ -636,6 +718,8 @@
 import Network.AWS.CodePipeline.CreatePipeline
 import Network.AWS.CodePipeline.DeleteCustomActionType
 import Network.AWS.CodePipeline.DeletePipeline
+import Network.AWS.CodePipeline.DeleteWebhook
+import Network.AWS.CodePipeline.DeregisterWebhookWithThirdParty
 import Network.AWS.CodePipeline.DisableStageTransition
 import Network.AWS.CodePipeline.EnableStageTransition
 import Network.AWS.CodePipeline.GetJobDetails
@@ -646,6 +730,7 @@
 import Network.AWS.CodePipeline.ListActionTypes
 import Network.AWS.CodePipeline.ListPipelineExecutions
 import Network.AWS.CodePipeline.ListPipelines
+import Network.AWS.CodePipeline.ListWebhooks
 import Network.AWS.CodePipeline.PollForJobs
 import Network.AWS.CodePipeline.PollForThirdPartyJobs
 import Network.AWS.CodePipeline.PutActionRevision
@@ -654,6 +739,8 @@
 import Network.AWS.CodePipeline.PutJobSuccessResult
 import Network.AWS.CodePipeline.PutThirdPartyJobFailureResult
 import Network.AWS.CodePipeline.PutThirdPartyJobSuccessResult
+import Network.AWS.CodePipeline.PutWebhook
+import Network.AWS.CodePipeline.RegisterWebhookWithThirdParty
 import Network.AWS.CodePipeline.RetryStageExecution
 import Network.AWS.CodePipeline.StartPipelineExecution
 import Network.AWS.CodePipeline.Types
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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.AcknowledgeJob
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -73,11 +73,11 @@
 
 -- | 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});
+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. 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});
+ajNonce = lens _ajNonce (\ s a -> s{_ajNonce = a})
 
 instance AWSRequest AcknowledgeJob where
         type Rs AcknowledgeJob = AcknowledgeJobResponse
@@ -138,15 +138,15 @@
     -> AcknowledgeJobResponse
 acknowledgeJobResponse pResponseStatus_ =
   AcknowledgeJobResponse'
-  {_ajrsStatus = Nothing, _ajrsResponseStatus = pResponseStatus_}
+    {_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});
+ajrsStatus = lens _ajrsStatus (\ s a -> s{_ajrsStatus = a})
 
 -- | -- | The response status code.
 ajrsResponseStatus :: Lens' AcknowledgeJobResponse Int
-ajrsResponseStatus = lens _ajrsResponseStatus (\ s a -> s{_ajrsResponseStatus = a});
+ajrsResponseStatus = lens _ajrsResponseStatus (\ s a -> s{_ajrsResponseStatus = a})
 
 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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.AcknowledgeThirdPartyJob
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -74,20 +74,23 @@
     -> AcknowledgeThirdPartyJob
 acknowledgeThirdPartyJob pJobId_ pNonce_ pClientToken_ =
   AcknowledgeThirdPartyJob'
-  {_atpjJobId = pJobId_, _atpjNonce = pNonce_, _atpjClientToken = pClientToken_}
+    { _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});
+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. Get this number from the response to a 'GetThirdPartyJobDetails' request.
 atpjNonce :: Lens' AcknowledgeThirdPartyJob Text
-atpjNonce = lens _atpjNonce (\ s a -> s{_atpjNonce = a});
+atpjNonce = lens _atpjNonce (\ s a -> s{_atpjNonce = a})
 
 -- | 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.
 atpjClientToken :: Lens' AcknowledgeThirdPartyJob Text
-atpjClientToken = lens _atpjClientToken (\ s a -> s{_atpjClientToken = a});
+atpjClientToken = lens _atpjClientToken (\ s a -> s{_atpjClientToken = a})
 
 instance AWSRequest AcknowledgeThirdPartyJob where
         type Rs AcknowledgeThirdPartyJob =
@@ -150,16 +153,16 @@
     -> AcknowledgeThirdPartyJobResponse
 acknowledgeThirdPartyJobResponse pResponseStatus_ =
   AcknowledgeThirdPartyJobResponse'
-  {_atpjrsStatus = Nothing, _atpjrsResponseStatus = pResponseStatus_}
+    {_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});
+atpjrsStatus = lens _atpjrsStatus (\ s a -> s{_atpjrsStatus = a})
 
 -- | -- | The response status code.
 atpjrsResponseStatus :: Lens' AcknowledgeThirdPartyJobResponse Int
-atpjrsResponseStatus = lens _atpjrsResponseStatus (\ s a -> s{_atpjrsResponseStatus = a});
+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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.CreateCustomActionType
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -92,43 +92,43 @@
     -> CreateCustomActionType
 createCustomActionType pCategory_ pProvider_ pVersion_ pInputArtifactDetails_ pOutputArtifactDetails_ =
   CreateCustomActionType'
-  { _ccatSettings = Nothing
-  , _ccatConfigurationProperties = Nothing
-  , _ccatCategory = pCategory_
-  , _ccatProvider = pProvider_
-  , _ccatVersion = pVersion_
-  , _ccatInputArtifactDetails = pInputArtifactDetails_
-  , _ccatOutputArtifactDetails = pOutputArtifactDetails_
-  }
+    { _ccatSettings = Nothing
+    , _ccatConfigurationProperties = Nothing
+    , _ccatCategory = pCategory_
+    , _ccatProvider = pProvider_
+    , _ccatVersion = pVersion_
+    , _ccatInputArtifactDetails = pInputArtifactDetails_
+    , _ccatOutputArtifactDetails = pOutputArtifactDetails_
+    }
 
 
 -- | Returns information about the settings for an action type.
 ccatSettings :: Lens' CreateCustomActionType (Maybe ActionTypeSettings)
-ccatSettings = lens _ccatSettings (\ s a -> s{_ccatSettings = a});
+ccatSettings = lens _ccatSettings (\ s a -> s{_ccatSettings = a})
 
 -- | The configuration properties for the custom action.
 ccatConfigurationProperties :: Lens' CreateCustomActionType [ActionConfigurationProperty]
-ccatConfigurationProperties = lens _ccatConfigurationProperties (\ s a -> s{_ccatConfigurationProperties = a}) . _Default . _Coerce;
+ccatConfigurationProperties = lens _ccatConfigurationProperties (\ s a -> s{_ccatConfigurationProperties = a}) . _Default . _Coerce
 
 -- | The category of the custom action, such as a build action or a test action.
 ccatCategory :: Lens' CreateCustomActionType ActionCategory
-ccatCategory = lens _ccatCategory (\ s a -> s{_ccatCategory = a});
+ccatCategory = lens _ccatCategory (\ s a -> s{_ccatCategory = a})
 
 -- | The provider of the service used in the custom action, such as AWS CodeDeploy.
 ccatProvider :: Lens' CreateCustomActionType Text
-ccatProvider = lens _ccatProvider (\ s a -> s{_ccatProvider = a});
+ccatProvider = lens _ccatProvider (\ s a -> s{_ccatProvider = a})
 
 -- | The version identifier of the custom action.
 ccatVersion :: Lens' CreateCustomActionType Text
-ccatVersion = lens _ccatVersion (\ s a -> s{_ccatVersion = a});
+ccatVersion = lens _ccatVersion (\ s a -> s{_ccatVersion = a})
 
 -- | 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});
+ccatInputArtifactDetails = lens _ccatInputArtifactDetails (\ s a -> s{_ccatInputArtifactDetails = a})
 
 -- | 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});
+ccatOutputArtifactDetails = lens _ccatOutputArtifactDetails (\ s a -> s{_ccatOutputArtifactDetails = a})
 
 instance AWSRequest CreateCustomActionType where
         type Rs CreateCustomActionType =
@@ -201,15 +201,15 @@
     -> CreateCustomActionTypeResponse
 createCustomActionTypeResponse pResponseStatus_ pActionType_ =
   CreateCustomActionTypeResponse'
-  {_ccatrsResponseStatus = pResponseStatus_, _ccatrsActionType = pActionType_}
+    {_ccatrsResponseStatus = pResponseStatus_, _ccatrsActionType = pActionType_}
 
 
 -- | -- | The response status code.
 ccatrsResponseStatus :: Lens' CreateCustomActionTypeResponse Int
-ccatrsResponseStatus = lens _ccatrsResponseStatus (\ s a -> s{_ccatrsResponseStatus = a});
+ccatrsResponseStatus = lens _ccatrsResponseStatus (\ s a -> s{_ccatrsResponseStatus = a})
 
 -- | Returns information about the details of an action type.
 ccatrsActionType :: Lens' CreateCustomActionTypeResponse ActionType
-ccatrsActionType = lens _ccatrsActionType (\ s a -> s{_ccatrsActionType = a});
+ccatrsActionType = lens _ccatrsActionType (\ s a -> s{_ccatrsActionType = a})
 
 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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.CreatePipeline
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -67,7 +67,7 @@
 
 -- | 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});
+cpPipeline = lens _cpPipeline (\ s a -> s{_cpPipeline = a})
 
 instance AWSRequest CreatePipeline where
         type Rs CreatePipeline = CreatePipelineResponse
@@ -126,15 +126,15 @@
     -> CreatePipelineResponse
 createPipelineResponse pResponseStatus_ =
   CreatePipelineResponse'
-  {_cprsPipeline = Nothing, _cprsResponseStatus = pResponseStatus_}
+    {_cprsPipeline = Nothing, _cprsResponseStatus = pResponseStatus_}
 
 
 -- | 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});
+cprsPipeline = lens _cprsPipeline (\ s a -> s{_cprsPipeline = a})
 
 -- | -- | The response status code.
 cprsResponseStatus :: Lens' CreatePipelineResponse Int
-cprsResponseStatus = lens _cprsResponseStatus (\ s a -> s{_cprsResponseStatus = a});
+cprsResponseStatus = lens _cprsResponseStatus (\ s a -> s{_cprsResponseStatus = a})
 
 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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.DeleteCustomActionType
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -21,7 +21,7 @@
 -- Marks a custom action as deleted. PollForJobs for the custom action will fail after the action is marked for deletion. Only used for custom actions.
 --
 --
--- /Important:/ You cannot recreate a custom action after it has been deleted unless you increase the version number of the action.
+-- /Important:/ To re-create a custom action after it has been deleted you must use a string in the version field that has never been used before. This string can be an incremented version number, for example. To restore a deleted custom action, use a JSON file that is identical to the deleted action, including the original string in the version field.
 --
 module Network.AWS.CodePipeline.DeleteCustomActionType
     (
@@ -73,23 +73,23 @@
     -> DeleteCustomActionType
 deleteCustomActionType pCategory_ pProvider_ pVersion_ =
   DeleteCustomActionType'
-  { _dcatCategory = pCategory_
-  , _dcatProvider = pProvider_
-  , _dcatVersion = pVersion_
-  }
+    { _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});
+dcatCategory = lens _dcatCategory (\ s a -> s{_dcatCategory = a})
 
 -- | The provider of the service used in the custom action, such as AWS CodeDeploy.
 dcatProvider :: Lens' DeleteCustomActionType Text
-dcatProvider = lens _dcatProvider (\ s a -> s{_dcatProvider = a});
+dcatProvider = lens _dcatProvider (\ s a -> s{_dcatProvider = a})
 
 -- | The version of the custom action to delete.
 dcatVersion :: Lens' DeleteCustomActionType Text
-dcatVersion = lens _dcatVersion (\ s a -> s{_dcatVersion = a});
+dcatVersion = lens _dcatVersion (\ s a -> s{_dcatVersion = a})
 
 instance AWSRequest DeleteCustomActionType where
         type Rs DeleteCustomActionType =
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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.DeletePipeline
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -64,7 +64,7 @@
 
 -- | The name of the pipeline to be deleted.
 dpName :: Lens' DeletePipeline Text
-dpName = lens _dpName (\ s a -> s{_dpName = a});
+dpName = lens _dpName (\ s a -> s{_dpName = a})
 
 instance AWSRequest DeletePipeline where
         type Rs DeletePipeline = DeletePipelineResponse
diff --git a/gen/Network/AWS/CodePipeline/DeleteWebhook.hs b/gen/Network/AWS/CodePipeline/DeleteWebhook.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CodePipeline/DeleteWebhook.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.CodePipeline.DeleteWebhook
+-- Copyright   : (c) 2013-2018 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)
+--
+-- Deletes a previously created webhook by name. Deleting the webhook stops AWS CodePipeline from starting a pipeline every time an external event occurs. The API will return successfully when trying to delete a webhook that is already deleted. If a deleted webhook is re-created by calling PutWebhook with the same name, it will have a different URL.
+--
+--
+module Network.AWS.CodePipeline.DeleteWebhook
+    (
+    -- * Creating a Request
+      deleteWebhook
+    , DeleteWebhook
+    -- * Request Lenses
+    , dwName
+
+    -- * Destructuring the Response
+    , deleteWebhookResponse
+    , DeleteWebhookResponse
+    -- * Response Lenses
+    , dwrsResponseStatus
+    ) 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
+
+-- | /See:/ 'deleteWebhook' smart constructor.
+newtype DeleteWebhook = DeleteWebhook'
+  { _dwName :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DeleteWebhook' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dwName' - The name of the webhook you want to delete.
+deleteWebhook
+    :: Text -- ^ 'dwName'
+    -> DeleteWebhook
+deleteWebhook pName_ = DeleteWebhook' {_dwName = pName_}
+
+
+-- | The name of the webhook you want to delete.
+dwName :: Lens' DeleteWebhook Text
+dwName = lens _dwName (\ s a -> s{_dwName = a})
+
+instance AWSRequest DeleteWebhook where
+        type Rs DeleteWebhook = DeleteWebhookResponse
+        request = postJSON codePipeline
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 DeleteWebhookResponse' <$> (pure (fromEnum s)))
+
+instance Hashable DeleteWebhook where
+
+instance NFData DeleteWebhook where
+
+instance ToHeaders DeleteWebhook where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CodePipeline_20150709.DeleteWebhook" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeleteWebhook where
+        toJSON DeleteWebhook'{..}
+          = object (catMaybes [Just ("name" .= _dwName)])
+
+instance ToPath DeleteWebhook where
+        toPath = const "/"
+
+instance ToQuery DeleteWebhook where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteWebhookResponse' smart constructor.
+newtype DeleteWebhookResponse = DeleteWebhookResponse'
+  { _dwrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DeleteWebhookResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dwrsResponseStatus' - -- | The response status code.
+deleteWebhookResponse
+    :: Int -- ^ 'dwrsResponseStatus'
+    -> DeleteWebhookResponse
+deleteWebhookResponse pResponseStatus_ =
+  DeleteWebhookResponse' {_dwrsResponseStatus = pResponseStatus_}
+
+
+-- | -- | The response status code.
+dwrsResponseStatus :: Lens' DeleteWebhookResponse Int
+dwrsResponseStatus = lens _dwrsResponseStatus (\ s a -> s{_dwrsResponseStatus = a})
+
+instance NFData DeleteWebhookResponse where
diff --git a/gen/Network/AWS/CodePipeline/DeregisterWebhookWithThirdParty.hs b/gen/Network/AWS/CodePipeline/DeregisterWebhookWithThirdParty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CodePipeline/DeregisterWebhookWithThirdParty.hs
@@ -0,0 +1,132 @@
+{-# 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.DeregisterWebhookWithThirdParty
+-- Copyright   : (c) 2013-2018 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)
+--
+-- Removes the connection between the webhook that was created by CodePipeline and the external tool with events to be detected. Currently only supported for webhooks that target an action type of GitHub.
+--
+--
+module Network.AWS.CodePipeline.DeregisterWebhookWithThirdParty
+    (
+    -- * Creating a Request
+      deregisterWebhookWithThirdParty
+    , DeregisterWebhookWithThirdParty
+    -- * Request Lenses
+    , dwwtpWebhookName
+
+    -- * Destructuring the Response
+    , deregisterWebhookWithThirdPartyResponse
+    , DeregisterWebhookWithThirdPartyResponse
+    -- * Response Lenses
+    , dwwtprsResponseStatus
+    ) 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
+
+-- | /See:/ 'deregisterWebhookWithThirdParty' smart constructor.
+newtype DeregisterWebhookWithThirdParty = DeregisterWebhookWithThirdParty'
+  { _dwwtpWebhookName :: Maybe Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DeregisterWebhookWithThirdParty' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dwwtpWebhookName' - The name of the webhook you want to deregister.
+deregisterWebhookWithThirdParty
+    :: DeregisterWebhookWithThirdParty
+deregisterWebhookWithThirdParty =
+  DeregisterWebhookWithThirdParty' {_dwwtpWebhookName = Nothing}
+
+
+-- | The name of the webhook you want to deregister.
+dwwtpWebhookName :: Lens' DeregisterWebhookWithThirdParty (Maybe Text)
+dwwtpWebhookName = lens _dwwtpWebhookName (\ s a -> s{_dwwtpWebhookName = a})
+
+instance AWSRequest DeregisterWebhookWithThirdParty
+         where
+        type Rs DeregisterWebhookWithThirdParty =
+             DeregisterWebhookWithThirdPartyResponse
+        request = postJSON codePipeline
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 DeregisterWebhookWithThirdPartyResponse' <$>
+                   (pure (fromEnum s)))
+
+instance Hashable DeregisterWebhookWithThirdParty
+         where
+
+instance NFData DeregisterWebhookWithThirdParty where
+
+instance ToHeaders DeregisterWebhookWithThirdParty
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CodePipeline_20150709.DeregisterWebhookWithThirdParty"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeregisterWebhookWithThirdParty where
+        toJSON DeregisterWebhookWithThirdParty'{..}
+          = object
+              (catMaybes
+                 [("webhookName" .=) <$> _dwwtpWebhookName])
+
+instance ToPath DeregisterWebhookWithThirdParty where
+        toPath = const "/"
+
+instance ToQuery DeregisterWebhookWithThirdParty
+         where
+        toQuery = const mempty
+
+-- | /See:/ 'deregisterWebhookWithThirdPartyResponse' smart constructor.
+newtype DeregisterWebhookWithThirdPartyResponse = DeregisterWebhookWithThirdPartyResponse'
+  { _dwwtprsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DeregisterWebhookWithThirdPartyResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dwwtprsResponseStatus' - -- | The response status code.
+deregisterWebhookWithThirdPartyResponse
+    :: Int -- ^ 'dwwtprsResponseStatus'
+    -> DeregisterWebhookWithThirdPartyResponse
+deregisterWebhookWithThirdPartyResponse pResponseStatus_ =
+  DeregisterWebhookWithThirdPartyResponse'
+    {_dwwtprsResponseStatus = pResponseStatus_}
+
+
+-- | -- | The response status code.
+dwwtprsResponseStatus :: Lens' DeregisterWebhookWithThirdPartyResponse Int
+dwwtprsResponseStatus = lens _dwwtprsResponseStatus (\ s a -> s{_dwwtprsResponseStatus = a})
+
+instance NFData
+           DeregisterWebhookWithThirdPartyResponse
+         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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.DisableStageTransition
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -76,28 +76,28 @@
     -> DisableStageTransition
 disableStageTransition pPipelineName_ pStageName_ pTransitionType_ pReason_ =
   DisableStageTransition'
-  { _dstPipelineName = pPipelineName_
-  , _dstStageName = pStageName_
-  , _dstTransitionType = pTransitionType_
-  , _dstReason = pReason_
-  }
+    { _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});
+dstPipelineName = lens _dstPipelineName (\ s a -> s{_dstPipelineName = a})
 
 -- | The name of the stage where you want to disable the inbound or outbound transition of artifacts.
 dstStageName :: Lens' DisableStageTransition Text
-dstStageName = lens _dstStageName (\ s a -> s{_dstStageName = a});
+dstStageName = lens _dstStageName (\ s a -> s{_dstStageName = a})
 
 -- | Specifies whether artifacts will be prevented from transitioning into the stage and being processed by the actions in that stage (inbound), or prevented from transitioning from the stage after they have been processed by the actions in that stage (outbound).
 dstTransitionType :: Lens' DisableStageTransition StageTransitionType
-dstTransitionType = lens _dstTransitionType (\ s a -> s{_dstTransitionType = a});
+dstTransitionType = lens _dstTransitionType (\ s a -> s{_dstTransitionType = a})
 
 -- | The reason given to the user why a stage is disabled, such as waiting for manual approval or manual tests. This message is displayed in the pipeline console UI.
 dstReason :: Lens' DisableStageTransition Text
-dstReason = lens _dstReason (\ s a -> s{_dstReason = a});
+dstReason = lens _dstReason (\ s a -> s{_dstReason = a})
 
 instance AWSRequest DisableStageTransition where
         type Rs DisableStageTransition =
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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.EnableStageTransition
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -71,23 +71,23 @@
     -> EnableStageTransition
 enableStageTransition pPipelineName_ pStageName_ pTransitionType_ =
   EnableStageTransition'
-  { _estPipelineName = pPipelineName_
-  , _estStageName = pStageName_
-  , _estTransitionType = pTransitionType_
-  }
+    { _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});
+estPipelineName = lens _estPipelineName (\ s a -> s{_estPipelineName = a})
 
 -- | The name of the stage where you want to enable the transition of artifacts, either into the stage (inbound) or from that stage to the next stage (outbound).
 estStageName :: Lens' EnableStageTransition Text
-estStageName = lens _estStageName (\ s a -> s{_estStageName = a});
+estStageName = lens _estStageName (\ s a -> s{_estStageName = a})
 
 -- | Specifies whether artifacts will be allowed to enter the stage and be processed by the actions in that stage (inbound) or whether already-processed artifacts will be allowed to transition to the next stage (outbound).
 estTransitionType :: Lens' EnableStageTransition StageTransitionType
-estTransitionType = lens _estTransitionType (\ s a -> s{_estTransitionType = a});
+estTransitionType = lens _estTransitionType (\ s a -> s{_estTransitionType = a})
 
 instance AWSRequest EnableStageTransition where
         type Rs EnableStageTransition =
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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.GetJobDetails
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -69,7 +69,7 @@
 
 -- | The unique system-generated ID for the job.
 gjdJobId :: Lens' GetJobDetails Text
-gjdJobId = lens _gjdJobId (\ s a -> s{_gjdJobId = a});
+gjdJobId = lens _gjdJobId (\ s a -> s{_gjdJobId = a})
 
 instance AWSRequest GetJobDetails where
         type Rs GetJobDetails = GetJobDetailsResponse
@@ -127,15 +127,15 @@
     -> GetJobDetailsResponse
 getJobDetailsResponse pResponseStatus_ =
   GetJobDetailsResponse'
-  {_gjdrsJobDetails = Nothing, _gjdrsResponseStatus = pResponseStatus_}
+    {_gjdrsJobDetails = Nothing, _gjdrsResponseStatus = pResponseStatus_}
 
 
 -- | The details of the job.
 gjdrsJobDetails :: Lens' GetJobDetailsResponse (Maybe JobDetails)
-gjdrsJobDetails = lens _gjdrsJobDetails (\ s a -> s{_gjdrsJobDetails = a});
+gjdrsJobDetails = lens _gjdrsJobDetails (\ s a -> s{_gjdrsJobDetails = a})
 
 -- | -- | The response status code.
 gjdrsResponseStatus :: Lens' GetJobDetailsResponse Int
-gjdrsResponseStatus = lens _gjdrsResponseStatus (\ s a -> s{_gjdrsResponseStatus = a});
+gjdrsResponseStatus = lens _gjdrsResponseStatus (\ s a -> s{_gjdrsResponseStatus = a})
 
 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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.GetPipeline
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -72,11 +72,11 @@
 
 -- | 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;
+gpVersion = lens _gpVersion (\ s a -> s{_gpVersion = a}) . mapping _Nat
 
 -- | The name of the pipeline for which you want to get information. Pipeline names must be unique under an Amazon Web Services (AWS) user account.
 gpName :: Lens' GetPipeline Text
-gpName = lens _gpName (\ s a -> s{_gpName = a});
+gpName = lens _gpName (\ s a -> s{_gpName = a})
 
 instance AWSRequest GetPipeline where
         type Rs GetPipeline = GetPipelineResponse
@@ -140,22 +140,22 @@
     -> GetPipelineResponse
 getPipelineResponse pResponseStatus_ =
   GetPipelineResponse'
-  { _gprsPipeline = Nothing
-  , _gprsMetadata = Nothing
-  , _gprsResponseStatus = pResponseStatus_
-  }
+    { _gprsPipeline = Nothing
+    , _gprsMetadata = Nothing
+    , _gprsResponseStatus = pResponseStatus_
+    }
 
 
 -- | 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});
+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});
+gprsMetadata = lens _gprsMetadata (\ s a -> s{_gprsMetadata = a})
 
 -- | -- | The response status code.
 gprsResponseStatus :: Lens' GetPipelineResponse Int
-gprsResponseStatus = lens _gprsResponseStatus (\ s a -> s{_gprsResponseStatus = a});
+gprsResponseStatus = lens _gprsResponseStatus (\ s a -> s{_gprsResponseStatus = a})
 
 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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.GetPipelineExecution
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -69,18 +69,18 @@
     -> GetPipelineExecution
 getPipelineExecution pPipelineName_ pPipelineExecutionId_ =
   GetPipelineExecution'
-  { _gpePipelineName = pPipelineName_
-  , _gpePipelineExecutionId = pPipelineExecutionId_
-  }
+    { _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});
+gpePipelineName = lens _gpePipelineName (\ s a -> s{_gpePipelineName = a})
 
 -- | The ID of the pipeline execution about which you want to get execution details.
 gpePipelineExecutionId :: Lens' GetPipelineExecution Text
-gpePipelineExecutionId = lens _gpePipelineExecutionId (\ s a -> s{_gpePipelineExecutionId = a});
+gpePipelineExecutionId = lens _gpePipelineExecutionId (\ s a -> s{_gpePipelineExecutionId = a})
 
 instance AWSRequest GetPipelineExecution where
         type Rs GetPipelineExecution =
@@ -143,15 +143,15 @@
     -> GetPipelineExecutionResponse
 getPipelineExecutionResponse pResponseStatus_ =
   GetPipelineExecutionResponse'
-  {_gpersPipelineExecution = Nothing, _gpersResponseStatus = pResponseStatus_}
+    {_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});
+gpersPipelineExecution = lens _gpersPipelineExecution (\ s a -> s{_gpersPipelineExecution = a})
 
 -- | -- | The response status code.
 gpersResponseStatus :: Lens' GetPipelineExecutionResponse Int
-gpersResponseStatus = lens _gpersResponseStatus (\ s a -> s{_gpersResponseStatus = a});
+gpersResponseStatus = lens _gpersResponseStatus (\ s a -> s{_gpersResponseStatus = a})
 
 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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.GetPipelineState
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -71,7 +71,7 @@
 
 -- | The name of the pipeline about which you want to get information.
 gpsName :: Lens' GetPipelineState Text
-gpsName = lens _gpsName (\ s a -> s{_gpsName = a});
+gpsName = lens _gpsName (\ s a -> s{_gpsName = a})
 
 instance AWSRequest GetPipelineState where
         type Rs GetPipelineState = GetPipelineStateResponse
@@ -145,37 +145,37 @@
     -> GetPipelineStateResponse
 getPipelineStateResponse pResponseStatus_ =
   GetPipelineStateResponse'
-  { _gpsrsPipelineName = Nothing
-  , _gpsrsCreated = Nothing
-  , _gpsrsStageStates = Nothing
-  , _gpsrsPipelineVersion = Nothing
-  , _gpsrsUpdated = Nothing
-  , _gpsrsResponseStatus = pResponseStatus_
-  }
+    { _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});
+gpsrsPipelineName = lens _gpsrsPipelineName (\ s a -> s{_gpsrsPipelineName = a})
 
 -- | The date and time the pipeline was created, in timestamp format.
 gpsrsCreated :: Lens' GetPipelineStateResponse (Maybe UTCTime)
-gpsrsCreated = lens _gpsrsCreated (\ s a -> s{_gpsrsCreated = a}) . mapping _Time;
+gpsrsCreated = lens _gpsrsCreated (\ s a -> s{_gpsrsCreated = a}) . mapping _Time
 
 -- | A list of the pipeline stage output information, including stage name, state, most recent run details, whether the stage is disabled, and other data.
 gpsrsStageStates :: Lens' GetPipelineStateResponse [StageState]
-gpsrsStageStates = lens _gpsrsStageStates (\ s a -> s{_gpsrsStageStates = a}) . _Default . _Coerce;
+gpsrsStageStates = lens _gpsrsStageStates (\ s a -> s{_gpsrsStageStates = a}) . _Default . _Coerce
 
 -- | The version number of the pipeline.
 gpsrsPipelineVersion :: Lens' GetPipelineStateResponse (Maybe Natural)
-gpsrsPipelineVersion = lens _gpsrsPipelineVersion (\ s a -> s{_gpsrsPipelineVersion = a}) . mapping _Nat;
+gpsrsPipelineVersion = lens _gpsrsPipelineVersion (\ s a -> s{_gpsrsPipelineVersion = a}) . mapping _Nat
 
 -- | The date and time the pipeline was last updated, in timestamp format.
 gpsrsUpdated :: Lens' GetPipelineStateResponse (Maybe UTCTime)
-gpsrsUpdated = lens _gpsrsUpdated (\ s a -> s{_gpsrsUpdated = a}) . mapping _Time;
+gpsrsUpdated = lens _gpsrsUpdated (\ s a -> s{_gpsrsUpdated = a}) . mapping _Time
 
 -- | -- | The response status code.
 gpsrsResponseStatus :: Lens' GetPipelineStateResponse Int
-gpsrsResponseStatus = lens _gpsrsResponseStatus (\ s a -> s{_gpsrsResponseStatus = a});
+gpsrsResponseStatus = lens _gpsrsResponseStatus (\ s a -> s{_gpsrsResponseStatus = a})
 
 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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.GetThirdPartyJobDetails
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -71,16 +71,16 @@
     -> GetThirdPartyJobDetails
 getThirdPartyJobDetails pJobId_ pClientToken_ =
   GetThirdPartyJobDetails'
-  {_gtpjdJobId = pJobId_, _gtpjdClientToken = pClientToken_}
+    {_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});
+gtpjdJobId = lens _gtpjdJobId (\ s a -> s{_gtpjdJobId = a})
 
 -- | 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.
 gtpjdClientToken :: Lens' GetThirdPartyJobDetails Text
-gtpjdClientToken = lens _gtpjdClientToken (\ s a -> s{_gtpjdClientToken = a});
+gtpjdClientToken = lens _gtpjdClientToken (\ s a -> s{_gtpjdClientToken = a})
 
 instance AWSRequest GetThirdPartyJobDetails where
         type Rs GetThirdPartyJobDetails =
@@ -142,15 +142,15 @@
     -> GetThirdPartyJobDetailsResponse
 getThirdPartyJobDetailsResponse pResponseStatus_ =
   GetThirdPartyJobDetailsResponse'
-  {_gtpjdrsJobDetails = Nothing, _gtpjdrsResponseStatus = pResponseStatus_}
+    {_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});
+gtpjdrsJobDetails = lens _gtpjdrsJobDetails (\ s a -> s{_gtpjdrsJobDetails = a})
 
 -- | -- | The response status code.
 gtpjdrsResponseStatus :: Lens' GetThirdPartyJobDetailsResponse Int
-gtpjdrsResponseStatus = lens _gtpjdrsResponseStatus (\ s a -> s{_gtpjdrsResponseStatus = a});
+gtpjdrsResponseStatus = lens _gtpjdrsResponseStatus (\ s a -> s{_gtpjdrsResponseStatus = a})
 
 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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.ListActionTypes
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -72,11 +72,11 @@
 
 -- | 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});
+latActionOwnerFilter = lens _latActionOwnerFilter (\ s a -> s{_latActionOwnerFilter = a})
 
 -- | An identifier that was returned from the previous list action types call, which can be used to return the next set of action types in the list.
 latNextToken :: Lens' ListActionTypes (Maybe Text)
-latNextToken = lens _latNextToken (\ s a -> s{_latNextToken = a});
+latNextToken = lens _latNextToken (\ s a -> s{_latNextToken = a})
 
 instance AWSRequest ListActionTypes where
         type Rs ListActionTypes = ListActionTypesResponse
@@ -141,22 +141,22 @@
     -> ListActionTypesResponse
 listActionTypesResponse pResponseStatus_ =
   ListActionTypesResponse'
-  { _latrsNextToken = Nothing
-  , _latrsResponseStatus = pResponseStatus_
-  , _latrsActionTypes = mempty
-  }
+    { _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});
+latrsNextToken = lens _latrsNextToken (\ s a -> s{_latrsNextToken = a})
 
 -- | -- | The response status code.
 latrsResponseStatus :: Lens' ListActionTypesResponse Int
-latrsResponseStatus = lens _latrsResponseStatus (\ s a -> s{_latrsResponseStatus = a});
+latrsResponseStatus = lens _latrsResponseStatus (\ s a -> s{_latrsResponseStatus = a})
 
 -- | Provides details of the action types.
 latrsActionTypes :: Lens' ListActionTypesResponse [ActionType]
-latrsActionTypes = lens _latrsActionTypes (\ s a -> s{_latrsActionTypes = a}) . _Coerce;
+latrsActionTypes = lens _latrsActionTypes (\ s a -> s{_latrsActionTypes = a}) . _Coerce
 
 instance NFData ListActionTypesResponse where
diff --git a/gen/Network/AWS/CodePipeline/ListPipelineExecutions.hs b/gen/Network/AWS/CodePipeline/ListPipelineExecutions.hs
--- a/gen/Network/AWS/CodePipeline/ListPipelineExecutions.hs
+++ b/gen/Network/AWS/CodePipeline/ListPipelineExecutions.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.ListPipelineExecutions
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -73,23 +73,23 @@
     -> ListPipelineExecutions
 listPipelineExecutions pPipelineName_ =
   ListPipelineExecutions'
-  { _lpeNextToken = Nothing
-  , _lpeMaxResults = Nothing
-  , _lpePipelineName = pPipelineName_
-  }
+    { _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});
+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;
+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});
+lpePipelineName = lens _lpePipelineName (\ s a -> s{_lpePipelineName = a})
 
 instance AWSRequest ListPipelineExecutions where
         type Rs ListPipelineExecutions =
@@ -157,22 +157,22 @@
     -> ListPipelineExecutionsResponse
 listPipelineExecutionsResponse pResponseStatus_ =
   ListPipelineExecutionsResponse'
-  { _lpersNextToken = Nothing
-  , _lpersPipelineExecutionSummaries = Nothing
-  , _lpersResponseStatus = pResponseStatus_
-  }
+    { _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});
+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;
+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});
+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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.ListPipelines
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -67,7 +67,7 @@
 
 -- | 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});
+lpNextToken = lens _lpNextToken (\ s a -> s{_lpNextToken = a})
 
 instance AWSRequest ListPipelines where
         type Rs ListPipelines = ListPipelinesResponse
@@ -131,22 +131,22 @@
     -> ListPipelinesResponse
 listPipelinesResponse pResponseStatus_ =
   ListPipelinesResponse'
-  { _lprsPipelines = Nothing
-  , _lprsNextToken = Nothing
-  , _lprsResponseStatus = pResponseStatus_
-  }
+    { _lprsPipelines = Nothing
+    , _lprsNextToken = Nothing
+    , _lprsResponseStatus = pResponseStatus_
+    }
 
 
 -- | The list of pipelines.
 lprsPipelines :: Lens' ListPipelinesResponse [PipelineSummary]
-lprsPipelines = lens _lprsPipelines (\ s a -> s{_lprsPipelines = a}) . _Default . _Coerce;
+lprsPipelines = lens _lprsPipelines (\ s a -> s{_lprsPipelines = a}) . _Default . _Coerce
 
 -- | If the amount of returned information is significantly large, an identifier is also returned which can be used in a subsequent list pipelines call to return the next set of pipelines in the list.
 lprsNextToken :: Lens' ListPipelinesResponse (Maybe Text)
-lprsNextToken = lens _lprsNextToken (\ s a -> s{_lprsNextToken = a});
+lprsNextToken = lens _lprsNextToken (\ s a -> s{_lprsNextToken = a})
 
 -- | -- | The response status code.
 lprsResponseStatus :: Lens' ListPipelinesResponse Int
-lprsResponseStatus = lens _lprsResponseStatus (\ s a -> s{_lprsResponseStatus = a});
+lprsResponseStatus = lens _lprsResponseStatus (\ s a -> s{_lprsResponseStatus = a})
 
 instance NFData ListPipelinesResponse where
diff --git a/gen/Network/AWS/CodePipeline/ListWebhooks.hs b/gen/Network/AWS/CodePipeline/ListWebhooks.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CodePipeline/ListWebhooks.hs
@@ -0,0 +1,152 @@
+{-# 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.ListWebhooks
+-- Copyright   : (c) 2013-2018 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 listing of all the webhooks in this region for this account. The output lists all webhooks and includes the webhook URL and ARN, as well the configuration for each webhook.
+--
+--
+module Network.AWS.CodePipeline.ListWebhooks
+    (
+    -- * Creating a Request
+      listWebhooks
+    , ListWebhooks
+    -- * Request Lenses
+    , lwNextToken
+    , lwMaxResults
+
+    -- * Destructuring the Response
+    , listWebhooksResponse
+    , ListWebhooksResponse
+    -- * Response Lenses
+    , lwrsNextToken
+    , lwrsWebhooks
+    , lwrsResponseStatus
+    ) 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
+
+-- | /See:/ 'listWebhooks' smart constructor.
+data ListWebhooks = ListWebhooks'
+  { _lwNextToken  :: !(Maybe Text)
+  , _lwMaxResults :: !(Maybe Nat)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListWebhooks' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lwNextToken' - The token that was returned from the previous ListWebhooks call, which can be used to return the next set of webhooks in the list.
+--
+-- * 'lwMaxResults' - The maximum number of results to return in a single call. To retrieve the remaining results, make another call with the returned nextToken value.
+listWebhooks
+    :: ListWebhooks
+listWebhooks = ListWebhooks' {_lwNextToken = Nothing, _lwMaxResults = Nothing}
+
+
+-- | The token that was returned from the previous ListWebhooks call, which can be used to return the next set of webhooks in the list.
+lwNextToken :: Lens' ListWebhooks (Maybe Text)
+lwNextToken = lens _lwNextToken (\ s a -> s{_lwNextToken = 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.
+lwMaxResults :: Lens' ListWebhooks (Maybe Natural)
+lwMaxResults = lens _lwMaxResults (\ s a -> s{_lwMaxResults = a}) . mapping _Nat
+
+instance AWSRequest ListWebhooks where
+        type Rs ListWebhooks = ListWebhooksResponse
+        request = postJSON codePipeline
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListWebhooksResponse' <$>
+                   (x .?> "NextToken") <*> (x .?> "webhooks" .!@ mempty)
+                     <*> (pure (fromEnum s)))
+
+instance Hashable ListWebhooks where
+
+instance NFData ListWebhooks where
+
+instance ToHeaders ListWebhooks where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CodePipeline_20150709.ListWebhooks" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ListWebhooks where
+        toJSON ListWebhooks'{..}
+          = object
+              (catMaybes
+                 [("NextToken" .=) <$> _lwNextToken,
+                  ("MaxResults" .=) <$> _lwMaxResults])
+
+instance ToPath ListWebhooks where
+        toPath = const "/"
+
+instance ToQuery ListWebhooks where
+        toQuery = const mempty
+
+-- | /See:/ 'listWebhooksResponse' smart constructor.
+data ListWebhooksResponse = ListWebhooksResponse'
+  { _lwrsNextToken      :: !(Maybe Text)
+  , _lwrsWebhooks       :: !(Maybe [ListWebhookItem])
+  , _lwrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListWebhooksResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lwrsNextToken' - If the amount of returned information is significantly large, an identifier is also returned and can be used in a subsequent ListWebhooks call to return the next set of webhooks in the list.
+--
+-- * 'lwrsWebhooks' - The JSON detail returned for each webhook in the list output for the ListWebhooks call.
+--
+-- * 'lwrsResponseStatus' - -- | The response status code.
+listWebhooksResponse
+    :: Int -- ^ 'lwrsResponseStatus'
+    -> ListWebhooksResponse
+listWebhooksResponse pResponseStatus_ =
+  ListWebhooksResponse'
+    { _lwrsNextToken = Nothing
+    , _lwrsWebhooks = Nothing
+    , _lwrsResponseStatus = pResponseStatus_
+    }
+
+
+-- | If the amount of returned information is significantly large, an identifier is also returned and can be used in a subsequent ListWebhooks call to return the next set of webhooks in the list.
+lwrsNextToken :: Lens' ListWebhooksResponse (Maybe Text)
+lwrsNextToken = lens _lwrsNextToken (\ s a -> s{_lwrsNextToken = a})
+
+-- | The JSON detail returned for each webhook in the list output for the ListWebhooks call.
+lwrsWebhooks :: Lens' ListWebhooksResponse [ListWebhookItem]
+lwrsWebhooks = lens _lwrsWebhooks (\ s a -> s{_lwrsWebhooks = a}) . _Default . _Coerce
+
+-- | -- | The response status code.
+lwrsResponseStatus :: Lens' ListWebhooksResponse Int
+lwrsResponseStatus = lens _lwrsResponseStatus (\ s a -> s{_lwrsResponseStatus = a})
+
+instance NFData ListWebhooksResponse 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,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.PollForJobs
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 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)
 --
--- Returns information about any jobs for AWS CodePipeline to act upon.
+-- Returns information about any jobs for AWS CodePipeline to act upon. PollForJobs is only valid for action types with "Custom" in the owner field. If the action type contains "AWS" or "ThirdParty" in the owner field, the PollForJobs action returns an error.
 --
 --
 -- /Important:/ When this API is called, AWS CodePipeline returns temporary credentials for the Amazon S3 bucket used to store artifacts for the pipeline, if the action requires access to that Amazon S3 bucket for input or output artifacts. Additionally, this API returns any secret values defined for the action.
@@ -74,23 +74,23 @@
     -> PollForJobs
 pollForJobs pActionTypeId_ =
   PollForJobs'
-  { _pfjMaxBatchSize = Nothing
-  , _pfjQueryParam = Nothing
-  , _pfjActionTypeId = pActionTypeId_
-  }
+    { _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;
+pfjMaxBatchSize = lens _pfjMaxBatchSize (\ s a -> s{_pfjMaxBatchSize = a}) . mapping _Nat
 
 -- | 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.
 pfjQueryParam :: Lens' PollForJobs (HashMap Text Text)
-pfjQueryParam = lens _pfjQueryParam (\ s a -> s{_pfjQueryParam = a}) . _Default . _Map;
+pfjQueryParam = lens _pfjQueryParam (\ s a -> s{_pfjQueryParam = a}) . _Default . _Map
 
 -- | Represents information about an action type.
 pfjActionTypeId :: Lens' PollForJobs ActionTypeId
-pfjActionTypeId = lens _pfjActionTypeId (\ s a -> s{_pfjActionTypeId = a});
+pfjActionTypeId = lens _pfjActionTypeId (\ s a -> s{_pfjActionTypeId = a})
 
 instance AWSRequest PollForJobs where
         type Rs PollForJobs = PollForJobsResponse
@@ -151,15 +151,15 @@
     -> PollForJobsResponse
 pollForJobsResponse pResponseStatus_ =
   PollForJobsResponse'
-  {_pfjrsJobs = Nothing, _pfjrsResponseStatus = pResponseStatus_}
+    {_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;
+pfjrsJobs = lens _pfjrsJobs (\ s a -> s{_pfjrsJobs = a}) . _Default . _Coerce
 
 -- | -- | The response status code.
 pfjrsResponseStatus :: Lens' PollForJobsResponse Int
-pfjrsResponseStatus = lens _pfjrsResponseStatus (\ s a -> s{_pfjrsResponseStatus = a});
+pfjrsResponseStatus = lens _pfjrsResponseStatus (\ s a -> s{_pfjrsResponseStatus = a})
 
 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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.PollForThirdPartyJobs
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -70,16 +70,16 @@
     -> PollForThirdPartyJobs
 pollForThirdPartyJobs pActionTypeId_ =
   PollForThirdPartyJobs'
-  {_pftpjMaxBatchSize = Nothing, _pftpjActionTypeId = pActionTypeId_}
+    {_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;
+pftpjMaxBatchSize = lens _pftpjMaxBatchSize (\ s a -> s{_pftpjMaxBatchSize = a}) . mapping _Nat
 
 -- | Represents information about an action type.
 pftpjActionTypeId :: Lens' PollForThirdPartyJobs ActionTypeId
-pftpjActionTypeId = lens _pftpjActionTypeId (\ s a -> s{_pftpjActionTypeId = a});
+pftpjActionTypeId = lens _pftpjActionTypeId (\ s a -> s{_pftpjActionTypeId = a})
 
 instance AWSRequest PollForThirdPartyJobs where
         type Rs PollForThirdPartyJobs =
@@ -141,15 +141,15 @@
     -> PollForThirdPartyJobsResponse
 pollForThirdPartyJobsResponse pResponseStatus_ =
   PollForThirdPartyJobsResponse'
-  {_pftpjrsJobs = Nothing, _pftpjrsResponseStatus = pResponseStatus_}
+    {_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;
+pftpjrsJobs = lens _pftpjrsJobs (\ s a -> s{_pftpjrsJobs = a}) . _Default . _Coerce
 
 -- | -- | The response status code.
 pftpjrsResponseStatus :: Lens' PollForThirdPartyJobsResponse Int
-pftpjrsResponseStatus = lens _pftpjrsResponseStatus (\ s a -> s{_pftpjrsResponseStatus = a});
+pftpjrsResponseStatus = lens _pftpjrsResponseStatus (\ s a -> s{_pftpjrsResponseStatus = a})
 
 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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.PutActionRevision
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -80,28 +80,28 @@
     -> PutActionRevision
 putActionRevision pPipelineName_ pStageName_ pActionName_ pActionRevision_ =
   PutActionRevision'
-  { _pPipelineName = pPipelineName_
-  , _pStageName = pStageName_
-  , _pActionName = pActionName_
-  , _pActionRevision = pActionRevision_
-  }
+    { _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});
+pPipelineName = lens _pPipelineName (\ s a -> s{_pPipelineName = a})
 
 -- | The name of the stage that contains the action that will act upon the revision.
 pStageName :: Lens' PutActionRevision Text
-pStageName = lens _pStageName (\ s a -> s{_pStageName = a});
+pStageName = lens _pStageName (\ s a -> s{_pStageName = a})
 
 -- | The name of the action that will process the revision.
 pActionName :: Lens' PutActionRevision Text
-pActionName = lens _pActionName (\ s a -> s{_pActionName = a});
+pActionName = lens _pActionName (\ s a -> s{_pActionName = a})
 
 -- | Represents information about the version (or revision) of an action.
 pActionRevision :: Lens' PutActionRevision ActionRevision
-pActionRevision = lens _pActionRevision (\ s a -> s{_pActionRevision = a});
+pActionRevision = lens _pActionRevision (\ s a -> s{_pActionRevision = a})
 
 instance AWSRequest PutActionRevision where
         type Rs PutActionRevision = PutActionRevisionResponse
@@ -169,22 +169,22 @@
     -> PutActionRevisionResponse
 putActionRevisionResponse pResponseStatus_ =
   PutActionRevisionResponse'
-  { _prsNewRevision = Nothing
-  , _prsPipelineExecutionId = Nothing
-  , _prsResponseStatus = pResponseStatus_
-  }
+    { _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});
+prsNewRevision = lens _prsNewRevision (\ s a -> s{_prsNewRevision = a})
 
 -- | The ID of the current workflow state of the pipeline.
 prsPipelineExecutionId :: Lens' PutActionRevisionResponse (Maybe Text)
-prsPipelineExecutionId = lens _prsPipelineExecutionId (\ s a -> s{_prsPipelineExecutionId = a});
+prsPipelineExecutionId = lens _prsPipelineExecutionId (\ s a -> s{_prsPipelineExecutionId = a})
 
 -- | -- | The response status code.
 prsResponseStatus :: Lens' PutActionRevisionResponse Int
-prsResponseStatus = lens _prsResponseStatus (\ s a -> s{_prsResponseStatus = a});
+prsResponseStatus = lens _prsResponseStatus (\ s a -> s{_prsResponseStatus = a})
 
 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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.PutApprovalResult
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -84,33 +84,33 @@
     -> PutApprovalResult
 putApprovalResult pPipelineName_ pStageName_ pActionName_ pResult_ pToken_ =
   PutApprovalResult'
-  { _parPipelineName = pPipelineName_
-  , _parStageName = pStageName_
-  , _parActionName = pActionName_
-  , _parResult = pResult_
-  , _parToken = pToken_
-  }
+    { _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});
+parPipelineName = lens _parPipelineName (\ s a -> s{_parPipelineName = a})
 
 -- | The name of the stage that contains the action.
 parStageName :: Lens' PutApprovalResult Text
-parStageName = lens _parStageName (\ s a -> s{_parStageName = a});
+parStageName = lens _parStageName (\ s a -> s{_parStageName = a})
 
 -- | The name of the action for which approval is requested.
 parActionName :: Lens' PutApprovalResult Text
-parActionName = lens _parActionName (\ s a -> s{_parActionName = a});
+parActionName = lens _parActionName (\ s a -> s{_parActionName = a})
 
 -- | Represents information about the result of the approval request.
 parResult :: Lens' PutApprovalResult ApprovalResult
-parResult = lens _parResult (\ s a -> s{_parResult = a});
+parResult = lens _parResult (\ s a -> s{_parResult = a})
 
 -- | The system-generated token used to identify a unique approval request. The token for each open approval request can be obtained using the 'GetPipelineState' action and is used to validate that the approval request corresponding to this token is still valid.
 parToken :: Lens' PutApprovalResult Text
-parToken = lens _parToken (\ s a -> s{_parToken = a});
+parToken = lens _parToken (\ s a -> s{_parToken = a})
 
 instance AWSRequest PutApprovalResult where
         type Rs PutApprovalResult = PutApprovalResultResponse
@@ -174,15 +174,15 @@
     -> PutApprovalResultResponse
 putApprovalResultResponse pResponseStatus_ =
   PutApprovalResultResponse'
-  {_parrsApprovedAt = Nothing, _parrsResponseStatus = pResponseStatus_}
+    {_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;
+parrsApprovedAt = lens _parrsApprovedAt (\ s a -> s{_parrsApprovedAt = a}) . mapping _Time
 
 -- | -- | The response status code.
 parrsResponseStatus :: Lens' PutApprovalResultResponse Int
-parrsResponseStatus = lens _parrsResponseStatus (\ s a -> s{_parrsResponseStatus = a});
+parrsResponseStatus = lens _parrsResponseStatus (\ s a -> s{_parrsResponseStatus = a})
 
 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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.PutJobFailureResult
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -66,16 +66,16 @@
     -> PutJobFailureResult
 putJobFailureResult pJobId_ pFailureDetails_ =
   PutJobFailureResult'
-  {_pjfrJobId = pJobId_, _pjfrFailureDetails = pFailureDetails_}
+    {_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});
+pjfrJobId = lens _pjfrJobId (\ s a -> s{_pjfrJobId = a})
 
 -- | The details about the failure of a job.
 pjfrFailureDetails :: Lens' PutJobFailureResult FailureDetails
-pjfrFailureDetails = lens _pjfrFailureDetails (\ s a -> s{_pjfrFailureDetails = a});
+pjfrFailureDetails = lens _pjfrFailureDetails (\ s a -> s{_pjfrFailureDetails = a})
 
 instance AWSRequest PutJobFailureResult where
         type Rs PutJobFailureResult =
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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.PutJobSuccessResult
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -73,28 +73,28 @@
     -> PutJobSuccessResult
 putJobSuccessResult pJobId_ =
   PutJobSuccessResult'
-  { _pjsrContinuationToken = Nothing
-  , _pjsrExecutionDetails = Nothing
-  , _pjsrCurrentRevision = Nothing
-  , _pjsrJobId = pJobId_
-  }
+    { _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});
+pjsrContinuationToken = lens _pjsrContinuationToken (\ s a -> s{_pjsrContinuationToken = a})
 
 -- | The execution details of the successful job, such as the actions taken by the job worker.
 pjsrExecutionDetails :: Lens' PutJobSuccessResult (Maybe ExecutionDetails)
-pjsrExecutionDetails = lens _pjsrExecutionDetails (\ s a -> s{_pjsrExecutionDetails = a});
+pjsrExecutionDetails = lens _pjsrExecutionDetails (\ s a -> s{_pjsrExecutionDetails = a})
 
 -- | The ID of the current revision of the artifact successfully worked upon by the job.
 pjsrCurrentRevision :: Lens' PutJobSuccessResult (Maybe CurrentRevision)
-pjsrCurrentRevision = lens _pjsrCurrentRevision (\ s a -> s{_pjsrCurrentRevision = a});
+pjsrCurrentRevision = lens _pjsrCurrentRevision (\ s a -> s{_pjsrCurrentRevision = a})
 
 -- | The unique system-generated ID of the job that succeeded. This is the same ID returned from PollForJobs.
 pjsrJobId :: Lens' PutJobSuccessResult Text
-pjsrJobId = lens _pjsrJobId (\ s a -> s{_pjsrJobId = a});
+pjsrJobId = lens _pjsrJobId (\ s a -> s{_pjsrJobId = a})
 
 instance AWSRequest PutJobSuccessResult where
         type Rs PutJobSuccessResult =
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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.PutThirdPartyJobFailureResult
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -71,23 +71,23 @@
     -> PutThirdPartyJobFailureResult
 putThirdPartyJobFailureResult pJobId_ pClientToken_ pFailureDetails_ =
   PutThirdPartyJobFailureResult'
-  { _ptpjfrJobId = pJobId_
-  , _ptpjfrClientToken = pClientToken_
-  , _ptpjfrFailureDetails = pFailureDetails_
-  }
+    { _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});
+ptpjfrJobId = lens _ptpjfrJobId (\ s a -> s{_ptpjfrJobId = a})
 
 -- | 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.
 ptpjfrClientToken :: Lens' PutThirdPartyJobFailureResult Text
-ptpjfrClientToken = lens _ptpjfrClientToken (\ s a -> s{_ptpjfrClientToken = a});
+ptpjfrClientToken = lens _ptpjfrClientToken (\ s a -> s{_ptpjfrClientToken = a})
 
 -- | Represents information about failure details.
 ptpjfrFailureDetails :: Lens' PutThirdPartyJobFailureResult FailureDetails
-ptpjfrFailureDetails = lens _ptpjfrFailureDetails (\ s a -> s{_ptpjfrFailureDetails = a});
+ptpjfrFailureDetails = lens _ptpjfrFailureDetails (\ s a -> s{_ptpjfrFailureDetails = a})
 
 instance AWSRequest PutThirdPartyJobFailureResult
          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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.PutThirdPartyJobSuccessResult
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -78,33 +78,33 @@
     -> PutThirdPartyJobSuccessResult
 putThirdPartyJobSuccessResult pJobId_ pClientToken_ =
   PutThirdPartyJobSuccessResult'
-  { _ptpjsrContinuationToken = Nothing
-  , _ptpjsrExecutionDetails = Nothing
-  , _ptpjsrCurrentRevision = Nothing
-  , _ptpjsrJobId = pJobId_
-  , _ptpjsrClientToken = pClientToken_
-  }
+    { _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});
+ptpjsrContinuationToken = lens _ptpjsrContinuationToken (\ s a -> s{_ptpjsrContinuationToken = a})
 
 -- | 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});
+ptpjsrExecutionDetails = lens _ptpjsrExecutionDetails (\ s a -> s{_ptpjsrExecutionDetails = a})
 
 -- | Represents information about a current revision.
 ptpjsrCurrentRevision :: Lens' PutThirdPartyJobSuccessResult (Maybe CurrentRevision)
-ptpjsrCurrentRevision = lens _ptpjsrCurrentRevision (\ s a -> s{_ptpjsrCurrentRevision = a});
+ptpjsrCurrentRevision = lens _ptpjsrCurrentRevision (\ s a -> s{_ptpjsrCurrentRevision = a})
 
 -- | The ID of the job that successfully completed. This is the same ID returned from PollForThirdPartyJobs.
 ptpjsrJobId :: Lens' PutThirdPartyJobSuccessResult Text
-ptpjsrJobId = lens _ptpjsrJobId (\ s a -> s{_ptpjsrJobId = a});
+ptpjsrJobId = lens _ptpjsrJobId (\ s a -> s{_ptpjsrJobId = a})
 
 -- | 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.
 ptpjsrClientToken :: Lens' PutThirdPartyJobSuccessResult Text
-ptpjsrClientToken = lens _ptpjsrClientToken (\ s a -> s{_ptpjsrClientToken = a});
+ptpjsrClientToken = lens _ptpjsrClientToken (\ s a -> s{_ptpjsrClientToken = a})
 
 instance AWSRequest PutThirdPartyJobSuccessResult
          where
diff --git a/gen/Network/AWS/CodePipeline/PutWebhook.hs b/gen/Network/AWS/CodePipeline/PutWebhook.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CodePipeline/PutWebhook.hs
@@ -0,0 +1,130 @@
+{-# 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.PutWebhook
+-- Copyright   : (c) 2013-2018 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)
+--
+-- Defines a webhook and returns a unique webhook URL generated by CodePipeline. This URL can be supplied to third party source hosting providers to call every time there's a code change. When CodePipeline receives a POST request on this URL, the pipeline defined in the webhook is started as long as the POST request satisfied the authentication and filtering requirements supplied when defining the webhook. RegisterWebhookWithThirdParty and DeregisterWebhookWithThirdParty APIs can be used to automatically configure supported third parties to call the generated webhook URL.
+--
+--
+module Network.AWS.CodePipeline.PutWebhook
+    (
+    -- * Creating a Request
+      putWebhook
+    , PutWebhook
+    -- * Request Lenses
+    , pwWebhook
+
+    -- * Destructuring the Response
+    , putWebhookResponse
+    , PutWebhookResponse
+    -- * Response Lenses
+    , pwrsWebhook
+    , pwrsResponseStatus
+    ) 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
+
+-- | /See:/ 'putWebhook' smart constructor.
+newtype PutWebhook = PutWebhook'
+  { _pwWebhook :: WebhookDefinition
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PutWebhook' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pwWebhook' - The detail provided in an input file to create the webhook, such as the webhook name, the pipeline name, and the action name. Give the webhook a unique name which identifies the webhook being defined. You may choose to name the webhook after the pipeline and action it targets so that you can easily recognize what it's used for later.
+putWebhook
+    :: WebhookDefinition -- ^ 'pwWebhook'
+    -> PutWebhook
+putWebhook pWebhook_ = PutWebhook' {_pwWebhook = pWebhook_}
+
+
+-- | The detail provided in an input file to create the webhook, such as the webhook name, the pipeline name, and the action name. Give the webhook a unique name which identifies the webhook being defined. You may choose to name the webhook after the pipeline and action it targets so that you can easily recognize what it's used for later.
+pwWebhook :: Lens' PutWebhook WebhookDefinition
+pwWebhook = lens _pwWebhook (\ s a -> s{_pwWebhook = a})
+
+instance AWSRequest PutWebhook where
+        type Rs PutWebhook = PutWebhookResponse
+        request = postJSON codePipeline
+        response
+          = receiveJSON
+              (\ s h x ->
+                 PutWebhookResponse' <$>
+                   (x .?> "webhook") <*> (pure (fromEnum s)))
+
+instance Hashable PutWebhook where
+
+instance NFData PutWebhook where
+
+instance ToHeaders PutWebhook where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CodePipeline_20150709.PutWebhook" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON PutWebhook where
+        toJSON PutWebhook'{..}
+          = object (catMaybes [Just ("webhook" .= _pwWebhook)])
+
+instance ToPath PutWebhook where
+        toPath = const "/"
+
+instance ToQuery PutWebhook where
+        toQuery = const mempty
+
+-- | /See:/ 'putWebhookResponse' smart constructor.
+data PutWebhookResponse = PutWebhookResponse'
+  { _pwrsWebhook        :: !(Maybe ListWebhookItem)
+  , _pwrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PutWebhookResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pwrsWebhook' - The detail returned from creating the webhook, such as the webhook name, webhook URL, and webhook ARN.
+--
+-- * 'pwrsResponseStatus' - -- | The response status code.
+putWebhookResponse
+    :: Int -- ^ 'pwrsResponseStatus'
+    -> PutWebhookResponse
+putWebhookResponse pResponseStatus_ =
+  PutWebhookResponse'
+    {_pwrsWebhook = Nothing, _pwrsResponseStatus = pResponseStatus_}
+
+
+-- | The detail returned from creating the webhook, such as the webhook name, webhook URL, and webhook ARN.
+pwrsWebhook :: Lens' PutWebhookResponse (Maybe ListWebhookItem)
+pwrsWebhook = lens _pwrsWebhook (\ s a -> s{_pwrsWebhook = a})
+
+-- | -- | The response status code.
+pwrsResponseStatus :: Lens' PutWebhookResponse Int
+pwrsResponseStatus = lens _pwrsResponseStatus (\ s a -> s{_pwrsResponseStatus = a})
+
+instance NFData PutWebhookResponse where
diff --git a/gen/Network/AWS/CodePipeline/RegisterWebhookWithThirdParty.hs b/gen/Network/AWS/CodePipeline/RegisterWebhookWithThirdParty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CodePipeline/RegisterWebhookWithThirdParty.hs
@@ -0,0 +1,129 @@
+{-# 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.RegisterWebhookWithThirdParty
+-- Copyright   : (c) 2013-2018 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)
+--
+-- Configures a connection between the webhook that was created and the external tool with events to be detected.
+--
+--
+module Network.AWS.CodePipeline.RegisterWebhookWithThirdParty
+    (
+    -- * Creating a Request
+      registerWebhookWithThirdParty
+    , RegisterWebhookWithThirdParty
+    -- * Request Lenses
+    , rwwtpWebhookName
+
+    -- * Destructuring the Response
+    , registerWebhookWithThirdPartyResponse
+    , RegisterWebhookWithThirdPartyResponse
+    -- * Response Lenses
+    , rwwtprsResponseStatus
+    ) 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
+
+-- | /See:/ 'registerWebhookWithThirdParty' smart constructor.
+newtype RegisterWebhookWithThirdParty = RegisterWebhookWithThirdParty'
+  { _rwwtpWebhookName :: Maybe Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'RegisterWebhookWithThirdParty' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rwwtpWebhookName' - The name of an existing webhook created with PutWebhook to register with a supported third party.
+registerWebhookWithThirdParty
+    :: RegisterWebhookWithThirdParty
+registerWebhookWithThirdParty =
+  RegisterWebhookWithThirdParty' {_rwwtpWebhookName = Nothing}
+
+
+-- | The name of an existing webhook created with PutWebhook to register with a supported third party.
+rwwtpWebhookName :: Lens' RegisterWebhookWithThirdParty (Maybe Text)
+rwwtpWebhookName = lens _rwwtpWebhookName (\ s a -> s{_rwwtpWebhookName = a})
+
+instance AWSRequest RegisterWebhookWithThirdParty
+         where
+        type Rs RegisterWebhookWithThirdParty =
+             RegisterWebhookWithThirdPartyResponse
+        request = postJSON codePipeline
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 RegisterWebhookWithThirdPartyResponse' <$>
+                   (pure (fromEnum s)))
+
+instance Hashable RegisterWebhookWithThirdParty where
+
+instance NFData RegisterWebhookWithThirdParty where
+
+instance ToHeaders RegisterWebhookWithThirdParty
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CodePipeline_20150709.RegisterWebhookWithThirdParty"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON RegisterWebhookWithThirdParty where
+        toJSON RegisterWebhookWithThirdParty'{..}
+          = object
+              (catMaybes
+                 [("webhookName" .=) <$> _rwwtpWebhookName])
+
+instance ToPath RegisterWebhookWithThirdParty where
+        toPath = const "/"
+
+instance ToQuery RegisterWebhookWithThirdParty where
+        toQuery = const mempty
+
+-- | /See:/ 'registerWebhookWithThirdPartyResponse' smart constructor.
+newtype RegisterWebhookWithThirdPartyResponse = RegisterWebhookWithThirdPartyResponse'
+  { _rwwtprsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'RegisterWebhookWithThirdPartyResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rwwtprsResponseStatus' - -- | The response status code.
+registerWebhookWithThirdPartyResponse
+    :: Int -- ^ 'rwwtprsResponseStatus'
+    -> RegisterWebhookWithThirdPartyResponse
+registerWebhookWithThirdPartyResponse pResponseStatus_ =
+  RegisterWebhookWithThirdPartyResponse'
+    {_rwwtprsResponseStatus = pResponseStatus_}
+
+
+-- | -- | The response status code.
+rwwtprsResponseStatus :: Lens' RegisterWebhookWithThirdPartyResponse Int
+rwwtprsResponseStatus = lens _rwwtprsResponseStatus (\ s a -> s{_rwwtprsResponseStatus = a})
+
+instance NFData RegisterWebhookWithThirdPartyResponse
+         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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.RetryStageExecution
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -79,28 +79,28 @@
     -> RetryStageExecution
 retryStageExecution pPipelineName_ pStageName_ pPipelineExecutionId_ pRetryMode_ =
   RetryStageExecution'
-  { _rsePipelineName = pPipelineName_
-  , _rseStageName = pStageName_
-  , _rsePipelineExecutionId = pPipelineExecutionId_
-  , _rseRetryMode = pRetryMode_
-  }
+    { _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});
+rsePipelineName = lens _rsePipelineName (\ s a -> s{_rsePipelineName = a})
 
 -- | The name of the failed stage to be retried.
 rseStageName :: Lens' RetryStageExecution Text
-rseStageName = lens _rseStageName (\ s a -> s{_rseStageName = a});
+rseStageName = lens _rseStageName (\ s a -> s{_rseStageName = a})
 
 -- | The ID of the pipeline execution in the failed stage to be retried. Use the 'GetPipelineState' action to retrieve the current pipelineExecutionId of the failed stage
 rsePipelineExecutionId :: Lens' RetryStageExecution Text
-rsePipelineExecutionId = lens _rsePipelineExecutionId (\ s a -> s{_rsePipelineExecutionId = a});
+rsePipelineExecutionId = lens _rsePipelineExecutionId (\ s a -> s{_rsePipelineExecutionId = a})
 
 -- | The scope of the retry attempt. Currently, the only supported value is FAILED_ACTIONS.
 rseRetryMode :: Lens' RetryStageExecution StageRetryMode
-rseRetryMode = lens _rseRetryMode (\ s a -> s{_rseRetryMode = a});
+rseRetryMode = lens _rseRetryMode (\ s a -> s{_rseRetryMode = a})
 
 instance AWSRequest RetryStageExecution where
         type Rs RetryStageExecution =
@@ -166,15 +166,17 @@
     -> RetryStageExecutionResponse
 retryStageExecutionResponse pResponseStatus_ =
   RetryStageExecutionResponse'
-  {_rsersPipelineExecutionId = Nothing, _rsersResponseStatus = pResponseStatus_}
+    { _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});
+rsersPipelineExecutionId = lens _rsersPipelineExecutionId (\ s a -> s{_rsersPipelineExecutionId = a})
 
 -- | -- | The response status code.
 rsersResponseStatus :: Lens' RetryStageExecutionResponse Int
-rsersResponseStatus = lens _rsersResponseStatus (\ s a -> s{_rsersResponseStatus = a});
+rsersResponseStatus = lens _rsersResponseStatus (\ s a -> s{_rsersResponseStatus = a})
 
 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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.StartPipelineExecution
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -67,7 +67,7 @@
 
 -- | The name of the pipeline to start.
 speName :: Lens' StartPipelineExecution Text
-speName = lens _speName (\ s a -> s{_speName = a});
+speName = lens _speName (\ s a -> s{_speName = a})
 
 instance AWSRequest StartPipelineExecution where
         type Rs StartPipelineExecution =
@@ -127,15 +127,17 @@
     -> StartPipelineExecutionResponse
 startPipelineExecutionResponse pResponseStatus_ =
   StartPipelineExecutionResponse'
-  {_spersPipelineExecutionId = Nothing, _spersResponseStatus = pResponseStatus_}
+    { _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});
+spersPipelineExecutionId = lens _spersPipelineExecutionId (\ s a -> s{_spersPipelineExecutionId = a})
 
 -- | -- | The response status code.
 spersResponseStatus :: Lens' StartPipelineExecutionResponse Int
-spersResponseStatus = lens _spersResponseStatus (\ s a -> s{_spersResponseStatus = a});
+spersResponseStatus = lens _spersResponseStatus (\ s a -> s{_spersResponseStatus = a})
 
 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,7 +4,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.Types
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -27,9 +27,12 @@
     , _PipelineVersionNotFoundException
     , _StageNotRetryableException
     , _PipelineExecutionNotFoundException
+    , _InvalidWebhookAuthenticationParametersException
+    , _WebhookNotFoundException
     , _ActionTypeNotFoundException
     , _InvalidNextTokenException
     , _InvalidStageDeclarationException
+    , _InvalidWebhookFilterPatternException
     , _InvalidActionDeclarationException
     , _StageNotFoundException
     , _InvalidStructureException
@@ -85,6 +88,9 @@
     -- * StageTransitionType
     , StageTransitionType (..)
 
+    -- * WebhookAuthenticationType
+    , WebhookAuthenticationType (..)
+
     -- * AWSSessionCredentials
     , AWSSessionCredentials
     , awsSessionCredentials
@@ -292,6 +298,16 @@
     , jdAccountId
     , jdId
 
+    -- * ListWebhookItem
+    , ListWebhookItem
+    , listWebhookItem
+    , lwiArn
+    , lwiErrorCode
+    , lwiLastTriggered
+    , lwiErrorMessage
+    , lwiDefinition
+    , lwiUrl
+
     -- * OutputArtifact
     , OutputArtifact
     , outputArtifact
@@ -328,6 +344,7 @@
     , pesStatus
     , pesStartTime
     , pesPipelineExecutionId
+    , pesSourceRevisions
     , pesLastUpdateTime
 
     -- * PipelineMetadata
@@ -351,6 +368,14 @@
     , salBucketName
     , salObjectKey
 
+    -- * SourceRevision
+    , SourceRevision
+    , sourceRevision
+    , srRevisionSummary
+    , srRevisionURL
+    , srRevisionId
+    , srActionName
+
     -- * StageContext
     , StageContext
     , stageContext
@@ -409,6 +434,28 @@
     , tsDisabledReason
     , tsLastChangedAt
     , tsLastChangedBy
+
+    -- * WebhookAuthConfiguration
+    , WebhookAuthConfiguration
+    , webhookAuthConfiguration
+    , wacAllowedIPRange
+    , wacSecretToken
+
+    -- * WebhookDefinition
+    , WebhookDefinition
+    , webhookDefinition
+    , wdName
+    , wdTargetPipeline
+    , wdTargetAction
+    , wdFilters
+    , wdAuthentication
+    , wdAuthenticationConfiguration
+
+    -- * WebhookFilterRule
+    , WebhookFilterRule
+    , webhookFilterRule
+    , wfrMatchEquals
+    , wfrJsonPath
     ) where
 
 import Network.AWS.CodePipeline.Types.Product
@@ -421,24 +468,24 @@
 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
-  }
+    { _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
-      }
+        { _retryBase = 5.0e-2
+        , _retryGrowth = 2
+        , _retryAttempts = 5
+        , _retryCheck = check
+        }
     check e
       | has (hasCode "ThrottledException" . hasStatus 400) e =
         Just "throttled_exception"
@@ -447,6 +494,8 @@
         Just "throttling_exception"
       | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
       | has (hasStatus 504) e = Just "gateway_timeout"
+      | has (hasCode "RequestThrottledException" . hasStatus 400) e =
+        Just "request_throttled_exception"
       | has (hasStatus 502) e = Just "bad_gateway"
       | has (hasStatus 503) e = Just "service_unavailable"
       | has (hasStatus 500) e = Just "general_server_error"
@@ -539,6 +588,24 @@
   _MatchServiceError codePipeline "PipelineExecutionNotFoundException"
 
 
+-- | The specified authentication type is in an invalid format.
+--
+--
+_InvalidWebhookAuthenticationParametersException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidWebhookAuthenticationParametersException =
+  _MatchServiceError
+    codePipeline
+    "InvalidWebhookAuthenticationParametersException"
+
+
+-- | The specified webhook was entered in an invalid format or cannot be found.
+--
+--
+_WebhookNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
+_WebhookNotFoundException =
+  _MatchServiceError codePipeline "WebhookNotFoundException"
+
+
 -- | The specified action type cannot be found.
 --
 --
@@ -561,6 +628,14 @@
 _InvalidStageDeclarationException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidStageDeclarationException =
   _MatchServiceError codePipeline "InvalidStageDeclarationException"
+
+
+-- | The specified event filter rule is in an invalid format.
+--
+--
+_InvalidWebhookFilterPatternException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidWebhookFilterPatternException =
+  _MatchServiceError codePipeline "InvalidWebhookFilterPatternException"
 
 
 -- | The specified action declaration was specified in an invalid format.
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,7 +9,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.Types.Product
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -49,23 +49,23 @@
     -> AWSSessionCredentials
 awsSessionCredentials pAccessKeyId_ pSecretAccessKey_ pSessionToken_ =
   AWSSessionCredentials'
-  { _ascAccessKeyId = pAccessKeyId_
-  , _ascSecretAccessKey = pSecretAccessKey_
-  , _ascSessionToken = pSessionToken_
-  }
+    { _ascAccessKeyId = pAccessKeyId_
+    , _ascSecretAccessKey = pSecretAccessKey_
+    , _ascSessionToken = pSessionToken_
+    }
 
 
 -- | The access key for the session.
 ascAccessKeyId :: Lens' AWSSessionCredentials Text
-ascAccessKeyId = lens _ascAccessKeyId (\ s a -> s{_ascAccessKeyId = a});
+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});
+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});
+ascSessionToken = lens _ascSessionToken (\ s a -> s{_ascSessionToken = a})
 
 instance FromJSON AWSSessionCredentials where
         parseJSON
@@ -101,7 +101,7 @@
 
 -- | The configuration data for the action.
 acConfiguration :: Lens' ActionConfiguration (HashMap Text Text)
-acConfiguration = lens _acConfiguration (\ s a -> s{_acConfiguration = a}) . _Default . _Map;
+acConfiguration = lens _acConfiguration (\ s a -> s{_acConfiguration = a}) . _Default . _Map
 
 instance FromJSON ActionConfiguration where
         parseJSON
@@ -155,43 +155,43 @@
     -> ActionConfigurationProperty
 actionConfigurationProperty pName_ pRequired_ pKey_ pSecret_ =
   ActionConfigurationProperty'
-  { _acpQueryable = Nothing
-  , _acpType = Nothing
-  , _acpDescription = Nothing
-  , _acpName = pName_
-  , _acpRequired = pRequired_
-  , _acpKey = pKey_
-  , _acpSecret = pSecret_
-  }
+    { _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});
+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});
+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});
+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});
+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});
+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});
+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});
+acpSecret = lens _acpSecret (\ s a -> s{_acpSecret = a})
 
 instance FromJSON ActionConfigurationProperty where
         parseJSON
@@ -243,7 +243,7 @@
 
 -- | The name of the action within the context of a job.
 acName :: Lens' ActionContext (Maybe Text)
-acName = lens _acName (\ s a -> s{_acName = a});
+acName = lens _acName (\ s a -> s{_acName = a})
 
 instance FromJSON ActionContext where
         parseJSON
@@ -293,43 +293,43 @@
     -> ActionDeclaration
 actionDeclaration pName_ pActionTypeId_ =
   ActionDeclaration'
-  { _adOutputArtifacts = Nothing
-  , _adRunOrder = Nothing
-  , _adConfiguration = Nothing
-  , _adInputArtifacts = Nothing
-  , _adRoleARN = Nothing
-  , _adName = pName_
-  , _adActionTypeId = pActionTypeId_
-  }
+    { _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;
+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;
+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;
+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;
+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});
+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});
+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});
+adActionTypeId = lens _adActionTypeId (\ s a -> s{_adActionTypeId = a})
 
 instance FromJSON ActionDeclaration where
         parseJSON
@@ -403,53 +403,53 @@
     :: ActionExecution
 actionExecution =
   ActionExecution'
-  { _aeLastUpdatedBy = Nothing
-  , _aeSummary = Nothing
-  , _aeStatus = Nothing
-  , _aeLastStatusChange = Nothing
-  , _aeToken = Nothing
-  , _aeExternalExecutionURL = Nothing
-  , _aeExternalExecutionId = Nothing
-  , _aeErrorDetails = Nothing
-  , _aePercentComplete = Nothing
-  }
+    { _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});
+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});
+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});
+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;
+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});
+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});
+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});
+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});
+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;
+aePercentComplete = lens _aePercentComplete (\ s a -> s{_aePercentComplete = a}) . mapping _Nat
 
 instance FromJSON ActionExecution where
         parseJSON
@@ -497,23 +497,23 @@
     -> ActionRevision
 actionRevision pRevisionId_ pRevisionChangeId_ pCreated_ =
   ActionRevision'
-  { _aRevisionId = pRevisionId_
-  , _aRevisionChangeId = pRevisionChangeId_
-  , _aCreated = _Time # pCreated_
-  }
+    { _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});
+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});
+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;
+aCreated = lens _aCreated (\ s a -> s{_aCreated = a}) . _Time
 
 instance FromJSON ActionRevision where
         parseJSON
@@ -566,33 +566,33 @@
     :: ActionState
 actionState =
   ActionState'
-  { _asRevisionURL = Nothing
-  , _asEntityURL = Nothing
-  , _asActionName = Nothing
-  , _asCurrentRevision = Nothing
-  , _asLatestExecution = Nothing
-  }
+    { _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});
+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});
+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});
+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});
+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});
+asLatestExecution = lens _asLatestExecution (\ s a -> s{_asLatestExecution = a})
 
 instance FromJSON ActionState where
         parseJSON
@@ -642,33 +642,33 @@
     -> ActionType
 actionType pId_ pInputArtifactDetails_ pOutputArtifactDetails_ =
   ActionType'
-  { _atSettings = Nothing
-  , _atActionConfigurationProperties = Nothing
-  , _atId = pId_
-  , _atInputArtifactDetails = pInputArtifactDetails_
-  , _atOutputArtifactDetails = pOutputArtifactDetails_
-  }
+    { _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});
+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;
+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});
+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});
+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});
+atOutputArtifactDetails = lens _atOutputArtifactDetails (\ s a -> s{_atOutputArtifactDetails = a})
 
 instance FromJSON ActionType where
         parseJSON
@@ -708,7 +708,7 @@
 --
 -- * '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.
+-- * 'atiVersion' - A string that describes the action version.
 actionTypeId
     :: ActionCategory -- ^ 'atiCategory'
     -> ActionOwner -- ^ 'atiOwner'
@@ -717,28 +717,28 @@
     -> ActionTypeId
 actionTypeId pCategory_ pOwner_ pProvider_ pVersion_ =
   ActionTypeId'
-  { _atiCategory = pCategory_
-  , _atiOwner = pOwner_
-  , _atiProvider = pProvider_
-  , _atiVersion = pVersion_
-  }
+    { _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});
+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});
+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});
+atiProvider = lens _atiProvider (\ s a -> s{_atiProvider = a})
 
--- | A string that identifies the action type.
+-- | A string that describes the action version.
 atiVersion :: Lens' ActionTypeId Text
-atiVersion = lens _atiVersion (\ s a -> s{_atiVersion = a});
+atiVersion = lens _atiVersion (\ s a -> s{_atiVersion = a})
 
 instance FromJSON ActionTypeId where
         parseJSON
@@ -790,28 +790,28 @@
     :: ActionTypeSettings
 actionTypeSettings =
   ActionTypeSettings'
-  { _atsThirdPartyConfigurationURL = Nothing
-  , _atsExecutionURLTemplate = Nothing
-  , _atsRevisionURLTemplate = Nothing
-  , _atsEntityURLTemplate = Nothing
-  }
+    { _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});
+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});
+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});
+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});
+atsEntityURLTemplate = lens _atsEntityURLTemplate (\ s a -> s{_atsEntityURLTemplate = a})
 
 instance FromJSON ActionTypeSettings where
         parseJSON
@@ -867,11 +867,11 @@
 
 -- | The summary of the current status of the approval request.
 arSummary :: Lens' ApprovalResult Text
-arSummary = lens _arSummary (\ s a -> s{_arSummary = a});
+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});
+arStatus = lens _arStatus (\ s a -> s{_arStatus = a})
 
 instance Hashable ApprovalResult where
 
@@ -913,15 +913,15 @@
 
 -- | The location of an artifact.
 aLocation :: Lens' Artifact (Maybe ArtifactLocation)
-aLocation = lens _aLocation (\ s a -> s{_aLocation = a});
+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});
+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});
+aRevision = lens _aRevision (\ s a -> s{_aRevision = a})
 
 instance FromJSON Artifact where
         parseJSON
@@ -959,18 +959,18 @@
     -> ArtifactDetails
 artifactDetails pMinimumCount_ pMaximumCount_ =
   ArtifactDetails'
-  { _adMinimumCount = _Nat # pMinimumCount_
-  , _adMaximumCount = _Nat # pMaximumCount_
-  }
+    { _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;
+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;
+adMaximumCount = lens _adMaximumCount (\ s a -> s{_adMaximumCount = a}) . _Nat
 
 instance FromJSON ArtifactDetails where
         parseJSON
@@ -1016,11 +1016,11 @@
 
 -- | The Amazon S3 bucket that contains the artifact.
 alS3Location :: Lens' ArtifactLocation (Maybe S3ArtifactLocation)
-alS3Location = lens _alS3Location (\ s a -> s{_alS3Location = a});
+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});
+alType = lens _alType (\ s a -> s{_alType = a})
 
 instance FromJSON ArtifactLocation where
         parseJSON
@@ -1067,38 +1067,38 @@
     :: ArtifactRevision
 artifactRevision =
   ArtifactRevision'
-  { _arRevisionSummary = Nothing
-  , _arRevisionURL = Nothing
-  , _arCreated = Nothing
-  , _arName = Nothing
-  , _arRevisionId = Nothing
-  , _arRevisionChangeIdentifier = Nothing
-  }
+    { _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});
+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});
+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;
+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});
+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});
+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});
+arRevisionChangeIdentifier = lens _arRevisionChangeIdentifier (\ s a -> s{_arRevisionChangeIdentifier = a})
 
 instance FromJSON ArtifactRevision where
         parseJSON
@@ -1142,20 +1142,20 @@
     -> ArtifactStore
 artifactStore pType_ pLocation_ =
   ArtifactStore'
-  {_asEncryptionKey = Nothing, _asType = pType_, _asLocation = pLocation_}
+    {_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});
+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});
+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});
+asLocation = lens _asLocation (\ s a -> s{_asLocation = a})
 
 instance FromJSON ArtifactStore where
         parseJSON
@@ -1205,11 +1205,11 @@
 
 -- | Reserved for future use.
 bdName :: Lens' BlockerDeclaration Text
-bdName = lens _bdName (\ s a -> s{_bdName = a});
+bdName = lens _bdName (\ s a -> s{_bdName = a})
 
 -- | Reserved for future use.
 bdType :: Lens' BlockerDeclaration BlockerType
-bdType = lens _bdType (\ s a -> s{_bdType = a});
+bdType = lens _bdType (\ s a -> s{_bdType = a})
 
 instance FromJSON BlockerDeclaration where
         parseJSON
@@ -1258,28 +1258,28 @@
     -> CurrentRevision
 currentRevision pRevision_ pChangeIdentifier_ =
   CurrentRevision'
-  { _crRevisionSummary = Nothing
-  , _crCreated = Nothing
-  , _crRevision = pRevision_
-  , _crChangeIdentifier = pChangeIdentifier_
-  }
+    { _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});
+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;
+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});
+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});
+crChangeIdentifier = lens _crChangeIdentifier (\ s a -> s{_crChangeIdentifier = a})
 
 instance Hashable CurrentRevision where
 
@@ -1321,11 +1321,11 @@
 
 -- | 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});
+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});
+ekType = lens _ekType (\ s a -> s{_ekType = a})
 
 instance FromJSON EncryptionKey where
         parseJSON
@@ -1368,11 +1368,11 @@
 
 -- | The system ID or error number code of the error.
 edCode :: Lens' ErrorDetails (Maybe Text)
-edCode = lens _edCode (\ s a -> s{_edCode = a});
+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});
+edMessage = lens _edMessage (\ s a -> s{_edMessage = a})
 
 instance FromJSON ErrorDetails where
         parseJSON
@@ -1410,23 +1410,23 @@
     :: ExecutionDetails
 executionDetails =
   ExecutionDetails'
-  { _edSummary = Nothing
-  , _edExternalExecutionId = Nothing
-  , _edPercentComplete = Nothing
-  }
+    { _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});
+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});
+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;
+edPercentComplete = lens _edPercentComplete (\ s a -> s{_edPercentComplete = a}) . mapping _Nat
 
 instance Hashable ExecutionDetails where
 
@@ -1468,20 +1468,20 @@
     -> FailureDetails
 failureDetails pType_ pMessage_ =
   FailureDetails'
-  {_fdExternalExecutionId = Nothing, _fdType = pType_, _fdMessage = pMessage_}
+    {_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});
+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});
+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});
+fdMessage = lens _fdMessage (\ s a -> s{_fdMessage = a})
 
 instance Hashable FailureDetails where
 
@@ -1519,7 +1519,7 @@
 
 -- | 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});
+iaName = lens _iaName (\ s a -> s{_iaName = a})
 
 instance FromJSON InputArtifact where
         parseJSON
@@ -1562,24 +1562,24 @@
     :: Job
 job =
   Job'
-  {_jData = Nothing, _jAccountId = Nothing, _jId = Nothing, _jNonce = Nothing}
+    {_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});
+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});
+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});
+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});
+jNonce = lens _jNonce (\ s a -> s{_jNonce = a})
 
 instance FromJSON Job where
         parseJSON
@@ -1634,48 +1634,48 @@
     :: JobData
 jobData =
   JobData'
-  { _jdContinuationToken = Nothing
-  , _jdOutputArtifacts = Nothing
-  , _jdArtifactCredentials = Nothing
-  , _jdPipelineContext = Nothing
-  , _jdEncryptionKey = Nothing
-  , _jdActionTypeId = Nothing
-  , _jdInputArtifacts = Nothing
-  , _jdActionConfiguration = Nothing
-  }
+    { _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});
+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;
+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;
+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});
+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});
+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});
+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;
+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});
+jdActionConfiguration = lens _jdActionConfiguration (\ s a -> s{_jdActionConfiguration = a})
 
 instance FromJSON JobData where
         parseJSON
@@ -1724,15 +1724,15 @@
 
 -- | 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});
+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});
+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});
+jdId = lens _jdId (\ s a -> s{_jdId = a})
 
 instance FromJSON JobDetails where
         parseJSON
@@ -1746,6 +1746,90 @@
 
 instance NFData JobDetails where
 
+-- | The detail returned for each webhook after listing webhooks, such as the webhook URL, the webhook name, and the webhook ARN.
+--
+--
+--
+-- /See:/ 'listWebhookItem' smart constructor.
+data ListWebhookItem = ListWebhookItem'
+  { _lwiArn           :: !(Maybe Text)
+  , _lwiErrorCode     :: !(Maybe Text)
+  , _lwiLastTriggered :: !(Maybe POSIX)
+  , _lwiErrorMessage  :: !(Maybe Text)
+  , _lwiDefinition    :: !WebhookDefinition
+  , _lwiUrl           :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListWebhookItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lwiArn' - The Amazon Resource Name (ARN) of the webhook.
+--
+-- * 'lwiErrorCode' - The number code of the error.
+--
+-- * 'lwiLastTriggered' - The date and time a webhook was last successfully triggered, in timestamp format.
+--
+-- * 'lwiErrorMessage' - The text of the error message about the webhook.
+--
+-- * 'lwiDefinition' - The detail returned for each webhook, such as the webhook authentication type and filter rules.
+--
+-- * 'lwiUrl' - A unique URL generated by CodePipeline. When a POST request is made to this URL, the defined pipeline is started as long as the body of the post request satisfies the defined authentication and filtering conditions. Deleting and re-creating a webhook will make the old URL invalid and generate a new URL.
+listWebhookItem
+    :: WebhookDefinition -- ^ 'lwiDefinition'
+    -> Text -- ^ 'lwiUrl'
+    -> ListWebhookItem
+listWebhookItem pDefinition_ pUrl_ =
+  ListWebhookItem'
+    { _lwiArn = Nothing
+    , _lwiErrorCode = Nothing
+    , _lwiLastTriggered = Nothing
+    , _lwiErrorMessage = Nothing
+    , _lwiDefinition = pDefinition_
+    , _lwiUrl = pUrl_
+    }
+
+
+-- | The Amazon Resource Name (ARN) of the webhook.
+lwiArn :: Lens' ListWebhookItem (Maybe Text)
+lwiArn = lens _lwiArn (\ s a -> s{_lwiArn = a})
+
+-- | The number code of the error.
+lwiErrorCode :: Lens' ListWebhookItem (Maybe Text)
+lwiErrorCode = lens _lwiErrorCode (\ s a -> s{_lwiErrorCode = a})
+
+-- | The date and time a webhook was last successfully triggered, in timestamp format.
+lwiLastTriggered :: Lens' ListWebhookItem (Maybe UTCTime)
+lwiLastTriggered = lens _lwiLastTriggered (\ s a -> s{_lwiLastTriggered = a}) . mapping _Time
+
+-- | The text of the error message about the webhook.
+lwiErrorMessage :: Lens' ListWebhookItem (Maybe Text)
+lwiErrorMessage = lens _lwiErrorMessage (\ s a -> s{_lwiErrorMessage = a})
+
+-- | The detail returned for each webhook, such as the webhook authentication type and filter rules.
+lwiDefinition :: Lens' ListWebhookItem WebhookDefinition
+lwiDefinition = lens _lwiDefinition (\ s a -> s{_lwiDefinition = a})
+
+-- | A unique URL generated by CodePipeline. When a POST request is made to this URL, the defined pipeline is started as long as the body of the post request satisfies the defined authentication and filtering conditions. Deleting and re-creating a webhook will make the old URL invalid and generate a new URL.
+lwiUrl :: Lens' ListWebhookItem Text
+lwiUrl = lens _lwiUrl (\ s a -> s{_lwiUrl = a})
+
+instance FromJSON ListWebhookItem where
+        parseJSON
+          = withObject "ListWebhookItem"
+              (\ x ->
+                 ListWebhookItem' <$>
+                   (x .:? "arn") <*> (x .:? "errorCode") <*>
+                     (x .:? "lastTriggered")
+                     <*> (x .:? "errorMessage")
+                     <*> (x .: "definition")
+                     <*> (x .: "url"))
+
+instance Hashable ListWebhookItem where
+
+instance NFData ListWebhookItem where
+
 -- | Represents information about the output of an action.
 --
 --
@@ -1769,7 +1853,7 @@
 
 -- | 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});
+oaName = lens _oaName (\ s a -> s{_oaName = a})
 
 instance FromJSON OutputArtifact where
         parseJSON
@@ -1809,20 +1893,20 @@
     :: PipelineContext
 pipelineContext =
   PipelineContext'
-  {_pcStage = Nothing, _pcPipelineName = Nothing, _pcAction = Nothing}
+    {_pcStage = Nothing, _pcPipelineName = Nothing, _pcAction = Nothing}
 
 
 -- | The stage of the pipeline.
 pcStage :: Lens' PipelineContext (Maybe StageContext)
-pcStage = lens _pcStage (\ s a -> s{_pcStage = a});
+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});
+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});
+pcAction = lens _pcAction (\ s a -> s{_pcAction = a})
 
 instance FromJSON PipelineContext where
         parseJSON
@@ -1870,33 +1954,33 @@
     -> PipelineDeclaration
 pipelineDeclaration pName_ pRoleARN_ pArtifactStore_ =
   PipelineDeclaration'
-  { _pdVersion = Nothing
-  , _pdName = pName_
-  , _pdRoleARN = pRoleARN_
-  , _pdArtifactStore = pArtifactStore_
-  , _pdStages = mempty
-  }
+    { _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;
+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});
+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});
+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});
+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;
+pdStages = lens _pdStages (\ s a -> s{_pdStages = a}) . _Coerce
 
 instance FromJSON PipelineDeclaration where
         parseJSON
@@ -1953,33 +2037,33 @@
     :: PipelineExecution
 pipelineExecution =
   PipelineExecution'
-  { _peStatus = Nothing
-  , _pePipelineName = Nothing
-  , _pePipelineVersion = Nothing
-  , _pePipelineExecutionId = Nothing
-  , _peArtifactRevisions = Nothing
-  }
+    { _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});
+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});
+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;
+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});
+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;
+peArtifactRevisions = lens _peArtifactRevisions (\ s a -> s{_peArtifactRevisions = a}) . _Default . _Coerce
 
 instance FromJSON PipelineExecution where
         parseJSON
@@ -2004,6 +2088,7 @@
   { _pesStatus              :: !(Maybe PipelineExecutionStatus)
   , _pesStartTime           :: !(Maybe POSIX)
   , _pesPipelineExecutionId :: !(Maybe Text)
+  , _pesSourceRevisions     :: !(Maybe [SourceRevision])
   , _pesLastUpdateTime      :: !(Maybe POSIX)
   } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
@@ -2018,33 +2103,40 @@
 --
 -- * 'pesPipelineExecutionId' - The ID of the pipeline execution.
 --
+-- * 'pesSourceRevisions' - Undocumented member.
+--
 -- * '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
-  }
+    { _pesStatus = Nothing
+    , _pesStartTime = Nothing
+    , _pesPipelineExecutionId = Nothing
+    , _pesSourceRevisions = 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});
+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;
+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});
+pesPipelineExecutionId = lens _pesPipelineExecutionId (\ s a -> s{_pesPipelineExecutionId = a})
 
+-- | Undocumented member.
+pesSourceRevisions :: Lens' PipelineExecutionSummary [SourceRevision]
+pesSourceRevisions = lens _pesSourceRevisions (\ s a -> s{_pesSourceRevisions = a}) . _Default . _Coerce
+
 -- | 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;
+pesLastUpdateTime = lens _pesLastUpdateTime (\ s a -> s{_pesLastUpdateTime = a}) . mapping _Time
 
 instance FromJSON PipelineExecutionSummary where
         parseJSON
@@ -2053,6 +2145,7 @@
                  PipelineExecutionSummary' <$>
                    (x .:? "status") <*> (x .:? "startTime") <*>
                      (x .:? "pipelineExecutionId")
+                     <*> (x .:? "sourceRevisions" .!= mempty)
                      <*> (x .:? "lastUpdateTime"))
 
 instance Hashable PipelineExecutionSummary where
@@ -2084,20 +2177,20 @@
     :: PipelineMetadata
 pipelineMetadata =
   PipelineMetadata'
-  {_pmCreated = Nothing, _pmPipelineARN = Nothing, _pmUpdated = Nothing}
+    {_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;
+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});
+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;
+pmUpdated = lens _pmUpdated (\ s a -> s{_pmUpdated = a}) . mapping _Time
 
 instance FromJSON PipelineMetadata where
         parseJSON
@@ -2139,28 +2232,28 @@
     :: PipelineSummary
 pipelineSummary =
   PipelineSummary'
-  { _psCreated = Nothing
-  , _psName = Nothing
-  , _psVersion = Nothing
-  , _psUpdated = Nothing
-  }
+    { _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;
+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});
+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;
+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;
+psUpdated = lens _psUpdated (\ s a -> s{_psUpdated = a}) . mapping _Time
 
 instance FromJSON PipelineSummary where
         parseJSON
@@ -2199,16 +2292,16 @@
     -> S3ArtifactLocation
 s3ArtifactLocation pBucketName_ pObjectKey_ =
   S3ArtifactLocation'
-  {_salBucketName = pBucketName_, _salObjectKey = pObjectKey_}
+    {_salBucketName = pBucketName_, _salObjectKey = pObjectKey_}
 
 
 -- | The name of the Amazon S3 bucket.
 salBucketName :: Lens' S3ArtifactLocation Text
-salBucketName = lens _salBucketName (\ s a -> s{_salBucketName = a});
+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});
+salObjectKey = lens _salObjectKey (\ s a -> s{_salObjectKey = a})
 
 instance FromJSON S3ArtifactLocation where
         parseJSON
@@ -2221,6 +2314,67 @@
 
 instance NFData S3ArtifactLocation where
 
+-- | /See:/ 'sourceRevision' smart constructor.
+data SourceRevision = SourceRevision'
+  { _srRevisionSummary :: !(Maybe Text)
+  , _srRevisionURL     :: !(Maybe Text)
+  , _srRevisionId      :: !(Maybe Text)
+  , _srActionName      :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SourceRevision' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'srRevisionSummary' - Undocumented member.
+--
+-- * 'srRevisionURL' - Undocumented member.
+--
+-- * 'srRevisionId' - Undocumented member.
+--
+-- * 'srActionName' - Undocumented member.
+sourceRevision
+    :: Text -- ^ 'srActionName'
+    -> SourceRevision
+sourceRevision pActionName_ =
+  SourceRevision'
+    { _srRevisionSummary = Nothing
+    , _srRevisionURL = Nothing
+    , _srRevisionId = Nothing
+    , _srActionName = pActionName_
+    }
+
+
+-- | Undocumented member.
+srRevisionSummary :: Lens' SourceRevision (Maybe Text)
+srRevisionSummary = lens _srRevisionSummary (\ s a -> s{_srRevisionSummary = a})
+
+-- | Undocumented member.
+srRevisionURL :: Lens' SourceRevision (Maybe Text)
+srRevisionURL = lens _srRevisionURL (\ s a -> s{_srRevisionURL = a})
+
+-- | Undocumented member.
+srRevisionId :: Lens' SourceRevision (Maybe Text)
+srRevisionId = lens _srRevisionId (\ s a -> s{_srRevisionId = a})
+
+-- | Undocumented member.
+srActionName :: Lens' SourceRevision Text
+srActionName = lens _srActionName (\ s a -> s{_srActionName = a})
+
+instance FromJSON SourceRevision where
+        parseJSON
+          = withObject "SourceRevision"
+              (\ x ->
+                 SourceRevision' <$>
+                   (x .:? "revisionSummary") <*> (x .:? "revisionUrl")
+                     <*> (x .:? "revisionId")
+                     <*> (x .: "actionName"))
+
+instance Hashable SourceRevision where
+
+instance NFData SourceRevision where
+
 -- | Represents information about a stage to a job worker.
 --
 --
@@ -2243,7 +2397,7 @@
 
 -- | The name of the stage.
 scName :: Lens' StageContext (Maybe Text)
-scName = lens _scName (\ s a -> s{_scName = a});
+scName = lens _scName (\ s a -> s{_scName = a})
 
 instance FromJSON StageContext where
         parseJSON
@@ -2280,20 +2434,20 @@
     -> StageDeclaration
 stageDeclaration pName_ =
   StageDeclaration'
-  {_sdBlockers = Nothing, _sdName = pName_, _sdActions = mempty}
+    {_sdBlockers = Nothing, _sdName = pName_, _sdActions = mempty}
 
 
 -- | Reserved for future use.
 sdBlockers :: Lens' StageDeclaration [BlockerDeclaration]
-sdBlockers = lens _sdBlockers (\ s a -> s{_sdBlockers = a}) . _Default . _Coerce;
+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});
+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;
+sdActions = lens _sdActions (\ s a -> s{_sdActions = a}) . _Coerce
 
 instance FromJSON StageDeclaration where
         parseJSON
@@ -2339,16 +2493,16 @@
     -> StageExecution
 stageExecution pPipelineExecutionId_ pStatus_ =
   StageExecution'
-  {_sePipelineExecutionId = pPipelineExecutionId_, _seStatus = pStatus_}
+    {_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});
+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});
+seStatus = lens _seStatus (\ s a -> s{_seStatus = a})
 
 instance FromJSON StageExecution where
         parseJSON
@@ -2389,28 +2543,28 @@
     :: StageState
 stageState =
   StageState'
-  { _ssInboundTransitionState = Nothing
-  , _ssActionStates = Nothing
-  , _ssStageName = Nothing
-  , _ssLatestExecution = Nothing
-  }
+    { _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});
+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;
+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});
+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});
+ssLatestExecution = lens _ssLatestExecution (\ s a -> s{_ssLatestExecution = a})
 
 instance FromJSON StageState where
         parseJSON
@@ -2451,11 +2605,11 @@
 
 -- | 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});
+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});
+tpjJobId = lens _tpjJobId (\ s a -> s{_tpjJobId = a})
 
 instance FromJSON ThirdPartyJob where
         parseJSON
@@ -2508,48 +2662,48 @@
     :: ThirdPartyJobData
 thirdPartyJobData =
   ThirdPartyJobData'
-  { _tpjdContinuationToken = Nothing
-  , _tpjdOutputArtifacts = Nothing
-  , _tpjdArtifactCredentials = Nothing
-  , _tpjdPipelineContext = Nothing
-  , _tpjdEncryptionKey = Nothing
-  , _tpjdActionTypeId = Nothing
-  , _tpjdInputArtifacts = Nothing
-  , _tpjdActionConfiguration = Nothing
-  }
+    { _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});
+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;
+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;
+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});
+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});
+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});
+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;
+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});
+tpjdActionConfiguration = lens _tpjdActionConfiguration (\ s a -> s{_tpjdActionConfiguration = a})
 
 instance FromJSON ThirdPartyJobData where
         parseJSON
@@ -2594,20 +2748,20 @@
     :: ThirdPartyJobDetails
 thirdPartyJobDetails =
   ThirdPartyJobDetails'
-  {_tpjdData = Nothing, _tpjdId = Nothing, _tpjdNonce = Nothing}
+    {_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});
+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});
+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});
+tpjdNonce = lens _tpjdNonce (\ s a -> s{_tpjdNonce = a})
 
 instance FromJSON ThirdPartyJobDetails where
         parseJSON
@@ -2648,28 +2802,28 @@
     :: TransitionState
 transitionState =
   TransitionState'
-  { _tsEnabled = Nothing
-  , _tsDisabledReason = Nothing
-  , _tsLastChangedAt = Nothing
-  , _tsLastChangedBy = Nothing
-  }
+    { _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});
+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});
+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;
+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});
+tsLastChangedBy = lens _tsLastChangedBy (\ s a -> s{_tsLastChangedBy = a})
 
 instance FromJSON TransitionState where
         parseJSON
@@ -2683,3 +2837,201 @@
 instance Hashable TransitionState where
 
 instance NFData TransitionState where
+
+-- | /See:/ 'webhookAuthConfiguration' smart constructor.
+data WebhookAuthConfiguration = WebhookAuthConfiguration'
+  { _wacAllowedIPRange :: !(Maybe Text)
+  , _wacSecretToken    :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'WebhookAuthConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wacAllowedIPRange' - Undocumented member.
+--
+-- * 'wacSecretToken' - Undocumented member.
+webhookAuthConfiguration
+    :: WebhookAuthConfiguration
+webhookAuthConfiguration =
+  WebhookAuthConfiguration'
+    {_wacAllowedIPRange = Nothing, _wacSecretToken = Nothing}
+
+
+-- | Undocumented member.
+wacAllowedIPRange :: Lens' WebhookAuthConfiguration (Maybe Text)
+wacAllowedIPRange = lens _wacAllowedIPRange (\ s a -> s{_wacAllowedIPRange = a})
+
+-- | Undocumented member.
+wacSecretToken :: Lens' WebhookAuthConfiguration (Maybe Text)
+wacSecretToken = lens _wacSecretToken (\ s a -> s{_wacSecretToken = a})
+
+instance FromJSON WebhookAuthConfiguration where
+        parseJSON
+          = withObject "WebhookAuthConfiguration"
+              (\ x ->
+                 WebhookAuthConfiguration' <$>
+                   (x .:? "AllowedIPRange") <*> (x .:? "SecretToken"))
+
+instance Hashable WebhookAuthConfiguration where
+
+instance NFData WebhookAuthConfiguration where
+
+instance ToJSON WebhookAuthConfiguration where
+        toJSON WebhookAuthConfiguration'{..}
+          = object
+              (catMaybes
+                 [("AllowedIPRange" .=) <$> _wacAllowedIPRange,
+                  ("SecretToken" .=) <$> _wacSecretToken])
+
+-- | Represents information about a webhook and its definition.
+--
+--
+--
+-- /See:/ 'webhookDefinition' smart constructor.
+data WebhookDefinition = WebhookDefinition'
+  { _wdName                        :: !Text
+  , _wdTargetPipeline              :: !Text
+  , _wdTargetAction                :: !Text
+  , _wdFilters                     :: ![WebhookFilterRule]
+  , _wdAuthentication              :: !WebhookAuthenticationType
+  , _wdAuthenticationConfiguration :: !WebhookAuthConfiguration
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'WebhookDefinition' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wdName' - The name of the webhook.
+--
+-- * 'wdTargetPipeline' - The name of the pipeline you want to connect to the webhook.
+--
+-- * 'wdTargetAction' - The name of the action in a pipeline you want to connect to the webhook. The action must be from the source (first) stage of the pipeline.
+--
+-- * 'wdFilters' - A list of rules applied to the body/payload sent in the POST request to a webhook URL. All defined rules must pass for the request to be accepted and the pipeline started.
+--
+-- * 'wdAuthentication' - Supported options are GITHUB_HMAC, IP and UNAUTHENTICATED.     * GITHUB_HMAC implements the authentication scheme described here: https://developer.github.com/webhooks/securing/     * IP will reject webhooks trigger requests unless they originate from an IP within the IP range whitelisted in the authentication configuration.     * UNAUTHENTICATED will accept all webhook trigger requests regardless of origin.
+--
+-- * 'wdAuthenticationConfiguration' - Properties that configure the authentication applied to incoming webhook trigger requests. The required properties depend on the authentication type. For GITHUB_HMAC, only the SecretToken property must be set. For IP, only the AllowedIPRange property must be set to a valid CIDR range. For UNAUTHENTICATED, no properties can be set.
+webhookDefinition
+    :: Text -- ^ 'wdName'
+    -> Text -- ^ 'wdTargetPipeline'
+    -> Text -- ^ 'wdTargetAction'
+    -> WebhookAuthenticationType -- ^ 'wdAuthentication'
+    -> WebhookAuthConfiguration -- ^ 'wdAuthenticationConfiguration'
+    -> WebhookDefinition
+webhookDefinition pName_ pTargetPipeline_ pTargetAction_ pAuthentication_ pAuthenticationConfiguration_ =
+  WebhookDefinition'
+    { _wdName = pName_
+    , _wdTargetPipeline = pTargetPipeline_
+    , _wdTargetAction = pTargetAction_
+    , _wdFilters = mempty
+    , _wdAuthentication = pAuthentication_
+    , _wdAuthenticationConfiguration = pAuthenticationConfiguration_
+    }
+
+
+-- | The name of the webhook.
+wdName :: Lens' WebhookDefinition Text
+wdName = lens _wdName (\ s a -> s{_wdName = a})
+
+-- | The name of the pipeline you want to connect to the webhook.
+wdTargetPipeline :: Lens' WebhookDefinition Text
+wdTargetPipeline = lens _wdTargetPipeline (\ s a -> s{_wdTargetPipeline = a})
+
+-- | The name of the action in a pipeline you want to connect to the webhook. The action must be from the source (first) stage of the pipeline.
+wdTargetAction :: Lens' WebhookDefinition Text
+wdTargetAction = lens _wdTargetAction (\ s a -> s{_wdTargetAction = a})
+
+-- | A list of rules applied to the body/payload sent in the POST request to a webhook URL. All defined rules must pass for the request to be accepted and the pipeline started.
+wdFilters :: Lens' WebhookDefinition [WebhookFilterRule]
+wdFilters = lens _wdFilters (\ s a -> s{_wdFilters = a}) . _Coerce
+
+-- | Supported options are GITHUB_HMAC, IP and UNAUTHENTICATED.     * GITHUB_HMAC implements the authentication scheme described here: https://developer.github.com/webhooks/securing/     * IP will reject webhooks trigger requests unless they originate from an IP within the IP range whitelisted in the authentication configuration.     * UNAUTHENTICATED will accept all webhook trigger requests regardless of origin.
+wdAuthentication :: Lens' WebhookDefinition WebhookAuthenticationType
+wdAuthentication = lens _wdAuthentication (\ s a -> s{_wdAuthentication = a})
+
+-- | Properties that configure the authentication applied to incoming webhook trigger requests. The required properties depend on the authentication type. For GITHUB_HMAC, only the SecretToken property must be set. For IP, only the AllowedIPRange property must be set to a valid CIDR range. For UNAUTHENTICATED, no properties can be set.
+wdAuthenticationConfiguration :: Lens' WebhookDefinition WebhookAuthConfiguration
+wdAuthenticationConfiguration = lens _wdAuthenticationConfiguration (\ s a -> s{_wdAuthenticationConfiguration = a})
+
+instance FromJSON WebhookDefinition where
+        parseJSON
+          = withObject "WebhookDefinition"
+              (\ x ->
+                 WebhookDefinition' <$>
+                   (x .: "name") <*> (x .: "targetPipeline") <*>
+                     (x .: "targetAction")
+                     <*> (x .:? "filters" .!= mempty)
+                     <*> (x .: "authentication")
+                     <*> (x .: "authenticationConfiguration"))
+
+instance Hashable WebhookDefinition where
+
+instance NFData WebhookDefinition where
+
+instance ToJSON WebhookDefinition where
+        toJSON WebhookDefinition'{..}
+          = object
+              (catMaybes
+                 [Just ("name" .= _wdName),
+                  Just ("targetPipeline" .= _wdTargetPipeline),
+                  Just ("targetAction" .= _wdTargetAction),
+                  Just ("filters" .= _wdFilters),
+                  Just ("authentication" .= _wdAuthentication),
+                  Just
+                    ("authenticationConfiguration" .=
+                       _wdAuthenticationConfiguration)])
+
+-- | The event criteria that specify when a webhook notification is sent to your URL.
+--
+--
+--
+-- /See:/ 'webhookFilterRule' smart constructor.
+data WebhookFilterRule = WebhookFilterRule'
+  { _wfrMatchEquals :: !(Maybe Text)
+  , _wfrJsonPath    :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'WebhookFilterRule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wfrMatchEquals' - The value selected by the JsonPath expression must match what is supplied in the MatchEquals field, otherwise the request will be ignored. Properties from the target action configuration can be included as placeholders in this value by surrounding the action configuration key with curly braces. For example, if the value supplied here is "refs/heads/{Branch}" and the target action has an action configuration property called "Branch" with a value of "master", the MatchEquals value will be evaluated as "refs/heads/master". A list of action configuration properties for built-in action types can be found here: <http://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html#action-requirements Pipeline Structure Reference Action Requirements> .
+--
+-- * 'wfrJsonPath' - A JsonPath expression that will be applied to the body/payload of the webhook. The value selected by JsonPath expression must match the value specified in the matchEquals field, otherwise the request will be ignored. More information on JsonPath expressions can be found here: https://github.com/json-path/JsonPath.
+webhookFilterRule
+    :: Text -- ^ 'wfrJsonPath'
+    -> WebhookFilterRule
+webhookFilterRule pJsonPath_ =
+  WebhookFilterRule' {_wfrMatchEquals = Nothing, _wfrJsonPath = pJsonPath_}
+
+
+-- | The value selected by the JsonPath expression must match what is supplied in the MatchEquals field, otherwise the request will be ignored. Properties from the target action configuration can be included as placeholders in this value by surrounding the action configuration key with curly braces. For example, if the value supplied here is "refs/heads/{Branch}" and the target action has an action configuration property called "Branch" with a value of "master", the MatchEquals value will be evaluated as "refs/heads/master". A list of action configuration properties for built-in action types can be found here: <http://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html#action-requirements Pipeline Structure Reference Action Requirements> .
+wfrMatchEquals :: Lens' WebhookFilterRule (Maybe Text)
+wfrMatchEquals = lens _wfrMatchEquals (\ s a -> s{_wfrMatchEquals = a})
+
+-- | A JsonPath expression that will be applied to the body/payload of the webhook. The value selected by JsonPath expression must match the value specified in the matchEquals field, otherwise the request will be ignored. More information on JsonPath expressions can be found here: https://github.com/json-path/JsonPath.
+wfrJsonPath :: Lens' WebhookFilterRule Text
+wfrJsonPath = lens _wfrJsonPath (\ s a -> s{_wfrJsonPath = a})
+
+instance FromJSON WebhookFilterRule where
+        parseJSON
+          = withObject "WebhookFilterRule"
+              (\ x ->
+                 WebhookFilterRule' <$>
+                   (x .:? "matchEquals") <*> (x .: "jsonPath"))
+
+instance Hashable WebhookFilterRule where
+
+instance NFData WebhookFilterRule where
+
+instance ToJSON WebhookFilterRule where
+        toJSON WebhookFilterRule'{..}
+          = object
+              (catMaybes
+                 [("matchEquals" .=) <$> _wfrMatchEquals,
+                  Just ("jsonPath" .= _wfrJsonPath)])
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,7 +9,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.Types.Sum
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -483,3 +483,36 @@
 
 instance ToJSON StageTransitionType where
     toJSON = toJSONText
+
+data WebhookAuthenticationType
+  = GithubHmac
+  | IP
+  | Unauthenticated
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText WebhookAuthenticationType where
+    parser = takeLowerText >>= \case
+        "github_hmac" -> pure GithubHmac
+        "ip" -> pure IP
+        "unauthenticated" -> pure Unauthenticated
+        e -> fromTextError $ "Failure parsing WebhookAuthenticationType from value: '" <> e
+           <> "'. Accepted values: github_hmac, ip, unauthenticated"
+
+instance ToText WebhookAuthenticationType where
+    toText = \case
+        GithubHmac -> "GITHUB_HMAC"
+        IP -> "IP"
+        Unauthenticated -> "UNAUTHENTICATED"
+
+instance Hashable     WebhookAuthenticationType
+instance NFData       WebhookAuthenticationType
+instance ToByteString WebhookAuthenticationType
+instance ToQuery      WebhookAuthenticationType
+instance ToHeader     WebhookAuthenticationType
+
+instance ToJSON WebhookAuthenticationType where
+    toJSON = toJSONText
+
+instance FromJSON WebhookAuthenticationType where
+    parseJSON = parseJSONText "WebhookAuthenticationType"
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,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.UpdatePipeline
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -67,7 +67,7 @@
 
 -- | The name of the pipeline to be updated.
 upPipeline :: Lens' UpdatePipeline PipelineDeclaration
-upPipeline = lens _upPipeline (\ s a -> s{_upPipeline = a});
+upPipeline = lens _upPipeline (\ s a -> s{_upPipeline = a})
 
 instance AWSRequest UpdatePipeline where
         type Rs UpdatePipeline = UpdatePipelineResponse
@@ -126,15 +126,15 @@
     -> UpdatePipelineResponse
 updatePipelineResponse pResponseStatus_ =
   UpdatePipelineResponse'
-  {_uprsPipeline = Nothing, _uprsResponseStatus = pResponseStatus_}
+    {_uprsPipeline = Nothing, _uprsResponseStatus = pResponseStatus_}
 
 
 -- | The structure of the updated pipeline.
 uprsPipeline :: Lens' UpdatePipelineResponse (Maybe PipelineDeclaration)
-uprsPipeline = lens _uprsPipeline (\ s a -> s{_uprsPipeline = a});
+uprsPipeline = lens _uprsPipeline (\ s a -> s{_uprsPipeline = a})
 
 -- | -- | The response status code.
 uprsResponseStatus :: Lens' UpdatePipelineResponse Int
-uprsResponseStatus = lens _uprsResponseStatus (\ s a -> s{_uprsResponseStatus = a});
+uprsResponseStatus = lens _uprsResponseStatus (\ s a -> s{_uprsResponseStatus = a})
 
 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,7 +7,7 @@
 
 -- |
 -- Module      : Network.AWS.CodePipeline.Waiters
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -2,7 +2,7 @@
 
 -- |
 -- Module      : Main
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
diff --git a/test/Test/AWS/CodePipeline.hs b/test/Test/AWS/CodePipeline.hs
--- a/test/Test/AWS/CodePipeline.hs
+++ b/test/Test/AWS/CodePipeline.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE OverloadedStrings #-}
 
 -- Module      : Test.AWS.CodePipeline
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : This Source Code Form is subject to the terms of
 --               the Mozilla Public License, v. 2.0.
 --               A copy of the MPL can be found in the LICENSE file or
diff --git a/test/Test/AWS/CodePipeline/Internal.hs b/test/Test/AWS/CodePipeline/Internal.hs
--- a/test/Test/AWS/CodePipeline/Internal.hs
+++ b/test/Test/AWS/CodePipeline/Internal.hs
@@ -2,7 +2,7 @@
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
 -- Module      : Test.AWS.CodePipeline.Internal
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : This Source Code Form is subject to the terms of
 --               the Mozilla Public License, v. 2.0.
 --               A copy of the MPL can be found in the LICENSE file or
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,7 +5,7 @@
 
 -- |
 -- Module      : Test.AWS.Gen.CodePipeline
--- Copyright   : (c) 2013-2017 Brendan Hay
+-- Copyright   : (c) 2013-2018 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
@@ -43,6 +43,9 @@
 --         , requestPutThirdPartyJobFailureResult $
 --             putThirdPartyJobFailureResult
 --
+--         , requestRegisterWebhookWithThirdParty $
+--             registerWebhookWithThirdParty
+--
 --         , requestPollForThirdPartyJobs $
 --             pollForThirdPartyJobs
 --
@@ -76,6 +79,9 @@
 --         , requestPutJobSuccessResult $
 --             putJobSuccessResult
 --
+--         , requestDeregisterWebhookWithThirdParty $
+--             deregisterWebhookWithThirdParty
+--
 --         , requestDeleteCustomActionType $
 --             deleteCustomActionType
 --
@@ -94,6 +100,15 @@
 --         , requestEnableStageTransition $
 --             enableStageTransition
 --
+--         , requestDeleteWebhook $
+--             deleteWebhook
+--
+--         , requestPutWebhook $
+--             putWebhook
+--
+--         , requestListWebhooks $
+--             listWebhooks
+--
 --         , requestCreatePipeline $
 --             createPipeline
 --
@@ -127,6 +142,9 @@
 --         , responsePutThirdPartyJobFailureResult $
 --             putThirdPartyJobFailureResultResponse
 --
+--         , responseRegisterWebhookWithThirdParty $
+--             registerWebhookWithThirdPartyResponse
+--
 --         , responsePollForThirdPartyJobs $
 --             pollForThirdPartyJobsResponse
 --
@@ -160,6 +178,9 @@
 --         , responsePutJobSuccessResult $
 --             putJobSuccessResultResponse
 --
+--         , responseDeregisterWebhookWithThirdParty $
+--             deregisterWebhookWithThirdPartyResponse
+--
 --         , responseDeleteCustomActionType $
 --             deleteCustomActionTypeResponse
 --
@@ -178,6 +199,15 @@
 --         , responseEnableStageTransition $
 --             enableStageTransitionResponse
 --
+--         , responseDeleteWebhook $
+--             deleteWebhookResponse
+--
+--         , responsePutWebhook $
+--             putWebhookResponse
+--
+--         , responseListWebhooks $
+--             listWebhooksResponse
+--
 --         , responseCreatePipeline $
 --             createPipelineResponse
 --
@@ -223,6 +253,11 @@
     "PutThirdPartyJobFailureResult"
     "fixture/PutThirdPartyJobFailureResult.yaml"
 
+requestRegisterWebhookWithThirdParty :: RegisterWebhookWithThirdParty -> TestTree
+requestRegisterWebhookWithThirdParty = req
+    "RegisterWebhookWithThirdParty"
+    "fixture/RegisterWebhookWithThirdParty.yaml"
+
 requestPollForThirdPartyJobs :: PollForThirdPartyJobs -> TestTree
 requestPollForThirdPartyJobs = req
     "PollForThirdPartyJobs"
@@ -278,6 +313,11 @@
     "PutJobSuccessResult"
     "fixture/PutJobSuccessResult.yaml"
 
+requestDeregisterWebhookWithThirdParty :: DeregisterWebhookWithThirdParty -> TestTree
+requestDeregisterWebhookWithThirdParty = req
+    "DeregisterWebhookWithThirdParty"
+    "fixture/DeregisterWebhookWithThirdParty.yaml"
+
 requestDeleteCustomActionType :: DeleteCustomActionType -> TestTree
 requestDeleteCustomActionType = req
     "DeleteCustomActionType"
@@ -308,6 +348,21 @@
     "EnableStageTransition"
     "fixture/EnableStageTransition.yaml"
 
+requestDeleteWebhook :: DeleteWebhook -> TestTree
+requestDeleteWebhook = req
+    "DeleteWebhook"
+    "fixture/DeleteWebhook.yaml"
+
+requestPutWebhook :: PutWebhook -> TestTree
+requestPutWebhook = req
+    "PutWebhook"
+    "fixture/PutWebhook.yaml"
+
+requestListWebhooks :: ListWebhooks -> TestTree
+requestListWebhooks = req
+    "ListWebhooks"
+    "fixture/ListWebhooks.yaml"
+
 requestCreatePipeline :: CreatePipeline -> TestTree
 requestCreatePipeline = req
     "CreatePipeline"
@@ -370,6 +425,13 @@
     codePipeline
     (Proxy :: Proxy PutThirdPartyJobFailureResult)
 
+responseRegisterWebhookWithThirdParty :: RegisterWebhookWithThirdPartyResponse -> TestTree
+responseRegisterWebhookWithThirdParty = res
+    "RegisterWebhookWithThirdPartyResponse"
+    "fixture/RegisterWebhookWithThirdPartyResponse.proto"
+    codePipeline
+    (Proxy :: Proxy RegisterWebhookWithThirdParty)
+
 responsePollForThirdPartyJobs :: PollForThirdPartyJobsResponse -> TestTree
 responsePollForThirdPartyJobs = res
     "PollForThirdPartyJobsResponse"
@@ -447,6 +509,13 @@
     codePipeline
     (Proxy :: Proxy PutJobSuccessResult)
 
+responseDeregisterWebhookWithThirdParty :: DeregisterWebhookWithThirdPartyResponse -> TestTree
+responseDeregisterWebhookWithThirdParty = res
+    "DeregisterWebhookWithThirdPartyResponse"
+    "fixture/DeregisterWebhookWithThirdPartyResponse.proto"
+    codePipeline
+    (Proxy :: Proxy DeregisterWebhookWithThirdParty)
+
 responseDeleteCustomActionType :: DeleteCustomActionTypeResponse -> TestTree
 responseDeleteCustomActionType = res
     "DeleteCustomActionTypeResponse"
@@ -488,6 +557,27 @@
     "fixture/EnableStageTransitionResponse.proto"
     codePipeline
     (Proxy :: Proxy EnableStageTransition)
+
+responseDeleteWebhook :: DeleteWebhookResponse -> TestTree
+responseDeleteWebhook = res
+    "DeleteWebhookResponse"
+    "fixture/DeleteWebhookResponse.proto"
+    codePipeline
+    (Proxy :: Proxy DeleteWebhook)
+
+responsePutWebhook :: PutWebhookResponse -> TestTree
+responsePutWebhook = res
+    "PutWebhookResponse"
+    "fixture/PutWebhookResponse.proto"
+    codePipeline
+    (Proxy :: Proxy PutWebhook)
+
+responseListWebhooks :: ListWebhooksResponse -> TestTree
+responseListWebhooks = res
+    "ListWebhooksResponse"
+    "fixture/ListWebhooksResponse.proto"
+    codePipeline
+    (Proxy :: Proxy ListWebhooks)
 
 responseCreatePipeline :: CreatePipelineResponse -> TestTree
 responseCreatePipeline = res
