{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Route53Domains.UpdateDomainContact
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- This operation updates the contact information for a particular domain.
-- You must specify information for at least one contact: registrant,
-- administrator, or technical.
--
-- If the update is successful, this method returns an operation ID that
-- you can use to track the progress and completion of the operation. If
-- the request is not completed successfully, the domain registrant will be
-- notified by email.
module Amazonka.Route53Domains.UpdateDomainContact
  ( -- * Creating a Request
    UpdateDomainContact (..),
    newUpdateDomainContact,

    -- * Request Lenses
    updateDomainContact_adminContact,
    updateDomainContact_consent,
    updateDomainContact_registrantContact,
    updateDomainContact_techContact,
    updateDomainContact_domainName,

    -- * Destructuring the Response
    UpdateDomainContactResponse (..),
    newUpdateDomainContactResponse,

    -- * Response Lenses
    updateDomainContactResponse_operationId,
    updateDomainContactResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
import Amazonka.Route53Domains.Types

-- | The UpdateDomainContact request includes the following elements.
--
-- /See:/ 'newUpdateDomainContact' smart constructor.
data UpdateDomainContact = UpdateDomainContact'
  { -- | Provides detailed contact information.
    UpdateDomainContact -> Maybe (Sensitive ContactDetail)
adminContact :: Prelude.Maybe (Data.Sensitive ContactDetail),
    -- | Customer\'s consent for the owner change request.
    UpdateDomainContact -> Maybe Consent
consent :: Prelude.Maybe Consent,
    -- | Provides detailed contact information.
    UpdateDomainContact -> Maybe (Sensitive ContactDetail)
registrantContact :: Prelude.Maybe (Data.Sensitive ContactDetail),
    -- | Provides detailed contact information.
    UpdateDomainContact -> Maybe (Sensitive ContactDetail)
techContact :: Prelude.Maybe (Data.Sensitive ContactDetail),
    -- | The name of the domain that you want to update contact information for.
    UpdateDomainContact -> Text
domainName :: Prelude.Text
  }
  deriving (UpdateDomainContact -> UpdateDomainContact -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateDomainContact -> UpdateDomainContact -> Bool
$c/= :: UpdateDomainContact -> UpdateDomainContact -> Bool
== :: UpdateDomainContact -> UpdateDomainContact -> Bool
$c== :: UpdateDomainContact -> UpdateDomainContact -> Bool
Prelude.Eq, Int -> UpdateDomainContact -> ShowS
[UpdateDomainContact] -> ShowS
UpdateDomainContact -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateDomainContact] -> ShowS
$cshowList :: [UpdateDomainContact] -> ShowS
show :: UpdateDomainContact -> String
$cshow :: UpdateDomainContact -> String
showsPrec :: Int -> UpdateDomainContact -> ShowS
$cshowsPrec :: Int -> UpdateDomainContact -> ShowS
Prelude.Show, forall x. Rep UpdateDomainContact x -> UpdateDomainContact
forall x. UpdateDomainContact -> Rep UpdateDomainContact x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateDomainContact x -> UpdateDomainContact
$cfrom :: forall x. UpdateDomainContact -> Rep UpdateDomainContact x
Prelude.Generic)

-- |
-- Create a value of 'UpdateDomainContact' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'adminContact', 'updateDomainContact_adminContact' - Provides detailed contact information.
--
-- 'consent', 'updateDomainContact_consent' - Customer\'s consent for the owner change request.
--
-- 'registrantContact', 'updateDomainContact_registrantContact' - Provides detailed contact information.
--
-- 'techContact', 'updateDomainContact_techContact' - Provides detailed contact information.
--
-- 'domainName', 'updateDomainContact_domainName' - The name of the domain that you want to update contact information for.
newUpdateDomainContact ::
  -- | 'domainName'
  Prelude.Text ->
  UpdateDomainContact
newUpdateDomainContact :: Text -> UpdateDomainContact
newUpdateDomainContact Text
pDomainName_ =
  UpdateDomainContact'
    { $sel:adminContact:UpdateDomainContact' :: Maybe (Sensitive ContactDetail)
adminContact =
        forall a. Maybe a
Prelude.Nothing,
      $sel:consent:UpdateDomainContact' :: Maybe Consent
consent = forall a. Maybe a
Prelude.Nothing,
      $sel:registrantContact:UpdateDomainContact' :: Maybe (Sensitive ContactDetail)
registrantContact = forall a. Maybe a
Prelude.Nothing,
      $sel:techContact:UpdateDomainContact' :: Maybe (Sensitive ContactDetail)
techContact = forall a. Maybe a
Prelude.Nothing,
      $sel:domainName:UpdateDomainContact' :: Text
domainName = Text
pDomainName_
    }

-- | Provides detailed contact information.
updateDomainContact_adminContact :: Lens.Lens' UpdateDomainContact (Prelude.Maybe ContactDetail)
updateDomainContact_adminContact :: Lens' UpdateDomainContact (Maybe ContactDetail)
updateDomainContact_adminContact = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainContact' {Maybe (Sensitive ContactDetail)
adminContact :: Maybe (Sensitive ContactDetail)
$sel:adminContact:UpdateDomainContact' :: UpdateDomainContact -> Maybe (Sensitive ContactDetail)
adminContact} -> Maybe (Sensitive ContactDetail)
adminContact) (\s :: UpdateDomainContact
s@UpdateDomainContact' {} Maybe (Sensitive ContactDetail)
a -> UpdateDomainContact
s {$sel:adminContact:UpdateDomainContact' :: Maybe (Sensitive ContactDetail)
adminContact = Maybe (Sensitive ContactDetail)
a} :: UpdateDomainContact) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall a. Iso' (Sensitive a) a
Data._Sensitive

