packages feed

amazonka-chime-sdk-voice-2.0: gen/Amazonka/ChimeSdkVoice/Types/PhoneNumber.hs

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

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

-- |
-- Module      : Amazonka.ChimeSdkVoice.Types.PhoneNumber
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.ChimeSdkVoice.Types.PhoneNumber where

import Amazonka.ChimeSdkVoice.Types.CallingNameStatus
import Amazonka.ChimeSdkVoice.Types.PhoneNumberAssociation
import Amazonka.ChimeSdkVoice.Types.PhoneNumberCapabilities
import Amazonka.ChimeSdkVoice.Types.PhoneNumberProductType
import Amazonka.ChimeSdkVoice.Types.PhoneNumberStatus
import Amazonka.ChimeSdkVoice.Types.PhoneNumberType
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

-- | /See:/ 'newPhoneNumber' smart constructor.
data PhoneNumber = PhoneNumber'
  { associations :: Prelude.Maybe [PhoneNumberAssociation],
    callingName :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    callingNameStatus :: Prelude.Maybe CallingNameStatus,
    capabilities :: Prelude.Maybe PhoneNumberCapabilities,
    country :: Prelude.Maybe Prelude.Text,
    createdTimestamp :: Prelude.Maybe Data.ISO8601,
    deletionTimestamp :: Prelude.Maybe Data.ISO8601,
    e164PhoneNumber :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    orderId :: Prelude.Maybe Prelude.Text,
    phoneNumberId :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    productType :: Prelude.Maybe PhoneNumberProductType,
    status :: Prelude.Maybe PhoneNumberStatus,
    type' :: Prelude.Maybe PhoneNumberType,
    updatedTimestamp :: Prelude.Maybe Data.ISO8601
  }
  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'PhoneNumber' 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:
--
-- 'associations', 'phoneNumber_associations' - Undocumented member.
--
-- 'callingName', 'phoneNumber_callingName' - Undocumented member.
--
-- 'callingNameStatus', 'phoneNumber_callingNameStatus' - Undocumented member.
--
-- 'capabilities', 'phoneNumber_capabilities' - Undocumented member.
--
-- 'country', 'phoneNumber_country' - Undocumented member.
--
-- 'createdTimestamp', 'phoneNumber_createdTimestamp' - Undocumented member.
--
-- 'deletionTimestamp', 'phoneNumber_deletionTimestamp' - Undocumented member.
--
-- 'e164PhoneNumber', 'phoneNumber_e164PhoneNumber' - Undocumented member.
--
-- 'orderId', 'phoneNumber_orderId' - Undocumented member.
--
-- 'phoneNumberId', 'phoneNumber_phoneNumberId' - Undocumented member.
--
-- 'productType', 'phoneNumber_productType' - Undocumented member.
--
-- 'status', 'phoneNumber_status' - Undocumented member.
--
-- 'type'', 'phoneNumber_type' - Undocumented member.
--
-- 'updatedTimestamp', 'phoneNumber_updatedTimestamp' - Undocumented member.
newPhoneNumber ::
  PhoneNumber
newPhoneNumber =
  PhoneNumber'
    { associations = Prelude.Nothing,
      callingName = Prelude.Nothing,
      callingNameStatus = Prelude.Nothing,
      capabilities = Prelude.Nothing,
      country = Prelude.Nothing,
      createdTimestamp = Prelude.Nothing,
      deletionTimestamp = Prelude.Nothing,
      e164PhoneNumber = Prelude.Nothing,
      orderId = Prelude.Nothing,
      phoneNumberId = Prelude.Nothing,
      productType = Prelude.Nothing,
      status = Prelude.Nothing,
      type' = Prelude.Nothing,
      updatedTimestamp = Prelude.Nothing
    }

-- | Undocumented member.
phoneNumber_associations :: Lens.Lens' PhoneNumber (Prelude.Maybe [PhoneNumberAssociation])
phoneNumber_associations = Lens.lens (\PhoneNumber' {associations} -> associations) (\s@PhoneNumber' {} a -> s {associations = a} :: PhoneNumber) Prelude.. Lens.mapping Lens.coerced

