diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.3.7`
+`1.4.0`
 
 
 ## Description
@@ -16,19 +16,50 @@
 AWS CodeCommit
 
 This is the /AWS CodeCommit API Reference/. This reference provides
-descriptions of the AWS CodeCommit API.
+descriptions of the operations and data types for AWS CodeCommit API.
 
 You can use the AWS CodeCommit API to work with the following objects:
 
--   Repositories
--   Branches
--   Commits
+-   Repositories, by calling the following:
+    -   < BatchGetRepositories>, which returns information about one or
+        more repositories associated with your AWS account
+    -   < CreateRepository>, which creates an AWS CodeCommit repository
+    -   < DeleteRepository>, which deletes an AWS CodeCommit repository
+    -   < GetRepository>, which returns information about a specified
+        repository
+    -   < ListRepositories>, which lists all AWS CodeCommit repositories
+        associated with your AWS account
+    -   < UpdateRepositoryDescription>, which sets or updates the
+        description of the repository
+    -   < UpdateRepositoryName>, which changes the name of the
+        repository. If you change the name of a repository, no other
+        users of that repository will be able to access it until you
+        send them the new HTTPS or SSH URL to use.
+-   Branches, by calling the following:
+    -   < CreateBranch>, which creates a new branch in a specified
+        repository
+    -   < GetBranch>, which returns information about a specified branch
+    -   < ListBranches>, which lists all branches for a specified
+        repository
+    -   < UpdateDefaultBranch>, which changes the default branch for a
+        repository
+-   Information about committed code in a repository, by calling the
+    following:
+    -   < GetCommit>, which returns information about a commit,
+        including commit messages and committer information.
+-   Triggers, by calling the following:
+    -   < GetRepositoryTriggers>, which returns information about
+        triggers configured for a repository
+    -   < PutRepositoryTriggers>, which replaces all triggers for a
+        repository and can be used to create or delete triggers
+    -   < TestRepositoryTriggers>, which tests the functionality of a
+        repository trigger by sending data to the trigger target
 
-For information about how to use AWS CodeCommit, see the /AWS CodeCommit
-User Guide/.
+For information about how to use AWS CodeCommit, see the
+<http://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html AWS CodeCommit User Guide>.
 
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-codecommit)
-and the [AWS API Reference](http://docs.aws.amazon.com/codecommit/latest/APIReference/Welcome.html).
+and the [AWS API Reference](https://aws.amazon.com/documentation/).
 
 The types from this library are intended to be used with [amazonka](http://hackage.haskell.org/package/amazonka),
 which provides mechanisms for specifying AuthN/AuthZ information and sending requests.
diff --git a/amazonka-codecommit.cabal b/amazonka-codecommit.cabal
--- a/amazonka-codecommit.cabal
+++ b/amazonka-codecommit.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-codecommit
-version:               1.3.7
+version:               1.4.0
 synopsis:              Amazon CodeCommit 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@gmail.com>
-copyright:             Copyright (c) 2013-2015 Brendan Hay
+copyright:             Copyright (c) 2013-2016 Brendan Hay
 category:              Network, AWS, Cloud, Distributed Computing
 build-type:            Simple
 cabal-version:         >= 1.10
@@ -16,16 +16,47 @@
     AWS CodeCommit
 
     This is the /AWS CodeCommit API Reference/. This reference provides
-    descriptions of the AWS CodeCommit API.
+    descriptions of the operations and data types for AWS CodeCommit API.
 
     You can use the AWS CodeCommit API to work with the following objects:
 
-    -   Repositories
-    -   Branches
-    -   Commits
+    -   Repositories, by calling the following:
+        -   < BatchGetRepositories>, which returns information about one or
+            more repositories associated with your AWS account
+        -   < CreateRepository>, which creates an AWS CodeCommit repository
+        -   < DeleteRepository>, which deletes an AWS CodeCommit repository
+        -   < GetRepository>, which returns information about a specified
+            repository
+        -   < ListRepositories>, which lists all AWS CodeCommit repositories
+            associated with your AWS account
+        -   < UpdateRepositoryDescription>, which sets or updates the
+            description of the repository
+        -   < UpdateRepositoryName>, which changes the name of the
+            repository. If you change the name of a repository, no other
+            users of that repository will be able to access it until you
+            send them the new HTTPS or SSH URL to use.
+    -   Branches, by calling the following:
+        -   < CreateBranch>, which creates a new branch in a specified
+            repository
+        -   < GetBranch>, which returns information about a specified branch
+        -   < ListBranches>, which lists all branches for a specified
+            repository
+        -   < UpdateDefaultBranch>, which changes the default branch for a
+            repository
+    -   Information about committed code in a repository, by calling the
+        following:
+        -   < GetCommit>, which returns information about a commit,
+            including commit messages and committer information.
+    -   Triggers, by calling the following:
+        -   < GetRepositoryTriggers>, which returns information about
+            triggers configured for a repository
+        -   < PutRepositoryTriggers>, which replaces all triggers for a
+            repository and can be used to create or delete triggers
+        -   < TestRepositoryTriggers>, which tests the functionality of a
+            repository trigger by sending data to the trigger target
 
-    For information about how to use AWS CodeCommit, see the /AWS CodeCommit
-    User Guide/.
+    For information about how to use AWS CodeCommit, see the
+    <http://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html AWS CodeCommit User Guide>.
     .
     The types from this library are intended to be used with
     <http://hackage.haskell.org/package/amazonka amazonka>, which provides
@@ -38,7 +69,7 @@
     such as <http://hackage.haskell.org/package/lens lens> or
     <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
     .
-    See "Network.AWS.CodeCommit" and the <http://docs.aws.amazon.com/codecommit/latest/APIReference/Welcome.html AWS API Reference>
+    See "Network.AWS.CodeCommit" or <https://aws.amazon.com/documentation/ the AWS Documentation>
     to get started.
 
 source-repository head
@@ -58,9 +89,13 @@
         , Network.AWS.CodeCommit.CreateRepository
         , Network.AWS.CodeCommit.DeleteRepository
         , Network.AWS.CodeCommit.GetBranch
+        , Network.AWS.CodeCommit.GetCommit
         , Network.AWS.CodeCommit.GetRepository
+        , Network.AWS.CodeCommit.GetRepositoryTriggers
         , Network.AWS.CodeCommit.ListBranches
         , Network.AWS.CodeCommit.ListRepositories
+        , Network.AWS.CodeCommit.PutRepositoryTriggers
+        , Network.AWS.CodeCommit.TestRepositoryTriggers
         , Network.AWS.CodeCommit.Types
         , Network.AWS.CodeCommit.UpdateDefaultBranch
         , Network.AWS.CodeCommit.UpdateRepositoryDescription
@@ -72,7 +107,7 @@
         , Network.AWS.CodeCommit.Types.Sum
 
     build-depends:
-          amazonka-core == 1.3.7.*
+          amazonka-core == 1.4.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-codecommit-test
@@ -92,9 +127,9 @@
         , Test.AWS.CodeCommit.Internal
 
     build-depends:
-          amazonka-core == 1.3.7.*
-        , amazonka-test == 1.3.7.*
-        , amazonka-codecommit == 1.3.7.*
+          amazonka-core == 1.4.0.*
+        , amazonka-test == 1.4.0.*
+        , amazonka-codecommit == 1.4.0.*
         , base
         , bytestring
         , tasty
diff --git a/fixture/GetCommit.yaml b/fixture/GetCommit.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetCommit.yaml
diff --git a/fixture/GetCommitResponse.proto b/fixture/GetCommitResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetCommitResponse.proto
diff --git a/fixture/GetRepositoryTriggers.yaml b/fixture/GetRepositoryTriggers.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetRepositoryTriggers.yaml
diff --git a/fixture/GetRepositoryTriggersResponse.proto b/fixture/GetRepositoryTriggersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetRepositoryTriggersResponse.proto
diff --git a/fixture/PutRepositoryTriggers.yaml b/fixture/PutRepositoryTriggers.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutRepositoryTriggers.yaml
diff --git a/fixture/PutRepositoryTriggersResponse.proto b/fixture/PutRepositoryTriggersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutRepositoryTriggersResponse.proto
diff --git a/fixture/TestRepositoryTriggers.yaml b/fixture/TestRepositoryTriggers.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/TestRepositoryTriggers.yaml
diff --git a/fixture/TestRepositoryTriggersResponse.proto b/fixture/TestRepositoryTriggersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/TestRepositoryTriggersResponse.proto
diff --git a/gen/Network/AWS/CodeCommit.hs b/gen/Network/AWS/CodeCommit.hs
--- a/gen/Network/AWS/CodeCommit.hs
+++ b/gen/Network/AWS/CodeCommit.hs
@@ -5,7 +5,7 @@
 
 -- |
 -- Module      : Network.AWS.CodeCommit
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -14,18 +14,47 @@
 -- AWS CodeCommit
 --
 -- This is the /AWS CodeCommit API Reference/. This reference provides
--- descriptions of the AWS CodeCommit API.
+-- descriptions of the operations and data types for AWS CodeCommit API.
 --
 -- You can use the AWS CodeCommit API to work with the following objects:
 --
--- -   Repositories
--- -   Branches
--- -   Commits
---
--- For information about how to use AWS CodeCommit, see the /AWS CodeCommit
--- User Guide/.
+-- -   Repositories, by calling the following:
+--     -   < BatchGetRepositories>, which returns information about one or
+--         more repositories associated with your AWS account
+--     -   < CreateRepository>, which creates an AWS CodeCommit repository
+--     -   < DeleteRepository>, which deletes an AWS CodeCommit repository
+--     -   < GetRepository>, which returns information about a specified
+--         repository
+--     -   < ListRepositories>, which lists all AWS CodeCommit repositories
+--         associated with your AWS account
+--     -   < UpdateRepositoryDescription>, which sets or updates the
+--         description of the repository
+--     -   < UpdateRepositoryName>, which changes the name of the
+--         repository. If you change the name of a repository, no other
+--         users of that repository will be able to access it until you
+--         send them the new HTTPS or SSH URL to use.
+-- -   Branches, by calling the following:
+--     -   < CreateBranch>, which creates a new branch in a specified
+--         repository
+--     -   < GetBranch>, which returns information about a specified branch
+--     -   < ListBranches>, which lists all branches for a specified
+--         repository
+--     -   < UpdateDefaultBranch>, which changes the default branch for a
+--         repository
+-- -   Information about committed code in a repository, by calling the
+--     following:
+--     -   < GetCommit>, which returns information about a commit,
+--         including commit messages and committer information.
+-- -   Triggers, by calling the following:
+--     -   < GetRepositoryTriggers>, which returns information about
+--         triggers configured for a repository
+--     -   < PutRepositoryTriggers>, which replaces all triggers for a
+--         repository and can be used to create or delete triggers
+--     -   < TestRepositoryTriggers>, which tests the functionality of a
+--         repository trigger by sending data to the trigger target
 --
--- /See:/ <http://docs.aws.amazon.com/codecommit/latest/APIReference/Welcome.html AWS API Reference>
+-- For information about how to use AWS CodeCommit, see the
+-- <http://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html AWS CodeCommit User Guide>.
 module Network.AWS.CodeCommit
     (
     -- * Service Configuration
@@ -34,12 +63,21 @@
     -- * Errors
     -- $errors
 
+    -- ** InvalidRepositoryTriggerRegionException
+    , _InvalidRepositoryTriggerRegionException
+
     -- ** InvalidContinuationTokenException
     , _InvalidContinuationTokenException
 
     -- ** EncryptionKeyNotFoundException
     , _EncryptionKeyNotFoundException
 
+    -- ** InvalidRepositoryTriggerBranchNameException
+    , _InvalidRepositoryTriggerBranchNameException
+
+    -- ** InvalidRepositoryTriggerCustomDataException
+    , _InvalidRepositoryTriggerCustomDataException
+
     -- ** MaximumRepositoryNamesExceededException
     , _MaximumRepositoryNamesExceededException
 
@@ -49,15 +87,24 @@
     -- ** RepositoryNameExistsException
     , _RepositoryNameExistsException
 
+    -- ** MaximumRepositoryTriggersExceededException
+    , _MaximumRepositoryTriggersExceededException
+
     -- ** InvalidBranchNameException
     , _InvalidBranchNameException
 
     -- ** BranchNameRequiredException
     , _BranchNameRequiredException
 
+    -- ** RepositoryTriggersListRequiredException
+    , _RepositoryTriggersListRequiredException
+
     -- ** EncryptionKeyUnavailableException
     , _EncryptionKeyUnavailableException
 
+    -- ** InvalidRepositoryTriggerDestinationARNException
+    , _InvalidRepositoryTriggerDestinationARNException
+
     -- ** RepositoryNamesRequiredException
     , _RepositoryNamesRequiredException
 
@@ -67,12 +114,21 @@
     -- ** BranchDoesNotExistException
     , _BranchDoesNotExistException
 
+    -- ** RepositoryTriggerNameRequiredException
+    , _RepositoryTriggerNameRequiredException
+
     -- ** RepositoryDoesNotExistException
     , _RepositoryDoesNotExistException
 
+    -- ** MaximumBranchesExceededException
+    , _MaximumBranchesExceededException
+
     -- ** EncryptionIntegrityChecksFailedException
     , _EncryptionIntegrityChecksFailedException
 
+    -- ** RepositoryTriggerEventsListRequiredException
+    , _RepositoryTriggerEventsListRequiredException
+
     -- ** EncryptionKeyAccessDeniedException
     , _EncryptionKeyAccessDeniedException
 
@@ -91,15 +147,30 @@
     -- ** InvalidCommitIdException
     , _InvalidCommitIdException
 
+    -- ** RepositoryTriggerDestinationARNRequiredException
+    , _RepositoryTriggerDestinationARNRequiredException
+
     -- ** CommitDoesNotExistException
     , _CommitDoesNotExistException
 
+    -- ** RepositoryTriggerBranchNameListRequiredException
+    , _RepositoryTriggerBranchNameListRequiredException
+
+    -- ** CommitIdDoesNotExistException
+    , _CommitIdDoesNotExistException
+
+    -- ** InvalidRepositoryTriggerNameException
+    , _InvalidRepositoryTriggerNameException
+
     -- ** RepositoryNameRequiredException
     , _RepositoryNameRequiredException
 
     -- ** RepositoryLimitExceededException
     , _RepositoryLimitExceededException
 
+    -- ** InvalidRepositoryTriggerEventsException
+    , _InvalidRepositoryTriggerEventsException
+
     -- ** InvalidRepositoryNameException
     , _InvalidRepositoryNameException
 
@@ -112,6 +183,9 @@
     -- ** UpdateRepositoryName
     , module Network.AWS.CodeCommit.UpdateRepositoryName
 
+    -- ** GetCommit
+    , module Network.AWS.CodeCommit.GetCommit
+
     -- ** GetBranch
     , module Network.AWS.CodeCommit.GetBranch
 
@@ -136,6 +210,15 @@
     -- ** GetRepository
     , module Network.AWS.CodeCommit.GetRepository
 
+    -- ** GetRepositoryTriggers
+    , module Network.AWS.CodeCommit.GetRepositoryTriggers
+
+    -- ** TestRepositoryTriggers
+    , module Network.AWS.CodeCommit.TestRepositoryTriggers
+
+    -- ** PutRepositoryTriggers
+    , module Network.AWS.CodeCommit.PutRepositoryTriggers
+
     -- ** DeleteRepository
     , module Network.AWS.CodeCommit.DeleteRepository
 
@@ -147,6 +230,9 @@
     -- ** OrderEnum
     , OrderEnum (..)
 
+    -- ** RepositoryTriggerEventEnum
+    , RepositoryTriggerEventEnum (..)
+
     -- ** SortByEnum
     , SortByEnum (..)
 
@@ -156,6 +242,16 @@
     , biCommitId
     , biBranchName
 
+    -- ** Commit
+    , Commit
+    , commit
+    , cCommitter
+    , cTreeId
+    , cAdditionalData
+    , cParents
+    , cAuthor
+    , cMessage
+
     -- ** RepositoryMetadata
     , RepositoryMetadata
     , repositoryMetadata
@@ -175,6 +271,28 @@
     , repositoryNameIdPair
     , rnipRepositoryId
     , rnipRepositoryName
+
+    -- ** RepositoryTrigger
+    , RepositoryTrigger
+    , repositoryTrigger
+    , rtBranches
+    , rtCustomData
+    , rtDestinationARN
+    , rtName
+    , rtEvents
+
+    -- ** RepositoryTriggerExecutionFailure
+    , RepositoryTriggerExecutionFailure
+    , repositoryTriggerExecutionFailure
+    , rtefFailureMessage
+    , rtefTrigger
+
+    -- ** UserInfo
+    , UserInfo
+    , userInfo
+    , uiEmail
+    , uiDate
+    , uiName
     ) where
 
 import           Network.AWS.CodeCommit.BatchGetRepositories
@@ -182,9 +300,13 @@
 import           Network.AWS.CodeCommit.CreateRepository
 import           Network.AWS.CodeCommit.DeleteRepository
 import           Network.AWS.CodeCommit.GetBranch
+import           Network.AWS.CodeCommit.GetCommit
 import           Network.AWS.CodeCommit.GetRepository
+import           Network.AWS.CodeCommit.GetRepositoryTriggers
 import           Network.AWS.CodeCommit.ListBranches
 import           Network.AWS.CodeCommit.ListRepositories
+import           Network.AWS.CodeCommit.PutRepositoryTriggers
+import           Network.AWS.CodeCommit.TestRepositoryTriggers
 import           Network.AWS.CodeCommit.Types
 import           Network.AWS.CodeCommit.UpdateDefaultBranch
 import           Network.AWS.CodeCommit.UpdateRepositoryDescription
diff --git a/gen/Network/AWS/CodeCommit/BatchGetRepositories.hs b/gen/Network/AWS/CodeCommit/BatchGetRepositories.hs
--- a/gen/Network/AWS/CodeCommit/BatchGetRepositories.hs
+++ b/gen/Network/AWS/CodeCommit/BatchGetRepositories.hs
@@ -12,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CodeCommit.BatchGetRepositories
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Gets information about one or more repositories.
+-- Returns information about one or more repositories.
 --
 -- The description field for a repository accepts all HTML characters and
 -- all valid Unicode characters. Applications that do not HTML-encode the
@@ -26,8 +26,6 @@
 -- potentially malicious code. Make sure that you HTML-encode the
 -- description field in any application that uses this API to display the
 -- repository description on a web page.
---
--- /See:/ <http://docs.aws.amazon.com/codecommit/latest/APIReference/API_BatchGetRepositories.html AWS API Reference> for BatchGetRepositories.
 module Network.AWS.CodeCommit.BatchGetRepositories
     (
     -- * Creating a Request
@@ -86,6 +84,8 @@
                    (x .?> "repositories" .!@ mempty) <*>
                      (x .?> "repositoriesNotFound" .!@ mempty)
                      <*> (pure (fromEnum s)))
+
+instance Hashable BatchGetRepositories
 
 instance ToHeaders BatchGetRepositories where
         toHeaders
diff --git a/gen/Network/AWS/CodeCommit/CreateBranch.hs b/gen/Network/AWS/CodeCommit/CreateBranch.hs
--- a/gen/Network/AWS/CodeCommit/CreateBranch.hs
+++ b/gen/Network/AWS/CodeCommit/CreateBranch.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodeCommit.CreateBranch
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -22,8 +22,6 @@
 --
 -- Calling the create branch operation does not set a repository\'s default
 -- branch. To do this, call the update default branch operation.
---
--- /See:/ <http://docs.aws.amazon.com/codecommit/latest/APIReference/API_CreateBranch.html AWS API Reference> for CreateBranch.
 module Network.AWS.CodeCommit.CreateBranch
     (
     -- * Creating a Request
@@ -85,9 +83,6 @@
 cbBranchName = lens _cbBranchName (\ s a -> s{_cbBranchName = a});
 
 -- | The ID of the commit to point the new branch to.
---
--- If this commit ID is not specified, the new branch will point to the
--- commit that is pointed to by the repository\'s default branch.
 cbCommitId :: Lens' CreateBranch Text
 cbCommitId = lens _cbCommitId (\ s a -> s{_cbCommitId = a});
 
@@ -95,6 +90,8 @@
         type Rs CreateBranch = CreateBranchResponse
         request = postJSON codeCommit
         response = receiveNull CreateBranchResponse'
+
+instance Hashable CreateBranch
 
 instance ToHeaders CreateBranch where
         toHeaders
diff --git a/gen/Network/AWS/CodeCommit/CreateRepository.hs b/gen/Network/AWS/CodeCommit/CreateRepository.hs
--- a/gen/Network/AWS/CodeCommit/CreateRepository.hs
+++ b/gen/Network/AWS/CodeCommit/CreateRepository.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CodeCommit.CreateRepository
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 -- Creates a new, empty repository.
---
--- /See:/ <http://docs.aws.amazon.com/codecommit/latest/APIReference/API_CreateRepository.html AWS API Reference> for CreateRepository.
 module Network.AWS.CodeCommit.CreateRepository
     (
     -- * Creating a Request
@@ -70,14 +68,24 @@
     }
 
 -- | A comment or description about the new repository.
+--
+-- The description field for a repository accepts all HTML characters and
+-- all valid Unicode characters. Applications that do not HTML-encode the
+-- description and display it in a web page could expose users to
+-- potentially malicious code. Make sure that you HTML-encode the
+-- description field in any application that uses this API to display the
+-- repository description on a web page.
 crRepositoryDescription :: Lens' CreateRepository (Maybe Text)
 crRepositoryDescription = lens _crRepositoryDescription (\ s a -> s{_crRepositoryDescription = a});
 
 -- | The name of the new repository to be created.
 --
 -- The repository name must be unique across the calling AWS account. In
--- addition, repository names are restricted to alphanumeric characters.
--- The suffix \".git\" is prohibited.
+-- addition, repository names are limited to 100 alphanumeric, dash, and
+-- underscore characters, and cannot include certain characters. For a full
+-- description of the limits on repository names, see
+-- <http://docs.aws.amazon.com/codecommit/latest/userguide/limits.html Limits>
+-- in the AWS CodeCommit User Guide. The suffix \".git\" is prohibited.
 crRepositoryName :: Lens' CreateRepository Text
 crRepositoryName = lens _crRepositoryName (\ s a -> s{_crRepositoryName = a});
 
@@ -89,6 +97,8 @@
               (\ s h x ->
                  CreateRepositoryResponse' <$>
                    (x .?> "repositoryMetadata") <*> (pure (fromEnum s)))
+
+instance Hashable CreateRepository
 
 instance ToHeaders CreateRepository where
         toHeaders
diff --git a/gen/Network/AWS/CodeCommit/DeleteRepository.hs b/gen/Network/AWS/CodeCommit/DeleteRepository.hs
--- a/gen/Network/AWS/CodeCommit/DeleteRepository.hs
+++ b/gen/Network/AWS/CodeCommit/DeleteRepository.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodeCommit.DeleteRepository
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -24,8 +24,6 @@
 -- Deleting a repository also deletes all associated objects and metadata.
 -- After a repository is deleted, all future push calls to the deleted
 -- repository will fail.
---
--- /See:/ <http://docs.aws.amazon.com/codecommit/latest/APIReference/API_DeleteRepository.html AWS API Reference> for DeleteRepository.
 module Network.AWS.CodeCommit.DeleteRepository
     (
     -- * Creating a Request
@@ -81,6 +79,8 @@
               (\ s h x ->
                  DeleteRepositoryResponse' <$>
                    (x .?> "repositoryId") <*> (pure (fromEnum s)))
+
+instance Hashable DeleteRepository
 
 instance ToHeaders DeleteRepository where
         toHeaders
diff --git a/gen/Network/AWS/CodeCommit/GetBranch.hs b/gen/Network/AWS/CodeCommit/GetBranch.hs
--- a/gen/Network/AWS/CodeCommit/GetBranch.hs
+++ b/gen/Network/AWS/CodeCommit/GetBranch.hs
@@ -12,16 +12,14 @@
 
 -- |
 -- Module      : Network.AWS.CodeCommit.GetBranch
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Retrieves information about a repository branch, including its name and
+-- Returns information about a repository branch, including its name and
 -- the last commit ID.
---
--- /See:/ <http://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetBranch.html AWS API Reference> for GetBranch.
 module Network.AWS.CodeCommit.GetBranch
     (
     -- * Creating a Request
@@ -73,7 +71,8 @@
 gbBranchName :: Lens' GetBranch (Maybe Text)
 gbBranchName = lens _gbBranchName (\ s a -> s{_gbBranchName = a});
 
--- | Undocumented member.
+-- | The name of the repository that contains the branch for which you want
+-- to retrieve information.
 gbRepositoryName :: Lens' GetBranch (Maybe Text)
 gbRepositoryName = lens _gbRepositoryName (\ s a -> s{_gbRepositoryName = a});
 
@@ -85,6 +84,8 @@
               (\ s h x ->
                  GetBranchResponse' <$>
                    (x .?> "branch") <*> (pure (fromEnum s)))
+
+instance Hashable GetBranch
 
 instance ToHeaders GetBranch where
         toHeaders
diff --git a/gen/Network/AWS/CodeCommit/GetCommit.hs b/gen/Network/AWS/CodeCommit/GetCommit.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CodeCommit/GetCommit.hs
@@ -0,0 +1,144 @@
+{-# 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.CodeCommit.GetCommit
+-- Copyright   : (c) 2013-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns information about a commit, including commit message and
+-- committer information.
+module Network.AWS.CodeCommit.GetCommit
+    (
+    -- * Creating a Request
+      getCommit
+    , GetCommit
+    -- * Request Lenses
+    , gcRepositoryName
+    , gcCommitId
+
+    -- * Destructuring the Response
+    , getCommitResponse
+    , GetCommitResponse
+    -- * Response Lenses
+    , gcrsResponseStatus
+    , gcrsCommit
+    ) where
+
+import           Network.AWS.CodeCommit.Types
+import           Network.AWS.CodeCommit.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Represents the input of a get commit operation.
+--
+-- /See:/ 'getCommit' smart constructor.
+data GetCommit = GetCommit'
+    { _gcRepositoryName :: !Text
+    , _gcCommitId       :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetCommit' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gcRepositoryName'
+--
+-- * 'gcCommitId'
+getCommit
+    :: Text -- ^ 'gcRepositoryName'
+    -> Text -- ^ 'gcCommitId'
+    -> GetCommit
+getCommit pRepositoryName_ pCommitId_ =
+    GetCommit'
+    { _gcRepositoryName = pRepositoryName_
+    , _gcCommitId = pCommitId_
+    }
+
+-- | The name of the repository to which the commit was made.
+gcRepositoryName :: Lens' GetCommit Text
+gcRepositoryName = lens _gcRepositoryName (\ s a -> s{_gcRepositoryName = a});
+
+-- | The commit ID.
+gcCommitId :: Lens' GetCommit Text
+gcCommitId = lens _gcCommitId (\ s a -> s{_gcCommitId = a});
+
+instance AWSRequest GetCommit where
+        type Rs GetCommit = GetCommitResponse
+        request = postJSON codeCommit
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetCommitResponse' <$>
+                   (pure (fromEnum s)) <*> (x .:> "commit"))
+
+instance Hashable GetCommit
+
+instance ToHeaders GetCommit where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CodeCommit_20150413.GetCommit" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON GetCommit where
+        toJSON GetCommit'{..}
+          = object
+              (catMaybes
+                 [Just ("repositoryName" .= _gcRepositoryName),
+                  Just ("commitId" .= _gcCommitId)])
+
+instance ToPath GetCommit where
+        toPath = const "/"
+
+instance ToQuery GetCommit where
+        toQuery = const mempty
+
+-- | Represents the output of a get commit operation.
+--
+-- /See:/ 'getCommitResponse' smart constructor.
+data GetCommitResponse = GetCommitResponse'
+    { _gcrsResponseStatus :: !Int
+    , _gcrsCommit         :: !Commit
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetCommitResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gcrsResponseStatus'
+--
+-- * 'gcrsCommit'
+getCommitResponse
+    :: Int -- ^ 'gcrsResponseStatus'
+    -> Commit -- ^ 'gcrsCommit'
+    -> GetCommitResponse
+getCommitResponse pResponseStatus_ pCommit_ =
+    GetCommitResponse'
+    { _gcrsResponseStatus = pResponseStatus_
+    , _gcrsCommit = pCommit_
+    }
+
+-- | The response status code.
+gcrsResponseStatus :: Lens' GetCommitResponse Int
+gcrsResponseStatus = lens _gcrsResponseStatus (\ s a -> s{_gcrsResponseStatus = a});
+
+-- | Information about the specified commit.
+gcrsCommit :: Lens' GetCommitResponse Commit
+gcrsCommit = lens _gcrsCommit (\ s a -> s{_gcrsCommit = a});
diff --git a/gen/Network/AWS/CodeCommit/GetRepository.hs b/gen/Network/AWS/CodeCommit/GetRepository.hs
--- a/gen/Network/AWS/CodeCommit/GetRepository.hs
+++ b/gen/Network/AWS/CodeCommit/GetRepository.hs
@@ -12,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CodeCommit.GetRepository
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Gets information about a repository.
+-- Returns information about a repository.
 --
 -- The description field for a repository accepts all HTML characters and
 -- all valid Unicode characters. Applications that do not HTML-encode the
@@ -26,8 +26,6 @@
 -- potentially malicious code. Make sure that you HTML-encode the
 -- description field in any application that uses this API to display the
 -- repository description on a web page.
---
--- /See:/ <http://docs.aws.amazon.com/codecommit/latest/APIReference/API_GetRepository.html AWS API Reference> for GetRepository.
 module Network.AWS.CodeCommit.GetRepository
     (
     -- * Creating a Request
@@ -83,6 +81,8 @@
               (\ s h x ->
                  GetRepositoryResponse' <$>
                    (x .?> "repositoryMetadata") <*> (pure (fromEnum s)))
+
+instance Hashable GetRepository
 
 instance ToHeaders GetRepository where
         toHeaders
diff --git a/gen/Network/AWS/CodeCommit/GetRepositoryTriggers.hs b/gen/Network/AWS/CodeCommit/GetRepositoryTriggers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CodeCommit/GetRepositoryTriggers.hs
@@ -0,0 +1,143 @@
+{-# 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.CodeCommit.GetRepositoryTriggers
+-- Copyright   : (c) 2013-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets information about triggers configured for a repository.
+module Network.AWS.CodeCommit.GetRepositoryTriggers
+    (
+    -- * Creating a Request
+      getRepositoryTriggers
+    , GetRepositoryTriggers
+    -- * Request Lenses
+    , grtRepositoryName
+
+    -- * Destructuring the Response
+    , getRepositoryTriggersResponse
+    , GetRepositoryTriggersResponse
+    -- * Response Lenses
+    , grtrsConfigurationId
+    , grtrsTriggers
+    , grtrsResponseStatus
+    ) where
+
+import           Network.AWS.CodeCommit.Types
+import           Network.AWS.CodeCommit.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Represents the input of a get repository triggers operation.
+--
+-- /See:/ 'getRepositoryTriggers' smart constructor.
+newtype GetRepositoryTriggers = GetRepositoryTriggers'
+    { _grtRepositoryName :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetRepositoryTriggers' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'grtRepositoryName'
+getRepositoryTriggers
+    :: GetRepositoryTriggers
+getRepositoryTriggers =
+    GetRepositoryTriggers'
+    { _grtRepositoryName = Nothing
+    }
+
+-- | The name of the repository for which the trigger is configured.
+grtRepositoryName :: Lens' GetRepositoryTriggers (Maybe Text)
+grtRepositoryName = lens _grtRepositoryName (\ s a -> s{_grtRepositoryName = a});
+
+instance AWSRequest GetRepositoryTriggers where
+        type Rs GetRepositoryTriggers =
+             GetRepositoryTriggersResponse
+        request = postJSON codeCommit
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetRepositoryTriggersResponse' <$>
+                   (x .?> "configurationId") <*>
+                     (x .?> "triggers" .!@ mempty)
+                     <*> (pure (fromEnum s)))
+
+instance Hashable GetRepositoryTriggers
+
+instance ToHeaders GetRepositoryTriggers where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CodeCommit_20150413.GetRepositoryTriggers" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON GetRepositoryTriggers where
+        toJSON GetRepositoryTriggers'{..}
+          = object
+              (catMaybes
+                 [("repositoryName" .=) <$> _grtRepositoryName])
+
+instance ToPath GetRepositoryTriggers where
+        toPath = const "/"
+
+instance ToQuery GetRepositoryTriggers where
+        toQuery = const mempty
+
+-- | Represents the output of a get repository triggers operation.
+--
+-- /See:/ 'getRepositoryTriggersResponse' smart constructor.
+data GetRepositoryTriggersResponse = GetRepositoryTriggersResponse'
+    { _grtrsConfigurationId :: !(Maybe Text)
+    , _grtrsTriggers        :: !(Maybe [RepositoryTrigger])
+    , _grtrsResponseStatus  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetRepositoryTriggersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'grtrsConfigurationId'
+--
+-- * 'grtrsTriggers'
+--
+-- * 'grtrsResponseStatus'
+getRepositoryTriggersResponse
+    :: Int -- ^ 'grtrsResponseStatus'
+    -> GetRepositoryTriggersResponse
+getRepositoryTriggersResponse pResponseStatus_ =
+    GetRepositoryTriggersResponse'
+    { _grtrsConfigurationId = Nothing
+    , _grtrsTriggers = Nothing
+    , _grtrsResponseStatus = pResponseStatus_
+    }
+
+-- | The system-generated unique ID for the trigger.
+grtrsConfigurationId :: Lens' GetRepositoryTriggersResponse (Maybe Text)
+grtrsConfigurationId = lens _grtrsConfigurationId (\ s a -> s{_grtrsConfigurationId = a});
+
+-- | The JSON block of configuration information for each trigger.
+grtrsTriggers :: Lens' GetRepositoryTriggersResponse [RepositoryTrigger]
+grtrsTriggers = lens _grtrsTriggers (\ s a -> s{_grtrsTriggers = a}) . _Default . _Coerce;
+
+-- | The response status code.
+grtrsResponseStatus :: Lens' GetRepositoryTriggersResponse Int
+grtrsResponseStatus = lens _grtrsResponseStatus (\ s a -> s{_grtrsResponseStatus = a});
diff --git a/gen/Network/AWS/CodeCommit/ListBranches.hs b/gen/Network/AWS/CodeCommit/ListBranches.hs
--- a/gen/Network/AWS/CodeCommit/ListBranches.hs
+++ b/gen/Network/AWS/CodeCommit/ListBranches.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CodeCommit.ListBranches
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 -- Gets information about one or more branches in a repository.
---
--- /See:/ <http://docs.aws.amazon.com/codecommit/latest/APIReference/API_ListBranches.html AWS API Reference> for ListBranches.
 module Network.AWS.CodeCommit.ListBranches
     (
     -- * Creating a Request
@@ -87,6 +85,8 @@
                  ListBranchesResponse' <$>
                    (x .?> "branches" .!@ mempty) <*> (x .?> "nextToken")
                      <*> (pure (fromEnum s)))
+
+instance Hashable ListBranches
 
 instance ToHeaders ListBranches where
         toHeaders
diff --git a/gen/Network/AWS/CodeCommit/ListRepositories.hs b/gen/Network/AWS/CodeCommit/ListRepositories.hs
--- a/gen/Network/AWS/CodeCommit/ListRepositories.hs
+++ b/gen/Network/AWS/CodeCommit/ListRepositories.hs
@@ -12,15 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.CodeCommit.ListRepositories
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 -- Gets information about one or more repositories.
---
--- /See:/ <http://docs.aws.amazon.com/codecommit/latest/APIReference/API_ListRepositories.html AWS API Reference> for ListRepositories.
 module Network.AWS.CodeCommit.ListRepositories
     (
     -- * Creating a Request
@@ -99,6 +97,8 @@
                    (x .?> "repositories" .!@ mempty) <*>
                      (x .?> "nextToken")
                      <*> (pure (fromEnum s)))
+
+instance Hashable ListRepositories
 
 instance ToHeaders ListRepositories where
         toHeaders
diff --git a/gen/Network/AWS/CodeCommit/PutRepositoryTriggers.hs b/gen/Network/AWS/CodeCommit/PutRepositoryTriggers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CodeCommit/PutRepositoryTriggers.hs
@@ -0,0 +1,144 @@
+{-# 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.CodeCommit.PutRepositoryTriggers
+-- Copyright   : (c) 2013-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Replaces all triggers for a repository. This can be used to create or
+-- delete triggers.
+module Network.AWS.CodeCommit.PutRepositoryTriggers
+    (
+    -- * Creating a Request
+      putRepositoryTriggers
+    , PutRepositoryTriggers
+    -- * Request Lenses
+    , prtTriggers
+    , prtRepositoryName
+
+    -- * Destructuring the Response
+    , putRepositoryTriggersResponse
+    , PutRepositoryTriggersResponse
+    -- * Response Lenses
+    , prtrsConfigurationId
+    , prtrsResponseStatus
+    ) where
+
+import           Network.AWS.CodeCommit.Types
+import           Network.AWS.CodeCommit.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Represents the input ofa put repository triggers operation.
+--
+-- /See:/ 'putRepositoryTriggers' smart constructor.
+data PutRepositoryTriggers = PutRepositoryTriggers'
+    { _prtTriggers       :: !(Maybe [RepositoryTrigger])
+    , _prtRepositoryName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PutRepositoryTriggers' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'prtTriggers'
+--
+-- * 'prtRepositoryName'
+putRepositoryTriggers
+    :: PutRepositoryTriggers
+putRepositoryTriggers =
+    PutRepositoryTriggers'
+    { _prtTriggers = Nothing
+    , _prtRepositoryName = Nothing
+    }
+
+-- | The JSON block of configuration information for each trigger.
+prtTriggers :: Lens' PutRepositoryTriggers [RepositoryTrigger]
+prtTriggers = lens _prtTriggers (\ s a -> s{_prtTriggers = a}) . _Default . _Coerce;
+
+-- | The name of the repository where you want to create or update the
+-- trigger.
+prtRepositoryName :: Lens' PutRepositoryTriggers (Maybe Text)
+prtRepositoryName = lens _prtRepositoryName (\ s a -> s{_prtRepositoryName = a});
+
+instance AWSRequest PutRepositoryTriggers where
+        type Rs PutRepositoryTriggers =
+             PutRepositoryTriggersResponse
+        request = postJSON codeCommit
+        response
+          = receiveJSON
+              (\ s h x ->
+                 PutRepositoryTriggersResponse' <$>
+                   (x .?> "configurationId") <*> (pure (fromEnum s)))
+
+instance Hashable PutRepositoryTriggers
+
+instance ToHeaders PutRepositoryTriggers where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CodeCommit_20150413.PutRepositoryTriggers" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON PutRepositoryTriggers where
+        toJSON PutRepositoryTriggers'{..}
+          = object
+              (catMaybes
+                 [("triggers" .=) <$> _prtTriggers,
+                  ("repositoryName" .=) <$> _prtRepositoryName])
+
+instance ToPath PutRepositoryTriggers where
+        toPath = const "/"
+
+instance ToQuery PutRepositoryTriggers where
+        toQuery = const mempty
+
+-- | Represents the output of a put repository triggers operation.
+--
+-- /See:/ 'putRepositoryTriggersResponse' smart constructor.
+data PutRepositoryTriggersResponse = PutRepositoryTriggersResponse'
+    { _prtrsConfigurationId :: !(Maybe Text)
+    , _prtrsResponseStatus  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PutRepositoryTriggersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'prtrsConfigurationId'
+--
+-- * 'prtrsResponseStatus'
+putRepositoryTriggersResponse
+    :: Int -- ^ 'prtrsResponseStatus'
+    -> PutRepositoryTriggersResponse
+putRepositoryTriggersResponse pResponseStatus_ =
+    PutRepositoryTriggersResponse'
+    { _prtrsConfigurationId = Nothing
+    , _prtrsResponseStatus = pResponseStatus_
+    }
+
+-- | The system-generated unique ID for the create or update operation.
+prtrsConfigurationId :: Lens' PutRepositoryTriggersResponse (Maybe Text)
+prtrsConfigurationId = lens _prtrsConfigurationId (\ s a -> s{_prtrsConfigurationId = a});
+
+-- | The response status code.
+prtrsResponseStatus :: Lens' PutRepositoryTriggersResponse Int
+prtrsResponseStatus = lens _prtrsResponseStatus (\ s a -> s{_prtrsResponseStatus = a});
diff --git a/gen/Network/AWS/CodeCommit/TestRepositoryTriggers.hs b/gen/Network/AWS/CodeCommit/TestRepositoryTriggers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/CodeCommit/TestRepositoryTriggers.hs
@@ -0,0 +1,159 @@
+{-# 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.CodeCommit.TestRepositoryTriggers
+-- Copyright   : (c) 2013-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Tests the functionality of repository triggers by sending information to
+-- the trigger target. If real data is available in the repository, the
+-- test will send data from the last commit. If no data is available,
+-- sample data will be generated.
+module Network.AWS.CodeCommit.TestRepositoryTriggers
+    (
+    -- * Creating a Request
+      testRepositoryTriggers
+    , TestRepositoryTriggers
+    -- * Request Lenses
+    , trtTriggers
+    , trtRepositoryName
+
+    -- * Destructuring the Response
+    , testRepositoryTriggersResponse
+    , TestRepositoryTriggersResponse
+    -- * Response Lenses
+    , trtrsFailedExecutions
+    , trtrsSuccessfulExecutions
+    , trtrsResponseStatus
+    ) where
+
+import           Network.AWS.CodeCommit.Types
+import           Network.AWS.CodeCommit.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Represents the input of a test repository triggers operation.
+--
+-- /See:/ 'testRepositoryTriggers' smart constructor.
+data TestRepositoryTriggers = TestRepositoryTriggers'
+    { _trtTriggers       :: !(Maybe [RepositoryTrigger])
+    , _trtRepositoryName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TestRepositoryTriggers' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'trtTriggers'
+--
+-- * 'trtRepositoryName'
+testRepositoryTriggers
+    :: TestRepositoryTriggers
+testRepositoryTriggers =
+    TestRepositoryTriggers'
+    { _trtTriggers = Nothing
+    , _trtRepositoryName = Nothing
+    }
+
+-- | The list of triggers to test.
+trtTriggers :: Lens' TestRepositoryTriggers [RepositoryTrigger]
+trtTriggers = lens _trtTriggers (\ s a -> s{_trtTriggers = a}) . _Default . _Coerce;
+
+-- | The name of the repository in which to test the triggers.
+trtRepositoryName :: Lens' TestRepositoryTriggers (Maybe Text)
+trtRepositoryName = lens _trtRepositoryName (\ s a -> s{_trtRepositoryName = a});
+
+instance AWSRequest TestRepositoryTriggers where
+        type Rs TestRepositoryTriggers =
+             TestRepositoryTriggersResponse
+        request = postJSON codeCommit
+        response
+          = receiveJSON
+              (\ s h x ->
+                 TestRepositoryTriggersResponse' <$>
+                   (x .?> "failedExecutions" .!@ mempty) <*>
+                     (x .?> "successfulExecutions" .!@ mempty)
+                     <*> (pure (fromEnum s)))
+
+instance Hashable TestRepositoryTriggers
+
+instance ToHeaders TestRepositoryTriggers where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("CodeCommit_20150413.TestRepositoryTriggers" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON TestRepositoryTriggers where
+        toJSON TestRepositoryTriggers'{..}
+          = object
+              (catMaybes
+                 [("triggers" .=) <$> _trtTriggers,
+                  ("repositoryName" .=) <$> _trtRepositoryName])
+
+instance ToPath TestRepositoryTriggers where
+        toPath = const "/"
+
+instance ToQuery TestRepositoryTriggers where
+        toQuery = const mempty
+
+-- | Represents the output of a test repository triggers operation.
+--
+-- /See:/ 'testRepositoryTriggersResponse' smart constructor.
+data TestRepositoryTriggersResponse = TestRepositoryTriggersResponse'
+    { _trtrsFailedExecutions     :: !(Maybe [RepositoryTriggerExecutionFailure])
+    , _trtrsSuccessfulExecutions :: !(Maybe [Text])
+    , _trtrsResponseStatus       :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TestRepositoryTriggersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'trtrsFailedExecutions'
+--
+-- * 'trtrsSuccessfulExecutions'
+--
+-- * 'trtrsResponseStatus'
+testRepositoryTriggersResponse
+    :: Int -- ^ 'trtrsResponseStatus'
+    -> TestRepositoryTriggersResponse
+testRepositoryTriggersResponse pResponseStatus_ =
+    TestRepositoryTriggersResponse'
+    { _trtrsFailedExecutions = Nothing
+    , _trtrsSuccessfulExecutions = Nothing
+    , _trtrsResponseStatus = pResponseStatus_
+    }
+
+-- | The list of triggers that were not able to be tested. This list provides
+-- the names of the triggers that could not be tested, separated by commas.
+trtrsFailedExecutions :: Lens' TestRepositoryTriggersResponse [RepositoryTriggerExecutionFailure]
+trtrsFailedExecutions = lens _trtrsFailedExecutions (\ s a -> s{_trtrsFailedExecutions = a}) . _Default . _Coerce;
+
+-- | The list of triggers that were successfully tested. This list provides
+-- the names of the triggers that were successfully tested, separated by
+-- commas.
+trtrsSuccessfulExecutions :: Lens' TestRepositoryTriggersResponse [Text]
+trtrsSuccessfulExecutions = lens _trtrsSuccessfulExecutions (\ s a -> s{_trtrsSuccessfulExecutions = a}) . _Default . _Coerce;
+
+-- | The response status code.
+trtrsResponseStatus :: Lens' TestRepositoryTriggersResponse Int
+trtrsResponseStatus = lens _trtrsResponseStatus (\ s a -> s{_trtrsResponseStatus = a});
diff --git a/gen/Network/AWS/CodeCommit/Types.hs b/gen/Network/AWS/CodeCommit/Types.hs
--- a/gen/Network/AWS/CodeCommit/Types.hs
+++ b/gen/Network/AWS/CodeCommit/Types.hs
@@ -4,7 +4,7 @@
 
 -- |
 -- Module      : Network.AWS.CodeCommit.Types
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -16,33 +16,50 @@
       codeCommit
 
     -- * Errors
+    , _InvalidRepositoryTriggerRegionException
     , _InvalidContinuationTokenException
     , _EncryptionKeyNotFoundException
+    , _InvalidRepositoryTriggerBranchNameException
+    , _InvalidRepositoryTriggerCustomDataException
     , _MaximumRepositoryNamesExceededException
     , _InvalidRepositoryDescriptionException
     , _RepositoryNameExistsException
+    , _MaximumRepositoryTriggersExceededException
     , _InvalidBranchNameException
     , _BranchNameRequiredException
+    , _RepositoryTriggersListRequiredException
     , _EncryptionKeyUnavailableException
+    , _InvalidRepositoryTriggerDestinationARNException
     , _RepositoryNamesRequiredException
     , _InvalidOrderException
     , _BranchDoesNotExistException
+    , _RepositoryTriggerNameRequiredException
     , _RepositoryDoesNotExistException
+    , _MaximumBranchesExceededException
     , _EncryptionIntegrityChecksFailedException
+    , _RepositoryTriggerEventsListRequiredException
     , _EncryptionKeyAccessDeniedException
     , _BranchNameExistsException
     , _InvalidSortByException
     , _EncryptionKeyDisabledException
     , _CommitIdRequiredException
     , _InvalidCommitIdException
+    , _RepositoryTriggerDestinationARNRequiredException
     , _CommitDoesNotExistException
+    , _RepositoryTriggerBranchNameListRequiredException
+    , _CommitIdDoesNotExistException
+    , _InvalidRepositoryTriggerNameException
     , _RepositoryNameRequiredException
     , _RepositoryLimitExceededException
+    , _InvalidRepositoryTriggerEventsException
     , _InvalidRepositoryNameException
 
     -- * OrderEnum
     , OrderEnum (..)
 
+    -- * RepositoryTriggerEventEnum
+    , RepositoryTriggerEventEnum (..)
+
     -- * SortByEnum
     , SortByEnum (..)
 
@@ -52,6 +69,16 @@
     , biCommitId
     , biBranchName
 
+    -- * Commit
+    , Commit
+    , commit
+    , cCommitter
+    , cTreeId
+    , cAdditionalData
+    , cParents
+    , cAuthor
+    , cMessage
+
     -- * RepositoryMetadata
     , RepositoryMetadata
     , repositoryMetadata
@@ -71,6 +98,28 @@
     , repositoryNameIdPair
     , rnipRepositoryId
     , rnipRepositoryName
+
+    -- * RepositoryTrigger
+    , RepositoryTrigger
+    , repositoryTrigger
+    , rtBranches
+    , rtCustomData
+    , rtDestinationARN
+    , rtName
+    , rtEvents
+
+    -- * RepositoryTriggerExecutionFailure
+    , RepositoryTriggerExecutionFailure
+    , repositoryTriggerExecutionFailure
+    , rtefFailureMessage
+    , rtefTrigger
+
+    -- * UserInfo
+    , UserInfo
+    , userInfo
+    , uiEmail
+    , uiDate
+    , uiName
     ) where
 
 import           Network.AWS.CodeCommit.Types.Product
@@ -102,6 +151,7 @@
         , _retryCheck = check
         }
     check e
+      | has (hasStatus 429) e = Just "too_many_requests"
       | has (hasCode "ThrottlingException" . hasStatus 400) e =
           Just "throttling_exception"
       | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
@@ -110,6 +160,13 @@
       | has (hasStatus 509) e = Just "limit_exceeded"
       | otherwise = Nothing
 
+-- | The region for the trigger target does not match the region for the
+-- repository. Triggers must be created in the same region as the target
+-- for the trigger.
+_InvalidRepositoryTriggerRegionException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidRepositoryTriggerRegionException =
+    _ServiceError . hasCode "InvalidRepositoryTriggerRegionException"
+
 -- | The specified continuation token is not valid.
 _InvalidContinuationTokenException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidContinuationTokenException =
@@ -120,6 +177,16 @@
 _EncryptionKeyNotFoundException =
     _ServiceError . hasCode "EncryptionKeyNotFoundException"
 
+-- | One or more branch names specified for the trigger is not valid.
+_InvalidRepositoryTriggerBranchNameException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidRepositoryTriggerBranchNameException =
+    _ServiceError . hasCode "InvalidRepositoryTriggerBranchNameException"
+
+-- | The custom data provided for the trigger is not valid.
+_InvalidRepositoryTriggerCustomDataException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidRepositoryTriggerCustomDataException =
+    _ServiceError . hasCode "InvalidRepositoryTriggerCustomDataException"
+
 -- | The maximum number of allowed repository names was exceeded. Currently,
 -- this number is 25.
 _MaximumRepositoryNamesExceededException :: AsError a => Getting (First ServiceError) a ServiceError
@@ -136,6 +203,11 @@
 _RepositoryNameExistsException =
     _ServiceError . hasCode "RepositoryNameExistsException"
 
+-- | The number of triggers allowed for the repository was exceeded.
+_MaximumRepositoryTriggersExceededException :: AsError a => Getting (First ServiceError) a ServiceError
+_MaximumRepositoryTriggersExceededException =
+    _ServiceError . hasCode "MaximumRepositoryTriggersExceededException"
+
 -- | The specified branch name is not valid.
 _InvalidBranchNameException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidBranchNameException =
@@ -146,11 +218,24 @@
 _BranchNameRequiredException =
     _ServiceError . hasCode "BranchNameRequiredException"
 
+-- | The list of triggers for the repository is required but was not
+-- specified.
+_RepositoryTriggersListRequiredException :: AsError a => Getting (First ServiceError) a ServiceError
+_RepositoryTriggersListRequiredException =
+    _ServiceError . hasCode "RepositoryTriggersListRequiredException"
+
 -- | The encryption key is not available.
 _EncryptionKeyUnavailableException :: AsError a => Getting (First ServiceError) a ServiceError
 _EncryptionKeyUnavailableException =
     _ServiceError . hasCode "EncryptionKeyUnavailableException"
 
+-- | The Amazon Resource Name (ARN) for the trigger is not valid for the
+-- specified destination. The most common reason for this error is that the
+-- ARN does not meet the requirements for the service type.
+_InvalidRepositoryTriggerDestinationARNException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidRepositoryTriggerDestinationARNException =
+    _ServiceError . hasCode "InvalidRepositoryTriggerDestinationArnException"
+
 -- | A repository names object is required but was not specified.
 _RepositoryNamesRequiredException :: AsError a => Getting (First ServiceError) a ServiceError
 _RepositoryNamesRequiredException =
@@ -165,16 +250,31 @@
 _BranchDoesNotExistException =
     _ServiceError . hasCode "BranchDoesNotExistException"
 
+-- | A name for the trigger is required but was not specified.
+_RepositoryTriggerNameRequiredException :: AsError a => Getting (First ServiceError) a ServiceError
+_RepositoryTriggerNameRequiredException =
+    _ServiceError . hasCode "RepositoryTriggerNameRequiredException"
+
 -- | The specified repository does not exist.
 _RepositoryDoesNotExistException :: AsError a => Getting (First ServiceError) a ServiceError
 _RepositoryDoesNotExistException =
     _ServiceError . hasCode "RepositoryDoesNotExistException"
 
+-- | The number of branches for the trigger was exceeded.
+_MaximumBranchesExceededException :: AsError a => Getting (First ServiceError) a ServiceError
+_MaximumBranchesExceededException =
+    _ServiceError . hasCode "MaximumBranchesExceededException"
+
 -- | An encryption integrity check failed.
 _EncryptionIntegrityChecksFailedException :: AsError a => Getting (First ServiceError) a ServiceError
 _EncryptionIntegrityChecksFailedException =
     _ServiceError . hasCode "EncryptionIntegrityChecksFailedException"
 
+-- | At least one event for the trigger is required but was not specified.
+_RepositoryTriggerEventsListRequiredException :: AsError a => Getting (First ServiceError) a ServiceError
+_RepositoryTriggerEventsListRequiredException =
+    _ServiceError . hasCode "RepositoryTriggerEventsListRequiredException"
+
 -- | An encryption key could not be accessed.
 _EncryptionKeyAccessDeniedException :: AsError a => Getting (First ServiceError) a ServiceError
 _EncryptionKeyAccessDeniedException =
@@ -203,12 +303,34 @@
 _InvalidCommitIdException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidCommitIdException = _ServiceError . hasCode "InvalidCommitIdException"
 
+-- | A destination ARN for the target service for the trigger is required but
+-- was not specified.
+_RepositoryTriggerDestinationARNRequiredException :: AsError a => Getting (First ServiceError) a ServiceError
+_RepositoryTriggerDestinationARNRequiredException =
+    _ServiceError . hasCode "RepositoryTriggerDestinationArnRequiredException"
+
 -- | The specified commit does not exist or no commit was specified, and the
 -- specified repository has no default branch.
 _CommitDoesNotExistException :: AsError a => Getting (First ServiceError) a ServiceError
 _CommitDoesNotExistException =
     _ServiceError . hasCode "CommitDoesNotExistException"
 
+-- | At least one branch name is required but was not specified in the
+-- trigger configuration.
+_RepositoryTriggerBranchNameListRequiredException :: AsError a => Getting (First ServiceError) a ServiceError
+_RepositoryTriggerBranchNameListRequiredException =
+    _ServiceError . hasCode "RepositoryTriggerBranchNameListRequiredException"
+
+-- | The specified commit ID does not exist.
+_CommitIdDoesNotExistException :: AsError a => Getting (First ServiceError) a ServiceError
+_CommitIdDoesNotExistException =
+    _ServiceError . hasCode "CommitIdDoesNotExistException"
+
+-- | The name of the trigger is not valid.
+_InvalidRepositoryTriggerNameException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidRepositoryTriggerNameException =
+    _ServiceError . hasCode "InvalidRepositoryTriggerNameException"
+
 -- | A repository name is required but was not specified.
 _RepositoryNameRequiredException :: AsError a => Getting (First ServiceError) a ServiceError
 _RepositoryNameRequiredException =
@@ -218,6 +340,13 @@
 _RepositoryLimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
 _RepositoryLimitExceededException =
     _ServiceError . hasCode "RepositoryLimitExceededException"
+
+-- | One or more events specified for the trigger is not valid. Check to make
+-- sure that all events specified match the requirements for allowed
+-- events.
+_InvalidRepositoryTriggerEventsException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidRepositoryTriggerEventsException =
+    _ServiceError . hasCode "InvalidRepositoryTriggerEventsException"
 
 -- | At least one specified repository name is not valid.
 --
diff --git a/gen/Network/AWS/CodeCommit/Types/Product.hs b/gen/Network/AWS/CodeCommit/Types/Product.hs
--- a/gen/Network/AWS/CodeCommit/Types/Product.hs
+++ b/gen/Network/AWS/CodeCommit/Types/Product.hs
@@ -9,7 +9,7 @@
 
 -- |
 -- Module      : Network.AWS.CodeCommit.Types.Product
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -59,6 +59,88 @@
                  BranchInfo' <$>
                    (x .:? "commitId") <*> (x .:? "branchName"))
 
+instance Hashable BranchInfo
+
+-- | Returns information about a specific commit.
+--
+-- /See:/ 'commit' smart constructor.
+data Commit = Commit'
+    { _cCommitter      :: !(Maybe UserInfo)
+    , _cTreeId         :: !(Maybe Text)
+    , _cAdditionalData :: !(Maybe Text)
+    , _cParents        :: !(Maybe [Text])
+    , _cAuthor         :: !(Maybe UserInfo)
+    , _cMessage        :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Commit' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cCommitter'
+--
+-- * 'cTreeId'
+--
+-- * 'cAdditionalData'
+--
+-- * 'cParents'
+--
+-- * 'cAuthor'
+--
+-- * 'cMessage'
+commit
+    :: Commit
+commit =
+    Commit'
+    { _cCommitter = Nothing
+    , _cTreeId = Nothing
+    , _cAdditionalData = Nothing
+    , _cParents = Nothing
+    , _cAuthor = Nothing
+    , _cMessage = Nothing
+    }
+
+-- | Information about the person who committed the specified commit, also
+-- known as the committer. For more information about the difference
+-- between an author and a committer in Git, see
+-- <http://git-scm.com/book/ch2-3.html Viewing the Commit History> in Pro
+-- Git by Scott Chacon and Ben Straub.
+cCommitter :: Lens' Commit (Maybe UserInfo)
+cCommitter = lens _cCommitter (\ s a -> s{_cCommitter = a});
+
+-- | Tree information for the specified commit.
+cTreeId :: Lens' Commit (Maybe Text)
+cTreeId = lens _cTreeId (\ s a -> s{_cTreeId = a});
+
+-- | Any additional data associated with the specified commit.
+cAdditionalData :: Lens' Commit (Maybe Text)
+cAdditionalData = lens _cAdditionalData (\ s a -> s{_cAdditionalData = a});
+
+-- | The parent list for the specified commit.
+cParents :: Lens' Commit [Text]
+cParents = lens _cParents (\ s a -> s{_cParents = a}) . _Default . _Coerce;
+
+-- | Information about the author of the specified commit.
+cAuthor :: Lens' Commit (Maybe UserInfo)
+cAuthor = lens _cAuthor (\ s a -> s{_cAuthor = a});
+
+-- | The message associated with the specified commit.
+cMessage :: Lens' Commit (Maybe Text)
+cMessage = lens _cMessage (\ s a -> s{_cMessage = a});
+
+instance FromJSON Commit where
+        parseJSON
+          = withObject "Commit"
+              (\ x ->
+                 Commit' <$>
+                   (x .:? "committer") <*> (x .:? "treeId") <*>
+                     (x .:? "additionalData")
+                     <*> (x .:? "parents" .!= mempty)
+                     <*> (x .:? "author")
+                     <*> (x .:? "message"))
+
+instance Hashable Commit
+
 -- | Information about a repository.
 --
 -- /See:/ 'repositoryMetadata' smart constructor.
@@ -170,6 +252,8 @@
                      <*> (x .:? "creationDate")
                      <*> (x .:? "cloneUrlSsh"))
 
+instance Hashable RepositoryMetadata
+
 -- | Information about a repository name and ID.
 --
 -- /See:/ 'repositoryNameIdPair' smart constructor.
@@ -193,11 +277,11 @@
     , _rnipRepositoryName = Nothing
     }
 
--- | The ID associated with the repository name.
+-- | The ID associated with the repository.
 rnipRepositoryId :: Lens' RepositoryNameIdPair (Maybe Text)
 rnipRepositoryId = lens _rnipRepositoryId (\ s a -> s{_rnipRepositoryId = a});
 
--- | Undocumented member.
+-- | The name associated with the repository.
 rnipRepositoryName :: Lens' RepositoryNameIdPair (Maybe Text)
 rnipRepositoryName = lens _rnipRepositoryName (\ s a -> s{_rnipRepositoryName = a});
 
@@ -207,3 +291,179 @@
               (\ x ->
                  RepositoryNameIdPair' <$>
                    (x .:? "repositoryId") <*> (x .:? "repositoryName"))
+
+instance Hashable RepositoryNameIdPair
+
+-- | Information about a trigger for a repository.
+--
+-- /See:/ 'repositoryTrigger' smart constructor.
+data RepositoryTrigger = RepositoryTrigger'
+    { _rtBranches       :: !(Maybe [Text])
+    , _rtCustomData     :: !(Maybe Text)
+    , _rtDestinationARN :: !(Maybe Text)
+    , _rtName           :: !(Maybe Text)
+    , _rtEvents         :: !(Maybe [RepositoryTriggerEventEnum])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RepositoryTrigger' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rtBranches'
+--
+-- * 'rtCustomData'
+--
+-- * 'rtDestinationARN'
+--
+-- * 'rtName'
+--
+-- * 'rtEvents'
+repositoryTrigger
+    :: RepositoryTrigger
+repositoryTrigger =
+    RepositoryTrigger'
+    { _rtBranches = Nothing
+    , _rtCustomData = Nothing
+    , _rtDestinationARN = Nothing
+    , _rtName = Nothing
+    , _rtEvents = Nothing
+    }
+
+-- | The branches that will be included in the trigger configuration. If no
+-- branches are specified, the trigger will apply to all branches.
+rtBranches :: Lens' RepositoryTrigger [Text]
+rtBranches = lens _rtBranches (\ s a -> s{_rtBranches = a}) . _Default . _Coerce;
+
+-- | Any custom data associated with the trigger that will be included in the
+-- information sent to the target of the trigger.
+rtCustomData :: Lens' RepositoryTrigger (Maybe Text)
+rtCustomData = lens _rtCustomData (\ s a -> s{_rtCustomData = a});
+
+-- | The ARN of the resource that is the target for a trigger. For example,
+-- the ARN of a topic in Amazon Simple Notification Service (SNS).
+rtDestinationARN :: Lens' RepositoryTrigger (Maybe Text)
+rtDestinationARN = lens _rtDestinationARN (\ s a -> s{_rtDestinationARN = a});
+
+-- | The name of the trigger.
+rtName :: Lens' RepositoryTrigger (Maybe Text)
+rtName = lens _rtName (\ s a -> s{_rtName = a});
+
+-- | The repository events that will cause the trigger to run actions in
+-- another service, such as sending a notification through Amazon Simple
+-- Notification Service (SNS). If no events are specified, the trigger will
+-- run for all repository events.
+rtEvents :: Lens' RepositoryTrigger [RepositoryTriggerEventEnum]
+rtEvents = lens _rtEvents (\ s a -> s{_rtEvents = a}) . _Default . _Coerce;
+
+instance FromJSON RepositoryTrigger where
+        parseJSON
+          = withObject "RepositoryTrigger"
+              (\ x ->
+                 RepositoryTrigger' <$>
+                   (x .:? "branches" .!= mempty) <*>
+                     (x .:? "customData")
+                     <*> (x .:? "destinationArn")
+                     <*> (x .:? "name")
+                     <*> (x .:? "events" .!= mempty))
+
+instance Hashable RepositoryTrigger
+
+instance ToJSON RepositoryTrigger where
+        toJSON RepositoryTrigger'{..}
+          = object
+              (catMaybes
+                 [("branches" .=) <$> _rtBranches,
+                  ("customData" .=) <$> _rtCustomData,
+                  ("destinationArn" .=) <$> _rtDestinationARN,
+                  ("name" .=) <$> _rtName,
+                  ("events" .=) <$> _rtEvents])
+
+-- | A trigger failed to run.
+--
+-- /See:/ 'repositoryTriggerExecutionFailure' smart constructor.
+data RepositoryTriggerExecutionFailure = RepositoryTriggerExecutionFailure'
+    { _rtefFailureMessage :: !(Maybe Text)
+    , _rtefTrigger        :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RepositoryTriggerExecutionFailure' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rtefFailureMessage'
+--
+-- * 'rtefTrigger'
+repositoryTriggerExecutionFailure
+    :: RepositoryTriggerExecutionFailure
+repositoryTriggerExecutionFailure =
+    RepositoryTriggerExecutionFailure'
+    { _rtefFailureMessage = Nothing
+    , _rtefTrigger = Nothing
+    }
+
+-- | Additional message information about the trigger that did not run.
+rtefFailureMessage :: Lens' RepositoryTriggerExecutionFailure (Maybe Text)
+rtefFailureMessage = lens _rtefFailureMessage (\ s a -> s{_rtefFailureMessage = a});
+
+-- | The name of the trigger that did not run.
+rtefTrigger :: Lens' RepositoryTriggerExecutionFailure (Maybe Text)
+rtefTrigger = lens _rtefTrigger (\ s a -> s{_rtefTrigger = a});
+
+instance FromJSON RepositoryTriggerExecutionFailure
+         where
+        parseJSON
+          = withObject "RepositoryTriggerExecutionFailure"
+              (\ x ->
+                 RepositoryTriggerExecutionFailure' <$>
+                   (x .:? "failureMessage") <*> (x .:? "trigger"))
+
+instance Hashable RepositoryTriggerExecutionFailure
+
+-- | Information about the user who made a specified commit.
+--
+-- /See:/ 'userInfo' smart constructor.
+data UserInfo = UserInfo'
+    { _uiEmail :: !(Maybe Text)
+    , _uiDate  :: !(Maybe Text)
+    , _uiName  :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UserInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uiEmail'
+--
+-- * 'uiDate'
+--
+-- * 'uiName'
+userInfo
+    :: UserInfo
+userInfo =
+    UserInfo'
+    { _uiEmail = Nothing
+    , _uiDate = Nothing
+    , _uiName = Nothing
+    }
+
+-- | The email address associated with the user who made the commit, if any.
+uiEmail :: Lens' UserInfo (Maybe Text)
+uiEmail = lens _uiEmail (\ s a -> s{_uiEmail = a});
+
+-- | The date when the specified commit was pushed to the repository.
+uiDate :: Lens' UserInfo (Maybe Text)
+uiDate = lens _uiDate (\ s a -> s{_uiDate = a});
+
+-- | The name of the user who made the specified commit.
+uiName :: Lens' UserInfo (Maybe Text)
+uiName = lens _uiName (\ s a -> s{_uiName = a});
+
+instance FromJSON UserInfo where
+        parseJSON
+          = withObject "UserInfo"
+              (\ x ->
+                 UserInfo' <$>
+                   (x .:? "email") <*> (x .:? "date") <*>
+                     (x .:? "name"))
+
+instance Hashable UserInfo
diff --git a/gen/Network/AWS/CodeCommit/Types/Sum.hs b/gen/Network/AWS/CodeCommit/Types/Sum.hs
--- a/gen/Network/AWS/CodeCommit/Types/Sum.hs
+++ b/gen/Network/AWS/CodeCommit/Types/Sum.hs
@@ -9,7 +9,7 @@
 
 -- |
 -- Module      : Network.AWS.CodeCommit.Types.Sum
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -43,6 +43,40 @@
 
 instance ToJSON OrderEnum where
     toJSON = toJSONText
+
+data RepositoryTriggerEventEnum
+    = All
+    | CreateReference
+    | DeleteReference
+    | UpdateReference
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText RepositoryTriggerEventEnum where
+    parser = takeLowerText >>= \case
+        "all" -> pure All
+        "createreference" -> pure CreateReference
+        "deletereference" -> pure DeleteReference
+        "updatereference" -> pure UpdateReference
+        e -> fromTextError $ "Failure parsing RepositoryTriggerEventEnum from value: '" <> e
+           <> "'. Accepted values: all, createReference, deleteReference, updateReference"
+
+instance ToText RepositoryTriggerEventEnum where
+    toText = \case
+        All -> "all"
+        CreateReference -> "createReference"
+        DeleteReference -> "deleteReference"
+        UpdateReference -> "updateReference"
+
+instance Hashable     RepositoryTriggerEventEnum
+instance ToByteString RepositoryTriggerEventEnum
+instance ToQuery      RepositoryTriggerEventEnum
+instance ToHeader     RepositoryTriggerEventEnum
+
+instance ToJSON RepositoryTriggerEventEnum where
+    toJSON = toJSONText
+
+instance FromJSON RepositoryTriggerEventEnum where
+    parseJSON = parseJSONText "RepositoryTriggerEventEnum"
 
 data SortByEnum
     = LastModifiedDate
diff --git a/gen/Network/AWS/CodeCommit/UpdateDefaultBranch.hs b/gen/Network/AWS/CodeCommit/UpdateDefaultBranch.hs
--- a/gen/Network/AWS/CodeCommit/UpdateDefaultBranch.hs
+++ b/gen/Network/AWS/CodeCommit/UpdateDefaultBranch.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodeCommit.UpdateDefaultBranch
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -23,8 +23,6 @@
 -- If you use this operation to change the default branch name to the
 -- current default branch name, a success message is returned even though
 -- the default branch did not change.
---
--- /See:/ <http://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdateDefaultBranch.html AWS API Reference> for UpdateDefaultBranch.
 module Network.AWS.CodeCommit.UpdateDefaultBranch
     (
     -- * Creating a Request
@@ -84,6 +82,8 @@
              UpdateDefaultBranchResponse
         request = postJSON codeCommit
         response = receiveNull UpdateDefaultBranchResponse'
+
+instance Hashable UpdateDefaultBranch
 
 instance ToHeaders UpdateDefaultBranch where
         toHeaders
diff --git a/gen/Network/AWS/CodeCommit/UpdateRepositoryDescription.hs b/gen/Network/AWS/CodeCommit/UpdateRepositoryDescription.hs
--- a/gen/Network/AWS/CodeCommit/UpdateRepositoryDescription.hs
+++ b/gen/Network/AWS/CodeCommit/UpdateRepositoryDescription.hs
@@ -12,7 +12,7 @@
 
 -- |
 -- Module      : Network.AWS.CodeCommit.UpdateRepositoryDescription
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -26,8 +26,6 @@
 -- potentially malicious code. Make sure that you HTML-encode the
 -- description field in any application that uses this API to display the
 -- repository description on a web page.
---
--- /See:/ <http://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdateRepositoryDescription.html AWS API Reference> for UpdateRepositoryDescription.
 module Network.AWS.CodeCommit.UpdateRepositoryDescription
     (
     -- * Creating a Request
@@ -73,7 +71,8 @@
     , _urdRepositoryName = pRepositoryName_
     }
 
--- | The new comment or description for the specified repository.
+-- | The new comment or description for the specified repository. Repository
+-- descriptions are limited to 1,000 characters.
 urdRepositoryDescription :: Lens' UpdateRepositoryDescription (Maybe Text)
 urdRepositoryDescription = lens _urdRepositoryDescription (\ s a -> s{_urdRepositoryDescription = a});
 
@@ -88,6 +87,8 @@
         request = postJSON codeCommit
         response
           = receiveNull UpdateRepositoryDescriptionResponse'
+
+instance Hashable UpdateRepositoryDescription
 
 instance ToHeaders UpdateRepositoryDescription where
         toHeaders
diff --git a/gen/Network/AWS/CodeCommit/UpdateRepositoryName.hs b/gen/Network/AWS/CodeCommit/UpdateRepositoryName.hs
--- a/gen/Network/AWS/CodeCommit/UpdateRepositoryName.hs
+++ b/gen/Network/AWS/CodeCommit/UpdateRepositoryName.hs
@@ -12,15 +12,19 @@
 
 -- |
 -- Module      : Network.AWS.CodeCommit.UpdateRepositoryName
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Renames a repository.
---
--- /See:/ <http://docs.aws.amazon.com/codecommit/latest/APIReference/API_UpdateRepositoryName.html AWS API Reference> for UpdateRepositoryName.
+-- Renames a repository. The repository name must be unique across the
+-- calling AWS account. In addition, repository names are limited to 100
+-- alphanumeric, dash, and underscore characters, and cannot include
+-- certain characters. The suffix \".git\" is prohibited. For a full
+-- description of the limits on repository names, see
+-- <http://docs.aws.amazon.com/codecommit/latest/userguide/limits.html Limits>
+-- in the AWS CodeCommit User Guide.
 module Network.AWS.CodeCommit.UpdateRepositoryName
     (
     -- * Creating a Request
@@ -67,11 +71,11 @@
     , _urnNewName = pNewName_
     }
 
--- | Undocumented member.
+-- | The existing name of the repository.
 urnOldName :: Lens' UpdateRepositoryName Text
 urnOldName = lens _urnOldName (\ s a -> s{_urnOldName = a});
 
--- | Undocumented member.
+-- | The new name for the repository.
 urnNewName :: Lens' UpdateRepositoryName Text
 urnNewName = lens _urnNewName (\ s a -> s{_urnNewName = a});
 
@@ -80,6 +84,8 @@
              UpdateRepositoryNameResponse
         request = postJSON codeCommit
         response = receiveNull UpdateRepositoryNameResponse'
+
+instance Hashable UpdateRepositoryName
 
 instance ToHeaders UpdateRepositoryName where
         toHeaders
diff --git a/gen/Network/AWS/CodeCommit/Waiters.hs b/gen/Network/AWS/CodeCommit/Waiters.hs
--- a/gen/Network/AWS/CodeCommit/Waiters.hs
+++ b/gen/Network/AWS/CodeCommit/Waiters.hs
@@ -7,7 +7,7 @@
 
 -- |
 -- Module      : Network.AWS.CodeCommit.Waiters
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@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-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
diff --git a/test/Test/AWS/CodeCommit.hs b/test/Test/AWS/CodeCommit.hs
--- a/test/Test/AWS/CodeCommit.hs
+++ b/test/Test/AWS/CodeCommit.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE OverloadedStrings #-}
 
 -- Module      : Test.AWS.CodeCommit
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 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/CodeCommit/Internal.hs b/test/Test/AWS/CodeCommit/Internal.hs
--- a/test/Test/AWS/CodeCommit/Internal.hs
+++ b/test/Test/AWS/CodeCommit/Internal.hs
@@ -2,7 +2,7 @@
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
 
 -- Module      : Test.AWS.CodeCommit.Internal
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 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/CodeCommit.hs b/test/Test/AWS/Gen/CodeCommit.hs
--- a/test/Test/AWS/Gen/CodeCommit.hs
+++ b/test/Test/AWS/Gen/CodeCommit.hs
@@ -5,7 +5,7 @@
 
 -- |
 -- Module      : Test.AWS.Gen.CodeCommit
--- Copyright   : (c) 2013-2015 Brendan Hay
+-- Copyright   : (c) 2013-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -31,6 +31,9 @@
 --         [ testUpdateRepositoryName $
 --             updateRepositoryName
 --
+--         , testGetCommit $
+--             getCommit
+--
 --         , testGetBranch $
 --             getBranch
 --
@@ -55,6 +58,15 @@
 --         , testGetRepository $
 --             getRepository
 --
+--         , testGetRepositoryTriggers $
+--             getRepositoryTriggers
+--
+--         , testTestRepositoryTriggers $
+--             testRepositoryTriggers
+--
+--         , testPutRepositoryTriggers $
+--             putRepositoryTriggers
+--
 --         , testDeleteRepository $
 --             deleteRepository
 --
@@ -67,6 +79,9 @@
 --         [ testUpdateRepositoryNameResponse $
 --             updateRepositoryNameResponse
 --
+--         , testGetCommitResponse $
+--             getCommitResponse
+--
 --         , testGetBranchResponse $
 --             getBranchResponse
 --
@@ -91,6 +106,15 @@
 --         , testGetRepositoryResponse $
 --             getRepositoryResponse
 --
+--         , testGetRepositoryTriggersResponse $
+--             getRepositoryTriggersResponse
+--
+--         , testTestRepositoryTriggersResponse $
+--             testRepositoryTriggersResponse
+--
+--         , testPutRepositoryTriggersResponse $
+--             putRepositoryTriggersResponse
+--
 --         , testDeleteRepositoryResponse $
 --             deleteRepositoryResponse
 --
@@ -107,6 +131,11 @@
     "UpdateRepositoryName"
     "fixture/UpdateRepositoryName.yaml"
 
+testGetCommit :: GetCommit -> TestTree
+testGetCommit = req
+    "GetCommit"
+    "fixture/GetCommit.yaml"
+
 testGetBranch :: GetBranch -> TestTree
 testGetBranch = req
     "GetBranch"
@@ -147,6 +176,21 @@
     "GetRepository"
     "fixture/GetRepository.yaml"
 
+testGetRepositoryTriggers :: GetRepositoryTriggers -> TestTree
+testGetRepositoryTriggers = req
+    "GetRepositoryTriggers"
+    "fixture/GetRepositoryTriggers.yaml"
+
+testTestRepositoryTriggers :: TestRepositoryTriggers -> TestTree
+testTestRepositoryTriggers = req
+    "TestRepositoryTriggers"
+    "fixture/TestRepositoryTriggers.yaml"
+
+testPutRepositoryTriggers :: PutRepositoryTriggers -> TestTree
+testPutRepositoryTriggers = req
+    "PutRepositoryTriggers"
+    "fixture/PutRepositoryTriggers.yaml"
+
 testDeleteRepository :: DeleteRepository -> TestTree
 testDeleteRepository = req
     "DeleteRepository"
@@ -166,6 +210,13 @@
     codeCommit
     (Proxy :: Proxy UpdateRepositoryName)
 
+testGetCommitResponse :: GetCommitResponse -> TestTree
+testGetCommitResponse = res
+    "GetCommitResponse"
+    "fixture/GetCommitResponse.proto"
+    codeCommit
+    (Proxy :: Proxy GetCommit)
+
 testGetBranchResponse :: GetBranchResponse -> TestTree
 testGetBranchResponse = res
     "GetBranchResponse"
@@ -221,6 +272,27 @@
     "fixture/GetRepositoryResponse.proto"
     codeCommit
     (Proxy :: Proxy GetRepository)
+
+testGetRepositoryTriggersResponse :: GetRepositoryTriggersResponse -> TestTree
+testGetRepositoryTriggersResponse = res
+    "GetRepositoryTriggersResponse"
+    "fixture/GetRepositoryTriggersResponse.proto"
+    codeCommit
+    (Proxy :: Proxy GetRepositoryTriggers)
+
+testTestRepositoryTriggersResponse :: TestRepositoryTriggersResponse -> TestTree
+testTestRepositoryTriggersResponse = res
+    "TestRepositoryTriggersResponse"
+    "fixture/TestRepositoryTriggersResponse.proto"
+    codeCommit
+    (Proxy :: Proxy TestRepositoryTriggers)
+
+testPutRepositoryTriggersResponse :: PutRepositoryTriggersResponse -> TestTree
+testPutRepositoryTriggersResponse = res
+    "PutRepositoryTriggersResponse"
+    "fixture/PutRepositoryTriggersResponse.proto"
+    codeCommit
+    (Proxy :: Proxy PutRepositoryTriggers)
 
 testDeleteRepositoryResponse :: DeleteRepositoryResponse -> TestTree
 testDeleteRepositoryResponse = res
