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

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

-- |
-- Module      : Amazonka.DeviceFarm.Types.RemoteAccessSession
-- 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)
module Amazonka.DeviceFarm.Types.RemoteAccessSession where

import qualified Amazonka.Core as Core
import Amazonka.DeviceFarm.Types.BillingMethod
import Amazonka.DeviceFarm.Types.Device
import Amazonka.DeviceFarm.Types.DeviceMinutes
import Amazonka.DeviceFarm.Types.ExecutionResult
import Amazonka.DeviceFarm.Types.ExecutionStatus
import Amazonka.DeviceFarm.Types.InteractionMode
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Represents information about the remote access session.
--
-- /See:/ 'newRemoteAccessSession' smart constructor.
data RemoteAccessSession = RemoteAccessSession'
  { -- | The billing method of the remote access session. Possible values include
    -- @METERED@ or @UNMETERED@. For more information about metered devices,
    -- see
    -- <https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html#welcome-terminology AWS Device Farm terminology>.
    RemoteAccessSession -> Maybe BillingMethod
billingMethod :: Prelude.Maybe BillingMethod,
    -- | Unique identifier of your client for the remote access session. Only
    -- returned if remote debugging is enabled for the remote access session.
    --
    -- Remote debugging is
    -- <https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html no longer supported>.
    RemoteAccessSession -> Maybe Text
clientId :: Prelude.Maybe Prelude.Text,
    -- | Unique device identifier for the remote device. Only returned if remote
    -- debugging is enabled for the remote access session.
    --
    -- Remote debugging is
    -- <https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html no longer supported>.
    RemoteAccessSession -> Maybe Text
deviceUdid :: Prelude.Maybe Prelude.Text,
    -- | When set to @true@, for private devices, Device Farm does not sign your
    -- app again. For public devices, Device Farm always signs your apps again.
    --
    -- For more information about how Device Farm re-signs your apps, see
    -- <https://aws.amazon.com/device-farm/faq/ Do you modify my app?> in the
    -- /AWS Device Farm FAQs/.
    RemoteAccessSession -> Maybe Bool
skipAppResign :: Prelude.Maybe Prelude.Bool,
    -- | The ARN of the instance.
    RemoteAccessSession -> Maybe Text
instanceArn :: Prelude.Maybe Prelude.Text,
    -- | The status of the remote access session. Can be any of the following:
    --
    -- -   PENDING.
    --
    -- -   PENDING_CONCURRENCY.
    --
    -- -   PENDING_DEVICE.
    --
    -- -   PROCESSING.
    --
    -- -   SCHEDULING.
    --
    -- -   PREPARING.
    --
    -- -   RUNNING.
    --
    -- -   COMPLETED.
    --
    -- -   STOPPING.
    RemoteAccessSession -> Maybe ExecutionStatus
status :: Prelude.Maybe ExecutionStatus,
    -- | This flag is set to @true@ if remote recording is enabled for the remote
    -- access session.
    RemoteAccessSession -> Maybe Bool
remoteRecordEnabled :: Prelude.Maybe Prelude.Bool,
    -- | The Amazon Resource Name (ARN) of the remote access session.
    RemoteAccessSession -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The ARN for the app to be recorded in the remote access session.
    RemoteAccessSession -> Maybe Text
remoteRecordAppArn :: Prelude.Maybe Prelude.Text,
    -- | The date and time the remote access session was created.
    RemoteAccessSession -> Maybe POSIX
created :: Prelude.Maybe Core.POSIX,
    -- | The device (phone or tablet) used in the remote access session.
    RemoteAccessSession -> Maybe Device
device :: Prelude.Maybe Device,
    -- | The date and time the remote access session was stopped.
    RemoteAccessSession -> Maybe POSIX
stopped :: Prelude.Maybe Core.POSIX,
    -- | The result of the remote access session. Can be any of the following:
    --
    -- -   PENDING.
    --
    -- -   PASSED.
    --
    -- -   WARNED.
    --
    -- -   FAILED.
    --
    -- -   SKIPPED.
    --
    -- -   ERRORED.
    --
    -- -   STOPPED.
    RemoteAccessSession -> Maybe ExecutionResult
result :: Prelude.Maybe ExecutionResult,
    -- | The name of the remote access session.
    RemoteAccessSession -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The number of minutes a device is used in a remote access session
    -- (including setup and teardown minutes).
    RemoteAccessSession -> Maybe DeviceMinutes
deviceMinutes :: Prelude.Maybe DeviceMinutes,
    -- | This flag is set to @true@ if remote debugging is enabled for the remote
    -- access session.
    --
    -- Remote debugging is
    -- <https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html no longer supported>.
    RemoteAccessSession -> Maybe Bool
remoteDebugEnabled :: Prelude.Maybe Prelude.Bool,
    -- | The endpoint for the remote access sesssion.
    RemoteAccessSession -> Maybe Text
endpoint :: Prelude.Maybe Prelude.Text,
    -- | A message about the remote access session.
    RemoteAccessSession -> Maybe Text
message :: Prelude.Maybe Prelude.Text,
    -- | IP address of the EC2 host where you need to connect to remotely debug
    -- devices. Only returned if remote debugging is enabled for the remote
    -- access session.
    --
    -- Remote debugging is
    -- <https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html no longer supported>.
    RemoteAccessSession -> Maybe Text
hostAddress :: Prelude.Maybe Prelude.Text,
    -- | The interaction mode of the remote access session. Valid values are:
    --
    -- -   INTERACTIVE: You can interact with the iOS device by viewing,
    --     touching, and rotating the screen. You cannot run XCUITest
    --     framework-based tests in this mode.
    --
    -- -   NO_VIDEO: You are connected to the device, but cannot interact with
    --     it or view the screen. This mode has the fastest test execution
    --     speed. You can run XCUITest framework-based tests in this mode.
    --
    -- -   VIDEO_ONLY: You can view the screen, but cannot touch or rotate it.
    --     You can run XCUITest framework-based tests and watch the screen in
    --     this mode.
    RemoteAccessSession -> Maybe InteractionMode
interactionMode :: Prelude.Maybe InteractionMode,
    -- | The date and time the remote access session was started.
    RemoteAccessSession -> Maybe POSIX
started :: Prelude.Maybe Core.POSIX
  }
  deriving (RemoteAccessSession -> RemoteAccessSession -> Bool
(RemoteAccessSession -> RemoteAccessSession -> Bool)
-> (RemoteAccessSession -> RemoteAccessSession -> Bool)
-> Eq RemoteAccessSession
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RemoteAccessSession -> RemoteAccessSession -> Bool
$c/= :: RemoteAccessSession -> RemoteAccessSession -> Bool
== :: RemoteAccessSession -> RemoteAccessSession -> Bool
$c== :: RemoteAccessSession -> RemoteAccessSession -> Bool
Prelude.Eq, ReadPrec [RemoteAccessSession]
ReadPrec RemoteAccessSession
Int -> ReadS RemoteAccessSession
ReadS [RemoteAccessSession]
(Int -> ReadS RemoteAccessSession)
-> ReadS [RemoteAccessSession]
-> ReadPrec RemoteAccessSession
-> ReadPrec [RemoteAccessSession]
-> Read RemoteAccessSession
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [RemoteAccessSession]
$creadListPrec :: ReadPrec [RemoteAccessSession]
readPrec :: ReadPrec RemoteAccessSession
$creadPrec :: ReadPrec RemoteAccessSession
readList :: ReadS [RemoteAccessSession]
$creadList :: ReadS [RemoteAccessSession]
readsPrec :: Int -> ReadS RemoteAccessSession
$creadsPrec :: Int -> ReadS RemoteAccessSession
Prelude.Read, Int -> RemoteAccessSession -> ShowS
[RemoteAccessSession] -> ShowS
RemoteAccessSession -> String
(Int -> RemoteAccessSession -> ShowS)
-> (RemoteAccessSession -> String)
-> ([RemoteAccessSession] -> ShowS)
-> Show RemoteAccessSession
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RemoteAccessSession] -> ShowS
$cshowList :: [RemoteAccessSession] -> ShowS
show :: RemoteAccessSession -> String
$cshow :: RemoteAccessSession -> String
showsPrec :: Int -> RemoteAccessSession -> ShowS
$cshowsPrec :: Int -> RemoteAccessSession -> ShowS
Prelude.Show, (forall x. RemoteAccessSession -> Rep RemoteAccessSession x)
-> (forall x. Rep RemoteAccessSession x -> RemoteAccessSession)
-> Generic RemoteAccessSession
forall x. Rep RemoteAccessSession x -> RemoteAccessSession
forall x. RemoteAccessSession -> Rep RemoteAccessSession x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep RemoteAccessSession x -> RemoteAccessSession
$cfrom :: forall x. RemoteAccessSession -> Rep RemoteAccessSession x
Prelude.Generic)

