{-# 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.GetDomainDetail
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- This operation returns detailed information about a specified domain
-- that is associated with the current AWS account. Contact information for
-- the domain is also returned as part of the output.
module Amazonka.Route53Domains.GetDomainDetail
  ( -- * Creating a Request
    GetDomainDetail (..),
    newGetDomainDetail,

    -- * Request Lenses
    getDomainDetail_domainName,

    -- * Destructuring the Response
    GetDomainDetailResponse (..),
    newGetDomainDetailResponse,

    -- * Response Lenses
    getDomainDetailResponse_techPrivacy,
    getDomainDetailResponse_dnsSec,
    getDomainDetailResponse_whoIsServer,
    getDomainDetailResponse_registryDomainId,
    getDomainDetailResponse_registrantPrivacy,
    getDomainDetailResponse_updatedDate,
    getDomainDetailResponse_adminPrivacy,
    getDomainDetailResponse_autoRenew,
    getDomainDetailResponse_abuseContactPhone,
    getDomainDetailResponse_registrarUrl,
    getDomainDetailResponse_abuseContactEmail,
    getDomainDetailResponse_expirationDate,
    getDomainDetailResponse_creationDate,
    getDomainDetailResponse_registrarName,
    getDomainDetailResponse_reseller,
    getDomainDetailResponse_statusList,
    getDomainDetailResponse_httpStatus,
    getDomainDetailResponse_domainName,
    getDomainDetailResponse_nameservers,
    getDomainDetailResponse_adminContact,
    getDomainDetailResponse_registrantContact,
    getDomainDetailResponse_techContact,
  )
where

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

-- | The GetDomainDetail request includes the following element.
--
-- /See:/ 'newGetDomainDetail' smart constructor.
data GetDomainDetail = GetDomainDetail'
  { -- | The name of the domain that you want to get detailed information about.
    GetDomainDetail -> Text
domainName :: Prelude.Text
  }
  deriving (GetDomainDetail -> GetDomainDetail -> Bool
(GetDomainDetail -> GetDomainDetail -> Bool)
-> (GetDomainDetail -> GetDomainDetail -> Bool)
-> Eq GetDomainDetail
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetDomainDetail -> GetDomainDetail -> Bool
$c/= :: GetDomainDetail -> GetDomainDetail -> Bool
== :: GetDomainDetail -> GetDomainDetail -> Bool
$c== :: GetDomainDetail -> GetDomainDetail -> Bool
Prelude.Eq, ReadPrec [GetDomainDetail]
ReadPrec GetDomainDetail
Int -> ReadS GetDomainDetail
ReadS [GetDomainDetail]
(Int -> ReadS GetDomainDetail)
-> ReadS [GetDomainDetail]
-> ReadPrec GetDomainDetail
-> ReadPrec [GetDomainDetail]
-> Read GetDomainDetail
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetDomainDetail]
$creadListPrec :: ReadPrec [GetDomainDetail]
readPrec :: ReadPrec GetDomainDetail
$creadPrec :: ReadPrec GetDomainDetail
readList :: ReadS [GetDomainDetail]
$creadList :: ReadS [GetDomainDetail]
readsPrec :: Int -> ReadS GetDomainDetail
$creadsPrec :: Int -> ReadS GetDomainDetail
Prelude.Read, Int -> GetDomainDetail -> ShowS
[GetDomainDetail] -> ShowS
GetDomainDetail -> String
(Int -> GetDomainDetail -> ShowS)
-> (GetDomainDetail -> String)
-> ([GetDomainDetail] -> ShowS)
-> Show GetDomainDetail
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetDomainDetail] -> ShowS
$cshowList :: [GetDomainDetail] -> ShowS
show :: GetDomainDetail -> String
$cshow :: GetDomainDetail -> String
showsPrec :: Int -> GetDomainDetail -> ShowS
$cshowsPrec :: Int -> GetDomainDetail -> ShowS
Prelude.Show, (forall x. GetDomainDetail -> Rep GetDomainDetail x)
-> (forall x. Rep GetDomainDetail x -> GetDomainDetail)
-> Generic GetDomainDetail
forall x. Rep GetDomainDetail x -> GetDomainDetail
forall x. GetDomainDetail -> Rep GetDomainDetail x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetDomainDetail x -> GetDomainDetail
$cfrom :: forall x. GetDomainDetail -> Rep GetDomainDetail x
Prelude.Generic)

-- |
-- Create a value of 'GetDomainDetail' 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:
--
-- 'domainName', 'getDomainDetail_domainName' - The name of the domain that you want to get detailed information about.
newGetDomainDetail ::
  -- | 'domainName'
  Prelude.Text ->
  GetDomainDetail
newGetDomainDetail :: Text -> GetDomainDetail
newGetDomainDetail Text
pDomainName_ =
  GetDomainDetail' :: Text -> GetDomainDetail
GetDomainDetail' {$sel:domainName:GetDomainDetail' :: Text
domainName = Text
pDomainName_}

-- | The name of the domain that you want to get detailed information about.
getDomainDetail_domainName :: Lens.Lens' GetDomainDetail Prelude.Text
getDomainDetail_domainName :: (Text -> f Text) -> GetDomainDetail -> f GetDomainDetail
getDomainDetail_domainName = (GetDomainDetail -> Text)
-> (GetDomainDetail -> Text -> GetDomainDetail)
-> Lens GetDomainDetail GetDomainDetail Text Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainDetail' {Text
domainName :: Text
$sel:domainName:GetDomainDetail' :: GetDomainDetail -> Text
domainName} -> Text
domainName) (\s :: GetDomainDetail
s@GetDomainDetail' {} Text
a -> GetDomainDetail
s {$sel:domainName:GetDomainDetail' :: Text
domainName = Text
a} :: GetDomainDetail)

instance Core.AWSRequest GetDomainDetail where
  type
    AWSResponse GetDomainDetail =
      GetDomainDetailResponse
  request :: GetDomainDetail -> Request GetDomainDetail
request = Service -> GetDomainDetail -> Request GetDomainDetail
forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON Service
defaultService
  response :: Logger
-> Service
-> Proxy GetDomainDetail
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse GetDomainDetail)))
response =
    (Int
 -> ResponseHeaders
 -> Object
 -> Either String (AWSResponse GetDomainDetail))
-> Logger
-> Service
-> Proxy GetDomainDetail
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse GetDomainDetail)))
forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> Logger
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe POSIX
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe [Text]
-> Int
-> Text
-> [Nameserver]
-> Sensitive ContactDetail
-> Sensitive ContactDetail
-> Sensitive ContactDetail
-> GetDomainDetailResponse
GetDomainDetailResponse'
            (Maybe Bool
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Bool
 -> Maybe POSIX
 -> Maybe Bool
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe POSIX
 -> Maybe POSIX
 -> Maybe Text
 -> Maybe Text
 -> Maybe [Text]
 -> Int
 -> Text
 -> [Nameserver]
 -> Sensitive ContactDetail
 -> Sensitive ContactDetail
 -> Sensitive ContactDetail
 -> GetDomainDetailResponse)
