{-# 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.RDS.RestoreDBInstanceToPointInTime
-- 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)
--
-- Restores a DB instance to an arbitrary point in time. You can restore to
-- any point in time before the time identified by the LatestRestorableTime
-- property. You can restore to a point up to the number of days specified
-- by the BackupRetentionPeriod property.
--
-- The target database is created with most of the original configuration,
-- but in a system-selected Availability Zone, with the default security
-- group, the default subnet group, and the default DB parameter group. By
-- default, the new DB instance is created as a single-AZ deployment except
-- when the instance is a SQL Server instance that has an option group that
-- is associated with mirroring; in this case, the instance becomes a
-- mirrored deployment and not a single-AZ deployment.
--
-- This command doesn\'t apply to Aurora MySQL and Aurora PostgreSQL. For
-- Aurora, use @RestoreDBClusterToPointInTime@.
module Amazonka.RDS.RestoreDBInstanceToPointInTime
  ( -- * Creating a Request
    RestoreDBInstanceToPointInTime (..),
    newRestoreDBInstanceToPointInTime,

    -- * Request Lenses
    restoreDBInstanceToPointInTime_deletionProtection,
    restoreDBInstanceToPointInTime_useLatestRestorableTime,
    restoreDBInstanceToPointInTime_publiclyAccessible,
    restoreDBInstanceToPointInTime_autoMinorVersionUpgrade,
    restoreDBInstanceToPointInTime_dbSubnetGroupName,
    restoreDBInstanceToPointInTime_restoreTime,
    restoreDBInstanceToPointInTime_iops,
    restoreDBInstanceToPointInTime_domain,
    restoreDBInstanceToPointInTime_enableCustomerOwnedIp,
    restoreDBInstanceToPointInTime_engine,
    restoreDBInstanceToPointInTime_tdeCredentialPassword,
    restoreDBInstanceToPointInTime_sourceDBInstanceIdentifier,
    restoreDBInstanceToPointInTime_processorFeatures,
    restoreDBInstanceToPointInTime_dbInstanceClass,
    restoreDBInstanceToPointInTime_licenseModel,
    restoreDBInstanceToPointInTime_sourceDBInstanceAutomatedBackupsArn,
    restoreDBInstanceToPointInTime_maxAllocatedStorage,
    restoreDBInstanceToPointInTime_dbParameterGroupName,
    restoreDBInstanceToPointInTime_availabilityZone,
    restoreDBInstanceToPointInTime_vpcSecurityGroupIds,
    restoreDBInstanceToPointInTime_multiAZ,
    restoreDBInstanceToPointInTime_sourceDbiResourceId,
    restoreDBInstanceToPointInTime_optionGroupName,
    restoreDBInstanceToPointInTime_copyTagsToSnapshot,
    restoreDBInstanceToPointInTime_tdeCredentialArn,
    restoreDBInstanceToPointInTime_domainIAMRoleName,
    restoreDBInstanceToPointInTime_tags,
    restoreDBInstanceToPointInTime_port,
    restoreDBInstanceToPointInTime_enableIAMDatabaseAuthentication,
    restoreDBInstanceToPointInTime_useDefaultProcessorFeatures,
    restoreDBInstanceToPointInTime_storageType,
    restoreDBInstanceToPointInTime_enableCloudwatchLogsExports,
    restoreDBInstanceToPointInTime_dbName,
    restoreDBInstanceToPointInTime_targetDBInstanceIdentifier,

    -- * Destructuring the Response
    RestoreDBInstanceToPointInTimeResponse (..),
    newRestoreDBInstanceToPointInTimeResponse,

    -- * Response Lenses
    restoreDBInstanceToPointInTimeResponse_dbInstance,
    restoreDBInstanceToPointInTimeResponse_httpStatus,
  )
where

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