-- |
-- Create a value of 'RemoteAccessSession' 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:
--
-- 'billingMethod', 'remoteAccessSession_billingMethod' - The billing method of the remote access session. Possible values include
-- @METERED@ or @UNMETERED@. For more information about metered devices,
-- see
-- <https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html#welcome-terminology AWS Device Farm terminology>.
--
-- 'clientId', 'remoteAccessSession_clientId' - Unique identifier of your client for the remote access session. Only
-- returned if remote debugging is enabled for the remote access session.
--
-- Remote debugging is
-- <https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html no longer supported>.
--
-- 'deviceUdid', 'remoteAccessSession_deviceUdid' - Unique device identifier for the remote device. Only returned if remote
-- debugging is enabled for the remote access session.
--
-- Remote debugging is
-- <https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html no longer supported>.
--
-- 'skipAppResign', 'remoteAccessSession_skipAppResign' - When set to @true@, for private devices, Device Farm does not sign your
-- app again. For public devices, Device Farm always signs your apps again.
--
-- For more information about how Device Farm re-signs your apps, see
-- <https://aws.amazon.com/device-farm/faq/ Do you modify my app?> in the
-- /AWS Device Farm FAQs/.
--
-- 'instanceArn', 'remoteAccessSession_instanceArn' - The ARN of the instance.
--
-- 'status', 'remoteAccessSession_status' - The status of the remote access session. Can be any of the following:
--
-- -   PENDING.
--
-- -   PENDING_CONCURRENCY.
--
-- -   PENDING_DEVICE.
--
-- -   PROCESSING.
--
-- -   SCHEDULING.
--
-- -   PREPARING.
--
-- -   RUNNING.
--
-- -   COMPLETED.
--
-- -   STOPPING.
--
-- 'remoteRecordEnabled', 'remoteAccessSession_remoteRecordEnabled' - This flag is set to @true@ if remote recording is enabled for the remote
-- access session.
--
-- 'arn', 'remoteAccessSession_arn' - The Amazon Resource Name (ARN) of the remote access session.
--
-- 'remoteRecordAppArn', 'remoteAccessSession_remoteRecordAppArn' - The ARN for the app to be recorded in the remote access session.
--
-- 'created', 'remoteAccessSession_created' - The date and time the remote access session was created.
--
-- 'device', 'remoteAccessSession_device' - The device (phone or tablet) used in the remote access session.
--
-- 'stopped', 'remoteAccessSession_stopped' - The date and time the remote access session was stopped.
--
-- 'result', 'remoteAccessSession_result' - The result of the remote access session. Can be any of the following:
--
-- -   PENDING.
--
-- -   PASSED.
--
-- -   WARNED.
--
-- -   FAILED.
--
-- -   SKIPPED.
--
-- -   ERRORED.
--
-- -   STOPPED.
--
-- 'name', 'remoteAccessSession_name' - The name of the remote access session.
--
-- 'deviceMinutes', 'remoteAccessSession_deviceMinutes' - The number of minutes a device is used in a remote access session
-- (including setup and teardown minutes).
--
-- 'remoteDebugEnabled', 'remoteAccessSession_remoteDebugEnabled' - This flag is set to @true@ if remote debugging is enabled for the remote
-- access session.
--
-- Remote debugging is
-- <https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html no longer supported>.
--
-- 'endpoint', 'remoteAccessSession_endpoint' - The endpoint for the remote access sesssion.
--
-- 'message', 'remoteAccessSession_message' - A message about the remote access session.
--
-- 'hostAddress', 'remoteAccessSession_hostAddress' - IP address of the EC2 host where you need to connect to remotely debug
-- devices. Only returned if remote debugging is enabled for the remote
-- access session.
--
-- Remote debugging is
-- <https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html no longer supported>.
--
-- 'interactionMode', 'remoteAccessSession_interactionMode' - The interaction mode of the remote access session. Valid values are:
--
-- -   INTERACTIVE: You can interact with the iOS device by viewing,
--     touching, and rotating the screen. You cannot run XCUITest
--     framework-based tests in this mode.
--
-- -   NO_VIDEO: You are connected to the device, but cannot interact with
--     it or view the screen. This mode has the fastest test execution
--     speed. You can run XCUITest framework-based tests in this mode.
--
-- -   VIDEO_ONLY: You can view the screen, but cannot touch or rotate it.
--     You can run XCUITest framework-based tests and watch the screen in
--     this mode.
--
-- 'started', 'remoteAccessSession_started' - The date and time the remote access session was started.
newRemoteAccessSession ::
  RemoteAccessSession