-> Either String (Maybe Bool)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe POSIX
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Int
      -> Text
      -> [Nameserver]
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> GetDomainDetailResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Either String (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"TechPrivacy")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe POSIX
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Int
   -> Text
   -> [Nameserver]
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> GetDomainDetailResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe POSIX
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Int
      -> Text
      -> [Nameserver]
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> GetDomainDetailResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"DnsSec")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe POSIX
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Int
   -> Text
   -> [Nameserver]
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> GetDomainDetailResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Bool
      -> Maybe POSIX
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Int
      -> Text
      -> [Nameserver]
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> GetDomainDetailResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"WhoIsServer")
            Either
  String
  (Maybe Text
   -> Maybe Bool
   -> Maybe POSIX
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Int
   -> Text
   -> [Nameserver]
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> GetDomainDetailResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Bool
      -> Maybe POSIX
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Int
      -> Text
      -> [Nameserver]
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> GetDomainDetailResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"RegistryDomainId")
            Either
  String
  (Maybe Bool
   -> Maybe POSIX
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Int
   -> Text
   -> [Nameserver]
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> GetDomainDetailResponse)
-> Either String (Maybe Bool)
-> Either
     String
     (Maybe POSIX
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Int
      -> Text
      -> [Nameserver]
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> GetDomainDetailResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"RegistrantPrivacy")
            Either
  String
  (Maybe POSIX
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Int
   -> Text
   -> [Nameserver]
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> GetDomainDetailResponse)
-> Either String (Maybe POSIX)
-> Either
     String
     (Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Int
      -> Text
      -> [Nameserver]
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> GetDomainDetailResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"UpdatedDate")
            Either
  String
  (Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Int
   -> Text
   -> [Nameserver]
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> GetDomainDetailResponse)
-> Either String (Maybe Bool)
-> Either
     String
     (Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Int
      -> Text
      -> [Nameserver]
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> GetDomainDetailResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"AdminPrivacy")
            Either
  String
  (Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Int
   -> Text
   -> [Nameserver]
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> GetDomainDetailResponse)
-> Either String (Maybe Bool)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Int
      -> Text
      -> [Nameserver]
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> GetDomainDetailResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"AutoRenew")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Int
   -> Text
   -> [Nameserver]
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> GetDomainDetailResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Int
      -> Text
      -> [Nameserver]
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> GetDomainDetailResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"AbuseContactPhone")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Int
   -> Text
   -> [Nameserver]
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> GetDomainDetailResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe POSIX
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Int
      -> Text
      -> [Nameserver]
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> GetDomainDetailResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"RegistrarUrl")
            Either
  String
  (Maybe Text
   -> Maybe POSIX
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Int
   -> Text
   -> [Nameserver]
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> GetDomainDetailResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe POSIX
      -> Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Int
      -> Text
      -> [Nameserver]
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> GetDomainDetailResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"AbuseContactEmail")
            Either
  String
  (Maybe POSIX
   -> Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Int
   -> Text
   -> [Nameserver]
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> GetDomainDetailResponse)
-> Either String (Maybe POSIX)
-> Either
     String
     (Maybe POSIX
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Int
      -> Text
      -> [Nameserver]
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> GetDomainDetailResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"ExpirationDate")
            Either
  String
  (Maybe POSIX
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Int
   -> Text
   -> [Nameserver]
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> GetDomainDetailResponse)
-> Either String (Maybe POSIX)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Int
      -> Text
      -> [Nameserver]
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> GetDomainDetailResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"CreationDate")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Int
   -> Text
   -> [Nameserver]
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> GetDomainDetailResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe [Text]
      -> Int
      -> Text
      -> [Nameserver]
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> GetDomainDetailResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"RegistrarName")
            Either
  String
  (Maybe Text
   -> Maybe [Text]
   -> Int
   -> Text
   -> [Nameserver]
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> GetDomainDetailResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe [Text]
      -> Int
      -> Text
      -> [Nameserver]
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> GetDomainDetailResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"Reseller")
            Either
  String
  (Maybe [Text]
   -> Int
   -> Text
   -> [Nameserver]
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> GetDomainDetailResponse)
-> Either String (Maybe [Text])
-> Either
     String
     (Int
      -> Text
      -> [Nameserver]
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> GetDomainDetailResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe (Maybe [Text]))
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"StatusList" Either String (Maybe (Maybe [Text]))
-> Maybe [Text] -> Either String (Maybe [Text])
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ Maybe [Text]
forall a. Monoid a => a
Prelude.mempty)
            Either
  String
  (Int
   -> Text
   -> [Nameserver]
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> GetDomainDetailResponse)
-> Either String Int
-> Either
     String
     (Text
      -> [Nameserver]
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> GetDomainDetailResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Int -> Either String Int
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (Int -> Int
forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
            Either
  String
  (Text
   -> [Nameserver]
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> GetDomainDetailResponse)
-> Either String Text
-> Either
     String
     ([Nameserver]
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> GetDomainDetailResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String Text
forall a. FromJSON a => Object -> Text -> Either String a
Core..:> Text
"DomainName")
            Either
  String
  ([Nameserver]
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> GetDomainDetailResponse)
-> Either String [Nameserver]
-> Either
     String
     (Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> Sensitive ContactDetail
      -> GetDomainDetailResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe [Nameserver])
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"Nameservers" Either String (Maybe [Nameserver])
-> [Nameserver] -> Either String [Nameserver]
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ [Nameserver]
forall a. Monoid a => a
Prelude.mempty)
            Either
  String
  (Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> Sensitive ContactDetail
   -> GetDomainDetailResponse)
-> Either String (Sensitive ContactDetail)
-> Either
     String
     (Sensitive ContactDetail
      -> Sensitive ContactDetail -> GetDomainDetailResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Sensitive ContactDetail)
forall a. FromJSON a => Object -> Text -> Either String a
Core..:> Text
"AdminContact")
            Either
  String
  (Sensitive ContactDetail
   -> Sensitive ContactDetail -> GetDomainDetailResponse)
-> Either String (Sensitive ContactDetail)
-> Either
     String (Sensitive ContactDetail -> GetDomainDetailResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Sensitive ContactDetail)
forall a. FromJSON a => Object -> Text -> Either String a
Core..:> Text
"RegistrantContact")
            Either String (Sensitive ContactDetail -> GetDomainDetailResponse)
-> Either String (Sensitive ContactDetail)
-> Either String GetDomainDetailResponse
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Sensitive ContactDetail)
forall a. FromJSON a => Object -> Text -> Either String a
Core..:> Text
"TechContact")
      )

instance Prelude.Hashable GetDomainDetail

instance Prelude.NFData GetDomainDetail

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

instance Core.ToJSON GetDomainDetail where
  toJSON :: GetDomainDetail -> Value
toJSON GetDomainDetail' {Text
domainName :: Text
$sel:domainName:GetDomainDetail' :: GetDomainDetail -> Text
..} =
    [Pair] -> Value
Core.object
      ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [Pair -> Maybe Pair
forall a. a -> Maybe a
Prelude.Just (Text
"DomainName" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..= Text
domainName)]
      )

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

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