-- |
--
-- /See:/ 'newRestoreDBInstanceToPointInTime' smart constructor.
data RestoreDBInstanceToPointInTime = RestoreDBInstanceToPointInTime'
  { -- | A value that indicates whether the DB instance has deletion protection
    -- enabled. The database can\'t be deleted when deletion protection is
    -- enabled. By default, deletion protection is disabled. For more
    -- information, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html Deleting a DB Instance>.
    RestoreDBInstanceToPointInTime -> Maybe Bool
deletionProtection :: Prelude.Maybe Prelude.Bool,
    -- | A value that indicates whether the DB instance is restored from the
    -- latest backup time. By default, the DB instance isn\'t restored from the
    -- latest backup time.
    --
    -- Constraints: Can\'t be specified if the @RestoreTime@ parameter is
    -- provided.
    RestoreDBInstanceToPointInTime -> Maybe Bool
useLatestRestorableTime :: Prelude.Maybe Prelude.Bool,
    -- | A value that indicates whether the DB instance is publicly accessible.
    --
    -- When the DB instance is publicly accessible, its DNS endpoint resolves
    -- to the private IP address from within the DB instance\'s VPC, and to the
    -- public IP address from outside of the DB instance\'s VPC. Access to the
    -- DB instance is ultimately controlled by the security group it uses, and
    -- that public access is not permitted if the security group assigned to
    -- the DB instance doesn\'t permit it.
    --
    -- When the DB instance isn\'t publicly accessible, it is an internal DB
    -- instance with a DNS name that resolves to a private IP address.
    --
    -- For more information, see CreateDBInstance.
    RestoreDBInstanceToPointInTime -> Maybe Bool
publiclyAccessible :: Prelude.Maybe Prelude.Bool,
    -- | A value that indicates whether minor version upgrades are applied
    -- automatically to the DB instance during the maintenance window.
    RestoreDBInstanceToPointInTime -> Maybe Bool
autoMinorVersionUpgrade :: Prelude.Maybe Prelude.Bool,
    -- | The DB subnet group name to use for the new instance.
    --
    -- Constraints: If supplied, must match the name of an existing
    -- DBSubnetGroup.
    --
    -- Example: @mySubnetgroup@
    RestoreDBInstanceToPointInTime -> Maybe Text
dbSubnetGroupName :: Prelude.Maybe Prelude.Text,
    -- | The date and time to restore from.
    --
    -- Valid Values: Value must be a time in Universal Coordinated Time (UTC)
    -- format
    --
    -- Constraints:
    --
    -- -   Must be before the latest restorable time for the DB instance
    --
    -- -   Can\'t be specified if the @UseLatestRestorableTime@ parameter is
    --     enabled
    --
    -- Example: @2009-09-07T23:45:00Z@
    RestoreDBInstanceToPointInTime -> Maybe ISO8601
restoreTime :: Prelude.Maybe Core.ISO8601,
    -- | The amount of Provisioned IOPS (input\/output operations per second) to
    -- be initially allocated for the DB instance.
    --
    -- Constraints: Must be an integer greater than 1000.
    --
    -- __SQL Server__
    --
    -- Setting the IOPS value for the SQL Server database engine isn\'t
    -- supported.
    RestoreDBInstanceToPointInTime -> Maybe Int
iops :: Prelude.Maybe Prelude.Int,
    -- | Specify the Active Directory directory ID to restore the DB instance in.
    -- The domain must be created prior to this operation. Currently, only
    -- MySQL, Microsoft SQL Server, Oracle, and PostgreSQL DB instances can be
    -- created in an Active Directory Domain.
    --
    -- For more information, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/kerberos-authentication.html Kerberos Authentication>
    -- in the /Amazon RDS User Guide/.
    RestoreDBInstanceToPointInTime -> Maybe Text
domain :: Prelude.Maybe Prelude.Text,
    -- | A value that indicates whether to enable a customer-owned IP address
    -- (CoIP) for an RDS on Outposts DB instance.
    --
    -- A /CoIP/ provides local or external connectivity to resources in your
    -- Outpost subnets through your on-premises network. For some use cases, a
    -- CoIP can provide lower latency for connections to the DB instance from
    -- outside of its virtual private cloud (VPC) on your local network.
    --
    -- For more information about RDS on Outposts, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html Working with Amazon RDS on Amazon Web Services Outposts>
    -- in the /Amazon RDS User Guide/.
    --
    -- For more information about CoIPs, see
    -- <https://docs.aws.amazon.com/outposts/latest/userguide/outposts-networking-components.html#ip-addressing Customer-owned IP addresses>
    -- in the /Amazon Web Services Outposts User Guide/.
    RestoreDBInstanceToPointInTime -> Maybe Bool
enableCustomerOwnedIp :: Prelude.Maybe Prelude.Bool,
    -- | The database engine to use for the new instance.
    --
    -- Default: The same as source
    --
    -- Constraint: Must be compatible with the engine of the source
    --
    -- Valid Values:
    --
    -- -   @mariadb@
    --
    -- -   @mysql@
    --
    -- -   @oracle-ee@
    --
    -- -   @oracle-ee-cdb@
    --
    -- -   @oracle-se2@
    --
    -- -   @oracle-se2-cdb@
    --
    -- -   @postgres@
    --
    -- -   @sqlserver-ee@
    --
    -- -   @sqlserver-se@
    --
    -- -   @sqlserver-ex@
    --
    -- -   @sqlserver-web@
    RestoreDBInstanceToPointInTime -> Maybe Text
engine :: Prelude.Maybe Prelude.Text,
    -- | The password for the given ARN from the key store in order to access the
    -- device.
    RestoreDBInstanceToPointInTime -> Maybe Text
tdeCredentialPassword :: Prelude.Maybe Prelude.Text,
    -- | The identifier of the source DB instance from which to restore.
    --
    -- Constraints:
    --
    -- -   Must match the identifier of an existing DB instance.
    RestoreDBInstanceToPointInTime -> Maybe Text
sourceDBInstanceIdentifier :: Prelude.Maybe Prelude.Text,
    -- | The number of CPU cores and the number of threads per core for the DB
    -- instance class of the DB instance.
    RestoreDBInstanceToPointInTime -> Maybe [ProcessorFeature]
processorFeatures :: Prelude.Maybe [ProcessorFeature],
    -- | The compute and memory capacity of the Amazon RDS DB instance, for
    -- example, @db.m4.large@. Not all DB instance classes are available in all
    -- Amazon Web Services Regions, or for all database engines. For the full
    -- list of DB instance classes, and availability for your engine, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html DB Instance Class>
    -- in the /Amazon RDS User Guide./
    --
    -- Default: The same DBInstanceClass as the original DB instance.
    RestoreDBInstanceToPointInTime -> Maybe Text
dbInstanceClass :: Prelude.Maybe Prelude.Text,
    -- | License model information for the restored DB instance.
    --
    -- Default: Same as source.
    --
    -- Valid values: @license-included@ | @bring-your-own-license@ |
    -- @general-public-license@
    RestoreDBInstanceToPointInTime -> Maybe Text
licenseModel :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the replicated automated backups from
    -- which to restore, for example,
    -- @arn:aws:rds:useast-1:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE@.
    RestoreDBInstanceToPointInTime -> Maybe Text
sourceDBInstanceAutomatedBackupsArn :: Prelude.Maybe Prelude.Text,
    -- | The upper limit in gibibytes (GiB) to which Amazon RDS can automatically
    -- scale the storage of the DB instance.
    --
    -- For more information about this setting, including limitations that
    -- apply to it, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling Managing capacity automatically with Amazon RDS storage autoscaling>
    -- in the /Amazon RDS User Guide/.
    RestoreDBInstanceToPointInTime -> Maybe Int
maxAllocatedStorage :: Prelude.Maybe Prelude.Int,
    -- | The name of the DB parameter group to associate with this DB instance.
    --
    -- If you do not specify a value for @DBParameterGroupName@, then the
    -- default @DBParameterGroup@ for the specified DB engine is used.
    --
    -- Constraints:
    --
    -- -   If supplied, must match the name of an existing DBParameterGroup.
    --
    -- -   Must be 1 to 255 letters, numbers, or hyphens.
    --
    -- -   First character must be a letter.
    --
    -- -   Can\'t end with a hyphen or contain two consecutive hyphens.
    RestoreDBInstanceToPointInTime -> Maybe Text
dbParameterGroupName :: Prelude.Maybe Prelude.Text,
    -- | The Availability Zone (AZ) where the DB instance will be created.
    --
    -- Default: A random, system-chosen Availability Zone.
    --
    -- Constraint: You can\'t specify the @AvailabilityZone@ parameter if the
    -- DB instance is a Multi-AZ deployment.
    --
    -- Example: @us-east-1a@
    RestoreDBInstanceToPointInTime -> Maybe Text
availabilityZone :: Prelude.Maybe Prelude.Text,
    -- | A list of EC2 VPC security groups to associate with this DB instance.
    --
    -- Default: The default EC2 VPC security group for the DB subnet group\'s
    -- VPC.
    RestoreDBInstanceToPointInTime -> Maybe [Text]
vpcSecurityGroupIds :: Prelude.Maybe [Prelude.Text],
    -- | A value that indicates whether the DB instance is a Multi-AZ deployment.
    --
    -- Constraint: You can\'t specify the @AvailabilityZone@ parameter if the
    -- DB instance is a Multi-AZ deployment.
    RestoreDBInstanceToPointInTime -> Maybe Bool
multiAZ :: Prelude.Maybe Prelude.Bool,
    -- | The resource ID of the source DB instance from which to restore.
    RestoreDBInstanceToPointInTime -> Maybe Text
sourceDbiResourceId :: Prelude.Maybe Prelude.Text,
    -- | The name of the option group to be used for the restored DB instance.
    --
    -- Permanent options, such as the TDE option for Oracle Advanced Security
    -- TDE, can\'t be removed from an option group, and that option group
    -- can\'t be removed from a DB instance once it is associated with a DB
    -- instance
    RestoreDBInstanceToPointInTime -> Maybe Text
optionGroupName :: Prelude.Maybe Prelude.Text,
    -- | A value that indicates whether to copy all tags from the restored DB
    -- instance to snapshots of the DB instance. By default, tags are not
    -- copied.
    RestoreDBInstanceToPointInTime -> Maybe Bool
copyTagsToSnapshot :: Prelude.Maybe Prelude.Bool,
    -- | The ARN from the key store with which to associate the instance for TDE
    -- encryption.
    RestoreDBInstanceToPointInTime -> Maybe Text
tdeCredentialArn :: Prelude.Maybe Prelude.Text,
    -- | Specify the name of the IAM role to be used when making API calls to the
    -- Directory Service.
    RestoreDBInstanceToPointInTime -> Maybe Text
domainIAMRoleName :: Prelude.Maybe Prelude.Text,
    RestoreDBInstanceToPointInTime -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The port number on which the database accepts connections.
    --
    -- Constraints: Value must be @1150-65535@
    --
    -- Default: The same port as the original DB instance.
    RestoreDBInstanceToPointInTime -> Maybe Int
port :: Prelude.Maybe Prelude.Int,
    -- | A value that indicates whether to enable mapping of Amazon Web Services
    -- Identity and Access Management (IAM) accounts to database accounts. By
    -- default, mapping is disabled.
    --
    -- For more information about IAM database authentication, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html IAM Database Authentication for MySQL and PostgreSQL>
    -- in the /Amazon RDS User Guide./
    RestoreDBInstanceToPointInTime -> Maybe Bool
enableIAMDatabaseAuthentication :: Prelude.Maybe Prelude.Bool,
    -- | A value that indicates whether the DB instance class of the DB instance
    -- uses its default processor features.
    RestoreDBInstanceToPointInTime -> Maybe Bool
useDefaultProcessorFeatures :: Prelude.Maybe Prelude.Bool,
    -- | Specifies the storage type to be associated with the DB instance.
    --
    -- Valid values: @standard | gp2 | io1@
    --
    -- If you specify @io1@, you must also include a value for the @Iops@
    -- parameter.
    --
    -- Default: @io1@ if the @Iops@ parameter is specified, otherwise @gp2@
    RestoreDBInstanceToPointInTime -> Maybe Text
storageType :: Prelude.Maybe Prelude.Text,
    -- | The list of logs that the restored DB instance is to export to
    -- CloudWatch Logs. The values in the list depend on the DB engine being
    -- used. For more information, see
    -- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch Publishing Database Logs to Amazon CloudWatch Logs>
    -- in the /Amazon RDS User Guide/.
    RestoreDBInstanceToPointInTime -> Maybe [Text]
enableCloudwatchLogsExports :: Prelude.Maybe [Prelude.Text],
    -- | The database name for the restored DB instance.
    --
    -- This parameter isn\'t used for the MySQL or MariaDB engines.
    RestoreDBInstanceToPointInTime -> Maybe Text
dbName :: Prelude.Maybe Prelude.Text,
    -- | The name of the new DB instance to be created.
    --
    -- Constraints:
    --
    -- -   Must contain from 1 to 63 letters, numbers, or hyphens
    --
    -- -   First character must be a letter
    --
    -- -   Can\'t end with a hyphen or contain two consecutive hyphens
    RestoreDBInstanceToPointInTime -> Text
targetDBInstanceIdentifier :: Prelude.Text
  }
  deriving (RestoreDBInstanceToPointInTime
-> RestoreDBInstanceToPointInTime -> Bool
(RestoreDBInstanceToPointInTime
 -> RestoreDBInstanceToPointInTime -> Bool)
-> (RestoreDBInstanceToPointInTime
    -> RestoreDBInstanceToPointInTime -> Bool)
-> Eq RestoreDBInstanceToPointInTime
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RestoreDBInstanceToPointInTime
-> RestoreDBInstanceToPointInTime -> Bool
$c/= :: RestoreDBInstanceToPointInTime
-> RestoreDBInstanceToPointInTime -> Bool
== :: RestoreDBInstanceToPointInTime
-> RestoreDBInstanceToPointInTime -> Bool
$c== :: RestoreDBInstanceToPointInTime
-> RestoreDBInstanceToPointInTime -> Bool
Prelude.Eq, ReadPrec [RestoreDBInstanceToPointInTime]
ReadPrec RestoreDBInstanceToPointInTime
Int -> ReadS RestoreDBInstanceToPointInTime
ReadS [RestoreDBInstanceToPointInTime]
(Int -> ReadS RestoreDBInstanceToPointInTime)
-> ReadS [RestoreDBInstanceToPointInTime]
-> ReadPrec RestoreDBInstanceToPointInTime
-> ReadPrec [RestoreDBInstanceToPointInTime]
-> Read RestoreDBInstanceToPointInTime
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [RestoreDBInstanceToPointInTime]
$creadListPrec :: ReadPrec [RestoreDBInstanceToPointInTime]
readPrec :: ReadPrec RestoreDBInstanceToPointInTime
$creadPrec :: ReadPrec RestoreDBInstanceToPointInTime
readList :: ReadS [RestoreDBInstanceToPointInTime]
$creadList :: ReadS [RestoreDBInstanceToPointInTime]
readsPrec :: Int -> ReadS RestoreDBInstanceToPointInTime
$creadsPrec :: Int -> ReadS RestoreDBInstanceToPointInTime
Prelude.Read, Int -> RestoreDBInstanceToPointInTime -> ShowS
[RestoreDBInstanceToPointInTime] -> ShowS
RestoreDBInstanceToPointInTime -> String
(Int -> RestoreDBInstanceToPointInTime -> ShowS)
-> (RestoreDBInstanceToPointInTime -> String)
-> ([RestoreDBInstanceToPointInTime] -> ShowS)
-> Show RestoreDBInstanceToPointInTime
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RestoreDBInstanceToPointInTime] -> ShowS
$cshowList :: [RestoreDBInstanceToPointInTime] -> ShowS
show :: RestoreDBInstanceToPointInTime -> String
$cshow :: RestoreDBInstanceToPointInTime -> String
showsPrec :: Int -> RestoreDBInstanceToPointInTime -> ShowS
$cshowsPrec :: Int -> RestoreDBInstanceToPointInTime -> ShowS
Prelude.Show, (forall x.
 RestoreDBInstanceToPointInTime
 -> Rep RestoreDBInstanceToPointInTime x)
-> (forall x.
    Rep RestoreDBInstanceToPointInTime x
    -> RestoreDBInstanceToPointInTime)
-> Generic RestoreDBInstanceToPointInTime
forall x.
Rep RestoreDBInstanceToPointInTime x
-> RestoreDBInstanceToPointInTime
forall x.
RestoreDBInstanceToPointInTime
-> Rep RestoreDBInstanceToPointInTime x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep RestoreDBInstanceToPointInTime x
-> RestoreDBInstanceToPointInTime
$cfrom :: forall x.
RestoreDBInstanceToPointInTime
-> Rep RestoreDBInstanceToPointInTime x
Prelude.Generic)