newRemoteAccessSession :: RemoteAccessSession
newRemoteAccessSession =
  RemoteAccessSession' :: Maybe BillingMethod
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe ExecutionStatus
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe Device
-> Maybe POSIX
-> Maybe ExecutionResult
-> Maybe Text
-> Maybe DeviceMinutes
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe InteractionMode
-> Maybe POSIX
-> RemoteAccessSession
RemoteAccessSession'
    { $sel:billingMethod:RemoteAccessSession' :: Maybe BillingMethod
billingMethod =
        Maybe BillingMethod
forall a. Maybe a
Prelude.Nothing,
      $sel:clientId:RemoteAccessSession' :: Maybe Text
clientId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:deviceUdid:RemoteAccessSession' :: Maybe Text
deviceUdid = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:skipAppResign:RemoteAccessSession' :: Maybe Bool
skipAppResign = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:instanceArn:RemoteAccessSession' :: Maybe Text
instanceArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:status:RemoteAccessSession' :: Maybe ExecutionStatus
status = Maybe ExecutionStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:remoteRecordEnabled:RemoteAccessSession' :: Maybe Bool
remoteRecordEnabled = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:arn:RemoteAccessSession' :: Maybe Text
arn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:remoteRecordAppArn:RemoteAccessSession' :: Maybe Text
remoteRecordAppArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:created:RemoteAccessSession' :: Maybe POSIX
created = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:device:RemoteAccessSession' :: Maybe Device
device = Maybe Device
forall a. Maybe a
Prelude.Nothing,
      $sel:stopped:RemoteAccessSession' :: Maybe POSIX
stopped = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:result:RemoteAccessSession' :: Maybe ExecutionResult
result = Maybe ExecutionResult
forall a. Maybe a
Prelude.Nothing,
      $sel:name:RemoteAccessSession' :: Maybe Text
name = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:deviceMinutes:RemoteAccessSession' :: Maybe DeviceMinutes
deviceMinutes = Maybe DeviceMinutes
forall a. Maybe a
Prelude.Nothing,
      $sel:remoteDebugEnabled:RemoteAccessSession' :: Maybe Bool
remoteDebugEnabled = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:endpoint:RemoteAccessSession' :: Maybe Text
endpoint = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:message:RemoteAccessSession' :: Maybe Text
message = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:hostAddress:RemoteAccessSession' :: Maybe Text
hostAddress = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:interactionMode:RemoteAccessSession' :: Maybe InteractionMode
interactionMode = Maybe InteractionMode
forall a. Maybe a
Prelude.Nothing,
      $sel:started:RemoteAccessSession' :: Maybe POSIX
started = Maybe POSIX
forall a. Maybe a
Prelude.Nothing
    }

-- | The billing method of the remote access session. Possible values include
-- @METERED@ or @UNMETERED@. For more information about metered devices,
-- see
-- <https://docs.aws.amazon.com/devicefarm/latest/developerguide/welcome.html#welcome-terminology AWS Device Farm terminology>.
remoteAccessSession_billingMethod :: Lens.Lens' RemoteAccessSession (Prelude.Maybe BillingMethod)
remoteAccessSession_billingMethod :: (Maybe BillingMethod -> f (Maybe BillingMethod))
-> RemoteAccessSession -> f RemoteAccessSession
remoteAccessSession_billingMethod = (RemoteAccessSession -> Maybe BillingMethod)
-> (RemoteAccessSession
    -> Maybe BillingMethod -> RemoteAccessSession)
-> Lens
     RemoteAccessSession
     RemoteAccessSession
     (Maybe BillingMethod)
     (Maybe BillingMethod)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemoteAccessSession' {Maybe BillingMethod
billingMethod :: Maybe BillingMethod
$sel:billingMethod:RemoteAccessSession' :: RemoteAccessSession -> Maybe BillingMethod
billingMethod} -> Maybe BillingMethod
billingMethod) (\s :: RemoteAccessSession
s@RemoteAccessSession' {} Maybe BillingMethod
a -> RemoteAccessSession
s {$sel:billingMethod:RemoteAccessSession' :: Maybe BillingMethod
billingMethod = Maybe BillingMethod
a} :: RemoteAccessSession)

-- | Unique identifier of your client for the remote access session. Only
-- returned if remote debugging is enabled for the remote access session.
--
-- Remote debugging is
-- <https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html no longer supported>.
remoteAccessSession_clientId :: Lens.Lens' RemoteAccessSession (Prelude.Maybe Prelude.Text)
remoteAccessSession_clientId :: (Maybe Text -> f (Maybe Text))
-> RemoteAccessSession -> f RemoteAccessSession
remoteAccessSession_clientId = (RemoteAccessSession -> Maybe Text)
-> (RemoteAccessSession -> Maybe Text -> RemoteAccessSession)
-> Lens
     RemoteAccessSession RemoteAccessSession (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemoteAccessSession' {Maybe Text
clientId :: Maybe Text
$sel:clientId:RemoteAccessSession' :: RemoteAccessSession -> Maybe Text
clientId} -> Maybe Text
clientId) (\s :: RemoteAccessSession
s@RemoteAccessSession' {} Maybe Text
a -> RemoteAccessSession
s {$sel:clientId:RemoteAccessSession' :: Maybe Text
clientId = Maybe Text
a} :: RemoteAccessSession)