-- | The GetDomainDetail response includes the following elements.
--
-- /See:/ 'newGetDomainDetailResponse' smart constructor.
data GetDomainDetailResponse = GetDomainDetailResponse'
  { -- | Specifies whether contact information is concealed from WHOIS queries.
    -- If the value is @true@, WHOIS (\"who is\") queries return contact
    -- information either for Amazon Registrar (for .com, .net, and .org
    -- domains) or for our registrar associate, Gandi (for all other TLDs). If
    -- the value is @false@, WHOIS queries return the information that you
    -- entered for the technical contact.
    GetDomainDetailResponse -> Maybe Bool
techPrivacy :: Prelude.Maybe Prelude.Bool,
    -- | Reserved for future use.
    GetDomainDetailResponse -> Maybe Text
dnsSec :: Prelude.Maybe Prelude.Text,
    -- | The fully qualified name of the WHOIS server that can answer the WHOIS
    -- query for the domain.
    GetDomainDetailResponse -> Maybe Text
whoIsServer :: Prelude.Maybe Prelude.Text,
    -- | Reserved for future use.
    GetDomainDetailResponse -> Maybe Text
registryDomainId :: Prelude.Maybe Prelude.Text,
    -- | Specifies whether contact information is concealed from WHOIS queries.
    -- If the value is @true@, WHOIS (\"who is\") queries return contact
    -- information either for Amazon Registrar (for .com, .net, and .org
    -- domains) or for our registrar associate, Gandi (for all other TLDs). If
    -- the value is @false@, WHOIS queries return the information that you
    -- entered for the registrant contact (domain owner).
    GetDomainDetailResponse -> Maybe Bool
registrantPrivacy :: Prelude.Maybe Prelude.Bool,
    -- | The last updated date of the domain as found in the response to a WHOIS
    -- query. The date and time is in Unix time format and Coordinated
    -- Universal time (UTC).
    GetDomainDetailResponse -> Maybe POSIX
updatedDate :: Prelude.Maybe Core.POSIX,
    -- | Specifies whether contact information is concealed from WHOIS queries.
    -- If the value is @true@, WHOIS (\"who is\") queries return contact
    -- information either for Amazon Registrar (for .com, .net, and .org
    -- domains) or for our registrar associate, Gandi (for all other TLDs). If
    -- the value is @false@, WHOIS queries return the information that you
    -- entered for the admin contact.
    GetDomainDetailResponse -> Maybe Bool
adminPrivacy :: Prelude.Maybe Prelude.Bool,
    -- | Specifies whether the domain registration is set to renew automatically.
    GetDomainDetailResponse -> Maybe Bool
autoRenew :: Prelude.Maybe Prelude.Bool,
    -- | Phone number for reporting abuse.
    GetDomainDetailResponse -> Maybe Text
abuseContactPhone :: Prelude.Maybe Prelude.Text,
    -- | Web address of the registrar.
    GetDomainDetailResponse -> Maybe Text
registrarUrl :: Prelude.Maybe Prelude.Text,
    -- | Email address to contact to report incorrect contact information for a
    -- domain, to report that the domain is being used to send spam, to report
    -- that someone is cybersquatting on a domain name, or report some other
    -- type of abuse.
    GetDomainDetailResponse -> Maybe Text
abuseContactEmail :: Prelude.Maybe Prelude.Text,
    -- | The date when the registration for the domain is set to expire. The date
    -- and time is in Unix time format and Coordinated Universal time (UTC).
    GetDomainDetailResponse -> Maybe POSIX
expirationDate :: Prelude.Maybe Core.POSIX,
    -- | The date when the domain was created as found in the response to a WHOIS
    -- query. The date and time is in Unix time format and Coordinated
    -- Universal time (UTC).
    GetDomainDetailResponse -> Maybe POSIX
creationDate :: Prelude.Maybe Core.POSIX,
    -- | Name of the registrar of the domain as identified in the registry.
    -- Domains with a .com, .net, or .org TLD are registered by Amazon
    -- Registrar. All other domains are registered by our registrar associate,
    -- Gandi. The value for domains that are registered by Gandi is
    -- @\"GANDI SAS\"@.
    GetDomainDetailResponse -> Maybe Text
registrarName :: Prelude.Maybe Prelude.Text,
    -- | Reseller of the domain. Domains registered or transferred using Route 53
    -- domains will have @\"Amazon\"@ as the reseller.
    GetDomainDetailResponse -> Maybe Text
reseller :: Prelude.Maybe Prelude.Text,
    -- | An array of domain name status codes, also known as Extensible
    -- Provisioning Protocol (EPP) status codes.
    --
    -- ICANN, the organization that maintains a central database of domain
    -- names, has developed a set of domain name status codes that tell you the
    -- status of a variety of operations on a domain name, for example,
    -- registering a domain name, transferring a domain name to another
    -- registrar, renewing the registration for a domain name, and so on. All
    -- registrars use this same set of status codes.
    --
    -- For a current list of domain name status codes and an explanation of
    -- what each code means, go to the <https://www.icann.org/ ICANN website>
    -- and search for @epp status codes@. (Search on the ICANN website; web
    -- searches sometimes return an old version of the document.)
    GetDomainDetailResponse -> Maybe [Text]
statusList :: Prelude.Maybe [Prelude.Text],
    -- | The response's http status code.
    GetDomainDetailResponse -> Int
httpStatus :: Prelude.Int,
    -- | The name of a domain.
    GetDomainDetailResponse -> Text
domainName :: Prelude.Text,
    -- | The name of the domain.
    GetDomainDetailResponse -> [Nameserver]
nameservers :: [Nameserver],
    -- | Provides details about the domain administrative contact.
    GetDomainDetailResponse -> Sensitive ContactDetail
adminContact :: Core.Sensitive ContactDetail,
    -- | Provides details about the domain registrant.
    GetDomainDetailResponse -> Sensitive ContactDetail
registrantContact :: Core.Sensitive ContactDetail,
    -- | Provides details about the domain technical contact.
    GetDomainDetailResponse -> Sensitive ContactDetail
techContact :: Core.Sensitive ContactDetail
  }
  deriving (GetDomainDetailResponse -> GetDomainDetailResponse -> Bool
(GetDomainDetailResponse -> GetDomainDetailResponse -> Bool)
-> (GetDomainDetailResponse -> GetDomainDetailResponse -> Bool)
-> Eq GetDomainDetailResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetDomainDetailResponse -> GetDomainDetailResponse -> Bool
$c/= :: GetDomainDetailResponse -> GetDomainDetailResponse -> Bool
== :: GetDomainDetailResponse -> GetDomainDetailResponse -> Bool
$c== :: GetDomainDetailResponse -> GetDomainDetailResponse -> Bool
Prelude.Eq, Int -> GetDomainDetailResponse -> ShowS
[GetDomainDetailResponse] -> ShowS
GetDomainDetailResponse -> String
(Int -> GetDomainDetailResponse -> ShowS)
-> (GetDomainDetailResponse -> String)
-> ([GetDomainDetailResponse] -> ShowS)
-> Show GetDomainDetailResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetDomainDetailResponse] -> ShowS
$cshowList :: [GetDomainDetailResponse] -> ShowS
show :: GetDomainDetailResponse -> String
$cshow :: GetDomainDetailResponse -> String
showsPrec :: Int -> GetDomainDetailResponse -> ShowS
$cshowsPrec :: Int -> GetDomainDetailResponse -> ShowS
Prelude.Show, (forall x.
 GetDomainDetailResponse -> Rep GetDomainDetailResponse x)
-> (forall x.
    Rep GetDomainDetailResponse x -> GetDomainDetailResponse)
-> Generic GetDomainDetailResponse
forall x. Rep GetDomainDetailResponse x -> GetDomainDetailResponse
forall x. GetDomainDetailResponse -> Rep GetDomainDetailResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetDomainDetailResponse x -> GetDomainDetailResponse
$cfrom :: forall x. GetDomainDetailResponse -> Rep GetDomainDetailResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetDomainDetailResponse' 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:
--
-- 'techPrivacy', 'getDomainDetailResponse_techPrivacy' - Specifies whether contact information is concealed from WHOIS queries.
-- If the value is @true@, WHOIS (\"who is\") queries return contact
-- information either for Amazon Registrar (for .com, .net, and .org
-- domains) or for our registrar associate, Gandi (for all other TLDs). If
-- the value is @false@, WHOIS queries return the information that you
-- entered for the technical contact.
--
-- 'dnsSec', 'getDomainDetailResponse_dnsSec' - Reserved for future use.
--
-- 'whoIsServer', 'getDomainDetailResponse_whoIsServer' - The fully qualified name of the WHOIS server that can answer the WHOIS
-- query for the domain.
--
-- 'registryDomainId', 'getDomainDetailResponse_registryDomainId' - Reserved for future use.
--
-- 'registrantPrivacy', 'getDomainDetailResponse_registrantPrivacy' - Specifies whether contact information is concealed from WHOIS queries.
-- If the value is @true@, WHOIS (\"who is\") queries return contact
-- information either for Amazon Registrar (for .com, .net, and .org
-- domains) or for our registrar associate, Gandi (for all other TLDs). If
-- the value is @false@, WHOIS queries return the information that you
-- entered for the registrant contact (domain owner).
--
-- 'updatedDate', 'getDomainDetailResponse_updatedDate' - The last updated date of the domain as found in the response to a WHOIS
-- query. The date and time is in Unix time format and Coordinated
-- Universal time (UTC).
--
-- 'adminPrivacy', 'getDomainDetailResponse_adminPrivacy' - Specifies whether contact information is concealed from WHOIS queries.
-- If the value is @true@, WHOIS (\"who is\") queries return contact
-- information either for Amazon Registrar (for .com, .net, and .org
-- domains) or for our registrar associate, Gandi (for all other TLDs). If
-- the value is @false@, WHOIS queries return the information that you
-- entered for the admin contact.
--
-- 'autoRenew', 'getDomainDetailResponse_autoRenew' - Specifies whether the domain registration is set to renew automatically.
--
-- 'abuseContactPhone', 'getDomainDetailResponse_abuseContactPhone' - Phone number for reporting abuse.
--
-- 'registrarUrl', 'getDomainDetailResponse_registrarUrl' - Web address of the registrar.
--
-- 'abuseContactEmail', 'getDomainDetailResponse_abuseContactEmail' - Email address to contact to report incorrect contact information for a
-- domain, to report that the domain is being used to send spam, to report
-- that someone is cybersquatting on a domain name, or report some other
-- type of abuse.
--
-- 'expirationDate', 'getDomainDetailResponse_expirationDate' - The date when the registration for the domain is set to expire. The date
-- and time is in Unix time format and Coordinated Universal time (UTC).
--
-- 'creationDate', 'getDomainDetailResponse_creationDate' - The date when the domain was created as found in the response to a WHOIS
-- query. The date and time is in Unix time format and Coordinated
-- Universal time (UTC).
--
-- 'registrarName', 'getDomainDetailResponse_registrarName' - Name of the registrar of the domain as identified in the registry.
-- Domains with a .com, .net, or .org TLD are registered by Amazon
-- Registrar. All other domains are registered by our registrar associate,
-- Gandi. The value for domains that are registered by Gandi is
-- @\"GANDI SAS\"@.
--
-- 'reseller', 'getDomainDetailResponse_reseller' - Reseller of the domain. Domains registered or transferred using Route 53
-- domains will have @\"Amazon\"@ as the reseller.
--
-- 'statusList', 'getDomainDetailResponse_statusList' - An array of domain name status codes, also known as Extensible
-- Provisioning Protocol (EPP) status codes.
--
-- ICANN, the organization that maintains a central database of domain
-- names, has developed a set of domain name status codes that tell you the
-- status of a variety of operations on a domain name, for example,
-- registering a domain name, transferring a domain name to another
-- registrar, renewing the registration for a domain name, and so on. All
-- registrars use this same set of status codes.
--
-- For a current list of domain name status codes and an explanation of
-- what each code means, go to the <https://www.icann.org/ ICANN website>
-- and search for @epp status codes@. (Search on the ICANN website; web
-- searches sometimes return an old version of the document.)
--
-- 'httpStatus', 'getDomainDetailResponse_httpStatus' - The response's http status code.
--
-- 'domainName', 'getDomainDetailResponse_domainName' - The name of a domain.
--
-- 'nameservers', 'getDomainDetailResponse_nameservers' - The name of the domain.
--
-- 'adminContact', 'getDomainDetailResponse_adminContact' - Provides details about the domain administrative contact.
--
-- 'registrantContact', 'getDomainDetailResponse_registrantContact' - Provides details about the domain registrant.
--
-- 'techContact', 'getDomainDetailResponse_techContact' - Provides details about the domain technical contact.
newGetDomainDetailResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'domainName'
  Prelude.Text ->
  -- | 'adminContact'
  ContactDetail ->
  -- | 'registrantContact'
  ContactDetail ->
  -- | 'techContact'
  ContactDetail ->
  GetDomainDetailResponse
newGetDomainDetailResponse :: Int
-> Text
-> ContactDetail
-> ContactDetail
-> ContactDetail
-> GetDomainDetailResponse
newGetDomainDetailResponse
  Int
pHttpStatus_
  Text
pDomainName_
  ContactDetail
pAdminContact_
  ContactDetail
pRegistrantContact_
  ContactDetail
pTechContact_ =
    GetDomainDetailResponse' :: Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe POSIX
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe [Text]
-> Int
-> Text
-> [Nameserver]
-> Sensitive ContactDetail
-> Sensitive ContactDetail
-> Sensitive ContactDetail
-> GetDomainDetailResponse
GetDomainDetailResponse'
      { $sel:techPrivacy:GetDomainDetailResponse' :: Maybe Bool
techPrivacy =
          Maybe Bool
forall a. Maybe a
Prelude.Nothing,
        $sel:dnsSec:GetDomainDetailResponse' :: Maybe Text
dnsSec = Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:whoIsServer:GetDomainDetailResponse' :: Maybe Text
whoIsServer = Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:registryDomainId:GetDomainDetailResponse' :: Maybe Text
registryDomainId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:registrantPrivacy:GetDomainDetailResponse' :: Maybe Bool
registrantPrivacy = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
        $sel:updatedDate:GetDomainDetailResponse' :: Maybe POSIX
updatedDate = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
        $sel:adminPrivacy:GetDomainDetailResponse' :: Maybe Bool
adminPrivacy = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
        $sel:autoRenew:GetDomainDetailResponse' :: Maybe Bool
autoRenew = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
        $sel:abuseContactPhone:GetDomainDetailResponse' :: Maybe Text
abuseContactPhone = Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:registrarUrl:GetDomainDetailResponse' :: Maybe Text
registrarUrl = Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:abuseContactEmail:GetDomainDetailResponse' :: Maybe Text
abuseContactEmail = Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:expirationDate:GetDomainDetailResponse' :: Maybe POSIX
expirationDate = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
        $sel:creationDate:GetDomainDetailResponse' :: Maybe POSIX
creationDate = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
        $sel:registrarName:GetDomainDetailResponse' :: Maybe Text
registrarName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:reseller:GetDomainDetailResponse' :: Maybe Text
reseller = Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:statusList:GetDomainDetailResponse' :: Maybe [Text]
statusList = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:GetDomainDetailResponse' :: Int
httpStatus = Int
pHttpStatus_,
        $sel:domainName:GetDomainDetailResponse' :: Text
domainName = Text
pDomainName_,
        $sel:nameservers:GetDomainDetailResponse' :: [Nameserver]
nameservers = [Nameserver]
forall a. Monoid a => a
Prelude.mempty,
        $sel:adminContact:GetDomainDetailResponse' :: Sensitive ContactDetail
adminContact =
          Tagged ContactDetail (Identity ContactDetail)
-> Tagged
     (Sensitive ContactDetail) (Identity (Sensitive ContactDetail))
forall a. Iso' (Sensitive a) a
Core._Sensitive (Tagged ContactDetail (Identity ContactDetail)
 -> Tagged
      (Sensitive ContactDetail) (Identity (Sensitive ContactDetail)))
-> ContactDetail -> Sensitive ContactDetail
forall t b. AReview t b -> b -> t
Lens.# ContactDetail
pAdminContact_,
        $sel:registrantContact:GetDomainDetailResponse' :: Sensitive ContactDetail
registrantContact =
          Tagged ContactDetail (Identity ContactDetail)
-> Tagged
     (Sensitive ContactDetail) (Identity (Sensitive ContactDetail))
forall a. Iso' (Sensitive a) a
Core._Sensitive (Tagged ContactDetail (Identity ContactDetail)
 -> Tagged
      (Sensitive ContactDetail) (Identity (Sensitive ContactDetail)))
-> ContactDetail -> Sensitive ContactDetail
forall t b. AReview t b -> b -> t
Lens.# ContactDetail
pRegistrantContact_,
        $sel:techContact:GetDomainDetailResponse' :: Sensitive ContactDetail
techContact = Tagged ContactDetail (Identity ContactDetail)
-> Tagged
     (Sensitive ContactDetail) (Identity (Sensitive ContactDetail))
forall a. Iso' (Sensitive a) a
Core._Sensitive (Tagged ContactDetail (Identity ContactDetail)
 -> Tagged
      (Sensitive ContactDetail) (Identity (Sensitive ContactDetail)))
-> ContactDetail -> Sensitive ContactDetail
forall t b. AReview t b -> b -> t
Lens.# ContactDetail
pTechContact_
      }

-- | Specifies whether contact information is concealed from WHOIS queries.
-- If the value is @true@, WHOIS (\"who is\") queries return contact
-- information either for Amazon Registrar (for .com, .net, and .org
-- domains) or for our registrar associate, Gandi (for all other TLDs). If
-- the value is @false@, WHOIS queries return the information that you
-- entered for the technical contact.
getDomainDetailResponse_techPrivacy :: Lens.Lens' GetDomainDetailResponse (Prelude.Maybe Prelude.Bool)
getDomainDetailResponse_techPrivacy :: (Maybe Bool -> f (Maybe Bool))
-> GetDomainDetailResponse -> f GetDomainDetailResponse
getDomainDetailResponse_techPrivacy = (GetDomainDetailResponse -> Maybe Bool)
-> (GetDomainDetailResponse
    -> Maybe Bool -> GetDomainDetailResponse)
-> Lens
     GetDomainDetailResponse
     GetDomainDetailResponse
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainDetailResponse' {Maybe Bool
techPrivacy :: Maybe Bool
$sel:techPrivacy:GetDomainDetailResponse' :: GetDomainDetailResponse -> Maybe Bool
techPrivacy} -> Maybe Bool
techPrivacy) (\s :: GetDomainDetailResponse
s@GetDomainDetailResponse' {} Maybe Bool
a -> GetDomainDetailResponse
s {$sel:techPrivacy:GetDomainDetailResponse' :: Maybe Bool
techPrivacy = Maybe Bool
a} :: GetDomainDetailResponse)

-- | Reserved for future use.
getDomainDetailResponse_dnsSec :: Lens.Lens' GetDomainDetailResponse (Prelude.Maybe Prelude.Text)
getDomainDetailResponse_dnsSec :: (Maybe Text -> f (Maybe Text))
-> GetDomainDetailResponse -> f GetDomainDetailResponse
getDomainDetailResponse_dnsSec = (GetDomainDetailResponse -> Maybe Text)
-> (GetDomainDetailResponse
    -> Maybe Text -> GetDomainDetailResponse)
-> Lens
     GetDomainDetailResponse
     GetDomainDetailResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainDetailResponse' {Maybe Text
dnsSec :: Maybe Text
$sel:dnsSec:GetDomainDetailResponse' :: GetDomainDetailResponse -> Maybe Text
dnsSec} -> Maybe Text
dnsSec) (\s :: GetDomainDetailResponse
s@GetDomainDetailResponse' {} Maybe Text
a -> GetDomainDetailResponse
s {$sel:dnsSec:GetDomainDetailResponse' :: Maybe Text
dnsSec = Maybe Text
a} :: GetDomainDetailResponse)

-- | The fully qualified name of the WHOIS server that can answer the WHOIS
-- query for the domain.
getDomainDetailResponse_whoIsServer :: Lens.Lens' GetDomainDetailResponse (Prelude.Maybe Prelude.Text)
getDomainDetailResponse_whoIsServer :: (Maybe Text -> f (Maybe Text))
-> GetDomainDetailResponse -> f GetDomainDetailResponse
getDomainDetailResponse_whoIsServer = (GetDomainDetailResponse -> Maybe Text)
-> (GetDomainDetailResponse
    -> Maybe Text -> GetDomainDetailResponse)
-> Lens
     GetDomainDetailResponse
     GetDomainDetailResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainDetailResponse' {Maybe Text
whoIsServer :: Maybe Text
$sel:whoIsServer:GetDomainDetailResponse' :: GetDomainDetailResponse -> Maybe Text
whoIsServer} -> Maybe Text
whoIsServer) (\s :: GetDomainDetailResponse
s@GetDomainDetailResponse' {} Maybe Text
a -> GetDomainDetailResponse
s {$sel:whoIsServer:GetDomainDetailResponse' :: Maybe Text
whoIsServer = Maybe Text
a} :: GetDomainDetailResponse)

-- | Reserved for future use.
getDomainDetailResponse_registryDomainId :: Lens.Lens' GetDomainDetailResponse (Prelude.Maybe Prelude.Text)
getDomainDetailResponse_registryDomainId :: (Maybe Text -> f (Maybe Text))
-> GetDomainDetailResponse -> f GetDomainDetailResponse
getDomainDetailResponse_registryDomainId = (GetDomainDetailResponse -> Maybe Text)
-> (GetDomainDetailResponse
    -> Maybe Text -> GetDomainDetailResponse)
-> Lens
     GetDomainDetailResponse
     GetDomainDetailResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainDetailResponse' {Maybe Text
registryDomainId :: Maybe Text
$sel:registryDomainId:GetDomainDetailResponse' :: GetDomainDetailResponse -> Maybe Text
registryDomainId} -> Maybe Text
registryDomainId) (\s :: GetDomainDetailResponse
s@GetDomainDetailResponse' {} Maybe Text
a -> GetDomainDetailResponse
s {$sel:registryDomainId:GetDomainDetailResponse' :: Maybe Text
registryDomainId = Maybe Text
a} :: GetDomainDetailResponse)