-- |
-- Create a value of 'RestoreDBInstanceToPointInTime' 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:
--
-- 'deletionProtection', 'restoreDBInstanceToPointInTime_deletionProtection' - A value that indicates whether the DB instance has deletion protection
-- enabled. The database can\'t be deleted when deletion protection is
-- enabled. By default, deletion protection is disabled. For more
-- information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html Deleting a DB Instance>.
--
-- 'useLatestRestorableTime', 'restoreDBInstanceToPointInTime_useLatestRestorableTime' - A value that indicates whether the DB instance is restored from the
-- latest backup time. By default, the DB instance isn\'t restored from the
-- latest backup time.
--
-- Constraints: Can\'t be specified if the @RestoreTime@ parameter is
-- provided.
--
-- 'publiclyAccessible', 'restoreDBInstanceToPointInTime_publiclyAccessible' - A value that indicates whether the DB instance is publicly accessible.
--
-- When the DB instance is publicly accessible, its DNS endpoint resolves
-- to the private IP address from within the DB instance\'s VPC, and to the
-- public IP address from outside of the DB instance\'s VPC. Access to the
-- DB instance is ultimately controlled by the security group it uses, and
-- that public access is not permitted if the security group assigned to
-- the DB instance doesn\'t permit it.
--
-- When the DB instance isn\'t publicly accessible, it is an internal DB
-- instance with a DNS name that resolves to a private IP address.
--
-- For more information, see CreateDBInstance.
--
-- 'autoMinorVersionUpgrade', 'restoreDBInstanceToPointInTime_autoMinorVersionUpgrade' - A value that indicates whether minor version upgrades are applied
-- automatically to the DB instance during the maintenance window.
--
-- 'dbSubnetGroupName', 'restoreDBInstanceToPointInTime_dbSubnetGroupName' - The DB subnet group name to use for the new instance.
--
-- Constraints: If supplied, must match the name of an existing
-- DBSubnetGroup.
--
-- Example: @mySubnetgroup@
--
-- 'restoreTime', 'restoreDBInstanceToPointInTime_restoreTime' - The date and time to restore from.
--
-- Valid Values: Value must be a time in Universal Coordinated Time (UTC)
-- format
--
-- Constraints:
--
-- -   Must be before the latest restorable time for the DB instance
--
-- -   Can\'t be specified if the @UseLatestRestorableTime@ parameter is
--     enabled
--
-- Example: @2009-09-07T23:45:00Z@
--
-- 'iops', 'restoreDBInstanceToPointInTime_iops' - The amount of Provisioned IOPS (input\/output operations per second) to
-- be initially allocated for the DB instance.
--
-- Constraints: Must be an integer greater than 1000.
--
-- __SQL Server__
--
-- Setting the IOPS value for the SQL Server database engine isn\'t
-- supported.
--
-- 'domain', 'restoreDBInstanceToPointInTime_domain' - Specify the Active Directory directory ID to restore the DB instance in.
-- The domain must be created prior to this operation. Currently, only
-- MySQL, Microsoft SQL Server, Oracle, and PostgreSQL DB instances can be
-- created in an Active Directory Domain.
--
-- For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/kerberos-authentication.html Kerberos Authentication>
-- in the /Amazon RDS User Guide/.
--
-- 'enableCustomerOwnedIp', 'restoreDBInstanceToPointInTime_enableCustomerOwnedIp' - A value that indicates whether to enable a customer-owned IP address
-- (CoIP) for an RDS on Outposts DB instance.
--
-- A /CoIP/ provides local or external connectivity to resources in your
-- Outpost subnets through your on-premises network. For some use cases, a
-- CoIP can provide lower latency for connections to the DB instance from
-- outside of its virtual private cloud (VPC) on your local network.
--
-- For more information about RDS on Outposts, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html Working with Amazon RDS on Amazon Web Services Outposts>
-- in the /Amazon RDS User Guide/.
--
-- For more information about CoIPs, see
-- <https://docs.aws.amazon.com/outposts/latest/userguide/outposts-networking-components.html#ip-addressing Customer-owned IP addresses>
-- in the /Amazon Web Services Outposts User Guide/.
--
-- 'engine', 'restoreDBInstanceToPointInTime_engine' - The database engine to use for the new instance.
--
-- Default: The same as source
--
-- Constraint: Must be compatible with the engine of the source
--
-- Valid Values:
--
-- -   @mariadb@
--
-- -   @mysql@
--
-- -   @oracle-ee@
--
-- -   @oracle-ee-cdb@
--
-- -   @oracle-se2@
--
-- -   @oracle-se2-cdb@
--
-- -   @postgres@
--
-- -   @sqlserver-ee@
--
-- -   @sqlserver-se@
--
-- -   @sqlserver-ex@
--
-- -   @sqlserver-web@
--
-- 'tdeCredentialPassword', 'restoreDBInstanceToPointInTime_tdeCredentialPassword' - The password for the given ARN from the key store in order to access the
-- device.
--
-- 'sourceDBInstanceIdentifier', 'restoreDBInstanceToPointInTime_sourceDBInstanceIdentifier' - The identifier of the source DB instance from which to restore.
--
-- Constraints:
--
-- -   Must match the identifier of an existing DB instance.
--
-- 'processorFeatures', 'restoreDBInstanceToPointInTime_processorFeatures' - The number of CPU cores and the number of threads per core for the DB
-- instance class of the DB instance.
--
-- 'dbInstanceClass', 'restoreDBInstanceToPointInTime_dbInstanceClass' - The compute and memory capacity of the Amazon RDS DB instance, for
-- example, @db.m4.large@. Not all DB instance classes are available in all
-- Amazon Web Services Regions, or for all database engines. For the full
-- list of DB instance classes, and availability for your engine, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html DB Instance Class>
-- in the /Amazon RDS User Guide./
--
-- Default: The same DBInstanceClass as the original DB instance.
--
-- 'licenseModel', 'restoreDBInstanceToPointInTime_licenseModel' - License model information for the restored DB instance.
--
-- Default: Same as source.
--
-- Valid values: @license-included@ | @bring-your-own-license@ |
-- @general-public-license@
--
-- 'sourceDBInstanceAutomatedBackupsArn', 'restoreDBInstanceToPointInTime_sourceDBInstanceAutomatedBackupsArn' - The Amazon Resource Name (ARN) of the replicated automated backups from
-- which to restore, for example,
-- @arn:aws:rds:useast-1:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE@.
--
-- 'maxAllocatedStorage', 'restoreDBInstanceToPointInTime_maxAllocatedStorage' - The upper limit in gibibytes (GiB) to which Amazon RDS can automatically
-- scale the storage of the DB instance.
--
-- For more information about this setting, including limitations that
-- apply to it, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling Managing capacity automatically with Amazon RDS storage autoscaling>
-- in the /Amazon RDS User Guide/.
--
-- 'dbParameterGroupName', 'restoreDBInstanceToPointInTime_dbParameterGroupName' - The name of the DB parameter group to associate with this DB instance.
--
-- If you do not specify a value for @DBParameterGroupName@, then the
-- default @DBParameterGroup@ for the specified DB engine is used.
--
-- Constraints:
--
-- -   If supplied, must match the name of an existing DBParameterGroup.
--
-- -   Must be 1 to 255 letters, numbers, or hyphens.
--
-- -   First character must be a letter.
--
-- -   Can\'t end with a hyphen or contain two consecutive hyphens.
--
-- 'availabilityZone', 'restoreDBInstanceToPointInTime_availabilityZone' - The Availability Zone (AZ) where the DB instance will be created.
--
-- Default: A random, system-chosen Availability Zone.
--
-- Constraint: You can\'t specify the @AvailabilityZone@ parameter if the
-- DB instance is a Multi-AZ deployment.
--
-- Example: @us-east-1a@
--
-- 'vpcSecurityGroupIds', 'restoreDBInstanceToPointInTime_vpcSecurityGroupIds' - A list of EC2 VPC security groups to associate with this DB instance.
--
-- Default: The default EC2 VPC security group for the DB subnet group\'s
-- VPC.
--
-- 'multiAZ', 'restoreDBInstanceToPointInTime_multiAZ' - A value that indicates whether the DB instance is a Multi-AZ deployment.
--
-- Constraint: You can\'t specify the @AvailabilityZone@ parameter if the
-- DB instance is a Multi-AZ deployment.
--
-- 'sourceDbiResourceId', 'restoreDBInstanceToPointInTime_sourceDbiResourceId' - The resource ID of the source DB instance from which to restore.
--
-- 'optionGroupName', 'restoreDBInstanceToPointInTime_optionGroupName' - The name of the option group to be used for the restored DB instance.
--
-- Permanent options, such as the TDE option for Oracle Advanced Security
-- TDE, can\'t be removed from an option group, and that option group
-- can\'t be removed from a DB instance once it is associated with a DB
-- instance
--
-- 'copyTagsToSnapshot', 'restoreDBInstanceToPointInTime_copyTagsToSnapshot' - A value that indicates whether to copy all tags from the restored DB
-- instance to snapshots of the DB instance. By default, tags are not
-- copied.
--
-- 'tdeCredentialArn', 'restoreDBInstanceToPointInTime_tdeCredentialArn' - The ARN from the key store with which to associate the instance for TDE
-- encryption.
--
-- 'domainIAMRoleName', 'restoreDBInstanceToPointInTime_domainIAMRoleName' - Specify the name of the IAM role to be used when making API calls to the
-- Directory Service.
--
-- 'tags', 'restoreDBInstanceToPointInTime_tags' - Undocumented member.
--
-- 'port', 'restoreDBInstanceToPointInTime_port' - The port number on which the database accepts connections.
--
-- Constraints: Value must be @1150-65535@
--
-- Default: The same port as the original DB instance.
--
-- 'enableIAMDatabaseAuthentication', 'restoreDBInstanceToPointInTime_enableIAMDatabaseAuthentication' - A value that indicates whether to enable mapping of Amazon Web Services
-- Identity and Access Management (IAM) accounts to database accounts. By
-- default, mapping is disabled.
--
-- For more information about IAM database authentication, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html IAM Database Authentication for MySQL and PostgreSQL>
-- in the /Amazon RDS User Guide./
--
-- 'useDefaultProcessorFeatures', 'restoreDBInstanceToPointInTime_useDefaultProcessorFeatures' - A value that indicates whether the DB instance class of the DB instance
-- uses its default processor features.
--
-- 'storageType', 'restoreDBInstanceToPointInTime_storageType' - Specifies the storage type to be associated with the DB instance.
--
-- Valid values: @standard | gp2 | io1@
--
-- If you specify @io1@, you must also include a value for the @Iops@
-- parameter.
--
-- Default: @io1@ if the @Iops@ parameter is specified, otherwise @gp2@
--
-- 'enableCloudwatchLogsExports', 'restoreDBInstanceToPointInTime_enableCloudwatchLogsExports' - The list of logs that the restored DB instance is to export to
-- CloudWatch Logs. The values in the list depend on the DB engine being
-- used. For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch Publishing Database Logs to Amazon CloudWatch Logs>
-- in the /Amazon RDS User Guide/.
--
-- 'dbName', 'restoreDBInstanceToPointInTime_dbName' - The database name for the restored DB instance.
--
-- This parameter isn\'t used for the MySQL or MariaDB engines.
--
-- 'targetDBInstanceIdentifier', 'restoreDBInstanceToPointInTime_targetDBInstanceIdentifier' - The name of the new DB instance to be created.
--
-- Constraints:
--
-- -   Must contain from 1 to 63 letters, numbers, or hyphens
--
-- -   First character must be a letter
--
-- -   Can\'t end with a hyphen or contain two consecutive hyphens
newRestoreDBInstanceToPointInTime ::
  -- | 'targetDBInstanceIdentifier'
  Prelude.Text ->
  RestoreDBInstanceToPointInTime
newRestoreDBInstanceToPointInTime :: Text -> RestoreDBInstanceToPointInTime
newRestoreDBInstanceToPointInTime
  Text
