diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.4.3`
+`1.4.4`
 
 
 ## Description
diff --git a/amazonka-directconnect.cabal b/amazonka-directconnect.cabal
--- a/amazonka-directconnect.cabal
+++ b/amazonka-directconnect.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-directconnect
-version:               1.4.3
+version:               1.4.4
 synopsis:              Amazon Direct Connect SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -11,7 +11,7 @@
 category:              Network, AWS, Cloud, Distributed Computing
 build-type:            Simple
 cabal-version:         >= 1.10
-extra-source-files:    README.md fixture/*.yaml fixture/*.proto
+extra-source-files:    README.md fixture/*.yaml fixture/*.proto src/.gitkeep
 description:
     AWS Direct Connect links your internal network to an AWS Direct Connect location over a standard 1 gigabit or 10 gigabit Ethernet fiber-optic cable. One end of the cable is connected to your router, the other to an AWS Direct Connect router. With this connection in place, you can create virtual interfaces directly to the AWS cloud (for example, to Amazon Elastic Compute Cloud (Amazon EC2) and Amazon Simple Storage Service (Amazon S3)) and to Amazon Virtual Private Cloud (Amazon VPC), bypassing Internet service providers in your network path. An AWS Direct Connect location provides access to AWS in the region it is associated with, as well as access to other US regions. For example, you can provision a single connection to any AWS Direct Connect location in the US and use it to access public AWS services in all US Regions and AWS GovCloud (US).
     .
@@ -54,8 +54,10 @@
         , Network.AWS.DirectConnect.DeleteConnection
         , Network.AWS.DirectConnect.DeleteInterconnect
         , Network.AWS.DirectConnect.DeleteVirtualInterface
+        , Network.AWS.DirectConnect.DescribeConnectionLoa
         , Network.AWS.DirectConnect.DescribeConnections
         , Network.AWS.DirectConnect.DescribeConnectionsOnInterconnect
+        , Network.AWS.DirectConnect.DescribeInterconnectLoa
         , Network.AWS.DirectConnect.DescribeInterconnects
         , Network.AWS.DirectConnect.DescribeLocations
         , Network.AWS.DirectConnect.DescribeVirtualGateways
@@ -68,7 +70,7 @@
         , Network.AWS.DirectConnect.Types.Sum
 
     build-depends:
-          amazonka-core == 1.4.3.*
+          amazonka-core == 1.4.4.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-directconnect-test
@@ -88,9 +90,9 @@
         , Test.AWS.DirectConnect.Internal
 
     build-depends:
-          amazonka-core == 1.4.3.*
-        , amazonka-test == 1.4.3.*
-        , amazonka-directconnect == 1.4.3.*
+          amazonka-core == 1.4.4.*
+        , amazonka-test == 1.4.4.*
+        , amazonka-directconnect == 1.4.4.*
         , base
         , bytestring
         , tasty
diff --git a/fixture/DescribeConnectionLoa.yaml b/fixture/DescribeConnectionLoa.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeConnectionLoa.yaml
diff --git a/fixture/DescribeConnectionLoaResponse.proto b/fixture/DescribeConnectionLoaResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeConnectionLoaResponse.proto
diff --git a/fixture/DescribeInterconnectLoa.yaml b/fixture/DescribeInterconnectLoa.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeInterconnectLoa.yaml
diff --git a/fixture/DescribeInterconnectLoaResponse.proto b/fixture/DescribeInterconnectLoaResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeInterconnectLoaResponse.proto
diff --git a/gen/Network/AWS/DirectConnect.hs b/gen/Network/AWS/DirectConnect.hs
--- a/gen/Network/AWS/DirectConnect.hs
+++ b/gen/Network/AWS/DirectConnect.hs
@@ -77,6 +77,9 @@
     -- ** DeleteVirtualInterface
     , module Network.AWS.DirectConnect.DeleteVirtualInterface
 
+    -- ** DescribeInterconnectLoa
+    , module Network.AWS.DirectConnect.DescribeInterconnectLoa
+
     -- ** CreatePrivateVirtualInterface
     , module Network.AWS.DirectConnect.CreatePrivateVirtualInterface
 
@@ -89,6 +92,9 @@
     -- ** CreateInterconnect
     , module Network.AWS.DirectConnect.CreateInterconnect
 
+    -- ** DescribeConnectionLoa
+    , module Network.AWS.DirectConnect.DescribeConnectionLoa
+
     -- * Types
 
     -- ** ConnectionState
@@ -97,6 +103,9 @@
     -- ** InterconnectState
     , InterconnectState (..)
 
+    -- ** LoaContentType
+    , LoaContentType (..)
+
     -- ** VirtualInterfaceState
     , VirtualInterfaceState (..)
 
@@ -106,6 +115,7 @@
     , cVlan
     , cLocation
     , cConnectionId
+    , cLoaIssueTime
     , cPartnerName
     , cConnectionName
     , cBandwidth
@@ -124,10 +134,17 @@
     , iInterconnectId
     , iLocation
     , iInterconnectName
+    , iLoaIssueTime
     , iBandwidth
     , iInterconnectState
     , iRegion
 
+    -- ** Loa
+    , Loa
+    , loa
+    , loaLoaContent
+    , loaLoaContentType
+
     -- ** Location
     , Location
     , location
@@ -221,8 +238,10 @@
 import           Network.AWS.DirectConnect.DeleteConnection
 import           Network.AWS.DirectConnect.DeleteInterconnect
 import           Network.AWS.DirectConnect.DeleteVirtualInterface
+import           Network.AWS.DirectConnect.DescribeConnectionLoa
 import           Network.AWS.DirectConnect.DescribeConnections
 import           Network.AWS.DirectConnect.DescribeConnectionsOnInterconnect
+import           Network.AWS.DirectConnect.DescribeInterconnectLoa
 import           Network.AWS.DirectConnect.DescribeInterconnects
 import           Network.AWS.DirectConnect.DescribeLocations
 import           Network.AWS.DirectConnect.DescribeVirtualGateways
diff --git a/gen/Network/AWS/DirectConnect/AllocateConnectionOnInterconnect.hs b/gen/Network/AWS/DirectConnect/AllocateConnectionOnInterconnect.hs
--- a/gen/Network/AWS/DirectConnect/AllocateConnectionOnInterconnect.hs
+++ b/gen/Network/AWS/DirectConnect/AllocateConnectionOnInterconnect.hs
@@ -21,6 +21,8 @@
 -- Creates a hosted connection on an interconnect.
 --
 -- Allocates a VLAN number and a specified amount of bandwidth for use by a hosted connection on the given interconnect.
+--
+-- This is intended for use by AWS Direct Connect partners only.
 module Network.AWS.DirectConnect.AllocateConnectionOnInterconnect
     (
     -- * Creating a Request
@@ -40,6 +42,7 @@
     , cVlan
     , cLocation
     , cConnectionId
+    , cLoaIssueTime
     , cPartnerName
     , cConnectionName
     , cBandwidth
@@ -100,6 +103,8 @@
 -- Example: \"/500Mbps/\"
 --
 -- Default: None
+--
+-- Values: 50M, 100M, 200M, 300M, 400M, or 500M
 acoiBandwidth :: Lens' AllocateConnectionOnInterconnect Text
 acoiBandwidth = lens _acoiBandwidth (\ s a -> s{_acoiBandwidth = a});
 
diff --git a/gen/Network/AWS/DirectConnect/CreateConnection.hs b/gen/Network/AWS/DirectConnect/CreateConnection.hs
--- a/gen/Network/AWS/DirectConnect/CreateConnection.hs
+++ b/gen/Network/AWS/DirectConnect/CreateConnection.hs
@@ -38,6 +38,7 @@
     , cVlan
     , cLocation
     , cConnectionId
+    , cLoaIssueTime
     , cPartnerName
     , cConnectionName
     , cBandwidth
diff --git a/gen/Network/AWS/DirectConnect/CreateInterconnect.hs b/gen/Network/AWS/DirectConnect/CreateInterconnect.hs
--- a/gen/Network/AWS/DirectConnect/CreateInterconnect.hs
+++ b/gen/Network/AWS/DirectConnect/CreateInterconnect.hs
@@ -23,6 +23,8 @@
 -- An interconnect is a connection which is capable of hosting other connections. The AWS Direct Connect partner can use an interconnect to provide sub-1Gbps AWS Direct Connect service to tier 2 customers who do not have their own connections. Like a standard connection, an interconnect links the AWS Direct Connect partner\'s network to an AWS Direct Connect location over a standard 1 Gbps or 10 Gbps Ethernet fiber-optic cable. One end is connected to the partner\'s router, the other to an AWS Direct Connect router.
 --
 -- For each end customer, the AWS Direct Connect partner provisions a connection on their interconnect by calling AllocateConnectionOnInterconnect. The end customer can then connect to AWS resources by creating a virtual interface on their connection, using the VLAN assigned to them by the AWS Direct Connect partner.
+--
+-- This is intended for use by AWS Direct Connect partners only.
 module Network.AWS.DirectConnect.CreateInterconnect
     (
     -- * Creating a Request
@@ -40,6 +42,7 @@
     , iInterconnectId
     , iLocation
     , iInterconnectName
+    , iLoaIssueTime
     , iBandwidth
     , iInterconnectState
     , iRegion
diff --git a/gen/Network/AWS/DirectConnect/DeleteConnection.hs b/gen/Network/AWS/DirectConnect/DeleteConnection.hs
--- a/gen/Network/AWS/DirectConnect/DeleteConnection.hs
+++ b/gen/Network/AWS/DirectConnect/DeleteConnection.hs
@@ -36,6 +36,7 @@
     , cVlan
     , cLocation
     , cConnectionId
+    , cLoaIssueTime
     , cPartnerName
     , cConnectionName
     , cBandwidth
diff --git a/gen/Network/AWS/DirectConnect/DeleteInterconnect.hs b/gen/Network/AWS/DirectConnect/DeleteInterconnect.hs
--- a/gen/Network/AWS/DirectConnect/DeleteInterconnect.hs
+++ b/gen/Network/AWS/DirectConnect/DeleteInterconnect.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Deletes the specified interconnect.
+--
+-- This is intended for use by AWS Direct Connect partners only.
 module Network.AWS.DirectConnect.DeleteInterconnect
     (
     -- * Creating a Request
diff --git a/gen/Network/AWS/DirectConnect/DescribeConnectionLoa.hs b/gen/Network/AWS/DirectConnect/DescribeConnectionLoa.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/DirectConnect/DescribeConnectionLoa.hs
@@ -0,0 +1,161 @@
+{-# 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.DirectConnect.DescribeConnectionLoa
+-- 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 the LOA-CFA for a Connection.
+--
+-- The Letter of Authorization - Connecting Facility Assignment (LOA-CFA) is a document that your APN partner or service provider uses when establishing your cross connect to AWS at the colocation facility. For more information, see <http://docs.aws.amazon.com/directconnect/latest/UserGuide/Colocation.html Requesting Cross Connects at AWS Direct Connect Locations> in the AWS Direct Connect user guide.
+module Network.AWS.DirectConnect.DescribeConnectionLoa
+    (
+    -- * Creating a Request
+      describeConnectionLoa
+    , DescribeConnectionLoa
+    -- * Request Lenses
+    , dclLoaContentType
+    , dclProviderName
+    , dclConnectionId
+
+    -- * Destructuring the Response
+    , describeConnectionLoaResponse
+    , DescribeConnectionLoaResponse
+    -- * Response Lenses
+    , dclrsLoa
+    , dclrsResponseStatus
+    ) where
+
+import           Network.AWS.DirectConnect.Types
+import           Network.AWS.DirectConnect.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Container for the parameters to the DescribeConnectionLoa operation.
+--
+-- /See:/ 'describeConnectionLoa' smart constructor.
+data DescribeConnectionLoa = DescribeConnectionLoa'
+    { _dclLoaContentType :: !(Maybe LoaContentType)
+    , _dclProviderName   :: !(Maybe Text)
+    , _dclConnectionId   :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeConnectionLoa' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dclLoaContentType'
+--
+-- * 'dclProviderName'
+--
+-- * 'dclConnectionId'
+describeConnectionLoa
+    :: Text -- ^ 'dclConnectionId'
+    -> DescribeConnectionLoa
+describeConnectionLoa pConnectionId_ =
+    DescribeConnectionLoa'
+    { _dclLoaContentType = Nothing
+    , _dclProviderName = Nothing
+    , _dclConnectionId = pConnectionId_
+    }
+
+-- | Undocumented member.
+dclLoaContentType :: Lens' DescribeConnectionLoa (Maybe LoaContentType)
+dclLoaContentType = lens _dclLoaContentType (\ s a -> s{_dclLoaContentType = a});
+
+-- | The name of the APN partner or service provider who establishes connectivity on your behalf. If you supply this parameter, the LOA-CFA lists the provider name alongside your company name as the requester of the cross connect.
+--
+-- Default: None
+dclProviderName :: Lens' DescribeConnectionLoa (Maybe Text)
+dclProviderName = lens _dclProviderName (\ s a -> s{_dclProviderName = a});
+
+-- | Undocumented member.
+dclConnectionId :: Lens' DescribeConnectionLoa Text
+dclConnectionId = lens _dclConnectionId (\ s a -> s{_dclConnectionId = a});
+
+instance AWSRequest DescribeConnectionLoa where
+        type Rs DescribeConnectionLoa =
+             DescribeConnectionLoaResponse
+        request = postJSON directConnect
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeConnectionLoaResponse' <$>
+                   (x .?> "loa") <*> (pure (fromEnum s)))
+
+instance Hashable DescribeConnectionLoa
+
+instance NFData DescribeConnectionLoa
+
+instance ToHeaders DescribeConnectionLoa where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OvertureService.DescribeConnectionLoa" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeConnectionLoa where
+        toJSON DescribeConnectionLoa'{..}
+          = object
+              (catMaybes
+                 [("loaContentType" .=) <$> _dclLoaContentType,
+                  ("providerName" .=) <$> _dclProviderName,
+                  Just ("connectionId" .= _dclConnectionId)])
+
+instance ToPath DescribeConnectionLoa where
+        toPath = const "/"
+
+instance ToQuery DescribeConnectionLoa where
+        toQuery = const mempty
+
+-- | The response received when DescribeConnectionLoa is called.
+--
+-- /See:/ 'describeConnectionLoaResponse' smart constructor.
+data DescribeConnectionLoaResponse = DescribeConnectionLoaResponse'
+    { _dclrsLoa            :: !(Maybe Loa)
+    , _dclrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeConnectionLoaResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dclrsLoa'
+--
+-- * 'dclrsResponseStatus'
+describeConnectionLoaResponse
+    :: Int -- ^ 'dclrsResponseStatus'
+    -> DescribeConnectionLoaResponse
+describeConnectionLoaResponse pResponseStatus_ =
+    DescribeConnectionLoaResponse'
+    { _dclrsLoa = Nothing
+    , _dclrsResponseStatus = pResponseStatus_
+    }
+
+-- | Undocumented member.
+dclrsLoa :: Lens' DescribeConnectionLoaResponse (Maybe Loa)
+dclrsLoa = lens _dclrsLoa (\ s a -> s{_dclrsLoa = a});
+
+-- | The response status code.
+dclrsResponseStatus :: Lens' DescribeConnectionLoaResponse Int
+dclrsResponseStatus = lens _dclrsResponseStatus (\ s a -> s{_dclrsResponseStatus = a});
+
+instance NFData DescribeConnectionLoaResponse
diff --git a/gen/Network/AWS/DirectConnect/DescribeConnectionsOnInterconnect.hs b/gen/Network/AWS/DirectConnect/DescribeConnectionsOnInterconnect.hs
--- a/gen/Network/AWS/DirectConnect/DescribeConnectionsOnInterconnect.hs
+++ b/gen/Network/AWS/DirectConnect/DescribeConnectionsOnInterconnect.hs
@@ -19,6 +19,8 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Return a list of connections that have been provisioned on the given interconnect.
+--
+-- This is intended for use by AWS Direct Connect partners only.
 module Network.AWS.DirectConnect.DescribeConnectionsOnInterconnect
     (
     -- * Creating a Request
diff --git a/gen/Network/AWS/DirectConnect/DescribeInterconnectLoa.hs b/gen/Network/AWS/DirectConnect/DescribeInterconnectLoa.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/DirectConnect/DescribeInterconnectLoa.hs
@@ -0,0 +1,161 @@
+{-# 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.DirectConnect.DescribeInterconnectLoa
+-- 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 the LOA-CFA for an Interconnect.
+--
+-- The Letter of Authorization - Connecting Facility Assignment (LOA-CFA) is a document that is used when establishing your cross connect to AWS at the colocation facility. For more information, see <http://docs.aws.amazon.com/directconnect/latest/UserGuide/Colocation.html Requesting Cross Connects at AWS Direct Connect Locations> in the AWS Direct Connect user guide.
+module Network.AWS.DirectConnect.DescribeInterconnectLoa
+    (
+    -- * Creating a Request
+      describeInterconnectLoa
+    , DescribeInterconnectLoa
+    -- * Request Lenses
+    , dilLoaContentType
+    , dilProviderName
+    , dilInterconnectId
+
+    -- * Destructuring the Response
+    , describeInterconnectLoaResponse
+    , DescribeInterconnectLoaResponse
+    -- * Response Lenses
+    , dilrsLoa
+    , dilrsResponseStatus
+    ) where
+
+import           Network.AWS.DirectConnect.Types
+import           Network.AWS.DirectConnect.Types.Product
+import           Network.AWS.Lens
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | Container for the parameters to the DescribeInterconnectLoa operation.
+--
+-- /See:/ 'describeInterconnectLoa' smart constructor.
+data DescribeInterconnectLoa = DescribeInterconnectLoa'
+    { _dilLoaContentType :: !(Maybe LoaContentType)
+    , _dilProviderName   :: !(Maybe Text)
+    , _dilInterconnectId :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeInterconnectLoa' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dilLoaContentType'
+--
+-- * 'dilProviderName'
+--
+-- * 'dilInterconnectId'
+describeInterconnectLoa
+    :: Text -- ^ 'dilInterconnectId'
+    -> DescribeInterconnectLoa
+describeInterconnectLoa pInterconnectId_ =
+    DescribeInterconnectLoa'
+    { _dilLoaContentType = Nothing
+    , _dilProviderName = Nothing
+    , _dilInterconnectId = pInterconnectId_
+    }
+
+-- | Undocumented member.
+dilLoaContentType :: Lens' DescribeInterconnectLoa (Maybe LoaContentType)
+dilLoaContentType = lens _dilLoaContentType (\ s a -> s{_dilLoaContentType = a});
+
+-- | The name of the service provider who establishes connectivity on your behalf. If you supply this parameter, the LOA-CFA lists the provider name alongside your company name as the requester of the cross connect.
+--
+-- Default: None
+dilProviderName :: Lens' DescribeInterconnectLoa (Maybe Text)
+dilProviderName = lens _dilProviderName (\ s a -> s{_dilProviderName = a});
+
+-- | Undocumented member.
+dilInterconnectId :: Lens' DescribeInterconnectLoa Text
+dilInterconnectId = lens _dilInterconnectId (\ s a -> s{_dilInterconnectId = a});
+
+instance AWSRequest DescribeInterconnectLoa where
+        type Rs DescribeInterconnectLoa =
+             DescribeInterconnectLoaResponse
+        request = postJSON directConnect
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeInterconnectLoaResponse' <$>
+                   (x .?> "loa") <*> (pure (fromEnum s)))
+
+instance Hashable DescribeInterconnectLoa
+
+instance NFData DescribeInterconnectLoa
+
+instance ToHeaders DescribeInterconnectLoa where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OvertureService.DescribeInterconnectLoa" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeInterconnectLoa where
+        toJSON DescribeInterconnectLoa'{..}
+          = object
+              (catMaybes
+                 [("loaContentType" .=) <$> _dilLoaContentType,
+                  ("providerName" .=) <$> _dilProviderName,
+                  Just ("interconnectId" .= _dilInterconnectId)])
+
+instance ToPath DescribeInterconnectLoa where
+        toPath = const "/"
+
+instance ToQuery DescribeInterconnectLoa where
+        toQuery = const mempty
+
+-- | The response received when DescribeInterconnectLoa is called.
+--
+-- /See:/ 'describeInterconnectLoaResponse' smart constructor.
+data DescribeInterconnectLoaResponse = DescribeInterconnectLoaResponse'
+    { _dilrsLoa            :: !(Maybe Loa)
+    , _dilrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeInterconnectLoaResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dilrsLoa'
+--
+-- * 'dilrsResponseStatus'
+describeInterconnectLoaResponse
+    :: Int -- ^ 'dilrsResponseStatus'
+    -> DescribeInterconnectLoaResponse
+describeInterconnectLoaResponse pResponseStatus_ =
+    DescribeInterconnectLoaResponse'
+    { _dilrsLoa = Nothing
+    , _dilrsResponseStatus = pResponseStatus_
+    }
+
+-- | Undocumented member.
+dilrsLoa :: Lens' DescribeInterconnectLoaResponse (Maybe Loa)
+dilrsLoa = lens _dilrsLoa (\ s a -> s{_dilrsLoa = a});
+
+-- | The response status code.
+dilrsResponseStatus :: Lens' DescribeInterconnectLoaResponse Int
+dilrsResponseStatus = lens _dilrsResponseStatus (\ s a -> s{_dilrsResponseStatus = a});
+
+instance NFData DescribeInterconnectLoaResponse
diff --git a/gen/Network/AWS/DirectConnect/Types.hs b/gen/Network/AWS/DirectConnect/Types.hs
--- a/gen/Network/AWS/DirectConnect/Types.hs
+++ b/gen/Network/AWS/DirectConnect/Types.hs
@@ -25,6 +25,9 @@
     -- * InterconnectState
     , InterconnectState (..)
 
+    -- * LoaContentType
+    , LoaContentType (..)
+
     -- * VirtualInterfaceState
     , VirtualInterfaceState (..)
 
@@ -34,6 +37,7 @@
     , cVlan
     , cLocation
     , cConnectionId
+    , cLoaIssueTime
     , cPartnerName
     , cConnectionName
     , cBandwidth
@@ -52,9 +56,16 @@
     , iInterconnectId
     , iLocation
     , iInterconnectName
+    , iLoaIssueTime
     , iBandwidth
     , iInterconnectState
     , iRegion
+
+    -- * Loa
+    , Loa
+    , loa
+    , loaLoaContent
+    , loaLoaContentType
 
     -- * Location
     , Location
diff --git a/gen/Network/AWS/DirectConnect/Types/Product.hs b/gen/Network/AWS/DirectConnect/Types/Product.hs
--- a/gen/Network/AWS/DirectConnect/Types/Product.hs
+++ b/gen/Network/AWS/DirectConnect/Types/Product.hs
@@ -28,6 +28,7 @@
     { _cVlan            :: !(Maybe Int)
     , _cLocation        :: !(Maybe Text)
     , _cConnectionId    :: !(Maybe Text)
+    , _cLoaIssueTime    :: !(Maybe POSIX)
     , _cPartnerName     :: !(Maybe Text)
     , _cConnectionName  :: !(Maybe Text)
     , _cBandwidth       :: !(Maybe Text)
@@ -46,6 +47,8 @@
 --
 -- * 'cConnectionId'
 --
+-- * 'cLoaIssueTime'
+--
 -- * 'cPartnerName'
 --
 -- * 'cConnectionName'
@@ -64,6 +67,7 @@
     { _cVlan = Nothing
     , _cLocation = Nothing
     , _cConnectionId = Nothing
+    , _cLoaIssueTime = Nothing
     , _cPartnerName = Nothing
     , _cConnectionName = Nothing
     , _cBandwidth = Nothing
@@ -84,7 +88,11 @@
 cConnectionId :: Lens' Connection (Maybe Text)
 cConnectionId = lens _cConnectionId (\ s a -> s{_cConnectionId = a});
 
--- | Undocumented member.
+-- | The time of the most recent call to DescribeConnectionLoa for this Connection.
+cLoaIssueTime :: Lens' Connection (Maybe UTCTime)
+cLoaIssueTime = lens _cLoaIssueTime (\ s a -> s{_cLoaIssueTime = a}) . mapping _Time;
+
+-- | The name of the AWS Direct Connect service provider associated with the connection.
 cPartnerName :: Lens' Connection (Maybe Text)
 cPartnerName = lens _cPartnerName (\ s a -> s{_cPartnerName = a});
 
@@ -100,7 +108,7 @@
 cBandwidth :: Lens' Connection (Maybe Text)
 cBandwidth = lens _cBandwidth (\ s a -> s{_cBandwidth = a});
 
--- | Undocumented member.
+-- | The AWS account that will own the new connection.
 cOwnerAccount :: Lens' Connection (Maybe Text)
 cOwnerAccount = lens _cOwnerAccount (\ s a -> s{_cOwnerAccount = a});
 
@@ -119,6 +127,7 @@
                  Connection' <$>
                    (x .:? "vlan") <*> (x .:? "location") <*>
                      (x .:? "connectionId")
+                     <*> (x .:? "loaIssueTime")
                      <*> (x .:? "partnerName")
                      <*> (x .:? "connectionName")
                      <*> (x .:? "bandwidth")
@@ -174,6 +183,7 @@
     { _iInterconnectId    :: !(Maybe Text)
     , _iLocation          :: !(Maybe Text)
     , _iInterconnectName  :: !(Maybe Text)
+    , _iLoaIssueTime      :: !(Maybe POSIX)
     , _iBandwidth         :: !(Maybe Text)
     , _iInterconnectState :: !(Maybe InterconnectState)
     , _iRegion            :: !(Maybe Text)
@@ -189,6 +199,8 @@
 --
 -- * 'iInterconnectName'
 --
+-- * 'iLoaIssueTime'
+--
 -- * 'iBandwidth'
 --
 -- * 'iInterconnectState'
@@ -201,6 +213,7 @@
     { _iInterconnectId = Nothing
     , _iLocation = Nothing
     , _iInterconnectName = Nothing
+    , _iLoaIssueTime = Nothing
     , _iBandwidth = Nothing
     , _iInterconnectState = Nothing
     , _iRegion = Nothing
@@ -218,6 +231,10 @@
 iInterconnectName :: Lens' Interconnect (Maybe Text)
 iInterconnectName = lens _iInterconnectName (\ s a -> s{_iInterconnectName = a});
 
+-- | The time of the most recent call to DescribeInterconnectLoa for this Interconnect.
+iLoaIssueTime :: Lens' Interconnect (Maybe UTCTime)
+iLoaIssueTime = lens _iLoaIssueTime (\ s a -> s{_iLoaIssueTime = a}) . mapping _Time;
+
 -- | Undocumented member.
 iBandwidth :: Lens' Interconnect (Maybe Text)
 iBandwidth = lens _iBandwidth (\ s a -> s{_iBandwidth = a});
@@ -237,6 +254,7 @@
                  Interconnect' <$>
                    (x .:? "interconnectId") <*> (x .:? "location") <*>
                      (x .:? "interconnectName")
+                     <*> (x .:? "loaIssueTime")
                      <*> (x .:? "bandwidth")
                      <*> (x .:? "interconnectState")
                      <*> (x .:? "region"))
@@ -245,6 +263,54 @@
 
 instance NFData Interconnect
 
+-- | A structure containing the Letter of Authorization - Connecting Facility Assignment (LOA-CFA) for a connection.
+--
+-- /See:/ 'loa' smart constructor.
+data Loa = Loa'
+    { _loaLoaContent     :: !(Maybe Base64)
+    , _loaLoaContentType :: !(Maybe LoaContentType)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Loa' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'loaLoaContent'
+--
+-- * 'loaLoaContentType'
+loa
+    :: Loa
+loa =
+    Loa'
+    { _loaLoaContent = Nothing
+    , _loaLoaContentType = Nothing
+    }
+
+-- | Undocumented member.
+--
+-- /Note:/ This 'Lens' automatically encodes and decodes Base64 data,
+-- despite what the AWS documentation might say.
+-- The underlying isomorphism will encode to Base64 representation during
+-- serialisation, and decode from Base64 representation during deserialisation.
+-- This 'Lens' accepts and returns only raw unencoded data.
+loaLoaContent :: Lens' Loa (Maybe ByteString)
+loaLoaContent = lens _loaLoaContent (\ s a -> s{_loaLoaContent = a}) . mapping _Base64;
+
+-- | Undocumented member.
+loaLoaContentType :: Lens' Loa (Maybe LoaContentType)
+loaLoaContentType = lens _loaLoaContentType (\ s a -> s{_loaLoaContentType = a});
+
+instance FromJSON Loa where
+        parseJSON
+          = withObject "Loa"
+              (\ x ->
+                 Loa' <$>
+                   (x .:? "loaContent") <*> (x .:? "loaContentType"))
+
+instance Hashable Loa
+
+instance NFData Loa
+
 -- | An AWS Direct Connect location where connections and interconnects can be requested.
 --
 -- /See:/ 'location' smart constructor.
@@ -857,7 +923,7 @@
 viCustomerRouterConfig :: Lens' VirtualInterface (Maybe Text)
 viCustomerRouterConfig = lens _viCustomerRouterConfig (\ s a -> s{_viCustomerRouterConfig = a});
 
--- | Undocumented member.
+-- | The AWS account that will own the new virtual interface.
 viOwnerAccount :: Lens' VirtualInterface (Maybe Text)
 viOwnerAccount = lens _viOwnerAccount (\ s a -> s{_viOwnerAccount = a});
 
diff --git a/gen/Network/AWS/DirectConnect/Types/Sum.hs b/gen/Network/AWS/DirectConnect/Types/Sum.hs
--- a/gen/Network/AWS/DirectConnect/Types/Sum.hs
+++ b/gen/Network/AWS/DirectConnect/Types/Sum.hs
@@ -22,13 +22,21 @@
 -- | State of the connection.
 --
 -- -   __Ordering__: The initial state of a hosted connection provisioned on an interconnect. The connection stays in the ordering state until the owner of the hosted connection confirms or declines the connection order.
+--
 -- -   __Requested__: The initial state of a standard connection. The connection stays in the requested state until the Letter of Authorization (LOA) is sent to the customer.
+--
 -- -   __Pending__: The connection has been approved, and is being initialized.
+--
 -- -   __Available__: The network link is up, and the connection is ready for use.
+--
 -- -   __Down__: The network link is down.
+--
 -- -   __Deleting__: The connection is in the process of being deleted.
+--
 -- -   __Deleted__: The connection has been deleted.
+--
 -- -   __Rejected__: A hosted connection in the \'Ordering\' state will enter the \'Rejected\' state if it is deleted by the end customer.
+--
 data ConnectionState
     = CSAvailable
     | CSDeleted
@@ -76,11 +84,17 @@
 -- | State of the interconnect.
 --
 -- -   __Requested__: The initial state of an interconnect. The interconnect stays in the requested state until the Letter of Authorization (LOA) is sent to the customer.
--- -   __Pending__: The interconnect has been approved, and is being initialized.
+--
+-- -   __Pending__>: The interconnect has been approved, and is being initialized.
+--
 -- -   __Available__: The network link is up, and the interconnect is ready for use.
+--
 -- -   __Down__: The network link is down.
+--
 -- -   __Deleting__: The interconnect is in the process of being deleted.
+--
 -- -   __Deleted__: The interconnect has been deleted.
+--
 data InterconnectState
     = ISAvailable
     | ISDeleted
@@ -119,21 +133,59 @@
 instance FromJSON InterconnectState where
     parseJSON = parseJSONText "InterconnectState"
 
+-- | A standard media type indicating the content type of the LOA-CFA document. Currently, the only supported value is \"application\/pdf\".
+--
+-- Default: application\/pdf
+data LoaContentType =
+    ApplicationPdf
+    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+
+instance FromText LoaContentType where
+    parser = takeLowerText >>= \case
+        "application/pdf" -> pure ApplicationPdf
+        e -> fromTextError $ "Failure parsing LoaContentType from value: '" <> e
+           <> "'. Accepted values: application/pdf"
+
+instance ToText LoaContentType where
+    toText = \case
+        ApplicationPdf -> "application/pdf"
+
+instance Hashable     LoaContentType
+instance NFData       LoaContentType
+instance ToByteString LoaContentType
+instance ToQuery      LoaContentType
+instance ToHeader     LoaContentType
+
+instance ToJSON LoaContentType where
+    toJSON = toJSONText
+
+instance FromJSON LoaContentType where
+    parseJSON = parseJSONText "LoaContentType"
+
 -- | State of the virtual interface.
 --
 -- -   __Confirming__: The creation of the virtual interface is pending confirmation from the virtual interface owner. If the owner of the virtual interface is different from the owner of the connection on which it is provisioned, then the virtual interface will remain in this state until it is confirmed by the virtual interface owner.
+--
 -- -   __Verifying__: This state only applies to public virtual interfaces. Each public virtual interface needs validation before the virtual interface can be created.
+--
 -- -   __Pending__: A virtual interface is in this state from the time that it is created until the virtual interface is ready to forward traffic.
+--
 -- -   __Available__: A virtual interface that is able to forward traffic.
+--
 -- -   __Down__: A virtual interface that is BGP down.
+--
 -- -   __Deleting__: A virtual interface is in this state immediately after calling /DeleteVirtualInterface/ until it can no longer forward traffic.
+--
 -- -   __Deleted__: A virtual interface that cannot forward traffic.
+--
 -- -   __Rejected__: The virtual interface owner has declined creation of the virtual interface. If a virtual interface in the \'Confirming\' state is deleted by the virtual interface owner, the virtual interface will enter the \'Rejected\' state.
+--
 data VirtualInterfaceState
     = Available
     | Confirming
     | Deleted
     | Deleting
+    | Down
     | Pending
     | Rejected
     | Verifying
@@ -145,11 +197,12 @@
         "confirming" -> pure Confirming
         "deleted" -> pure Deleted
         "deleting" -> pure Deleting
+        "down" -> pure Down
         "pending" -> pure Pending
         "rejected" -> pure Rejected
         "verifying" -> pure Verifying
         e -> fromTextError $ "Failure parsing VirtualInterfaceState from value: '" <> e
-           <> "'. Accepted values: available, confirming, deleted, deleting, pending, rejected, verifying"
+           <> "'. Accepted values: available, confirming, deleted, deleting, down, pending, rejected, verifying"
 
 instance ToText VirtualInterfaceState where
     toText = \case
@@ -157,6 +210,7 @@
         Confirming -> "confirming"
         Deleted -> "deleted"
         Deleting -> "deleting"
+        Down -> "down"
         Pending -> "pending"
         Rejected -> "rejected"
         Verifying -> "verifying"
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
diff --git a/test/Test/AWS/Gen/DirectConnect.hs b/test/Test/AWS/Gen/DirectConnect.hs
--- a/test/Test/AWS/Gen/DirectConnect.hs
+++ b/test/Test/AWS/Gen/DirectConnect.hs
@@ -73,6 +73,9 @@
 --         , requestDeleteVirtualInterface $
 --             deleteVirtualInterface
 --
+--         , requestDescribeInterconnectLoa $
+--             describeInterconnectLoa
+--
 --         , requestCreatePrivateVirtualInterface $
 --             createPrivateVirtualInterface
 --
@@ -85,6 +88,9 @@
 --         , requestCreateInterconnect $
 --             createInterconnect
 --
+--         , requestDescribeConnectionLoa $
+--             describeConnectionLoa
+--
 --           ]
 
 --     , testGroup "response"
@@ -133,6 +139,9 @@
 --         , responseDeleteVirtualInterface $
 --             deleteVirtualInterfaceResponse
 --
+--         , responseDescribeInterconnectLoa $
+--             describeInterconnectLoaResponse
+--
 --         , responseCreatePrivateVirtualInterface $
 --             virtualInterface
 --
@@ -145,6 +154,9 @@
 --         , responseCreateInterconnect $
 --             interconnect
 --
+--         , responseDescribeConnectionLoa $
+--             describeConnectionLoaResponse
+--
 --           ]
 --     ]
 
@@ -225,6 +237,11 @@
     "DeleteVirtualInterface"
     "fixture/DeleteVirtualInterface.yaml"
 
+requestDescribeInterconnectLoa :: DescribeInterconnectLoa -> TestTree
+requestDescribeInterconnectLoa = req
+    "DescribeInterconnectLoa"
+    "fixture/DescribeInterconnectLoa.yaml"
+
 requestCreatePrivateVirtualInterface :: CreatePrivateVirtualInterface -> TestTree
 requestCreatePrivateVirtualInterface = req
     "CreatePrivateVirtualInterface"
@@ -245,6 +262,11 @@
     "CreateInterconnect"
     "fixture/CreateInterconnect.yaml"
 
+requestDescribeConnectionLoa :: DescribeConnectionLoa -> TestTree
+requestDescribeConnectionLoa = req
+    "DescribeConnectionLoa"
+    "fixture/DescribeConnectionLoa.yaml"
+
 -- Responses
 
 responseDescribeInterconnects :: DescribeInterconnectsResponse -> TestTree
@@ -352,6 +374,13 @@
     directConnect
     (Proxy :: Proxy DeleteVirtualInterface)
 
+responseDescribeInterconnectLoa :: DescribeInterconnectLoaResponse -> TestTree
+responseDescribeInterconnectLoa = res
+    "DescribeInterconnectLoaResponse"
+    "fixture/DescribeInterconnectLoaResponse.proto"
+    directConnect
+    (Proxy :: Proxy DescribeInterconnectLoa)
+
 responseCreatePrivateVirtualInterface :: VirtualInterface -> TestTree
 responseCreatePrivateVirtualInterface = res
     "CreatePrivateVirtualInterfaceResponse"
@@ -379,3 +408,10 @@
     "fixture/CreateInterconnectResponse.proto"
     directConnect
     (Proxy :: Proxy CreateInterconnect)
+
+responseDescribeConnectionLoa :: DescribeConnectionLoaResponse -> TestTree
+responseDescribeConnectionLoa = res
+    "DescribeConnectionLoaResponse"
+    "fixture/DescribeConnectionLoaResponse.proto"
+    directConnect
+    (Proxy :: Proxy DescribeConnectionLoa)