-- | Customer\'s consent for the owner change request.
updateDomainContact_consent :: Lens.Lens' UpdateDomainContact (Prelude.Maybe Consent)
updateDomainContact_consent :: Lens' UpdateDomainContact (Maybe Consent)
updateDomainContact_consent = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainContact' {Maybe Consent
consent :: Maybe Consent
$sel:consent:UpdateDomainContact' :: UpdateDomainContact -> Maybe Consent
consent} -> Maybe Consent
consent) (\s :: UpdateDomainContact
s@UpdateDomainContact' {} Maybe Consent
a -> UpdateDomainContact
s {$sel:consent:UpdateDomainContact' :: Maybe Consent
consent = Maybe Consent
a} :: UpdateDomainContact)

-- | Provides detailed contact information.
updateDomainContact_registrantContact :: Lens.Lens' UpdateDomainContact (Prelude.Maybe ContactDetail)
updateDomainContact_registrantContact :: Lens' UpdateDomainContact (Maybe ContactDetail)
updateDomainContact_registrantContact = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainContact' {Maybe (Sensitive ContactDetail)
registrantContact :: Maybe (Sensitive ContactDetail)
$sel:registrantContact:UpdateDomainContact' :: UpdateDomainContact -> Maybe (Sensitive ContactDetail)
registrantContact} -> Maybe (Sensitive ContactDetail)
registrantContact) (\s :: UpdateDomainContact
s@UpdateDomainContact' {} Maybe (Sensitive ContactDetail)
a -> UpdateDomainContact
s {$sel:registrantContact:UpdateDomainContact' :: Maybe (Sensitive ContactDetail)
registrantContact = Maybe (Sensitive ContactDetail)
a} :: UpdateDomainContact) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall a. Iso' (Sensitive a) a
Data._Sensitive

-- | Provides detailed contact information.
updateDomainContact_techContact :: Lens.Lens' UpdateDomainContact (Prelude.Maybe ContactDetail)
updateDomainContact_techContact :: Lens' UpdateDomainContact (Maybe ContactDetail)
updateDomainContact_techContact = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainContact' {Maybe (Sensitive ContactDetail)
techContact :: Maybe (Sensitive ContactDetail)
$sel:techContact:UpdateDomainContact' :: UpdateDomainContact -> Maybe (Sensitive ContactDetail)
techContact} -> Maybe (Sensitive ContactDetail)
techContact) (\s :: UpdateDomainContact
s@UpdateDomainContact' {} Maybe (Sensitive ContactDetail)
a -> UpdateDomainContact
s {$sel:techContact:UpdateDomainContact' :: Maybe (Sensitive ContactDetail)
techContact = Maybe (Sensitive ContactDetail)
a} :: UpdateDomainContact) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall a. Iso' (Sensitive a) a
Data._Sensitive

-- | The name of the domain that you want to update contact information for.
updateDomainContact_domainName :: Lens.Lens' UpdateDomainContact Prelude.Text
updateDomainContact_domainName :: Lens' UpdateDomainContact Text
updateDomainContact_domainName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainContact' {Text
domainName :: Text
$sel:domainName:UpdateDomainContact' :: UpdateDomainContact -> Text
domainName} -> Text
domainName) (\s :: UpdateDomainContact
s@UpdateDomainContact' {} Text
a -> UpdateDomainContact
s {$sel:domainName:UpdateDomainContact' :: Text
domainName = Text
a} :: UpdateDomainContact)

instance Core.AWSRequest UpdateDomainContact where
  type
    AWSResponse UpdateDomainContact =
      UpdateDomainContactResponse
  request :: (Service -> Service)
-> UpdateDomainContact -> Request UpdateDomainContact
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy UpdateDomainContact
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateDomainContact)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text -> Int -> UpdateDomainContactResponse
UpdateDomainContactResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"OperationId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable UpdateDomainContact where
  hashWithSalt :: Int -> UpdateDomainContact -> Int