-- | Specifies whether contact information is concealed from WHOIS queries.
-- If the value is @true@, WHOIS (\"who is\") queries return contact
-- information either for Amazon Registrar (for .com, .net, and .org
-- domains) or for our registrar associate, Gandi (for all other TLDs). If
-- the value is @false@, WHOIS queries return the information that you
-- entered for the registrant contact (domain owner).
getDomainDetailResponse_registrantPrivacy :: Lens.Lens' GetDomainDetailResponse (Prelude.Maybe Prelude.Bool)
getDomainDetailResponse_registrantPrivacy :: (Maybe Bool -> f (Maybe Bool))
-> GetDomainDetailResponse -> f GetDomainDetailResponse
getDomainDetailResponse_registrantPrivacy = (GetDomainDetailResponse -> Maybe Bool)
-> (GetDomainDetailResponse
    -> Maybe Bool -> GetDomainDetailResponse)
-> Lens
     GetDomainDetailResponse
     GetDomainDetailResponse
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainDetailResponse' {Maybe Bool
registrantPrivacy :: Maybe Bool
$sel:registrantPrivacy:GetDomainDetailResponse' :: GetDomainDetailResponse -> Maybe Bool
registrantPrivacy} -> Maybe Bool
registrantPrivacy) (\s :: GetDomainDetailResponse
s@GetDomainDetailResponse' {} Maybe Bool
a -> GetDomainDetailResponse
s {$sel:registrantPrivacy:GetDomainDetailResponse' :: Maybe Bool
registrantPrivacy = Maybe Bool
a} :: GetDomainDetailResponse)