-- | Undocumented member.
phoneNumber_callingName :: Lens.Lens' PhoneNumber (Prelude.Maybe Prelude.Text)
phoneNumber_callingName = Lens.lens (\PhoneNumber' {callingName} -> callingName) (\s@PhoneNumber' {} a -> s {callingName = a} :: PhoneNumber) Prelude.. Lens.mapping Data._Sensitive

-- | Undocumented member.
phoneNumber_callingNameStatus :: Lens.Lens' PhoneNumber (Prelude.Maybe CallingNameStatus)
phoneNumber_callingNameStatus = Lens.lens (\PhoneNumber' {callingNameStatus} -> callingNameStatus) (\s@PhoneNumber' {} a -> s {callingNameStatus = a} :: PhoneNumber)

-- | Undocumented member.
phoneNumber_capabilities :: Lens.Lens' PhoneNumber (Prelude.Maybe PhoneNumberCapabilities)
phoneNumber_capabilities = Lens.lens (\PhoneNumber' {capabilities} -> capabilities) (\s@PhoneNumber' {} a -> s {capabilities = a} :: PhoneNumber)

-- | Undocumented member.
phoneNumber_country :: Lens.Lens' PhoneNumber (Prelude.Maybe Prelude.Text)
phoneNumber_country = Lens.lens (\PhoneNumber' {country} -> country) (\s@PhoneNumber' {} a -> s {country = a} :: PhoneNumber)

-- | Undocumented member.
phoneNumber_createdTimestamp :: Lens.Lens' PhoneNumber (Prelude.Maybe Prelude.UTCTime)
phoneNumber_createdTimestamp = Lens.lens (\PhoneNumber' {createdTimestamp} -> createdTimestamp) (\s@PhoneNumber' {} a -> s {createdTimestamp = a} :: PhoneNumber) Prelude.. Lens.mapping Data._Time

-- | Undocumented member.
phoneNumber_deletionTimestamp :: Lens.Lens' PhoneNumber (Prelude.Maybe Prelude.UTCTime)
phoneNumber_deletionTimestamp = Lens.lens (\PhoneNumber' {deletionTimestamp} -> deletionTimestamp) (\s@PhoneNumber' {} a -> s {deletionTimestamp = a} :: PhoneNumber) Prelude.. Lens.mapping Data._Time

-- | Undocumented member.
phoneNumber_e164PhoneNumber :: Lens.Lens' PhoneNumber (Prelude.Maybe Prelude.Text)
phoneNumber_e164PhoneNumber = Lens.lens (\PhoneNumber' {e164PhoneNumber} -> e164PhoneNumber) (\s@PhoneNumber' {} a -> s {e164PhoneNumber = a} :: PhoneNumber) Prelude.. Lens.mapping Data._Sensitive

-- | Undocumented member.
phoneNumber_orderId :: Lens.Lens' PhoneNumber (Prelude.Maybe Prelude.Text)
phoneNumber_orderId = Lens.lens (\PhoneNumber' {orderId} -> orderId) (\s@PhoneNumber' {} a -> s {orderId = a} :: PhoneNumber)

-- | Undocumented member.
phoneNumber_phoneNumberId :: Lens.Lens' PhoneNumber (Prelude.Maybe Prelude.Text)
phoneNumber_phoneNumberId = Lens.lens (\PhoneNumber' {phoneNumberId} -> phoneNumberId) (\s@PhoneNumber' {} a -> s {phoneNumberId = a} :: PhoneNumber) Prelude.. Lens.mapping Data._Sensitive

-- | Undocumented member.
phoneNumber_productType :: Lens.Lens' PhoneNumber (Prelude.Maybe PhoneNumberProductType)
phoneNumber_productType = Lens.lens (\PhoneNumber' {productType} -> productType) (\s@PhoneNumber' {} a -> s {productType = a} :: PhoneNumber)