pTargetDBInstanceIdentifier_ =
    RestoreDBInstanceToPointInTime' :: Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe ISO8601
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [ProcessorFeature]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe [Text]
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe [Tag]
-> Maybe Int
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe [Text]
-> Maybe Text
-> Text
-> RestoreDBInstanceToPointInTime
RestoreDBInstanceToPointInTime'
      { $sel:deletionProtection:RestoreDBInstanceToPointInTime' :: Maybe Bool
deletionProtection =
          Maybe Bool
forall a. Maybe a
Prelude.Nothing,
        $sel:useLatestRestorableTime:RestoreDBInstanceToPointInTime' :: Maybe Bool
useLatestRestorableTime = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
        $sel:publiclyAccessible:RestoreDBInstanceToPointInTime' :: Maybe Bool
publiclyAccessible = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
        $sel:autoMinorVersionUpgrade:RestoreDBInstanceToPointInTime' :: Maybe Bool
autoMinorVersionUpgrade = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
        $sel:dbSubnetGroupName:RestoreDBInstanceToPointInTime' :: Maybe Text
dbSubnetGroupName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:restoreTime:RestoreDBInstanceToPointInTime' :: Maybe ISO8601
restoreTime = Maybe ISO8601
forall a. Maybe a
Prelude.Nothing,
        $sel:iops:RestoreDBInstanceToPointInTime' :: Maybe Int
iops = Maybe Int
forall a. Maybe a
Prelude.Nothing,
        $sel:domain:RestoreDBInstanceToPointInTime' :: Maybe Text
domain = Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:enableCustomerOwnedIp:RestoreDBInstanceToPointInTime' :: Maybe Bool
enableCustomerOwnedIp = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
        $sel:engine:RestoreDBInstanceToPointInTime' :: Maybe Text
engine = Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:tdeCredentialPassword:RestoreDBInstanceToPointInTime' :: Maybe Text
tdeCredentialPassword = Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:sourceDBInstanceIdentifier:RestoreDBInstanceToPointInTime' :: Maybe Text
sourceDBInstanceIdentifier =
          Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:processorFeatures:RestoreDBInstanceToPointInTime' :: Maybe [ProcessorFeature]
processorFeatures = Maybe [ProcessorFeature]
forall a. Maybe a
Prelude.Nothing,
        $sel:dbInstanceClass:RestoreDBInstanceToPointInTime' :: Maybe Text
dbInstanceClass = Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:licenseModel:RestoreDBInstanceToPointInTime' :: Maybe Text
licenseModel = Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:sourceDBInstanceAutomatedBackupsArn:RestoreDBInstanceToPointInTime' :: Maybe Text
sourceDBInstanceAutomatedBackupsArn =
          Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:maxAllocatedStorage:RestoreDBInstanceToPointInTime' :: Maybe Int
maxAllocatedStorage = Maybe Int
forall a. Maybe a
Prelude.Nothing,
        $sel:dbParameterGroupName:RestoreDBInstanceToPointInTime' :: Maybe Text
dbParameterGroupName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:availabilityZone:RestoreDBInstanceToPointInTime' :: Maybe Text
availabilityZone = Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:vpcSecurityGroupIds:RestoreDBInstanceToPointInTime' :: Maybe [Text]
vpcSecurityGroupIds = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
        $sel:multiAZ:RestoreDBInstanceToPointInTime' :: Maybe Bool
multiAZ = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
        $sel:sourceDbiResourceId:RestoreDBInstanceToPointInTime' :: Maybe Text
sourceDbiResourceId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:optionGroupName:RestoreDBInstanceToPointInTime' :: Maybe Text
optionGroupName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:copyTagsToSnapshot:RestoreDBInstanceToPointInTime' :: Maybe Bool
copyTagsToSnapshot = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
        $sel:tdeCredentialArn:RestoreDBInstanceToPointInTime' :: Maybe Text
tdeCredentialArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:domainIAMRoleName:RestoreDBInstanceToPointInTime' :: Maybe Text
domainIAMRoleName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:tags:RestoreDBInstanceToPointInTime' :: Maybe [Tag]
tags = Maybe [Tag]
forall a. Maybe a
Prelude.Nothing,
        $sel:port:RestoreDBInstanceToPointInTime' :: Maybe Int
port = Maybe Int
forall a. Maybe a
Prelude.Nothing,
        $sel:enableIAMDatabaseAuthentication:RestoreDBInstanceToPointInTime' :: Maybe Bool
enableIAMDatabaseAuthentication =
          Maybe Bool
forall a. Maybe a
Prelude.Nothing,
        $sel:useDefaultProcessorFeatures:RestoreDBInstanceToPointInTime' :: Maybe Bool
useDefaultProcessorFeatures =
          Maybe Bool
forall a. Maybe a
Prelude.Nothing,
        $sel:storageType:RestoreDBInstanceToPointInTime' :: Maybe Text
storageType = Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:enableCloudwatchLogsExports:RestoreDBInstanceToPointInTime' :: Maybe [Text]
enableCloudwatchLogsExports =
          Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
        $sel:dbName:RestoreDBInstanceToPointInTime' :: Maybe Text
dbName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
        $sel:targetDBInstanceIdentifier:RestoreDBInstanceToPointInTime' :: Text
targetDBInstanceIdentifier =
          Text
pTargetDBInstanceIdentifier_
      }

-- | A value that indicates whether the DB instance has deletion protection
-- enabled. The database can\'t be deleted when deletion protection is
-- enabled. By default, deletion protection is disabled. For more
-- information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_DeleteInstance.html Deleting a DB Instance>.
restoreDBInstanceToPointInTime_deletionProtection :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Bool)
restoreDBInstanceToPointInTime_deletionProtection :: (Maybe Bool -> f (Maybe Bool))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_deletionProtection = (RestoreDBInstanceToPointInTime -> Maybe Bool)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Bool -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Bool
deletionProtection :: Maybe Bool
$sel:deletionProtection:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Bool
deletionProtection} -> Maybe Bool
deletionProtection) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Bool
a -> RestoreDBInstanceToPointInTime
s {$sel:deletionProtection:RestoreDBInstanceToPointInTime' :: Maybe Bool
deletionProtection = Maybe Bool
a} :: RestoreDBInstanceToPointInTime)

-- | A value that indicates whether the DB instance is restored from the
-- latest backup time. By default, the DB instance isn\'t restored from the
-- latest backup time.
--
-- Constraints: Can\'t be specified if the @RestoreTime@ parameter is
-- provided.
restoreDBInstanceToPointInTime_useLatestRestorableTime :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Bool)
restoreDBInstanceToPointInTime_useLatestRestorableTime :: (Maybe Bool -> f (Maybe Bool))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_useLatestRestorableTime = (RestoreDBInstanceToPointInTime -> Maybe Bool)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Bool -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Bool
useLatestRestorableTime :: Maybe Bool
$sel:useLatestRestorableTime:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Bool
useLatestRestorableTime} -> Maybe Bool
useLatestRestorableTime) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Bool
a -> RestoreDBInstanceToPointInTime
s {$sel:useLatestRestorableTime:RestoreDBInstanceToPointInTime' :: Maybe Bool
useLatestRestorableTime = Maybe Bool
a} :: RestoreDBInstanceToPointInTime)

-- | A value that indicates whether the DB instance is publicly accessible.
--
-- When the DB instance is publicly accessible, its DNS endpoint resolves
-- to the private IP address from within the DB instance\'s VPC, and to the
-- public IP address from outside of the DB instance\'s VPC. Access to the
-- DB instance is ultimately controlled by the security group it uses, and
-- that public access is not permitted if the security group assigned to
-- the DB instance doesn\'t permit it.
--
-- When the DB instance isn\'t publicly accessible, it is an internal DB
-- instance with a DNS name that resolves to a private IP address.
--
-- For more information, see CreateDBInstance.
restoreDBInstanceToPointInTime_publiclyAccessible :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Bool)
restoreDBInstanceToPointInTime_publiclyAccessible :: (Maybe Bool -> f (Maybe Bool))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_publiclyAccessible = (RestoreDBInstanceToPointInTime -> Maybe Bool)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Bool -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Bool
publiclyAccessible :: Maybe Bool
$sel:publiclyAccessible:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Bool
publiclyAccessible} -> Maybe Bool
publiclyAccessible) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Bool
a -> RestoreDBInstanceToPointInTime
s {$sel:publiclyAccessible:RestoreDBInstanceToPointInTime' :: Maybe Bool
publiclyAccessible = Maybe Bool
a} :: RestoreDBInstanceToPointInTime)

-- | A value that indicates whether minor version upgrades are applied
-- automatically to the DB instance during the maintenance window.
restoreDBInstanceToPointInTime_autoMinorVersionUpgrade :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Bool)
restoreDBInstanceToPointInTime_autoMinorVersionUpgrade :: (Maybe Bool -> f (Maybe Bool))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_autoMinorVersionUpgrade = (RestoreDBInstanceToPointInTime -> Maybe Bool)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Bool -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Bool
autoMinorVersionUpgrade :: Maybe Bool
$sel:autoMinorVersionUpgrade:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Bool
autoMinorVersionUpgrade} -> Maybe Bool
autoMinorVersionUpgrade) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Bool
a -> RestoreDBInstanceToPointInTime
s {$sel:autoMinorVersionUpgrade:RestoreDBInstanceToPointInTime' :: Maybe Bool
autoMinorVersionUpgrade = Maybe Bool
a} :: RestoreDBInstanceToPointInTime)

-- | The DB subnet group name to use for the new instance.
--
-- Constraints: If supplied, must match the name of an existing
-- DBSubnetGroup.
--
-- Example: @mySubnetgroup@
restoreDBInstanceToPointInTime_dbSubnetGroupName :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Text)
restoreDBInstanceToPointInTime_dbSubnetGroupName :: (Maybe Text -> f (Maybe Text))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_dbSubnetGroupName = (RestoreDBInstanceToPointInTime -> Maybe Text)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Text -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Text
dbSubnetGroupName :: Maybe Text
$sel:dbSubnetGroupName:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
dbSubnetGroupName} -> Maybe Text
dbSubnetGroupName) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Text
a -> RestoreDBInstanceToPointInTime
s {$sel:dbSubnetGroupName:RestoreDBInstanceToPointInTime' :: Maybe Text
dbSubnetGroupName = Maybe Text
a} :: RestoreDBInstanceToPointInTime)

-- | The date and time to restore from.
--
-- Valid Values: Value must be a time in Universal Coordinated Time (UTC)
-- format
--
-- Constraints:
--
-- -   Must be before the latest restorable time for the DB instance
--
-- -   Can\'t be specified if the @UseLatestRestorableTime@ parameter is
--     enabled
--
-- Example: @2009-09-07T23:45:00Z@
restoreDBInstanceToPointInTime_restoreTime :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.UTCTime)
restoreDBInstanceToPointInTime_restoreTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_restoreTime = (RestoreDBInstanceToPointInTime -> Maybe ISO8601)
-> (RestoreDBInstanceToPointInTime
    -> Maybe ISO8601 -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe ISO8601)
     (Maybe ISO8601)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe ISO8601
restoreTime :: Maybe ISO8601
$sel:restoreTime:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe ISO8601
restoreTime} -> Maybe ISO8601
restoreTime) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe ISO8601
a -> RestoreDBInstanceToPointInTime
s {$sel:restoreTime:RestoreDBInstanceToPointInTime' :: Maybe ISO8601
restoreTime = Maybe ISO8601
a} :: RestoreDBInstanceToPointInTime) ((Maybe ISO8601 -> f (Maybe ISO8601))
 -> RestoreDBInstanceToPointInTime
 -> f RestoreDBInstanceToPointInTime)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe ISO8601 -> f (Maybe ISO8601))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso ISO8601 ISO8601 UTCTime UTCTime
-> Iso
     (Maybe ISO8601) (Maybe ISO8601) (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 ISO8601 ISO8601 UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The amount of Provisioned IOPS (input\/output operations per second) to
-- be initially allocated for the DB instance.
--
-- Constraints: Must be an integer greater than 1000.
--
-- __SQL Server__
--
-- Setting the IOPS value for the SQL Server database engine isn\'t
-- supported.
restoreDBInstanceToPointInTime_iops :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Int)
restoreDBInstanceToPointInTime_iops :: (Maybe Int -> f (Maybe Int))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_iops = (RestoreDBInstanceToPointInTime -> Maybe Int)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Int -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Int)
     (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Int
iops :: Maybe Int
$sel:iops:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Int
iops} -> Maybe Int
iops) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Int
a -> RestoreDBInstanceToPointInTime
s {$sel:iops:RestoreDBInstanceToPointInTime' :: Maybe Int
iops = Maybe Int
a} :: RestoreDBInstanceToPointInTime)

-- | Specify the Active Directory directory ID to restore the DB instance in.
-- The domain must be created prior to this operation. Currently, only
-- MySQL, Microsoft SQL Server, Oracle, and PostgreSQL DB instances can be
-- created in an Active Directory Domain.
--
-- For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/kerberos-authentication.html Kerberos Authentication>
-- in the /Amazon RDS User Guide/.
restoreDBInstanceToPointInTime_domain :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Text)
restoreDBInstanceToPointInTime_domain :: (Maybe Text -> f (Maybe Text))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_domain = (RestoreDBInstanceToPointInTime -> Maybe Text)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Text -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Text
domain :: Maybe Text
$sel:domain:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
domain} -> Maybe Text
domain) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Text
a -> RestoreDBInstanceToPointInTime
s {$sel:domain:RestoreDBInstanceToPointInTime' :: Maybe Text
domain = Maybe Text
a} :: RestoreDBInstanceToPointInTime)