-- | Unique device identifier for the remote device. Only returned if remote
-- debugging is enabled for the remote access session.
--
-- Remote debugging is
-- <https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html no longer supported>.
remoteAccessSession_deviceUdid :: Lens.Lens' RemoteAccessSession (Prelude.Maybe Prelude.Text)
remoteAccessSession_deviceUdid :: (Maybe Text -> f (Maybe Text))
-> RemoteAccessSession -> f RemoteAccessSession
remoteAccessSession_deviceUdid = (RemoteAccessSession -> Maybe Text)
-> (RemoteAccessSession -> Maybe Text -> RemoteAccessSession)
-> Lens
     RemoteAccessSession RemoteAccessSession (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemoteAccessSession' {Maybe Text
deviceUdid :: Maybe Text
$sel:deviceUdid:RemoteAccessSession' :: RemoteAccessSession -> Maybe Text
deviceUdid} -> Maybe Text
deviceUdid) (\s :: RemoteAccessSession
s@RemoteAccessSession' {} Maybe Text
a -> RemoteAccessSession
s {$sel:deviceUdid:RemoteAccessSession' :: Maybe Text
deviceUdid = Maybe Text
a} :: RemoteAccessSession)

-- | When set to @true@, for private devices, Device Farm does not sign your
-- app again. For public devices, Device Farm always signs your apps again.
--
-- For more information about how Device Farm re-signs your apps, see
-- <https://aws.amazon.com/device-farm/faq/ Do you modify my app?> in the
-- /AWS Device Farm FAQs/.
remoteAccessSession_skipAppResign :: Lens.Lens' RemoteAccessSession (Prelude.Maybe Prelude.Bool)
remoteAccessSession_skipAppResign :: (Maybe Bool -> f (Maybe Bool))
-> RemoteAccessSession -> f RemoteAccessSession
remoteAccessSession_skipAppResign = (RemoteAccessSession -> Maybe Bool)
-> (RemoteAccessSession -> Maybe Bool -> RemoteAccessSession)
-> Lens
     RemoteAccessSession RemoteAccessSession (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemoteAccessSession' {Maybe Bool
skipAppResign :: Maybe Bool
$sel:skipAppResign:RemoteAccessSession' :: RemoteAccessSession -> Maybe Bool
skipAppResign} -> Maybe Bool
skipAppResign) (\s :: RemoteAccessSession
s@RemoteAccessSession' {} Maybe Bool
a -> RemoteAccessSession
s {$sel:skipAppResign:RemoteAccessSession' :: Maybe Bool
skipAppResign = Maybe Bool
a} :: RemoteAccessSession)

-- | The ARN of the instance.
remoteAccessSession_instanceArn :: Lens.Lens' RemoteAccessSession (Prelude.Maybe Prelude.Text)
remoteAccessSession_instanceArn :: (Maybe Text -> f (Maybe Text))
-> RemoteAccessSession -> f RemoteAccessSession
remoteAccessSession_instanceArn = (RemoteAccessSession -> Maybe Text)
-> (RemoteAccessSession -> Maybe Text -> RemoteAccessSession)
-> Lens
     RemoteAccessSession RemoteAccessSession (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemoteAccessSession' {Maybe Text
instanceArn :: Maybe Text
$sel:instanceArn:RemoteAccessSession' :: RemoteAccessSession -> Maybe Text
instanceArn} -> Maybe Text
instanceArn) (\s :: RemoteAccessSession
s@RemoteAccessSession' {} Maybe Text
a -> RemoteAccessSession
s {$sel:instanceArn:RemoteAccessSession' :: Maybe Text
instanceArn = Maybe Text
a} :: RemoteAccessSession)

-- | The status of the remote access session. Can be any of the following:
--
-- -   PENDING.
--
-- -   PENDING_CONCURRENCY.
--
-- -   PENDING_DEVICE.
--
-- -   PROCESSING.
--
-- -   SCHEDULING.
--
-- -   PREPARING.
--
-- -   RUNNING.
--
-- -   COMPLETED.
--
-- -   STOPPING.
remoteAccessSession_status :: Lens.Lens' RemoteAccessSession (Prelude.Maybe ExecutionStatus)
remoteAccessSession_status :: (Maybe ExecutionStatus -> f (Maybe ExecutionStatus))
-> RemoteAccessSession -> f RemoteAccessSession
remoteAccessSession_status = (RemoteAccessSession -> Maybe ExecutionStatus)
-> (RemoteAccessSession
    -> Maybe ExecutionStatus -> RemoteAccessSession)
-> Lens
     RemoteAccessSession
     RemoteAccessSession
     (Maybe ExecutionStatus)
     (Maybe ExecutionStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemoteAccessSession' {Maybe ExecutionStatus
status :: Maybe ExecutionStatus
$sel:status:RemoteAccessSession' :: RemoteAccessSession -> Maybe ExecutionStatus
status} -> Maybe ExecutionStatus
status) (\s :: RemoteAccessSession
s@RemoteAccessSession' {} Maybe ExecutionStatus
a -> RemoteAccessSession
s {$sel:status:RemoteAccessSession' :: Maybe ExecutionStatus
status = Maybe ExecutionStatus
a} :: RemoteAccessSession)

-- | This flag is set to @true@ if remote recording is enabled for the remote
-- access session.
remoteAccessSession_remoteRecordEnabled :: Lens.Lens' RemoteAccessSession (Prelude.Maybe Prelude.Bool)
remoteAccessSession_remoteRecordEnabled :: (Maybe Bool -> f (Maybe Bool))
-> RemoteAccessSession -> f RemoteAccessSession
remoteAccessSession_remoteRecordEnabled = (RemoteAccessSession -> Maybe Bool)
-> (RemoteAccessSession -> Maybe Bool -> RemoteAccessSession)
-> Lens
     RemoteAccessSession RemoteAccessSession (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemoteAccessSession' {Maybe Bool
remoteRecordEnabled :: Maybe Bool
$sel:remoteRecordEnabled:RemoteAccessSession' :: RemoteAccessSession -> Maybe Bool
remoteRecordEnabled} -> Maybe Bool
remoteRecordEnabled) (\s :: RemoteAccessSession
s@RemoteAccessSession' {} Maybe Bool
a -> RemoteAccessSession
s {$sel:remoteRecordEnabled:RemoteAccessSession' :: Maybe Bool
remoteRecordEnabled = Maybe Bool
a} :: RemoteAccessSession)