hashWithSalt Int
_salt UpdateDomainContact' {Maybe (Sensitive ContactDetail)
Maybe Consent
Text
domainName :: Text
techContact :: Maybe (Sensitive ContactDetail)
registrantContact :: Maybe (Sensitive ContactDetail)
consent :: Maybe Consent
adminContact :: Maybe (Sensitive ContactDetail)
$sel:domainName:UpdateDomainContact' :: UpdateDomainContact -> Text
$sel:techContact:UpdateDomainContact' :: UpdateDomainContact -> Maybe (Sensitive ContactDetail)
$sel:registrantContact:UpdateDomainContact' :: UpdateDomainContact -> Maybe (Sensitive ContactDetail)
$sel:consent:UpdateDomainContact' :: UpdateDomainContact -> Maybe Consent
$sel:adminContact:UpdateDomainContact' :: UpdateDomainContact -> Maybe (Sensitive ContactDetail)
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive ContactDetail)
adminContact
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Consent
consent
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive ContactDetail)
registrantContact
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive ContactDetail)
techContact
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
domainName

instance Prelude.NFData UpdateDomainContact where
  rnf :: UpdateDomainContact -> ()
rnf UpdateDomainContact' {Maybe (Sensitive ContactDetail)
Maybe Consent
Text
domainName :: Text
techContact :: Maybe (Sensitive ContactDetail)
registrantContact :: Maybe (Sensitive ContactDetail)
consent :: Maybe Consent
adminContact :: Maybe (Sensitive ContactDetail)
$sel:domainName:UpdateDomainContact' :: UpdateDomainContact -> Text
$sel:techContact:UpdateDomainContact' :: UpdateDomainContact -> Maybe (Sensitive ContactDetail)
$sel:registrantContact:UpdateDomainContact' :: UpdateDomainContact -> Maybe (Sensitive ContactDetail)
$sel:consent:UpdateDomainContact' :: UpdateDomainContact -> Maybe Consent
$sel:adminContact:UpdateDomainContact' :: UpdateDomainContact -> Maybe (Sensitive ContactDetail)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive ContactDetail)
adminContact
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Consent
consent
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive ContactDetail)
registrantContact
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive ContactDetail)
techContact
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
domainName

instance Data.ToHeaders UpdateDomainContact where
  toHeaders :: UpdateDomainContact -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"Route53Domains_v20140515.UpdateDomainContact" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON UpdateDomainContact where
  toJSON :: UpdateDomainContact -> Value