-- | The last updated date of the domain as found in the response to a WHOIS
-- query. The date and time is in Unix time format and Coordinated
-- Universal time (UTC).
getDomainDetailResponse_updatedDate :: Lens.Lens' GetDomainDetailResponse (Prelude.Maybe Prelude.UTCTime)
getDomainDetailResponse_updatedDate :: (Maybe UTCTime -> f (Maybe UTCTime))
-> GetDomainDetailResponse -> f GetDomainDetailResponse
getDomainDetailResponse_updatedDate = (GetDomainDetailResponse -> Maybe POSIX)
-> (GetDomainDetailResponse
    -> Maybe POSIX -> GetDomainDetailResponse)
-> Lens
     GetDomainDetailResponse
     GetDomainDetailResponse
     (Maybe POSIX)
     (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainDetailResponse' {Maybe POSIX
updatedDate :: Maybe POSIX
$sel:updatedDate:GetDomainDetailResponse' :: GetDomainDetailResponse -> Maybe POSIX
updatedDate} -> Maybe POSIX
updatedDate) (\s :: GetDomainDetailResponse
s@GetDomainDetailResponse' {} Maybe POSIX
a -> GetDomainDetailResponse
s {$sel:updatedDate:GetDomainDetailResponse' :: Maybe POSIX
updatedDate = Maybe POSIX
a} :: GetDomainDetailResponse) ((Maybe POSIX -> f (Maybe POSIX))
 -> GetDomainDetailResponse -> f GetDomainDetailResponse)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> GetDomainDetailResponse
