{-# 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.IoT.RegisterCACertificate -- Copyright : (c) 2013-2016 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Registers a CA certificate with AWS IoT. This CA certificate can then be used to sign device certificates, which can be then registered with AWS IoT. You can register up to 10 CA certificates per AWS account that have the same subject field and public key. This enables you to have up to 10 certificate authorities sign your device certificates. If you have more than one CA certificate registered, make sure you pass the CA certificate when you register your device certificates with the RegisterCertificate API. module Network.AWS.IoT.RegisterCACertificate ( -- * Creating a Request registerCACertificate , RegisterCACertificate -- * Request Lenses , rcacSetAsActive , rcacCaCertificate , rcacVerificationCertificate -- * Destructuring the Response , registerCACertificateResponse , RegisterCACertificateResponse -- * Response Lenses , rcacrsCertificateARN , rcacrsCertificateId , rcacrsResponseStatus ) where import Network.AWS.IoT.Types import Network.AWS.IoT.Types.Product import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | The input to the RegisterCACertificate operation. -- -- /See:/ 'registerCACertificate' smart constructor. data RegisterCACertificate = RegisterCACertificate' { _rcacSetAsActive :: !(Maybe Bool) , _rcacCaCertificate :: !Text , _rcacVerificationCertificate :: !Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'RegisterCACertificate' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'rcacSetAsActive' -- -- * 'rcacCaCertificate' -- -- * 'rcacVerificationCertificate' registerCACertificate :: Text -- ^ 'rcacCaCertificate' -> Text -- ^ 'rcacVerificationCertificate' -> RegisterCACertificate registerCACertificate pCaCertificate_ pVerificationCertificate_ = RegisterCACertificate' { _rcacSetAsActive = Nothing , _rcacCaCertificate = pCaCertificate_ , _rcacVerificationCertificate = pVerificationCertificate_ } -- | A boolean value that specifies if the CA certificate is set to active. rcacSetAsActive :: Lens' RegisterCACertificate (Maybe Bool) rcacSetAsActive = lens _rcacSetAsActive (\ s a -> s{_rcacSetAsActive = a}); -- | The CA certificate. rcacCaCertificate :: Lens' RegisterCACertificate Text rcacCaCertificate = lens _rcacCaCertificate (\ s a -> s{_rcacCaCertificate = a}); -- | The private key verification certificate. rcacVerificationCertificate :: Lens' RegisterCACertificate Text rcacVerificationCertificate = lens _rcacVerificationCertificate (\ s a -> s{_rcacVerificationCertificate = a}); instance AWSRequest RegisterCACertificate where type Rs RegisterCACertificate = RegisterCACertificateResponse request = postJSON ioT response = receiveJSON (\ s h x -> RegisterCACertificateResponse' <$> (x .?> "certificateArn") <*> (x .?> "certificateId") <*> (pure (fromEnum s))) instance Hashable RegisterCACertificate instance NFData RegisterCACertificate instance ToHeaders RegisterCACertificate where toHeaders = const mempty instance ToJSON RegisterCACertificate where toJSON RegisterCACertificate'{..} = object (catMaybes [Just ("caCertificate" .= _rcacCaCertificate), Just ("verificationCertificate" .= _rcacVerificationCertificate)]) instance ToPath RegisterCACertificate where toPath = const "/cacertificate" instance ToQuery RegisterCACertificate where toQuery RegisterCACertificate'{..} = mconcat ["setAsActive" =: _rcacSetAsActive] -- | The output from the RegisterCACertificateResponse operation. -- -- /See:/ 'registerCACertificateResponse' smart constructor. data RegisterCACertificateResponse = RegisterCACertificateResponse' { _rcacrsCertificateARN :: !(Maybe Text) , _rcacrsCertificateId :: !(Maybe Text) , _rcacrsResponseStatus :: !Int } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'RegisterCACertificateResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'rcacrsCertificateARN' -- -- * 'rcacrsCertificateId' -- -- * 'rcacrsResponseStatus' registerCACertificateResponse :: Int -- ^ 'rcacrsResponseStatus' -> RegisterCACertificateResponse registerCACertificateResponse pResponseStatus_ = RegisterCACertificateResponse' { _rcacrsCertificateARN = Nothing , _rcacrsCertificateId = Nothing , _rcacrsResponseStatus = pResponseStatus_ } -- | The CA certificate ARN. rcacrsCertificateARN :: Lens' RegisterCACertificateResponse (Maybe Text) rcacrsCertificateARN = lens _rcacrsCertificateARN (\ s a -> s{_rcacrsCertificateARN = a}); -- | The CA certificate identifier. rcacrsCertificateId :: Lens' RegisterCACertificateResponse (Maybe Text) rcacrsCertificateId = lens _rcacrsCertificateId (\ s a -> s{_rcacrsCertificateId = a}); -- | The response status code. rcacrsResponseStatus :: Lens' RegisterCACertificateResponse Int rcacrsResponseStatus = lens _rcacrsResponseStatus (\ s a -> s{_rcacrsResponseStatus = a}); instance NFData RegisterCACertificateResponse