-- | A value that indicates whether to enable a customer-owned IP address
-- (CoIP) for an RDS on Outposts DB instance.
--
-- A /CoIP/ provides local or external connectivity to resources in your
-- Outpost subnets through your on-premises network. For some use cases, a
-- CoIP can provide lower latency for connections to the DB instance from
-- outside of its virtual private cloud (VPC) on your local network.
--
-- For more information about RDS on Outposts, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html Working with Amazon RDS on Amazon Web Services Outposts>
-- in the /Amazon RDS User Guide/.
--
-- For more information about CoIPs, see
-- <https://docs.aws.amazon.com/outposts/latest/userguide/outposts-networking-components.html#ip-addressing Customer-owned IP addresses>
-- in the /Amazon Web Services Outposts User Guide/.
restoreDBInstanceToPointInTime_enableCustomerOwnedIp :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Bool)
restoreDBInstanceToPointInTime_enableCustomerOwnedIp :: (Maybe Bool -> f (Maybe Bool))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_enableCustomerOwnedIp = (RestoreDBInstanceToPointInTime -> Maybe Bool)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Bool -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Bool
enableCustomerOwnedIp :: Maybe Bool
$sel:enableCustomerOwnedIp:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Bool
enableCustomerOwnedIp} -> Maybe Bool
enableCustomerOwnedIp) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Bool
a -> RestoreDBInstanceToPointInTime
s {$sel:enableCustomerOwnedIp:RestoreDBInstanceToPointInTime' :: Maybe Bool
enableCustomerOwnedIp = Maybe Bool
a} :: RestoreDBInstanceToPointInTime)

-- | The database engine to use for the new instance.
--
-- Default: The same as source
--
-- Constraint: Must be compatible with the engine of the source
--
-- Valid Values:
--
-- -   @mariadb@
--
-- -   @mysql@
--
-- -   @oracle-ee@
--
-- -   @oracle-ee-cdb@
--
-- -   @oracle-se2@
--
-- -   @oracle-se2-cdb@
--
-- -   @postgres@
--
-- -   @sqlserver-ee@
--
-- -   @sqlserver-se@
--
-- -   @sqlserver-ex@
--
-- -   @sqlserver-web@
restoreDBInstanceToPointInTime_engine :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Text)
restoreDBInstanceToPointInTime_engine :: (Maybe Text -> f (Maybe Text))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_engine = (RestoreDBInstanceToPointInTime -> Maybe Text)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Text -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Text
engine :: Maybe Text
$sel:engine:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
engine} -> Maybe Text
engine) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Text
a -> RestoreDBInstanceToPointInTime
s {$sel:engine:RestoreDBInstanceToPointInTime' :: Maybe Text
engine = Maybe Text
a} :: RestoreDBInstanceToPointInTime)

-- | The password for the given ARN from the key store in order to access the
-- device.
restoreDBInstanceToPointInTime_tdeCredentialPassword :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Text)
restoreDBInstanceToPointInTime_tdeCredentialPassword :: (Maybe Text -> f (Maybe Text))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_tdeCredentialPassword = (RestoreDBInstanceToPointInTime -> Maybe Text)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Text -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Text
tdeCredentialPassword :: Maybe Text
$sel:tdeCredentialPassword:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
tdeCredentialPassword} -> Maybe Text
tdeCredentialPassword) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Text
a -> RestoreDBInstanceToPointInTime
s {$sel:tdeCredentialPassword:RestoreDBInstanceToPointInTime' :: Maybe Text
tdeCredentialPassword = Maybe Text
a} :: RestoreDBInstanceToPointInTime)

-- | The identifier of the source DB instance from which to restore.
--
-- Constraints:
--
-- -   Must match the identifier of an existing DB instance.
restoreDBInstanceToPointInTime_sourceDBInstanceIdentifier :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Text)
restoreDBInstanceToPointInTime_sourceDBInstanceIdentifier :: (Maybe Text -> f (Maybe Text))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_sourceDBInstanceIdentifier = (RestoreDBInstanceToPointInTime -> Maybe Text)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Text -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Text
sourceDBInstanceIdentifier :: Maybe Text
$sel:sourceDBInstanceIdentifier:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
sourceDBInstanceIdentifier} -> Maybe Text
sourceDBInstanceIdentifier) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Text
a -> RestoreDBInstanceToPointInTime
s {$sel:sourceDBInstanceIdentifier:RestoreDBInstanceToPointInTime' :: Maybe Text
sourceDBInstanceIdentifier = Maybe Text
a} :: RestoreDBInstanceToPointInTime)

-- | The number of CPU cores and the number of threads per core for the DB
-- instance class of the DB instance.
restoreDBInstanceToPointInTime_processorFeatures :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe [ProcessorFeature])
restoreDBInstanceToPointInTime_processorFeatures :: (Maybe [ProcessorFeature] -> f (Maybe [ProcessorFeature]))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_processorFeatures = (RestoreDBInstanceToPointInTime -> Maybe [ProcessorFeature])
-> (RestoreDBInstanceToPointInTime
    -> Maybe [ProcessorFeature] -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe [ProcessorFeature])
     (Maybe [ProcessorFeature])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe [ProcessorFeature]
processorFeatures :: Maybe [ProcessorFeature]
$sel:processorFeatures:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe [ProcessorFeature]
processorFeatures} -> Maybe [ProcessorFeature]
processorFeatures) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe [ProcessorFeature]
a -> RestoreDBInstanceToPointInTime
s {$sel:processorFeatures:RestoreDBInstanceToPointInTime' :: Maybe [ProcessorFeature]
processorFeatures = Maybe [ProcessorFeature]
a} :: RestoreDBInstanceToPointInTime) ((Maybe [ProcessorFeature] -> f (Maybe [ProcessorFeature]))
 -> RestoreDBInstanceToPointInTime
 -> f RestoreDBInstanceToPointInTime)
-> ((Maybe [ProcessorFeature] -> f (Maybe [ProcessorFeature]))
    -> Maybe [ProcessorFeature] -> f (Maybe [ProcessorFeature]))
-> (Maybe [ProcessorFeature] -> f (Maybe [ProcessorFeature]))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [ProcessorFeature]
  [ProcessorFeature]
  [ProcessorFeature]
  [ProcessorFeature]
-> Iso
     (Maybe [ProcessorFeature])
     (Maybe [ProcessorFeature])
     (Maybe [ProcessorFeature])
     (Maybe [ProcessorFeature])
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
  [ProcessorFeature]
  [ProcessorFeature]
  [ProcessorFeature]
  [ProcessorFeature]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The compute and memory capacity of the Amazon RDS DB instance, for
-- example, @db.m4.large@. Not all DB instance classes are available in all
-- Amazon Web Services Regions, or for all database engines. For the full
-- list of DB instance classes, and availability for your engine, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html DB Instance Class>
-- in the /Amazon RDS User Guide./
--
-- Default: The same DBInstanceClass as the original DB instance.
restoreDBInstanceToPointInTime_dbInstanceClass :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Text)
restoreDBInstanceToPointInTime_dbInstanceClass :: (Maybe Text -> f (Maybe Text))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_dbInstanceClass = (RestoreDBInstanceToPointInTime -> Maybe Text)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Text -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Text
dbInstanceClass :: Maybe Text
$sel:dbInstanceClass:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
dbInstanceClass} -> Maybe Text
dbInstanceClass) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Text
a -> RestoreDBInstanceToPointInTime
s {$sel:dbInstanceClass:RestoreDBInstanceToPointInTime' :: Maybe Text
dbInstanceClass = Maybe Text
a} :: RestoreDBInstanceToPointInTime)

-- | License model information for the restored DB instance.
--
-- Default: Same as source.
--
-- Valid values: @license-included@ | @bring-your-own-license@ |
-- @general-public-license@
restoreDBInstanceToPointInTime_licenseModel :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Text)
restoreDBInstanceToPointInTime_licenseModel :: (Maybe Text -> f (Maybe Text))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_licenseModel = (RestoreDBInstanceToPointInTime -> Maybe Text)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Text -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Text
licenseModel :: Maybe Text
$sel:licenseModel:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
licenseModel} -> Maybe Text
licenseModel) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Text
a -> RestoreDBInstanceToPointInTime
s {$sel:licenseModel:RestoreDBInstanceToPointInTime' :: Maybe Text
licenseModel = Maybe Text
a} :: RestoreDBInstanceToPointInTime)

-- | The Amazon Resource Name (ARN) of the replicated automated backups from
-- which to restore, for example,
-- @arn:aws:rds:useast-1:123456789012:auto-backup:ab-L2IJCEXJP7XQ7HOJ4SIEXAMPLE@.
restoreDBInstanceToPointInTime_sourceDBInstanceAutomatedBackupsArn :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Text)
restoreDBInstanceToPointInTime_sourceDBInstanceAutomatedBackupsArn :: (Maybe Text -> f (Maybe Text))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_sourceDBInstanceAutomatedBackupsArn = (RestoreDBInstanceToPointInTime -> Maybe Text)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Text -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Text
sourceDBInstanceAutomatedBackupsArn :: Maybe Text
$sel:sourceDBInstanceAutomatedBackupsArn:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
sourceDBInstanceAutomatedBackupsArn} -> Maybe Text
sourceDBInstanceAutomatedBackupsArn) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Text
a -> RestoreDBInstanceToPointInTime
s {$sel:sourceDBInstanceAutomatedBackupsArn:RestoreDBInstanceToPointInTime' :: Maybe Text
sourceDBInstanceAutomatedBackupsArn = Maybe Text
a} :: RestoreDBInstanceToPointInTime)

-- | The upper limit in gibibytes (GiB) to which Amazon RDS can automatically
-- scale the storage of the DB instance.
--
-- For more information about this setting, including limitations that
-- apply to it, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling Managing capacity automatically with Amazon RDS storage autoscaling>
-- in the /Amazon RDS User Guide/.
restoreDBInstanceToPointInTime_maxAllocatedStorage :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Int)
restoreDBInstanceToPointInTime_maxAllocatedStorage :: (Maybe Int -> f (Maybe Int))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_maxAllocatedStorage = (RestoreDBInstanceToPointInTime -> Maybe Int)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Int -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Int)
     (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Int
maxAllocatedStorage :: Maybe Int
$sel:maxAllocatedStorage:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Int
maxAllocatedStorage} -> Maybe Int
maxAllocatedStorage) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Int
a -> RestoreDBInstanceToPointInTime
s {$sel:maxAllocatedStorage:RestoreDBInstanceToPointInTime' :: Maybe Int
maxAllocatedStorage = Maybe Int
a} :: RestoreDBInstanceToPointInTime)

-- | The name of the DB parameter group to associate with this DB instance.
--
-- If you do not specify a value for @DBParameterGroupName@, then the
-- default @DBParameterGroup@ for the specified DB engine is used.
--
-- Constraints:
--
-- -   If supplied, must match the name of an existing DBParameterGroup.
--
-- -   Must be 1 to 255 letters, numbers, or hyphens.
--
-- -   First character must be a letter.
--
-- -   Can\'t end with a hyphen or contain two consecutive hyphens.
restoreDBInstanceToPointInTime_dbParameterGroupName :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Text)
restoreDBInstanceToPointInTime_dbParameterGroupName :: (Maybe Text -> f (Maybe Text))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_dbParameterGroupName = (RestoreDBInstanceToPointInTime -> Maybe Text)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Text -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Text
dbParameterGroupName :: Maybe Text
$sel:dbParameterGroupName:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
dbParameterGroupName} -> Maybe Text
dbParameterGroupName) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Text
a -> RestoreDBInstanceToPointInTime
s {$sel:dbParameterGroupName:RestoreDBInstanceToPointInTime' :: Maybe Text
dbParameterGroupName = Maybe Text
a} :: RestoreDBInstanceToPointInTime)