-- | The Amazon Resource Name (ARN) of the remote access session.
remoteAccessSession_arn :: Lens.Lens' RemoteAccessSession (Prelude.Maybe Prelude.Text)
remoteAccessSession_arn :: (Maybe Text -> f (Maybe Text))
-> RemoteAccessSession -> f RemoteAccessSession
remoteAccessSession_arn = (RemoteAccessSession -> Maybe Text)
-> (RemoteAccessSession -> Maybe Text -> RemoteAccessSession)
-> Lens
     RemoteAccessSession RemoteAccessSession (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemoteAccessSession' {Maybe Text
arn :: Maybe Text
$sel:arn:RemoteAccessSession' :: RemoteAccessSession -> Maybe Text
arn} -> Maybe Text
arn) (\s :: RemoteAccessSession
s@RemoteAccessSession' {} Maybe Text
a -> RemoteAccessSession
s {$sel:arn:RemoteAccessSession' :: Maybe Text
arn = Maybe Text
a} :: RemoteAccessSession)

-- | The ARN for the app to be recorded in the remote access session.
remoteAccessSession_remoteRecordAppArn :: Lens.Lens' RemoteAccessSession (Prelude.Maybe Prelude.Text)
remoteAccessSession_remoteRecordAppArn :: (Maybe Text -> f (Maybe Text))
-> RemoteAccessSession -> f RemoteAccessSession
remoteAccessSession_remoteRecordAppArn = (RemoteAccessSession -> Maybe Text)
-> (RemoteAccessSession -> Maybe Text -> RemoteAccessSession)
-> Lens
     RemoteAccessSession RemoteAccessSession (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemoteAccessSession' {Maybe Text
remoteRecordAppArn :: Maybe Text
$sel:remoteRecordAppArn:RemoteAccessSession' :: RemoteAccessSession -> Maybe Text
remoteRecordAppArn} -> Maybe Text
remoteRecordAppArn) (\s :: RemoteAccessSession
s@RemoteAccessSession' {} Maybe Text
a -> RemoteAccessSession
s {$sel:remoteRecordAppArn:RemoteAccessSession' :: Maybe Text
remoteRecordAppArn = Maybe Text
a} :: RemoteAccessSession)

-- | The date and time the remote access session was created.
remoteAccessSession_created :: Lens.Lens' RemoteAccessSession (Prelude.Maybe Prelude.UTCTime)
remoteAccessSession_created :: (Maybe UTCTime -> f (Maybe UTCTime))
-> RemoteAccessSession -> f RemoteAccessSession
remoteAccessSession_created = (RemoteAccessSession -> Maybe POSIX)
-> (RemoteAccessSession -> Maybe POSIX -> RemoteAccessSession)
-> Lens
     RemoteAccessSession RemoteAccessSession (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemoteAccessSession' {Maybe POSIX
created :: Maybe POSIX
$sel:created:RemoteAccessSession' :: RemoteAccessSession -> Maybe POSIX
created} -> Maybe POSIX
created) (\s :: RemoteAccessSession
s@RemoteAccessSession' {} Maybe POSIX
a -> RemoteAccessSession
s {$sel:created:RemoteAccessSession' :: Maybe POSIX
created = Maybe POSIX
a} :: RemoteAccessSession) ((Maybe POSIX -> f (Maybe POSIX))
 -> RemoteAccessSession -> f RemoteAccessSession)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> RemoteAccessSession
-> f RemoteAccessSession
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The device (phone or tablet) used in the remote access session.
remoteAccessSession_device :: Lens.Lens' RemoteAccessSession (Prelude.Maybe Device)
remoteAccessSession_device :: (Maybe Device -> f (Maybe Device))
-> RemoteAccessSession -> f RemoteAccessSession
remoteAccessSession_device = (RemoteAccessSession -> Maybe Device)
-> (RemoteAccessSession -> Maybe Device -> RemoteAccessSession)
-> Lens
     RemoteAccessSession
     RemoteAccessSession
     (Maybe Device)
     (Maybe Device)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemoteAccessSession' {Maybe Device
device :: Maybe Device
$sel:device:RemoteAccessSession' :: RemoteAccessSession -> Maybe Device
device} -> Maybe Device
device) (\s :: RemoteAccessSession
s@RemoteAccessSession' {} Maybe Device
a -> RemoteAccessSession
s {$sel:device:RemoteAccessSession' :: Maybe Device
device = Maybe Device
a} :: RemoteAccessSession)

-- | The date and time the remote access session was stopped.
remoteAccessSession_stopped :: Lens.Lens' RemoteAccessSession (Prelude.Maybe Prelude.UTCTime)
remoteAccessSession_stopped :: (Maybe UTCTime -> f (Maybe UTCTime))
-> RemoteAccessSession -> f RemoteAccessSession
remoteAccessSession_stopped = (RemoteAccessSession -> Maybe POSIX)
-> (RemoteAccessSession -> Maybe POSIX -> RemoteAccessSession)
-> Lens
     RemoteAccessSession RemoteAccessSession (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemoteAccessSession' {Maybe POSIX
stopped :: Maybe POSIX
$sel:stopped:RemoteAccessSession' :: RemoteAccessSession -> Maybe POSIX
stopped} -> Maybe POSIX
stopped) (\s :: RemoteAccessSession
s@RemoteAccessSession' {} Maybe POSIX
a -> RemoteAccessSession
s {$sel:stopped:RemoteAccessSession' :: Maybe POSIX
stopped = Maybe POSIX
a} :: RemoteAccessSession) ((Maybe POSIX -> f (Maybe POSIX))
 -> RemoteAccessSession -> f RemoteAccessSession)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> RemoteAccessSession
-> f RemoteAccessSession
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The result of the remote access session. Can be any of the following:
--
-- -   PENDING.
--
-- -   PASSED.
--
-- -   WARNED.
--
-- -   FAILED.
--
-- -   SKIPPED.
--
-- -   ERRORED.
--
-- -   STOPPED.
remoteAccessSession_result :: Lens.Lens' RemoteAccessSession (Prelude.Maybe ExecutionResult)
remoteAccessSession_result :: (Maybe ExecutionResult -> f (Maybe ExecutionResult))
-> RemoteAccessSession -> f RemoteAccessSession
remoteAccessSession_result = (RemoteAccessSession -> Maybe ExecutionResult)
-> (RemoteAccessSession
    -> Maybe ExecutionResult -> RemoteAccessSession)