-> f GetDomainDetailResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | Specifies whether contact information is concealed from WHOIS queries.
-- If the value is @true@, WHOIS (\"who is\") queries return contact
-- information either for Amazon Registrar (for .com, .net, and .org
-- domains) or for our registrar associate, Gandi (for all other TLDs). If
-- the value is @false@, WHOIS queries return the information that you
-- entered for the admin contact.
getDomainDetailResponse_adminPrivacy :: Lens.Lens' GetDomainDetailResponse (Prelude.Maybe Prelude.Bool)
getDomainDetailResponse_adminPrivacy :: (Maybe Bool -> f (Maybe Bool))
-> GetDomainDetailResponse -> f GetDomainDetailResponse
getDomainDetailResponse_adminPrivacy = (GetDomainDetailResponse -> Maybe Bool)
-> (GetDomainDetailResponse
    -> Maybe Bool -> GetDomainDetailResponse)
-> Lens
     GetDomainDetailResponse
     GetDomainDetailResponse
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainDetailResponse' {Maybe Bool
adminPrivacy :: Maybe Bool
$sel:adminPrivacy:GetDomainDetailResponse' :: GetDomainDetailResponse -> Maybe Bool
adminPrivacy} -> Maybe Bool
adminPrivacy) (\s :: GetDomainDetailResponse
s@GetDomainDetailResponse' {} Maybe Bool
a -> GetDomainDetailResponse
s {$sel:adminPrivacy:GetDomainDetailResponse' :: Maybe Bool
adminPrivacy = Maybe Bool
a} :: GetDomainDetailResponse)

-- | Specifies whether the domain registration is set to renew automatically.
getDomainDetailResponse_autoRenew :: Lens.Lens' GetDomainDetailResponse (Prelude.Maybe Prelude.Bool)
getDomainDetailResponse_autoRenew :: (Maybe Bool -> f (Maybe Bool))
-> GetDomainDetailResponse -> f GetDomainDetailResponse
getDomainDetailResponse_autoRenew = (GetDomainDetailResponse -> Maybe Bool)
-> (GetDomainDetailResponse
    -> Maybe Bool -> GetDomainDetailResponse)
-> Lens
     GetDomainDetailResponse
     GetDomainDetailResponse
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainDetailResponse' {Maybe Bool
autoRenew :: Maybe Bool
$sel:autoRenew:GetDomainDetailResponse' :: GetDomainDetailResponse -> Maybe Bool
autoRenew} -> Maybe Bool
autoRenew) (\s :: GetDomainDetailResponse
s@GetDomainDetailResponse' {} Maybe Bool
a -> GetDomainDetailResponse
s {$sel:autoRenew:GetDomainDetailResponse' :: Maybe Bool
autoRenew = Maybe Bool
a} :: GetDomainDetailResponse)

-- | Phone number for reporting abuse.
getDomainDetailResponse_abuseContactPhone :: Lens.Lens' GetDomainDetailResponse (Prelude.Maybe Prelude.Text)
getDomainDetailResponse_abuseContactPhone :: (Maybe Text -> f (Maybe Text))
-> GetDomainDetailResponse -> f GetDomainDetailResponse
getDomainDetailResponse_abuseContactPhone = (GetDomainDetailResponse -> Maybe Text)
-> (GetDomainDetailResponse
    -> Maybe Text -> GetDomainDetailResponse)
-> Lens
     GetDomainDetailResponse
     GetDomainDetailResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainDetailResponse' {Maybe Text
abuseContactPhone :: Maybe Text
$sel:abuseContactPhone:GetDomainDetailResponse' :: GetDomainDetailResponse -> Maybe Text
abuseContactPhone} -> Maybe Text
abuseContactPhone) (\s :: GetDomainDetailResponse
s@GetDomainDetailResponse' {} Maybe Text
a -> GetDomainDetailResponse
s {$sel:abuseContactPhone:GetDomainDetailResponse' :: Maybe Text
abuseContactPhone = Maybe Text
a} :: GetDomainDetailResponse)

-- | Web address of the registrar.
getDomainDetailResponse_registrarUrl :: Lens.Lens' GetDomainDetailResponse (Prelude.Maybe Prelude.Text)
getDomainDetailResponse_registrarUrl :: (Maybe Text -> f (Maybe Text))
-> GetDomainDetailResponse -> f GetDomainDetailResponse
getDomainDetailResponse_registrarUrl = (GetDomainDetailResponse -> Maybe Text)
-> (GetDomainDetailResponse
    -> Maybe Text -> GetDomainDetailResponse)
-> Lens
     GetDomainDetailResponse
     GetDomainDetailResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainDetailResponse' {Maybe Text
registrarUrl :: Maybe Text
$sel:registrarUrl:GetDomainDetailResponse' :: GetDomainDetailResponse -> Maybe Text
registrarUrl} -> Maybe Text
registrarUrl) (\s :: GetDomainDetailResponse
s@GetDomainDetailResponse' {} Maybe Text
a -> GetDomainDetailResponse
s {$sel:registrarUrl:GetDomainDetailResponse' :: Maybe Text
registrarUrl = Maybe Text
a} :: GetDomainDetailResponse)

-- | Email address to contact to report incorrect contact information for a
-- domain, to report that the domain is being used to send spam, to report
-- that someone is cybersquatting on a domain name, or report some other
-- type of abuse.
getDomainDetailResponse_abuseContactEmail :: Lens.Lens' GetDomainDetailResponse (Prelude.Maybe Prelude.Text)
getDomainDetailResponse_abuseContactEmail :: (Maybe Text -> f (Maybe Text))
-> GetDomainDetailResponse -> f GetDomainDetailResponse
getDomainDetailResponse_abuseContactEmail = (GetDomainDetailResponse -> Maybe Text)
-> (GetDomainDetailResponse
    -> Maybe Text -> GetDomainDetailResponse)
-> Lens
     GetDomainDetailResponse
     GetDomainDetailResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainDetailResponse' {Maybe Text
abuseContactEmail :: Maybe Text
$sel:abuseContactEmail:GetDomainDetailResponse' :: GetDomainDetailResponse -> Maybe Text
abuseContactEmail} -> Maybe Text
abuseContactEmail) (\s :: GetDomainDetailResponse
s@GetDomainDetailResponse' {} Maybe Text
a -> GetDomainDetailResponse
s {$sel:abuseContactEmail:GetDomainDetailResponse' :: Maybe Text
abuseContactEmail = Maybe Text
a} :: GetDomainDetailResponse)