-- | The Availability Zone (AZ) where the DB instance will be created.
--
-- Default: A random, system-chosen Availability Zone.
--
-- Constraint: You can\'t specify the @AvailabilityZone@ parameter if the
-- DB instance is a Multi-AZ deployment.
--
-- Example: @us-east-1a@
restoreDBInstanceToPointInTime_availabilityZone :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Text)
restoreDBInstanceToPointInTime_availabilityZone :: (Maybe Text -> f (Maybe Text))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_availabilityZone = (RestoreDBInstanceToPointInTime -> Maybe Text)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Text -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Text
availabilityZone :: Maybe Text
$sel:availabilityZone:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
availabilityZone} -> Maybe Text
availabilityZone) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Text
a -> RestoreDBInstanceToPointInTime
s {$sel:availabilityZone:RestoreDBInstanceToPointInTime' :: Maybe Text
availabilityZone = Maybe Text
a} :: RestoreDBInstanceToPointInTime)

-- | A list of EC2 VPC security groups to associate with this DB instance.
--
-- Default: The default EC2 VPC security group for the DB subnet group\'s
-- VPC.
restoreDBInstanceToPointInTime_vpcSecurityGroupIds :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe [Prelude.Text])
restoreDBInstanceToPointInTime_vpcSecurityGroupIds :: (Maybe [Text] -> f (Maybe [Text]))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_vpcSecurityGroupIds = (RestoreDBInstanceToPointInTime -> Maybe [Text])
-> (RestoreDBInstanceToPointInTime
    -> Maybe [Text] -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe [Text])
     (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe [Text]
vpcSecurityGroupIds :: Maybe [Text]
$sel:vpcSecurityGroupIds:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe [Text]
vpcSecurityGroupIds} -> Maybe [Text]
vpcSecurityGroupIds) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe [Text]
a -> RestoreDBInstanceToPointInTime
s {$sel:vpcSecurityGroupIds:RestoreDBInstanceToPointInTime' :: Maybe [Text]
vpcSecurityGroupIds = Maybe [Text]
a} :: RestoreDBInstanceToPointInTime) ((Maybe [Text] -> f (Maybe [Text]))
 -> RestoreDBInstanceToPointInTime
 -> f RestoreDBInstanceToPointInTime)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
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

-- | A value that indicates whether the DB instance is a Multi-AZ deployment.
--
-- Constraint: You can\'t specify the @AvailabilityZone@ parameter if the
-- DB instance is a Multi-AZ deployment.
restoreDBInstanceToPointInTime_multiAZ :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Bool)
restoreDBInstanceToPointInTime_multiAZ :: (Maybe Bool -> f (Maybe Bool))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_multiAZ = (RestoreDBInstanceToPointInTime -> Maybe Bool)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Bool -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Bool
multiAZ :: Maybe Bool
$sel:multiAZ:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Bool
multiAZ} -> Maybe Bool
multiAZ) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Bool
a -> RestoreDBInstanceToPointInTime
s {$sel:multiAZ:RestoreDBInstanceToPointInTime' :: Maybe Bool
multiAZ = Maybe Bool
a} :: RestoreDBInstanceToPointInTime)

-- | The resource ID of the source DB instance from which to restore.
restoreDBInstanceToPointInTime_sourceDbiResourceId :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Text)
restoreDBInstanceToPointInTime_sourceDbiResourceId :: (Maybe Text -> f (Maybe Text))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_sourceDbiResourceId = (RestoreDBInstanceToPointInTime -> Maybe Text)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Text -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Text
sourceDbiResourceId :: Maybe Text
$sel:sourceDbiResourceId:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
sourceDbiResourceId} -> Maybe Text
sourceDbiResourceId) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Text
a -> RestoreDBInstanceToPointInTime
s {$sel:sourceDbiResourceId:RestoreDBInstanceToPointInTime' :: Maybe Text
sourceDbiResourceId = Maybe Text
a} :: RestoreDBInstanceToPointInTime)

-- | The name of the option group to be used for the restored DB instance.
--
-- Permanent options, such as the TDE option for Oracle Advanced Security
-- TDE, can\'t be removed from an option group, and that option group
-- can\'t be removed from a DB instance once it is associated with a DB
-- instance
restoreDBInstanceToPointInTime_optionGroupName :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Text)
restoreDBInstanceToPointInTime_optionGroupName :: (Maybe Text -> f (Maybe Text))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_optionGroupName = (RestoreDBInstanceToPointInTime -> Maybe Text)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Text -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Text
optionGroupName :: Maybe Text
$sel:optionGroupName:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
optionGroupName} -> Maybe Text
optionGroupName) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Text
a -> RestoreDBInstanceToPointInTime
s {$sel:optionGroupName:RestoreDBInstanceToPointInTime' :: Maybe Text
optionGroupName = Maybe Text
a} :: RestoreDBInstanceToPointInTime)

-- | A value that indicates whether to copy all tags from the restored DB
-- instance to snapshots of the DB instance. By default, tags are not
-- copied.
restoreDBInstanceToPointInTime_copyTagsToSnapshot :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Bool)
restoreDBInstanceToPointInTime_copyTagsToSnapshot :: (Maybe Bool -> f (Maybe Bool))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_copyTagsToSnapshot = (RestoreDBInstanceToPointInTime -> Maybe Bool)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Bool -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Bool
copyTagsToSnapshot :: Maybe Bool
$sel:copyTagsToSnapshot:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Bool
copyTagsToSnapshot} -> Maybe Bool
copyTagsToSnapshot) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Bool
a -> RestoreDBInstanceToPointInTime
s {$sel:copyTagsToSnapshot:RestoreDBInstanceToPointInTime' :: Maybe Bool
copyTagsToSnapshot = Maybe Bool
a} :: RestoreDBInstanceToPointInTime)

-- | The ARN from the key store with which to associate the instance for TDE
-- encryption.
restoreDBInstanceToPointInTime_tdeCredentialArn :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Text)
restoreDBInstanceToPointInTime_tdeCredentialArn :: (Maybe Text -> f (Maybe Text))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_tdeCredentialArn = (RestoreDBInstanceToPointInTime -> Maybe Text)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Text -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Text
tdeCredentialArn :: Maybe Text
$sel:tdeCredentialArn:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
tdeCredentialArn} -> Maybe Text
tdeCredentialArn) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Text
a -> RestoreDBInstanceToPointInTime
s {$sel:tdeCredentialArn:RestoreDBInstanceToPointInTime' :: Maybe Text
tdeCredentialArn = Maybe Text
a} :: RestoreDBInstanceToPointInTime)

-- | Specify the name of the IAM role to be used when making API calls to the
-- Directory Service.
restoreDBInstanceToPointInTime_domainIAMRoleName :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Text)
restoreDBInstanceToPointInTime_domainIAMRoleName :: (Maybe Text -> f (Maybe Text))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_domainIAMRoleName = (RestoreDBInstanceToPointInTime -> Maybe Text)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Text -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Text
domainIAMRoleName :: Maybe Text
$sel:domainIAMRoleName:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
domainIAMRoleName} -> Maybe Text
domainIAMRoleName) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Text
a -> RestoreDBInstanceToPointInTime
s {$sel:domainIAMRoleName:RestoreDBInstanceToPointInTime' :: Maybe Text
domainIAMRoleName = Maybe Text
a} :: RestoreDBInstanceToPointInTime)

-- | Undocumented member.
restoreDBInstanceToPointInTime_tags :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe [Tag])
restoreDBInstanceToPointInTime_tags :: (Maybe [Tag] -> f (Maybe [Tag]))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_tags = (RestoreDBInstanceToPointInTime -> Maybe [Tag])
-> (RestoreDBInstanceToPointInTime
    -> Maybe [Tag] -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe [Tag])
     (Maybe [Tag])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe [Tag]
a -> RestoreDBInstanceToPointInTime
s {$sel:tags:RestoreDBInstanceToPointInTime' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: RestoreDBInstanceToPointInTime) ((Maybe [Tag] -> f (Maybe [Tag]))
 -> RestoreDBInstanceToPointInTime
 -> f RestoreDBInstanceToPointInTime)
-> ((Maybe [Tag] -> f (Maybe [Tag]))
    -> Maybe [Tag] -> f (Maybe [Tag]))
-> (Maybe [Tag] -> f (Maybe [Tag]))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Tag] [Tag] [Tag] [Tag]
-> Iso (Maybe [Tag]) (Maybe [Tag]) (Maybe [Tag]) (Maybe [Tag])
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 [Tag] [Tag] [Tag] [Tag]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The port number on which the database accepts connections.
--
-- Constraints: Value must be @1150-65535@
--
-- Default: The same port as the original DB instance.
restoreDBInstanceToPointInTime_port :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Int)
restoreDBInstanceToPointInTime_port :: (Maybe Int -> f (Maybe Int))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_port = (RestoreDBInstanceToPointInTime -> Maybe Int)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Int -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Int)
     (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Int
port :: Maybe Int
$sel:port:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Int
port} -> Maybe Int
port) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Int
a -> RestoreDBInstanceToPointInTime
s {$sel:port:RestoreDBInstanceToPointInTime' :: Maybe Int
port = Maybe Int
a} :: RestoreDBInstanceToPointInTime)

-- | A value that indicates whether to enable mapping of Amazon Web Services
-- Identity and Access Management (IAM) accounts to database accounts. By
-- default, mapping is disabled.
--
-- For more information about IAM database authentication, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.html IAM Database Authentication for MySQL and PostgreSQL>
-- in the /Amazon RDS User Guide./
restoreDBInstanceToPointInTime_enableIAMDatabaseAuthentication :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Bool)
restoreDBInstanceToPointInTime_enableIAMDatabaseAuthentication :: (Maybe Bool -> f (Maybe Bool))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_enableIAMDatabaseAuthentication = (RestoreDBInstanceToPointInTime -> Maybe Bool)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Bool -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Bool
enableIAMDatabaseAuthentication :: Maybe Bool
$sel:enableIAMDatabaseAuthentication:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Bool
enableIAMDatabaseAuthentication} -> Maybe Bool
enableIAMDatabaseAuthentication) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Bool
a -> RestoreDBInstanceToPointInTime
s {$sel:enableIAMDatabaseAuthentication:RestoreDBInstanceToPointInTime' :: Maybe Bool
enableIAMDatabaseAuthentication = Maybe Bool
a} :: RestoreDBInstanceToPointInTime)

-- | A value that indicates whether the DB instance class of the DB instance
-- uses its default processor features.
restoreDBInstanceToPointInTime_useDefaultProcessorFeatures :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Bool)
restoreDBInstanceToPointInTime_useDefaultProcessorFeatures :: (Maybe Bool -> f (Maybe Bool))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_useDefaultProcessorFeatures = (RestoreDBInstanceToPointInTime -> Maybe Bool)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Bool -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Bool
useDefaultProcessorFeatures :: Maybe Bool
$sel:useDefaultProcessorFeatures:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Bool
useDefaultProcessorFeatures} -> Maybe Bool
useDefaultProcessorFeatures) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Bool
a -> RestoreDBInstanceToPointInTime
s {$sel:useDefaultProcessorFeatures:RestoreDBInstanceToPointInTime' :: Maybe Bool
useDefaultProcessorFeatures = Maybe Bool
a} :: RestoreDBInstanceToPointInTime)