-> Lens
     RemoteAccessSession
     RemoteAccessSession
     (Maybe ExecutionResult)
     (Maybe ExecutionResult)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemoteAccessSession' {Maybe ExecutionResult
result :: Maybe ExecutionResult
$sel:result:RemoteAccessSession' :: RemoteAccessSession -> Maybe ExecutionResult
result} -> Maybe ExecutionResult
result) (\s :: RemoteAccessSession
s@RemoteAccessSession' {} Maybe ExecutionResult
a -> RemoteAccessSession
s {$sel:result:RemoteAccessSession' :: Maybe ExecutionResult
result = Maybe ExecutionResult
a} :: RemoteAccessSession)

-- | The name of the remote access session.
remoteAccessSession_name :: Lens.Lens' RemoteAccessSession (Prelude.Maybe Prelude.Text)
remoteAccessSession_name :: (Maybe Text -> f (Maybe Text))
-> RemoteAccessSession -> f RemoteAccessSession
remoteAccessSession_name = (RemoteAccessSession -> Maybe Text)
-> (RemoteAccessSession -> Maybe Text -> RemoteAccessSession)
-> Lens
     RemoteAccessSession RemoteAccessSession (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemoteAccessSession' {Maybe Text
name :: Maybe Text
$sel:name:RemoteAccessSession' :: RemoteAccessSession -> Maybe Text
name} -> Maybe Text
name) (\s :: RemoteAccessSession
s@RemoteAccessSession' {} Maybe Text
a -> RemoteAccessSession
s {$sel:name:RemoteAccessSession' :: Maybe Text
name = Maybe Text
a} :: RemoteAccessSession)

-- | The number of minutes a device is used in a remote access session
-- (including setup and teardown minutes).
remoteAccessSession_deviceMinutes :: Lens.Lens' RemoteAccessSession (Prelude.Maybe DeviceMinutes)
remoteAccessSession_deviceMinutes :: (Maybe DeviceMinutes -> f (Maybe DeviceMinutes))
-> RemoteAccessSession -> f RemoteAccessSession
remoteAccessSession_deviceMinutes = (RemoteAccessSession -> Maybe DeviceMinutes)
-> (RemoteAccessSession
    -> Maybe DeviceMinutes -> RemoteAccessSession)
-> Lens
     RemoteAccessSession
     RemoteAccessSession
     (Maybe DeviceMinutes)
     (Maybe DeviceMinutes)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemoteAccessSession' {Maybe DeviceMinutes
deviceMinutes :: Maybe DeviceMinutes
$sel:deviceMinutes:RemoteAccessSession' :: RemoteAccessSession -> Maybe DeviceMinutes
deviceMinutes} -> Maybe DeviceMinutes
deviceMinutes) (\s :: RemoteAccessSession
s@RemoteAccessSession' {} Maybe DeviceMinutes
a -> RemoteAccessSession
s {$sel:deviceMinutes:RemoteAccessSession' :: Maybe DeviceMinutes
deviceMinutes = Maybe DeviceMinutes
a} :: RemoteAccessSession)

-- | This flag is set to @true@ if remote debugging is enabled for the remote
-- access session.
--
-- Remote debugging is
-- <https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html no longer supported>.
remoteAccessSession_remoteDebugEnabled :: Lens.Lens' RemoteAccessSession (Prelude.Maybe Prelude.Bool)
remoteAccessSession_remoteDebugEnabled :: (Maybe Bool -> f (Maybe Bool))
-> RemoteAccessSession -> f RemoteAccessSession
remoteAccessSession_remoteDebugEnabled = (RemoteAccessSession -> Maybe Bool)
-> (RemoteAccessSession -> Maybe Bool -> RemoteAccessSession)
-> Lens
     RemoteAccessSession RemoteAccessSession (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemoteAccessSession' {Maybe Bool
remoteDebugEnabled :: Maybe Bool
$sel:remoteDebugEnabled:RemoteAccessSession' :: RemoteAccessSession -> Maybe Bool
remoteDebugEnabled} -> Maybe Bool
remoteDebugEnabled) (\s :: RemoteAccessSession
s@RemoteAccessSession' {} Maybe Bool
a -> RemoteAccessSession
s {$sel:remoteDebugEnabled:RemoteAccessSession' :: Maybe Bool
remoteDebugEnabled = Maybe Bool
a} :: RemoteAccessSession)

-- | The endpoint for the remote access sesssion.
remoteAccessSession_endpoint :: Lens.Lens' RemoteAccessSession (Prelude.Maybe Prelude.Text)
remoteAccessSession_endpoint :: (Maybe Text -> f (Maybe Text))
-> RemoteAccessSession -> f RemoteAccessSession
remoteAccessSession_endpoint = (RemoteAccessSession -> Maybe Text)
-> (RemoteAccessSession -> Maybe Text -> RemoteAccessSession)
-> Lens
     RemoteAccessSession RemoteAccessSession (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemoteAccessSession' {Maybe Text
endpoint :: Maybe Text
$sel:endpoint:RemoteAccessSession' :: RemoteAccessSession -> Maybe Text
endpoint} -> Maybe Text
endpoint) (\s :: RemoteAccessSession
s@RemoteAccessSession' {} Maybe Text
a -> RemoteAccessSession
s {$sel:endpoint:RemoteAccessSession' :: Maybe Text
endpoint = Maybe Text
a} :: RemoteAccessSession)

-- | A message about the remote access session.
remoteAccessSession_message :: Lens.Lens' RemoteAccessSession (Prelude.Maybe Prelude.Text)
remoteAccessSession_message :: (Maybe Text -> f (Maybe Text))
-> RemoteAccessSession -> f RemoteAccessSession
remoteAccessSession_message = (RemoteAccessSession -> Maybe Text)
-> (RemoteAccessSession -> Maybe Text -> RemoteAccessSession)
-> Lens
     RemoteAccessSession RemoteAccessSession (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemoteAccessSession' {Maybe Text
message :: Maybe Text
$sel:message:RemoteAccessSession' :: RemoteAccessSession -> Maybe Text
message} -> Maybe Text
message) (\s :: RemoteAccessSession
s@RemoteAccessSession' {} Maybe Text
a -> RemoteAccessSession
s {$sel:message:RemoteAccessSession' :: Maybe Text
message = Maybe Text
a} :: RemoteAccessSession)