-- | The date when the registration for the domain is set to expire. The date
-- and time is in Unix time format and Coordinated Universal time (UTC).
getDomainDetailResponse_expirationDate :: Lens.Lens' GetDomainDetailResponse (Prelude.Maybe Prelude.UTCTime)
getDomainDetailResponse_expirationDate :: (Maybe UTCTime -> f (Maybe UTCTime))
-> GetDomainDetailResponse -> f GetDomainDetailResponse
getDomainDetailResponse_expirationDate = (GetDomainDetailResponse -> Maybe POSIX)
-> (GetDomainDetailResponse
    -> Maybe POSIX -> GetDomainDetailResponse)
-> Lens
     GetDomainDetailResponse
     GetDomainDetailResponse
     (Maybe POSIX)
     (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainDetailResponse' {Maybe POSIX
expirationDate :: Maybe POSIX
$sel:expirationDate:GetDomainDetailResponse' :: GetDomainDetailResponse -> Maybe POSIX
expirationDate} -> Maybe POSIX
expirationDate) (\s :: GetDomainDetailResponse
s@GetDomainDetailResponse' {} Maybe POSIX
a -> GetDomainDetailResponse
s {$sel:expirationDate:GetDomainDetailResponse' :: Maybe POSIX
expirationDate = Maybe POSIX
a} :: GetDomainDetailResponse) ((Maybe POSIX -> f (Maybe POSIX))
 -> GetDomainDetailResponse -> f GetDomainDetailResponse)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> GetDomainDetailResponse
-> f GetDomainDetailResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The date when the domain was created as found in the response to a WHOIS
-- query. The date and time is in Unix time format and Coordinated
-- Universal time (UTC).
getDomainDetailResponse_creationDate :: Lens.Lens' GetDomainDetailResponse (Prelude.Maybe Prelude.UTCTime)
getDomainDetailResponse_creationDate :: (Maybe UTCTime -> f (Maybe UTCTime))
-> GetDomainDetailResponse -> f GetDomainDetailResponse
getDomainDetailResponse_creationDate = (GetDomainDetailResponse -> Maybe POSIX)
-> (GetDomainDetailResponse
    -> Maybe POSIX -> GetDomainDetailResponse)
-> Lens
     GetDomainDetailResponse
     GetDomainDetailResponse
     (Maybe POSIX)
     (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainDetailResponse' {Maybe POSIX
creationDate :: Maybe POSIX
$sel:creationDate:GetDomainDetailResponse' :: GetDomainDetailResponse -> Maybe POSIX
creationDate} -> Maybe POSIX
creationDate) (\s :: GetDomainDetailResponse
s@GetDomainDetailResponse' {} Maybe POSIX
a -> GetDomainDetailResponse
s {$sel:creationDate:GetDomainDetailResponse' :: Maybe POSIX
creationDate = Maybe POSIX
a} :: GetDomainDetailResponse) ((Maybe POSIX -> f (Maybe POSIX))
 -> GetDomainDetailResponse -> f GetDomainDetailResponse)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> GetDomainDetailResponse
-> f GetDomainDetailResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | Name of the registrar of the domain as identified in the registry.
-- Domains with a .com, .net, or .org TLD are registered by Amazon
-- Registrar. All other domains are registered by our registrar associate,
-- Gandi. The value for domains that are registered by Gandi is
-- @\"GANDI SAS\"@.
getDomainDetailResponse_registrarName :: Lens.Lens' GetDomainDetailResponse (Prelude.Maybe Prelude.Text)
getDomainDetailResponse_registrarName :: (Maybe Text -> f (Maybe Text))
-> GetDomainDetailResponse -> f GetDomainDetailResponse
getDomainDetailResponse_registrarName = (GetDomainDetailResponse -> Maybe Text)
-> (GetDomainDetailResponse
    -> Maybe Text -> GetDomainDetailResponse)
-> Lens
     GetDomainDetailResponse
     GetDomainDetailResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainDetailResponse' {Maybe Text
registrarName :: Maybe Text
$sel:registrarName:GetDomainDetailResponse' :: GetDomainDetailResponse -> Maybe Text
registrarName} -> Maybe Text
registrarName) (\s :: GetDomainDetailResponse
s@GetDomainDetailResponse' {} Maybe Text
a -> GetDomainDetailResponse
s {$sel:registrarName:GetDomainDetailResponse' :: Maybe Text
registrarName = Maybe Text
a} :: GetDomainDetailResponse)

-- | Reseller of the domain. Domains registered or transferred using Route 53
-- domains will have @\"Amazon\"@ as the reseller.
getDomainDetailResponse_reseller :: Lens.Lens' GetDomainDetailResponse (Prelude.Maybe Prelude.Text)
getDomainDetailResponse_reseller :: (Maybe Text -> f (Maybe Text))
-> GetDomainDetailResponse -> f GetDomainDetailResponse
getDomainDetailResponse_reseller = (GetDomainDetailResponse -> Maybe Text)
-> (GetDomainDetailResponse
    -> Maybe Text -> GetDomainDetailResponse)
-> Lens
     GetDomainDetailResponse
     GetDomainDetailResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainDetailResponse' {Maybe Text
reseller :: Maybe Text
$sel:reseller:GetDomainDetailResponse' :: GetDomainDetailResponse -> Maybe Text
reseller} -> Maybe Text
reseller) (\s :: GetDomainDetailResponse
s@GetDomainDetailResponse' {} Maybe Text
a -> GetDomainDetailResponse
s {$sel:reseller:GetDomainDetailResponse' :: Maybe Text
reseller = Maybe Text
a} :: GetDomainDetailResponse)

-- | An array of domain name status codes, also known as Extensible
-- Provisioning Protocol (EPP) status codes.
--
-- ICANN, the organization that maintains a central database of domain
-- names, has developed a set of domain name status codes that tell you the
-- status of a variety of operations on a domain name, for example,
-- registering a domain name, transferring a domain name to another
-- registrar, renewing the registration for a domain name, and so on. All
-- registrars use this same set of status codes.
--
-- For a current list of domain name status codes and an explanation of
-- what each code means, go to the <https://www.icann.org/ ICANN website>
-- and search for @epp status codes@. (Search on the ICANN website; web
-- searches sometimes return an old version of the document.)
getDomainDetailResponse_statusList :: Lens.Lens' GetDomainDetailResponse (Prelude.Maybe [Prelude.Text])
getDomainDetailResponse_statusList :: (Maybe [Text] -> f (Maybe [Text]))
-> GetDomainDetailResponse -> f GetDomainDetailResponse
getDomainDetailResponse_statusList = (GetDomainDetailResponse -> Maybe [Text])
-> (GetDomainDetailResponse
    -> Maybe [Text] -> GetDomainDetailResponse)
-> Lens
     GetDomainDetailResponse
     GetDomainDetailResponse
     (Maybe [Text])
     (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainDetailResponse' {Maybe [Text]
statusList :: Maybe [Text]
$sel:statusList:GetDomainDetailResponse' :: GetDomainDetailResponse -> Maybe [Text]
statusList} -> Maybe [Text]
statusList) (\s :: GetDomainDetailResponse
s@GetDomainDetailResponse' {} Maybe [Text]
a -> GetDomainDetailResponse
s {$sel:statusList:GetDomainDetailResponse' :: Maybe [Text]
statusList = Maybe [Text]
a} :: GetDomainDetailResponse) ((Maybe [Text] -> f (Maybe [Text]))
 -> GetDomainDetailResponse -> f GetDomainDetailResponse)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> GetDomainDetailResponse
-> f GetDomainDetailResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
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 AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