-- | Specifies the storage type to be associated with the DB instance.
--
-- Valid values: @standard | gp2 | io1@
--
-- If you specify @io1@, you must also include a value for the @Iops@
-- parameter.
--
-- Default: @io1@ if the @Iops@ parameter is specified, otherwise @gp2@
restoreDBInstanceToPointInTime_storageType :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Text)
restoreDBInstanceToPointInTime_storageType :: (Maybe Text -> f (Maybe Text))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_storageType = (RestoreDBInstanceToPointInTime -> Maybe Text)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Text -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Text
storageType :: Maybe Text
$sel:storageType:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
storageType} -> Maybe Text
storageType) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Text
a -> RestoreDBInstanceToPointInTime
s {$sel:storageType:RestoreDBInstanceToPointInTime' :: Maybe Text
storageType = Maybe Text
a} :: RestoreDBInstanceToPointInTime)

-- | The list of logs that the restored DB instance is to export to
-- CloudWatch Logs. The values in the list depend on the DB engine being
-- used. For more information, see
-- <https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.html#USER_LogAccess.Procedural.UploadtoCloudWatch Publishing Database Logs to Amazon CloudWatch Logs>
-- in the /Amazon RDS User Guide/.
restoreDBInstanceToPointInTime_enableCloudwatchLogsExports :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe [Prelude.Text])
restoreDBInstanceToPointInTime_enableCloudwatchLogsExports :: (Maybe [Text] -> f (Maybe [Text]))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_enableCloudwatchLogsExports = (RestoreDBInstanceToPointInTime -> Maybe [Text])
-> (RestoreDBInstanceToPointInTime
    -> Maybe [Text] -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe [Text])
     (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe [Text]
enableCloudwatchLogsExports :: Maybe [Text]
$sel:enableCloudwatchLogsExports:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe [Text]
enableCloudwatchLogsExports} -> Maybe [Text]
enableCloudwatchLogsExports) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe [Text]
a -> RestoreDBInstanceToPointInTime
s {$sel:enableCloudwatchLogsExports:RestoreDBInstanceToPointInTime' :: Maybe [Text]
enableCloudwatchLogsExports = Maybe [Text]
a} :: RestoreDBInstanceToPointInTime) ((Maybe [Text] -> f (Maybe [Text]))
 -> RestoreDBInstanceToPointInTime
 -> f RestoreDBInstanceToPointInTime)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
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 database name for the restored DB instance.
--
-- This parameter isn\'t used for the MySQL or MariaDB engines.
restoreDBInstanceToPointInTime_dbName :: Lens.Lens' RestoreDBInstanceToPointInTime (Prelude.Maybe Prelude.Text)
restoreDBInstanceToPointInTime_dbName :: (Maybe Text -> f (Maybe Text))
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_dbName = (RestoreDBInstanceToPointInTime -> Maybe Text)
-> (RestoreDBInstanceToPointInTime
    -> Maybe Text -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Maybe Text
dbName :: Maybe Text
$sel:dbName:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
dbName} -> Maybe Text
dbName) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Maybe Text
a -> RestoreDBInstanceToPointInTime
s {$sel:dbName:RestoreDBInstanceToPointInTime' :: Maybe Text
dbName = Maybe Text
a} :: RestoreDBInstanceToPointInTime)

-- | The name of the new DB instance to be created.
--
-- Constraints:
--
-- -   Must contain from 1 to 63 letters, numbers, or hyphens
--
-- -   First character must be a letter
--
-- -   Can\'t end with a hyphen or contain two consecutive hyphens
restoreDBInstanceToPointInTime_targetDBInstanceIdentifier :: Lens.Lens' RestoreDBInstanceToPointInTime Prelude.Text
restoreDBInstanceToPointInTime_targetDBInstanceIdentifier :: (Text -> f Text)
-> RestoreDBInstanceToPointInTime
-> f RestoreDBInstanceToPointInTime
restoreDBInstanceToPointInTime_targetDBInstanceIdentifier = (RestoreDBInstanceToPointInTime -> Text)
-> (RestoreDBInstanceToPointInTime
    -> Text -> RestoreDBInstanceToPointInTime)
-> Lens
     RestoreDBInstanceToPointInTime
     RestoreDBInstanceToPointInTime
     Text
     Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTime' {Text
targetDBInstanceIdentifier :: Text
$sel:targetDBInstanceIdentifier:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Text
targetDBInstanceIdentifier} -> Text
targetDBInstanceIdentifier) (\s :: RestoreDBInstanceToPointInTime
s@RestoreDBInstanceToPointInTime' {} Text
a -> RestoreDBInstanceToPointInTime
s {$sel:targetDBInstanceIdentifier:RestoreDBInstanceToPointInTime' :: Text
targetDBInstanceIdentifier = Text
a} :: RestoreDBInstanceToPointInTime)

instance
  Core.AWSRequest
    RestoreDBInstanceToPointInTime
  where
  type
    AWSResponse RestoreDBInstanceToPointInTime =
      RestoreDBInstanceToPointInTimeResponse
  request :: RestoreDBInstanceToPointInTime
-> Request RestoreDBInstanceToPointInTime
request = Service
-> RestoreDBInstanceToPointInTime
-> Request RestoreDBInstanceToPointInTime
forall a. ToRequest a => Service -> a -> Request a
Request.postQuery Service
defaultService
  response :: Logger
-> Service
-> Proxy RestoreDBInstanceToPointInTime
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse RestoreDBInstanceToPointInTime)))
response =
    Text
-> (Int
    -> ResponseHeaders
    -> [Node]
    -> Either String (AWSResponse RestoreDBInstanceToPointInTime))
-> Logger
-> Service
-> Proxy RestoreDBInstanceToPointInTime
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse RestoreDBInstanceToPointInTime)))
forall (m :: * -> *) a.
MonadResource m =>
Text
-> (Int
    -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> Logger
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXMLWrapper
      Text
"RestoreDBInstanceToPointInTimeResult"
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe DBInstance -> Int -> RestoreDBInstanceToPointInTimeResponse
RestoreDBInstanceToPointInTimeResponse'
            (Maybe DBInstance -> Int -> RestoreDBInstanceToPointInTimeResponse)
-> Either String (Maybe DBInstance)
-> Either String (Int -> RestoreDBInstanceToPointInTimeResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x [Node] -> Text -> Either String (Maybe DBInstance)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"DBInstance")
            Either String (Int -> RestoreDBInstanceToPointInTimeResponse)
-> Either String Int
-> Either String RestoreDBInstanceToPointInTimeResponse
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))
      )

instance
  Prelude.Hashable
    RestoreDBInstanceToPointInTime

instance
  Prelude.NFData
    RestoreDBInstanceToPointInTime

instance
  Core.ToHeaders
    RestoreDBInstanceToPointInTime
  where
  toHeaders :: RestoreDBInstanceToPointInTime -> ResponseHeaders
toHeaders = ResponseHeaders
-> RestoreDBInstanceToPointInTime -> ResponseHeaders
forall a b. a -> b -> a
Prelude.const ResponseHeaders
forall a. Monoid a => a
Prelude.mempty

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

instance Core.ToQuery RestoreDBInstanceToPointInTime where
  toQuery :: RestoreDBInstanceToPointInTime -> QueryString
toQuery RestoreDBInstanceToPointInTime' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe [ProcessorFeature]
Maybe [Tag]
Maybe Text
Maybe ISO8601
Text
targetDBInstanceIdentifier :: Text
dbName :: Maybe Text
enableCloudwatchLogsExports :: Maybe [Text]
storageType :: Maybe Text
useDefaultProcessorFeatures :: Maybe Bool
enableIAMDatabaseAuthentication :: Maybe Bool
port :: Maybe Int
tags :: Maybe [Tag]
domainIAMRoleName :: Maybe Text
tdeCredentialArn :: Maybe Text
copyTagsToSnapshot :: Maybe Bool
optionGroupName :: Maybe Text
sourceDbiResourceId :: Maybe Text
multiAZ :: Maybe Bool
vpcSecurityGroupIds :: Maybe [Text]
availabilityZone :: Maybe Text
dbParameterGroupName :: Maybe Text
maxAllocatedStorage :: Maybe Int
sourceDBInstanceAutomatedBackupsArn :: Maybe Text
licenseModel :: Maybe Text
dbInstanceClass :: Maybe Text
processorFeatures :: Maybe [ProcessorFeature]
sourceDBInstanceIdentifier :: Maybe Text
tdeCredentialPassword :: Maybe Text
engine :: Maybe Text
enableCustomerOwnedIp :: Maybe Bool
domain :: Maybe Text
iops :: Maybe Int
restoreTime :: Maybe ISO8601
dbSubnetGroupName :: Maybe Text
autoMinorVersionUpgrade :: Maybe Bool
publiclyAccessible :: Maybe Bool
useLatestRestorableTime :: Maybe Bool
deletionProtection :: Maybe Bool
$sel:targetDBInstanceIdentifier:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Text
$sel:dbName:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
$sel:enableCloudwatchLogsExports:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe [Text]
$sel:storageType:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
$sel:useDefaultProcessorFeatures:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Bool
$sel:enableIAMDatabaseAuthentication:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Bool
$sel:port:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Int
$sel:tags:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe [Tag]
$sel:domainIAMRoleName:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
$sel:tdeCredentialArn:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
$sel:copyTagsToSnapshot:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Bool
$sel:optionGroupName:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
$sel:sourceDbiResourceId:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
$sel:multiAZ:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Bool
$sel:vpcSecurityGroupIds:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe [Text]
$sel:availabilityZone:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
$sel:dbParameterGroupName:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
$sel:maxAllocatedStorage:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Int
$sel:sourceDBInstanceAutomatedBackupsArn:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
$sel:licenseModel:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
$sel:dbInstanceClass:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
$sel:processorFeatures:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe [ProcessorFeature]
$sel:sourceDBInstanceIdentifier:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
$sel:tdeCredentialPassword:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
$sel:engine:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
$sel:enableCustomerOwnedIp:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Bool
$sel:domain:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
$sel:iops:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Int
$sel:restoreTime:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe ISO8601
$sel:dbSubnetGroupName:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Text
$sel:autoMinorVersionUpgrade:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Bool
$sel:publiclyAccessible:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Bool
$sel:useLatestRestorableTime:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Bool
$sel:deletionProtection:RestoreDBInstanceToPointInTime' :: RestoreDBInstanceToPointInTime -> Maybe Bool
..} =
    [QueryString] -> QueryString
forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          ByteString -> ByteString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: ( ByteString
"RestoreDBInstanceToPointInTime" ::
                      Prelude.ByteString
                  ),
        ByteString
"Version"
          ByteString -> ByteString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: (ByteString
"2014-10-31" :: Prelude.ByteString),
        ByteString
"DeletionProtection" ByteString -> Maybe Bool -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Bool
deletionProtection,
        ByteString
"UseLatestRestorableTime"
          ByteString -> Maybe Bool -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Bool
useLatestRestorableTime,
        ByteString
"PubliclyAccessible" ByteString -> Maybe Bool -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Bool
publiclyAccessible,
        ByteString
"AutoMinorVersionUpgrade"
          ByteString -> Maybe Bool -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Bool
autoMinorVersionUpgrade,
        ByteString