-- | IP address of the EC2 host where you need to connect to remotely debug
-- devices. Only returned if remote debugging is enabled for the remote
-- access session.
--
-- Remote debugging is
-- <https://docs.aws.amazon.com/devicefarm/latest/developerguide/history.html no longer supported>.
remoteAccessSession_hostAddress :: Lens.Lens' RemoteAccessSession (Prelude.Maybe Prelude.Text)
remoteAccessSession_hostAddress :: (Maybe Text -> f (Maybe Text))
-> RemoteAccessSession -> f RemoteAccessSession
remoteAccessSession_hostAddress = (RemoteAccessSession -> Maybe Text)
-> (RemoteAccessSession -> Maybe Text -> RemoteAccessSession)
-> Lens
     RemoteAccessSession RemoteAccessSession (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemoteAccessSession' {Maybe Text
hostAddress :: Maybe Text
$sel:hostAddress:RemoteAccessSession' :: RemoteAccessSession -> Maybe Text
hostAddress} -> Maybe Text
hostAddress) (\s :: RemoteAccessSession
s@RemoteAccessSession' {} Maybe Text
a -> RemoteAccessSession
s {$sel:hostAddress:RemoteAccessSession' :: Maybe Text
hostAddress = Maybe Text
a} :: RemoteAccessSession)

-- | The interaction mode of the remote access session. Valid values are:
--
-- -   INTERACTIVE: You can interact with the iOS device by viewing,
--     touching, and rotating the screen. You cannot run XCUITest
--     framework-based tests in this mode.
--
-- -   NO_VIDEO: You are connected to the device, but cannot interact with
--     it or view the screen. This mode has the fastest test execution
--     speed. You can run XCUITest framework-based tests in this mode.
--
-- -   VIDEO_ONLY: You can view the screen, but cannot touch or rotate it.
--     You can run XCUITest framework-based tests and watch the screen in
--     this mode.
remoteAccessSession_interactionMode :: Lens.Lens' RemoteAccessSession (Prelude.Maybe InteractionMode)
remoteAccessSession_interactionMode :: (Maybe InteractionMode -> f (Maybe InteractionMode))
-> RemoteAccessSession -> f RemoteAccessSession
remoteAccessSession_interactionMode = (RemoteAccessSession -> Maybe InteractionMode)
-> (RemoteAccessSession
    -> Maybe InteractionMode -> RemoteAccessSession)
-> Lens
     RemoteAccessSession
     RemoteAccessSession
     (Maybe InteractionMode)
     (Maybe InteractionMode)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemoteAccessSession' {Maybe InteractionMode
interactionMode :: Maybe InteractionMode
$sel:interactionMode:RemoteAccessSession' :: RemoteAccessSession -> Maybe InteractionMode
interactionMode} -> Maybe InteractionMode
interactionMode) (\s :: RemoteAccessSession
s@RemoteAccessSession' {} Maybe InteractionMode
a -> RemoteAccessSession
s {$sel:interactionMode:RemoteAccessSession' :: Maybe InteractionMode
interactionMode = Maybe InteractionMode
a} :: RemoteAccessSession)

-- | The date and time the remote access session was started.
remoteAccessSession_started :: Lens.Lens' RemoteAccessSession (Prelude.Maybe Prelude.UTCTime)
remoteAccessSession_started :: (Maybe UTCTime -> f (Maybe UTCTime))
-> RemoteAccessSession -> f RemoteAccessSession
remoteAccessSession_started = (RemoteAccessSession -> Maybe POSIX)
-> (RemoteAccessSession -> Maybe POSIX -> RemoteAccessSession)
-> Lens
     RemoteAccessSession RemoteAccessSession (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RemoteAccessSession' {Maybe POSIX
started :: Maybe POSIX
$sel:started:RemoteAccessSession' :: RemoteAccessSession -> Maybe POSIX
started} -> Maybe POSIX
started) (\s :: RemoteAccessSession
s@RemoteAccessSession' {} Maybe POSIX
a -> RemoteAccessSession
s {$sel:started:RemoteAccessSession' :: Maybe POSIX
started = Maybe POSIX
a} :: RemoteAccessSession) ((Maybe POSIX -> f (Maybe POSIX))
 -> RemoteAccessSession -> f RemoteAccessSession)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> RemoteAccessSession
-> f RemoteAccessSession
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

instance Core.FromJSON RemoteAccessSession where
  parseJSON :: Value -> Parser RemoteAccessSession
parseJSON =
    String
-> (Object -> Parser RemoteAccessSession)
-> Value
-> Parser RemoteAccessSession
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"RemoteAccessSession"
      ( \Object
x ->
          Maybe BillingMethod
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe ExecutionStatus
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe Device
-> Maybe POSIX
-> Maybe ExecutionResult
-> Maybe Text
-> Maybe DeviceMinutes
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe InteractionMode
-> Maybe POSIX
-> RemoteAccessSession
RemoteAccessSession'
            (Maybe BillingMethod
 -> Maybe Text
 -> Maybe Text
 -> Maybe Bool
 -> Maybe Text
 -> Maybe ExecutionStatus
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Text
 -> Maybe POSIX
 -> Maybe Device
 -> Maybe POSIX
 -> Maybe ExecutionResult
 -> Maybe Text
 -> Maybe DeviceMinutes
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe InteractionMode
 -> Maybe POSIX
 -> RemoteAccessSession)
-> Parser (Maybe BillingMethod)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe ExecutionStatus
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Device
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Text
      -> Maybe DeviceMinutes
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InteractionMode
      -> Maybe POSIX
      -> RemoteAccessSession)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe BillingMethod)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"billingMethod")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe ExecutionStatus
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Device
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Text
   -> Maybe DeviceMinutes
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InteractionMode
   -> Maybe POSIX
   -> RemoteAccessSession)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe ExecutionStatus
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Device
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Text
      -> Maybe DeviceMinutes
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InteractionMode
      -> Maybe POSIX
      -> RemoteAccessSession)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"clientId")
            Parser
  (Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe ExecutionStatus
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Device
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Text
   -> Maybe DeviceMinutes
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InteractionMode
   -> Maybe POSIX
   -> RemoteAccessSession)
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe ExecutionStatus
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Device
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Text
      -> Maybe DeviceMinutes
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InteractionMode
      -> Maybe POSIX
      -> RemoteAccessSession)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"deviceUdid")
            Parser
  (Maybe Bool
   -> Maybe Text
   -> Maybe ExecutionStatus
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Device
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Text
   -> Maybe DeviceMinutes
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InteractionMode
   -> Maybe POSIX
   -> RemoteAccessSession)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe ExecutionStatus
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Device
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Text
      -> Maybe DeviceMinutes
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InteractionMode
      -> Maybe POSIX
      -> RemoteAccessSession)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"skipAppResign")
            Parser
  (Maybe Text
   -> Maybe ExecutionStatus
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Device
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Text
   -> Maybe DeviceMinutes
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InteractionMode
   -> Maybe POSIX
   -> RemoteAccessSession)