-- | Undocumented member.
phoneNumber_status :: Lens.Lens' PhoneNumber (Prelude.Maybe PhoneNumberStatus)
phoneNumber_status = Lens.lens (\PhoneNumber' {status} -> status) (\s@PhoneNumber' {} a -> s {status = a} :: PhoneNumber)

-- | Undocumented member.
phoneNumber_type :: Lens.Lens' PhoneNumber (Prelude.Maybe PhoneNumberType)
phoneNumber_type = Lens.lens (\PhoneNumber' {type'} -> type') (\s@PhoneNumber' {} a -> s {type' = a} :: PhoneNumber)

-- | Undocumented member.
phoneNumber_updatedTimestamp :: Lens.Lens' PhoneNumber (Prelude.Maybe Prelude.UTCTime)
phoneNumber_updatedTimestamp = Lens.lens (\PhoneNumber' {updatedTimestamp} -> updatedTimestamp) (\s@PhoneNumber' {} a -> s {updatedTimestamp = a} :: PhoneNumber) Prelude.. Lens.mapping Data._Time

instance Data.FromJSON PhoneNumber where
  parseJSON =
    Data.withObject
      "PhoneNumber"
      ( \x ->
          PhoneNumber'
            Prelude.<$> (x Data..:? "Associations" Data..!= Prelude.mempty)
            Prelude.<*> (x Data..:? "CallingName")
            Prelude.<*> (x Data..:? "CallingNameStatus")
            Prelude.<*> (x Data..:? "Capabilities")
            Prelude.<*> (x Data..:? "Country")
            Prelude.<*> (x Data..:? "CreatedTimestamp")
            Prelude.<*> (x Data..:? "DeletionTimestamp")
            Prelude.<*> (x Data..:? "E164PhoneNumber")
            Prelude.<*> (x Data..:? "OrderId")
            Prelude.<*> (x Data..:? "PhoneNumberId")
            Prelude.<*> (x Data..:? "ProductType")
            Prelude.<*> (x Data..:? "Status")
            Prelude.<*> (x Data..:? "Type")
            Prelude.<*> (x Data..:? "UpdatedTimestamp")
      )

instance Prelude.Hashable PhoneNumber where
  hashWithSalt _salt PhoneNumber' {..} =
    _salt
      `Prelude.hashWithSalt` associations
      `Prelude.hashWithSalt` callingName
      `Prelude.hashWithSalt` callingNameStatus
      `Prelude.hashWithSalt` capabilities
      `Prelude.hashWithSalt` country
      `Prelude.hashWithSalt` createdTimestamp
      `Prelude.hashWithSalt` deletionTimestamp
      `Prelude.hashWithSalt` e164PhoneNumber
      `Prelude.hashWithSalt` orderId
      `Prelude.hashWithSalt` phoneNumberId
      `Prelude.hashWithSalt` productType
      `Prelude.hashWithSalt` status
      `Prelude.hashWithSalt` type'
      `Prelude.hashWithSalt` updatedTimestamp

instance Prelude.NFData PhoneNumber where
  rnf PhoneNumber' {..} =
    Prelude.rnf associations
      `Prelude.seq` Prelude.rnf callingName
      `Prelude.seq` Prelude.rnf callingNameStatus
      `Prelude.seq` Prelude.rnf capabilities
      `Prelude.seq` Prelude.rnf country
      `Prelude.seq` Prelude.rnf createdTimestamp
      `Prelude.seq` Prelude.rnf deletionTimestamp
      `Prelude.seq` Prelude.rnf e164PhoneNumber
      `Prelude.seq` Prelude.rnf orderId
      `Prelude.seq` Prelude.rnf phoneNumberId
      `Prelude.seq` Prelude.rnf productType
      `Prelude.seq` Prelude.rnf status
      `Prelude.seq` Prelude.rnf type'
      `Prelude.seq` Prelude.rnf updatedTimestamp