"DBSubnetGroupName" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
dbSubnetGroupName,
        ByteString
"RestoreTime" ByteString -> Maybe ISO8601 -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe ISO8601
restoreTime,
        ByteString
"Iops" ByteString -> Maybe Int -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Int
iops,
        ByteString
"Domain" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
domain,
        ByteString
"EnableCustomerOwnedIp"
          ByteString -> Maybe Bool -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Bool
enableCustomerOwnedIp,
        ByteString
"Engine" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
engine,
        ByteString
"TdeCredentialPassword"
          ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
tdeCredentialPassword,
        ByteString
"SourceDBInstanceIdentifier"
          ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
sourceDBInstanceIdentifier,
        ByteString
"ProcessorFeatures"
          ByteString -> QueryString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe QueryString -> QueryString
forall a. ToQuery a => a -> QueryString
Core.toQuery
            ( ByteString -> [ProcessorFeature] -> QueryString
forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Core.toQueryList ByteString
"ProcessorFeature"
                ([ProcessorFeature] -> QueryString)
-> Maybe [ProcessorFeature] -> Maybe QueryString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [ProcessorFeature]
processorFeatures
            ),
        ByteString
"DBInstanceClass" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
dbInstanceClass,
        ByteString
"LicenseModel" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
licenseModel,
        ByteString
"SourceDBInstanceAutomatedBackupsArn"
          ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
sourceDBInstanceAutomatedBackupsArn,
        ByteString
"MaxAllocatedStorage" ByteString -> Maybe Int -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Int
maxAllocatedStorage,
        ByteString
"DBParameterGroupName" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
dbParameterGroupName,
        ByteString
"AvailabilityZone" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
availabilityZone,
        ByteString
"VpcSecurityGroupIds"
          ByteString -> QueryString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe QueryString -> QueryString
forall a. ToQuery a => a -> QueryString
Core.toQuery
            ( ByteString -> [Text] -> QueryString
forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Core.toQueryList ByteString
"VpcSecurityGroupId"
                ([Text] -> QueryString) -> Maybe [Text] -> Maybe QueryString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
vpcSecurityGroupIds
            ),
        ByteString
"MultiAZ" ByteString -> Maybe Bool -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Bool
multiAZ,
        ByteString
"SourceDbiResourceId" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
sourceDbiResourceId,
        ByteString
"OptionGroupName" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
optionGroupName,
        ByteString
"CopyTagsToSnapshot" ByteString -> Maybe Bool -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Bool
copyTagsToSnapshot,
        ByteString
"TdeCredentialArn" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
tdeCredentialArn,
        ByteString
"DomainIAMRoleName" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
domainIAMRoleName,
        ByteString
"Tags"
          ByteString -> QueryString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe QueryString -> QueryString
forall a. ToQuery a => a -> QueryString
Core.toQuery
            (ByteString -> [Tag] -> QueryString
forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Core.toQueryList ByteString
"Tag" ([Tag] -> QueryString) -> Maybe [Tag] -> Maybe QueryString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Tag]
tags),
        ByteString
"Port" ByteString -> Maybe Int -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Int
port,
        ByteString
"EnableIAMDatabaseAuthentication"
          ByteString -> Maybe Bool -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Bool
enableIAMDatabaseAuthentication,
        ByteString
"UseDefaultProcessorFeatures"
          ByteString -> Maybe Bool -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Bool
useDefaultProcessorFeatures,
        ByteString
"StorageType" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
storageType,
        ByteString
"EnableCloudwatchLogsExports"
          ByteString -> QueryString -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe QueryString -> QueryString
forall a. ToQuery a => a -> QueryString
Core.toQuery
            ( ByteString -> [Text] -> QueryString
forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Core.toQueryList ByteString
"member"
                ([Text] -> QueryString) -> Maybe [Text] -> Maybe QueryString
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
enableCloudwatchLogsExports
            ),
        ByteString
"DBName" ByteString -> Maybe Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Maybe Text
dbName,
        ByteString
"TargetDBInstanceIdentifier"
          ByteString -> Text -> QueryString
forall a. ToQuery a => ByteString -> a -> QueryString
Core.=: Text
targetDBInstanceIdentifier
      ]

-- | /See:/ 'newRestoreDBInstanceToPointInTimeResponse' smart constructor.
data RestoreDBInstanceToPointInTimeResponse = RestoreDBInstanceToPointInTimeResponse'
  { RestoreDBInstanceToPointInTimeResponse -> Maybe DBInstance
dbInstance :: Prelude.Maybe DBInstance,
    -- | The response's http status code.
    RestoreDBInstanceToPointInTimeResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (RestoreDBInstanceToPointInTimeResponse
-> RestoreDBInstanceToPointInTimeResponse -> Bool
(RestoreDBInstanceToPointInTimeResponse
 -> RestoreDBInstanceToPointInTimeResponse -> Bool)
-> (RestoreDBInstanceToPointInTimeResponse
    -> RestoreDBInstanceToPointInTimeResponse -> Bool)
-> Eq RestoreDBInstanceToPointInTimeResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RestoreDBInstanceToPointInTimeResponse
-> RestoreDBInstanceToPointInTimeResponse -> Bool
$c/= :: RestoreDBInstanceToPointInTimeResponse
-> RestoreDBInstanceToPointInTimeResponse -> Bool
== :: RestoreDBInstanceToPointInTimeResponse
-> RestoreDBInstanceToPointInTimeResponse -> Bool
$c== :: RestoreDBInstanceToPointInTimeResponse
-> RestoreDBInstanceToPointInTimeResponse -> Bool
Prelude.Eq, ReadPrec [RestoreDBInstanceToPointInTimeResponse]
ReadPrec RestoreDBInstanceToPointInTimeResponse
Int -> ReadS RestoreDBInstanceToPointInTimeResponse
ReadS [RestoreDBInstanceToPointInTimeResponse]
(Int -> ReadS RestoreDBInstanceToPointInTimeResponse)
-> ReadS [RestoreDBInstanceToPointInTimeResponse]
-> ReadPrec RestoreDBInstanceToPointInTimeResponse
-> ReadPrec [RestoreDBInstanceToPointInTimeResponse]
-> Read RestoreDBInstanceToPointInTimeResponse
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [RestoreDBInstanceToPointInTimeResponse]
$creadListPrec :: ReadPrec [RestoreDBInstanceToPointInTimeResponse]
readPrec :: ReadPrec RestoreDBInstanceToPointInTimeResponse
$creadPrec :: ReadPrec RestoreDBInstanceToPointInTimeResponse
readList :: ReadS [RestoreDBInstanceToPointInTimeResponse]
$creadList :: ReadS [RestoreDBInstanceToPointInTimeResponse]
readsPrec :: Int -> ReadS RestoreDBInstanceToPointInTimeResponse
$creadsPrec :: Int -> ReadS RestoreDBInstanceToPointInTimeResponse
Prelude.Read, Int -> RestoreDBInstanceToPointInTimeResponse -> ShowS
[RestoreDBInstanceToPointInTimeResponse] -> ShowS
RestoreDBInstanceToPointInTimeResponse -> String
(Int -> RestoreDBInstanceToPointInTimeResponse -> ShowS)
-> (RestoreDBInstanceToPointInTimeResponse -> String)
-> ([RestoreDBInstanceToPointInTimeResponse] -> ShowS)
-> Show RestoreDBInstanceToPointInTimeResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RestoreDBInstanceToPointInTimeResponse] -> ShowS
$cshowList :: [RestoreDBInstanceToPointInTimeResponse] -> ShowS
show :: RestoreDBInstanceToPointInTimeResponse -> String
$cshow :: RestoreDBInstanceToPointInTimeResponse -> String
showsPrec :: Int -> RestoreDBInstanceToPointInTimeResponse -> ShowS
$cshowsPrec :: Int -> RestoreDBInstanceToPointInTimeResponse -> ShowS
Prelude.Show, (forall x.
 RestoreDBInstanceToPointInTimeResponse
 -> Rep RestoreDBInstanceToPointInTimeResponse x)
-> (forall x.
    Rep RestoreDBInstanceToPointInTimeResponse x
    -> RestoreDBInstanceToPointInTimeResponse)
-> Generic RestoreDBInstanceToPointInTimeResponse
forall x.
Rep RestoreDBInstanceToPointInTimeResponse x
-> RestoreDBInstanceToPointInTimeResponse
forall x.
RestoreDBInstanceToPointInTimeResponse
-> Rep RestoreDBInstanceToPointInTimeResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep RestoreDBInstanceToPointInTimeResponse x
-> RestoreDBInstanceToPointInTimeResponse
$cfrom :: forall x.
RestoreDBInstanceToPointInTimeResponse
-> Rep RestoreDBInstanceToPointInTimeResponse x
Prelude.Generic)

-- |
-- Create a value of 'RestoreDBInstanceToPointInTimeResponse' 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:
--
-- 'dbInstance', 'restoreDBInstanceToPointInTimeResponse_dbInstance' - Undocumented member.
--
-- 'httpStatus', 'restoreDBInstanceToPointInTimeResponse_httpStatus' - The response's http status code.
newRestoreDBInstanceToPointInTimeResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  RestoreDBInstanceToPointInTimeResponse
newRestoreDBInstanceToPointInTimeResponse :: Int -> RestoreDBInstanceToPointInTimeResponse
newRestoreDBInstanceToPointInTimeResponse
  Int
pHttpStatus_ =
    RestoreDBInstanceToPointInTimeResponse' :: Maybe DBInstance -> Int -> RestoreDBInstanceToPointInTimeResponse
RestoreDBInstanceToPointInTimeResponse'
      { $sel:dbInstance:RestoreDBInstanceToPointInTimeResponse' :: Maybe DBInstance
dbInstance =
          Maybe DBInstance
forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:RestoreDBInstanceToPointInTimeResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | Undocumented member.
restoreDBInstanceToPointInTimeResponse_dbInstance :: Lens.Lens' RestoreDBInstanceToPointInTimeResponse (Prelude.Maybe DBInstance)
restoreDBInstanceToPointInTimeResponse_dbInstance :: (Maybe DBInstance -> f (Maybe DBInstance))
-> RestoreDBInstanceToPointInTimeResponse
-> f RestoreDBInstanceToPointInTimeResponse
restoreDBInstanceToPointInTimeResponse_dbInstance = (RestoreDBInstanceToPointInTimeResponse -> Maybe DBInstance)
-> (RestoreDBInstanceToPointInTimeResponse
    -> Maybe DBInstance -> RestoreDBInstanceToPointInTimeResponse)
-> Lens
     RestoreDBInstanceToPointInTimeResponse
     RestoreDBInstanceToPointInTimeResponse
     (Maybe DBInstance)
     (Maybe DBInstance)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RestoreDBInstanceToPointInTimeResponse' {Maybe DBInstance
dbInstance :: Maybe DBInstance
$sel:dbInstance:RestoreDBInstanceToPointInTimeResponse' :: RestoreDBInstanceToPointInTimeResponse -> Maybe DBInstance
dbInstance} -> Maybe DBInstance
dbInstance) (\s :: RestoreDBInstanceToPointInTimeResponse
s@RestoreDBInstanceToPointInTimeResponse' {} Maybe DBInstance
a -> RestoreDBInstanceToPointInTimeResponse
s {$sel:dbInstance:RestoreDBInstanceToPointInTimeResponse' :: Maybe DBInstance
dbInstance = Maybe DBInstance
a} :: RestoreDBInstanceToPointInTimeResponse)

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

instance
  Prelude.NFData
    RestoreDBInstanceToPointInTimeResponse