-> Parser (Maybe Text)
-> Parser
     (Maybe ExecutionStatus
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Device
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Text
      -> Maybe DeviceMinutes
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InteractionMode
      -> Maybe POSIX
      -> RemoteAccessSession)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"instanceArn")
            Parser
  (Maybe ExecutionStatus
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Device
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Text
   -> Maybe DeviceMinutes
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InteractionMode
   -> Maybe POSIX
   -> RemoteAccessSession)
-> Parser (Maybe ExecutionStatus)
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Device
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Text
      -> Maybe DeviceMinutes
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InteractionMode
      -> Maybe POSIX
      -> RemoteAccessSession)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ExecutionStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"status")
            Parser
  (Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Device
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Text
   -> Maybe DeviceMinutes
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InteractionMode
   -> Maybe POSIX
   -> RemoteAccessSession)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Device
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Text
      -> Maybe DeviceMinutes
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InteractionMode
      -> Maybe POSIX
      -> RemoteAccessSession)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"remoteRecordEnabled")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Device
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Text
   -> Maybe DeviceMinutes
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InteractionMode
   -> Maybe POSIX
   -> RemoteAccessSession)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe POSIX
      -> Maybe Device
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Text
      -> Maybe DeviceMinutes
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InteractionMode
      -> Maybe POSIX
      -> RemoteAccessSession)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"arn")
            Parser
  (Maybe Text
   -> Maybe POSIX
   -> Maybe Device
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Text
   -> Maybe DeviceMinutes
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InteractionMode
   -> Maybe POSIX
   -> RemoteAccessSession)
-> Parser (Maybe Text)
-> Parser
     (Maybe POSIX
      -> Maybe Device
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Text
      -> Maybe DeviceMinutes
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InteractionMode
      -> Maybe POSIX
      -> RemoteAccessSession)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"remoteRecordAppArn")
            Parser
  (Maybe POSIX
   -> Maybe Device
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Text
   -> Maybe DeviceMinutes
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InteractionMode
   -> Maybe POSIX
   -> RemoteAccessSession)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Device
      -> Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Text
      -> Maybe DeviceMinutes
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InteractionMode
      -> Maybe POSIX
      -> RemoteAccessSession)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"created")
            Parser
  (Maybe Device
   -> Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Text
   -> Maybe DeviceMinutes
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InteractionMode
   -> Maybe POSIX
   -> RemoteAccessSession)
-> Parser (Maybe Device)
-> Parser
     (Maybe POSIX
      -> Maybe ExecutionResult
      -> Maybe Text
      -> Maybe DeviceMinutes
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InteractionMode
      -> Maybe POSIX
      -> RemoteAccessSession)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Device)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"device")
            Parser
  (Maybe POSIX
   -> Maybe ExecutionResult
   -> Maybe Text
   -> Maybe DeviceMinutes
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InteractionMode
   -> Maybe POSIX
   -> RemoteAccessSession)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe ExecutionResult
      -> Maybe Text
      -> Maybe DeviceMinutes
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InteractionMode
      -> Maybe POSIX
      -> RemoteAccessSession)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"stopped")
            Parser
  (Maybe ExecutionResult
   -> Maybe Text
   -> Maybe DeviceMinutes
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InteractionMode
   -> Maybe POSIX
   -> RemoteAccessSession)
-> Parser (Maybe ExecutionResult)
-> Parser
     (Maybe Text
      -> Maybe DeviceMinutes
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InteractionMode
      -> Maybe POSIX
      -> RemoteAccessSession)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ExecutionResult)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"result")
            Parser
  (Maybe Text
   -> Maybe DeviceMinutes
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InteractionMode
   -> Maybe POSIX
   -> RemoteAccessSession)
-> Parser (Maybe Text)
-> Parser
     (Maybe DeviceMinutes
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InteractionMode
      -> Maybe POSIX
      -> RemoteAccessSession)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"name")
            Parser
  (Maybe DeviceMinutes
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InteractionMode
   -> Maybe POSIX
   -> RemoteAccessSession)
-> Parser (Maybe DeviceMinutes)
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InteractionMode
      -> Maybe POSIX
      -> RemoteAccessSession)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe DeviceMinutes)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"deviceMinutes")
            Parser
  (Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InteractionMode
   -> Maybe POSIX
   -> RemoteAccessSession)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InteractionMode
      -> Maybe POSIX
      -> RemoteAccessSession)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"remoteDebugEnabled")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InteractionMode
   -> Maybe POSIX
   -> RemoteAccessSession)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe InteractionMode
      -> Maybe POSIX
      -> RemoteAccessSession)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"endpoint")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe InteractionMode
   -> Maybe POSIX
   -> RemoteAccessSession)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe InteractionMode -> Maybe POSIX -> RemoteAccessSession)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"message")
            Parser
  (Maybe Text
   -> Maybe InteractionMode -> Maybe POSIX -> RemoteAccessSession)
-> Parser (Maybe Text)
-> Parser
     (Maybe InteractionMode -> Maybe POSIX -> RemoteAccessSession)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"hostAddress")
            Parser
  (Maybe InteractionMode -> Maybe POSIX -> RemoteAccessSession)
-> Parser (Maybe InteractionMode)
-> Parser (Maybe POSIX -> RemoteAccessSession)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe InteractionMode)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"interactionMode")
            Parser (Maybe POSIX -> RemoteAccessSession)
-> Parser (Maybe POSIX) -> Parser RemoteAccessSession
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"started")
      )

instance Prelude.Hashable RemoteAccessSession

instance Prelude.NFData RemoteAccessSession