-- | The name of a domain.
getDomainDetailResponse_domainName :: Lens.Lens' GetDomainDetailResponse Prelude.Text
getDomainDetailResponse_domainName :: (Text -> f Text)
-> GetDomainDetailResponse -> f GetDomainDetailResponse
getDomainDetailResponse_domainName = (GetDomainDetailResponse -> Text)
-> (GetDomainDetailResponse -> Text -> GetDomainDetailResponse)
-> Lens GetDomainDetailResponse GetDomainDetailResponse Text Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainDetailResponse' {Text
domainName :: Text
$sel:domainName:GetDomainDetailResponse' :: GetDomainDetailResponse -> Text
domainName} -> Text
domainName) (\s :: GetDomainDetailResponse
s@GetDomainDetailResponse' {} Text
a -> GetDomainDetailResponse
s {$sel:domainName:GetDomainDetailResponse' :: Text
domainName = Text
a} :: GetDomainDetailResponse)

-- | The name of the domain.
getDomainDetailResponse_nameservers :: Lens.Lens' GetDomainDetailResponse [Nameserver]
getDomainDetailResponse_nameservers :: ([Nameserver] -> f [Nameserver])
-> GetDomainDetailResponse -> f GetDomainDetailResponse
getDomainDetailResponse_nameservers = (GetDomainDetailResponse -> [Nameserver])
-> (GetDomainDetailResponse
    -> [Nameserver] -> GetDomainDetailResponse)
-> Lens
     GetDomainDetailResponse
     GetDomainDetailResponse
     [Nameserver]
     [Nameserver]
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainDetailResponse' {[Nameserver]
nameservers :: [Nameserver]
$sel:nameservers:GetDomainDetailResponse' :: GetDomainDetailResponse -> [Nameserver]
nameservers} -> [Nameserver]
nameservers) (\s :: GetDomainDetailResponse
s@GetDomainDetailResponse' {} [Nameserver]
a -> GetDomainDetailResponse
s {$sel:nameservers:GetDomainDetailResponse' :: [Nameserver]
nameservers = [Nameserver]
a} :: GetDomainDetailResponse) (([Nameserver] -> f [Nameserver])
 -> GetDomainDetailResponse -> f GetDomainDetailResponse)
-> (([Nameserver] -> f [Nameserver])
    -> [Nameserver] -> f [Nameserver])
-> ([Nameserver] -> f [Nameserver])
-> GetDomainDetailResponse
-> f GetDomainDetailResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. ([Nameserver] -> f [Nameserver]) -> [Nameserver] -> f [Nameserver]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Provides details about the domain administrative contact.
getDomainDetailResponse_adminContact :: Lens.Lens' GetDomainDetailResponse ContactDetail
getDomainDetailResponse_adminContact :: (ContactDetail -> f ContactDetail)
-> GetDomainDetailResponse -> f GetDomainDetailResponse
getDomainDetailResponse_adminContact = (GetDomainDetailResponse -> Sensitive ContactDetail)
-> (GetDomainDetailResponse
    -> Sensitive ContactDetail -> GetDomainDetailResponse)
-> Lens
     GetDomainDetailResponse
     GetDomainDetailResponse
     (Sensitive ContactDetail)
     (Sensitive ContactDetail)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainDetailResponse' {Sensitive ContactDetail
adminContact :: Sensitive ContactDetail
$sel:adminContact:GetDomainDetailResponse' :: GetDomainDetailResponse -> Sensitive ContactDetail
adminContact} -> Sensitive ContactDetail
adminContact) (\s :: GetDomainDetailResponse
s@GetDomainDetailResponse' {} Sensitive ContactDetail
a -> GetDomainDetailResponse
s {$sel:adminContact:GetDomainDetailResponse' :: Sensitive ContactDetail
adminContact = Sensitive ContactDetail
a} :: GetDomainDetailResponse) ((Sensitive ContactDetail -> f (Sensitive ContactDetail))
 -> GetDomainDetailResponse -> f GetDomainDetailResponse)
-> ((ContactDetail -> f ContactDetail)
    -> Sensitive ContactDetail -> f (Sensitive ContactDetail))
-> (ContactDetail -> f ContactDetail)
-> GetDomainDetailResponse
-> f GetDomainDetailResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. (ContactDetail -> f ContactDetail)
-> Sensitive ContactDetail -> f (Sensitive ContactDetail)
forall a. Iso' (Sensitive a) a
Core._Sensitive

-- | Provides details about the domain registrant.
getDomainDetailResponse_registrantContact :: Lens.Lens' GetDomainDetailResponse ContactDetail
getDomainDetailResponse_registrantContact :: (ContactDetail -> f ContactDetail)
-> GetDomainDetailResponse -> f GetDomainDetailResponse
getDomainDetailResponse_registrantContact = (GetDomainDetailResponse -> Sensitive ContactDetail)
-> (GetDomainDetailResponse
    -> Sensitive ContactDetail -> GetDomainDetailResponse)
-> Lens
     GetDomainDetailResponse
     GetDomainDetailResponse
     (Sensitive ContactDetail)
     (Sensitive ContactDetail)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainDetailResponse' {Sensitive ContactDetail
registrantContact :: Sensitive ContactDetail
$sel:registrantContact:GetDomainDetailResponse' :: GetDomainDetailResponse -> Sensitive ContactDetail
registrantContact} -> Sensitive ContactDetail
registrantContact) (\s :: GetDomainDetailResponse
s@GetDomainDetailResponse' {} Sensitive ContactDetail
a -> GetDomainDetailResponse
s {$sel:registrantContact:GetDomainDetailResponse' :: Sensitive ContactDetail
registrantContact = Sensitive ContactDetail
a} :: GetDomainDetailResponse) ((Sensitive ContactDetail -> f (Sensitive ContactDetail))
 -> GetDomainDetailResponse -> f GetDomainDetailResponse)
-> ((ContactDetail -> f ContactDetail)
    -> Sensitive ContactDetail -> f (Sensitive ContactDetail))
-> (ContactDetail -> f ContactDetail)
-> GetDomainDetailResponse
-> f GetDomainDetailResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. (ContactDetail -> f ContactDetail)
-> Sensitive ContactDetail -> f (Sensitive ContactDetail)
forall a. Iso' (Sensitive a) a
Core._Sensitive

-- | Provides details about the domain technical contact.
getDomainDetailResponse_techContact :: Lens.Lens' GetDomainDetailResponse ContactDetail
getDomainDetailResponse_techContact :: (ContactDetail -> f ContactDetail)
-> GetDomainDetailResponse -> f GetDomainDetailResponse
getDomainDetailResponse_techContact = (GetDomainDetailResponse -> Sensitive ContactDetail)
-> (GetDomainDetailResponse
    -> Sensitive ContactDetail -> GetDomainDetailResponse)
-> Lens
     GetDomainDetailResponse
     GetDomainDetailResponse
     (Sensitive ContactDetail)
     (Sensitive ContactDetail)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetDomainDetailResponse' {Sensitive ContactDetail
techContact :: Sensitive ContactDetail
$sel:techContact:GetDomainDetailResponse' :: GetDomainDetailResponse -> Sensitive ContactDetail
techContact} -> Sensitive ContactDetail
techContact) (\s :: GetDomainDetailResponse
s@GetDomainDetailResponse' {} Sensitive ContactDetail
a -> GetDomainDetailResponse
s {$sel:techContact:GetDomainDetailResponse' :: Sensitive ContactDetail
techContact = Sensitive ContactDetail
a} :: GetDomainDetailResponse) ((Sensitive ContactDetail -> f (Sensitive ContactDetail))
 -> GetDomainDetailResponse -> f GetDomainDetailResponse)
-> ((ContactDetail -> f ContactDetail)
    -> Sensitive ContactDetail -> f (Sensitive ContactDetail))
-> (ContactDetail -> f ContactDetail)
-> GetDomainDetailResponse
-> f GetDomainDetailResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. (ContactDetail -> f ContactDetail)
-> Sensitive ContactDetail -> f (Sensitive ContactDetail)
forall a. Iso' (Sensitive a) a
Core._Sensitive

instance Prelude.NFData GetDomainDetailResponse