toJSON UpdateDomainContact' {Maybe (Sensitive ContactDetail)
Maybe Consent
Text
domainName :: Text
techContact :: Maybe (Sensitive ContactDetail)
registrantContact :: Maybe (Sensitive ContactDetail)
consent :: Maybe Consent
adminContact :: Maybe (Sensitive ContactDetail)
$sel:domainName:UpdateDomainContact' :: UpdateDomainContact -> Text
$sel:techContact:UpdateDomainContact' :: UpdateDomainContact -> Maybe (Sensitive ContactDetail)
$sel:registrantContact:UpdateDomainContact' :: UpdateDomainContact -> Maybe (Sensitive ContactDetail)
$sel:consent:UpdateDomainContact' :: UpdateDomainContact -> Maybe Consent
$sel:adminContact:UpdateDomainContact' :: UpdateDomainContact -> Maybe (Sensitive ContactDetail)
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"AdminContact" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (Sensitive ContactDetail)
adminContact,
            (Key
"Consent" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Consent
consent,
            (Key
"RegistrantContact" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (Sensitive ContactDetail)
registrantContact,
            (Key
"TechContact" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (Sensitive ContactDetail)
techContact,
            forall a. a -> Maybe a
Prelude.Just (Key
"DomainName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
domainName)
          ]
      )

instance Data.ToPath UpdateDomainContact where
  toPath :: UpdateDomainContact -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery UpdateDomainContact where
  toQuery :: UpdateDomainContact -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | The UpdateDomainContact response includes the following element.
--
-- /See:/ 'newUpdateDomainContactResponse' smart constructor.
data UpdateDomainContactResponse = UpdateDomainContactResponse'
  { -- | Identifier for tracking the progress of the request. To query the
    -- operation status, use
    -- <https://docs.aws.amazon.com/Route53/latest/APIReference/API_domains_GetOperationDetail.html GetOperationDetail>.
    UpdateDomainContactResponse -> Maybe Text
operationId :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    UpdateDomainContactResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (UpdateDomainContactResponse -> UpdateDomainContactResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateDomainContactResponse -> UpdateDomainContactResponse -> Bool
$c/= :: UpdateDomainContactResponse -> UpdateDomainContactResponse -> Bool
== :: UpdateDomainContactResponse -> UpdateDomainContactResponse -> Bool
$c== :: UpdateDomainContactResponse -> UpdateDomainContactResponse -> Bool
Prelude.Eq, ReadPrec [UpdateDomainContactResponse]
ReadPrec UpdateDomainContactResponse
Int -> ReadS UpdateDomainContactResponse
ReadS [UpdateDomainContactResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateDomainContactResponse]
$creadListPrec :: ReadPrec [UpdateDomainContactResponse]
readPrec :: ReadPrec UpdateDomainContactResponse
$creadPrec :: ReadPrec UpdateDomainContactResponse
readList :: ReadS [UpdateDomainContactResponse]
$creadList :: ReadS [UpdateDomainContactResponse]
readsPrec :: Int -> ReadS UpdateDomainContactResponse
$creadsPrec :: Int -> ReadS UpdateDomainContactResponse
Prelude.Read, Int -> UpdateDomainContactResponse -> ShowS
[UpdateDomainContactResponse] -> ShowS
UpdateDomainContactResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateDomainContactResponse] -> ShowS
$cshowList :: [UpdateDomainContactResponse] -> ShowS
show :: UpdateDomainContactResponse -> String
$cshow :: UpdateDomainContactResponse -> String
showsPrec :: Int -> UpdateDomainContactResponse -> ShowS
$cshowsPrec :: Int -> UpdateDomainContactResponse -> ShowS
Prelude.Show, forall x.
Rep UpdateDomainContactResponse x -> UpdateDomainContactResponse
forall x.
UpdateDomainContactResponse -> Rep UpdateDomainContactResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateDomainContactResponse x -> UpdateDomainContactResponse
$cfrom :: forall x.
UpdateDomainContactResponse -> Rep UpdateDomainContactResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateDomainContactResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'operationId', 'updateDomainContactResponse_operationId' - Identifier for tracking the progress of the request. To query the
-- operation status, use
-- <https://docs.aws.amazon.com/Route53/latest/APIReference/API_domains_GetOperationDetail.html GetOperationDetail>.
--
-- 'httpStatus', 'updateDomainContactResponse_httpStatus' - The response's http status code.
newUpdateDomainContactResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateDomainContactResponse
newUpdateDomainContactResponse :: Int -> UpdateDomainContactResponse
newUpdateDomainContactResponse Int
pHttpStatus_ =
  UpdateDomainContactResponse'
    { $sel:operationId:UpdateDomainContactResponse' :: Maybe Text
operationId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:UpdateDomainContactResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Identifier for tracking the progress of the request. To query the
-- operation status, use
-- <https://docs.aws.amazon.com/Route53/latest/APIReference/API_domains_GetOperationDetail.html GetOperationDetail>.
updateDomainContactResponse_operationId :: Lens.Lens' UpdateDomainContactResponse (Prelude.Maybe Prelude.Text)
updateDomainContactResponse_operationId :: Lens' UpdateDomainContactResponse (Maybe Text)
updateDomainContactResponse_operationId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainContactResponse' {Maybe Text
operationId :: Maybe Text
$sel:operationId:UpdateDomainContactResponse' :: UpdateDomainContactResponse -> Maybe Text
operationId} -> Maybe Text
operationId) (\s :: UpdateDomainContactResponse
s@UpdateDomainContactResponse' {} Maybe Text
a -> UpdateDomainContactResponse
s {$sel:operationId:UpdateDomainContactResponse' :: Maybe Text
operationId = Maybe Text
a} :: UpdateDomainContactResponse)

-- | The response's http status code.
updateDomainContactResponse_httpStatus :: Lens.Lens' UpdateDomainContactResponse Prelude.Int
updateDomainContactResponse_httpStatus :: Lens' UpdateDomainContactResponse Int
updateDomainContactResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDomainContactResponse' {Int
httpStatus :: Int
$sel:httpStatus:UpdateDomainContactResponse' :: UpdateDomainContactResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: UpdateDomainContactResponse
s@UpdateDomainContactResponse' {} Int
a -> UpdateDomainContactResponse
s {$sel:httpStatus:UpdateDomainContactResponse' :: Int
httpStatus = Int
a} :: UpdateDomainContactResponse)

instance Prelude.NFData UpdateDomainContactResponse where
  rnf :: UpdateDomainContactResponse -> ()
rnf UpdateDomainContactResponse' {Int
Maybe Text
httpStatus :: Int
operationId :: Maybe Text
$sel:httpStatus:UpdateDomainContactResponse' :: UpdateDomainContactResponse -> Int
$sel:operationId:UpdateDomainContactResponse' :: UpdateDomainContactResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
operationId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus