{-# 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.Pinpoint.Types.WriteJourneyRequest
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Pinpoint.Types.WriteJourneyRequest where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Pinpoint.Types.Activity
import Amazonka.Pinpoint.Types.ClosedDays
import Amazonka.Pinpoint.Types.JourneyChannelSettings
import Amazonka.Pinpoint.Types.JourneyLimits
import Amazonka.Pinpoint.Types.JourneySchedule
import Amazonka.Pinpoint.Types.OpenHours
import Amazonka.Pinpoint.Types.QuietTime
import Amazonka.Pinpoint.Types.StartCondition
import Amazonka.Pinpoint.Types.State
import qualified Amazonka.Prelude as Prelude

-- | Specifies the configuration and other settings for a journey.
--
-- /See:/ 'newWriteJourneyRequest' smart constructor.
data WriteJourneyRequest = WriteJourneyRequest'
  { -- | A map that contains a set of Activity objects, one object for each
    -- activity in the journey. For each Activity object, the key is the unique
    -- identifier (string) for an activity and the value is the settings for
    -- the activity. An activity identifier can contain a maximum of 100
    -- characters. The characters must be alphanumeric characters.
    WriteJourneyRequest -> Maybe (HashMap Text Activity)
activities :: Prelude.Maybe (Prelude.HashMap Prelude.Text Activity),
    -- | The time when journey will stop sending messages. QuietTime should be
    -- configured first and SendingSchedule should be set to true.
    WriteJourneyRequest -> Maybe ClosedDays
closedDays :: Prelude.Maybe ClosedDays,
    -- | The date, in ISO 8601 format, when the journey was created.
    WriteJourneyRequest -> Maybe Text
creationDate :: Prelude.Maybe Prelude.Text,
    -- | The channel-specific configurations for the journey.
    WriteJourneyRequest -> Maybe JourneyChannelSettings
journeyChannelSettings :: Prelude.Maybe JourneyChannelSettings,
    -- | The date, in ISO 8601 format, when the journey was last modified.
    WriteJourneyRequest -> Maybe Text
lastModifiedDate :: Prelude.Maybe Prelude.Text,
    -- | The messaging and entry limits for the journey.
    WriteJourneyRequest -> Maybe JourneyLimits
limits :: Prelude.Maybe JourneyLimits,
    -- | Specifies whether the journey\'s scheduled start and end times use each
    -- participant\'s local time. To base the schedule on each participant\'s
    -- local time, set this value to true.
    WriteJourneyRequest -> Maybe Bool
localTime :: Prelude.Maybe Prelude.Bool,
    -- | The time when journey allow to send messages. QuietTime should be
    -- configured first and SendingSchedule should be set to true.
    WriteJourneyRequest -> Maybe OpenHours
openHours :: Prelude.Maybe OpenHours,
    -- | The quiet time settings for the journey. Quiet time is a specific time
    -- range when a journey doesn\'t send messages to participants, if all the
    -- following conditions are met:
    --
    -- -   The EndpointDemographic.Timezone property of the endpoint for the
    --     participant is set to a valid value.
    --
    -- -   The current time in the participant\'s time zone is later than or
    --     equal to the time specified by the QuietTime.Start property for the
    --     journey.
    --
    -- -   The current time in the participant\'s time zone is earlier than or
    --     equal to the time specified by the QuietTime.End property for the
    --     journey.
    --
    -- If any of the preceding conditions isn\'t met, the participant will
    -- receive messages from the journey, even if quiet time is enabled.
    WriteJourneyRequest -> Maybe QuietTime
quietTime :: Prelude.Maybe QuietTime,
    -- | The frequency with which Amazon Pinpoint evaluates segment and event
    -- data for the journey, as a duration in ISO 8601 format.
    WriteJourneyRequest -> Maybe Text
refreshFrequency :: Prelude.Maybe Prelude.Text,
    -- | Specifies whether a journey should be refreshed on segment update.
    WriteJourneyRequest -> Maybe Bool
refreshOnSegmentUpdate :: Prelude.Maybe Prelude.Bool,
    -- | The schedule settings for the journey.
    WriteJourneyRequest -> Maybe JourneySchedule
schedule :: Prelude.Maybe JourneySchedule,
    -- | Indicates if journey have Advance Quiet Time (OpenHours and ClosedDays).
    -- This flag should be set to true in order to allow (OpenHours and
    -- ClosedDays)
    WriteJourneyRequest -> Maybe Bool
sendingSchedule :: Prelude.Maybe Prelude.Bool,
    -- | The unique identifier for the first activity in the journey. The
    -- identifier for this activity can contain a maximum of 128 characters.
    -- The characters must be alphanumeric characters.
    WriteJourneyRequest -> Maybe Text
startActivity :: Prelude.Maybe Prelude.Text,
    -- | The segment that defines which users are participants in the journey.
    WriteJourneyRequest -> Maybe StartCondition
startCondition :: Prelude.Maybe StartCondition,
    -- | The status of the journey. Valid values are:
    --
    -- -   DRAFT - Saves the journey and doesn\'t publish it.
    --
    -- -   ACTIVE - Saves and publishes the journey. Depending on the
    --     journey\'s schedule, the journey starts running immediately or at
    --     the scheduled start time. If a journey\'s status is ACTIVE, you
    --     can\'t add, change, or remove activities from it.
    --
    -- PAUSED, CANCELLED, COMPLETED, and CLOSED states are not supported in
    -- requests to create or update a journey. To cancel, pause, or resume a
    -- journey, use the Journey State resource.
    WriteJourneyRequest -> Maybe State
state :: Prelude.Maybe State,
    -- | Specifies whether endpoints in quiet hours should enter a wait till the
    -- end of their quiet hours.
    WriteJourneyRequest -> Maybe Bool
waitForQuietTime :: Prelude.Maybe Prelude.Bool,
    -- | The name of the journey. A journey name can contain a maximum of 150
    -- characters. The characters can be alphanumeric characters or symbols,
    -- such as underscores (_) or hyphens (-). A journey name can\'t contain
    -- any spaces.
    WriteJourneyRequest -> Text
name :: Prelude.Text
  }
  deriving (WriteJourneyRequest -> WriteJourneyRequest -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: WriteJourneyRequest -> WriteJourneyRequest -> Bool
$c/= :: WriteJourneyRequest -> WriteJourneyRequest -> Bool
== :: WriteJourneyRequest -> WriteJourneyRequest -> Bool
$c== :: WriteJourneyRequest -> WriteJourneyRequest -> Bool
Prelude.Eq, ReadPrec [WriteJourneyRequest]
ReadPrec WriteJourneyRequest
Int -> ReadS WriteJourneyRequest
ReadS [WriteJourneyRequest]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [WriteJourneyRequest]
$creadListPrec :: ReadPrec [WriteJourneyRequest]
readPrec :: ReadPrec WriteJourneyRequest
$creadPrec :: ReadPrec WriteJourneyRequest
readList :: ReadS [WriteJourneyRequest]
$creadList :: ReadS [WriteJourneyRequest]
readsPrec :: Int -> ReadS WriteJourneyRequest
$creadsPrec :: Int -> ReadS WriteJourneyRequest
Prelude.Read, Int -> WriteJourneyRequest -> ShowS
[WriteJourneyRequest] -> ShowS
WriteJourneyRequest -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [WriteJourneyRequest] -> ShowS
$cshowList :: [WriteJourneyRequest] -> ShowS
show :: WriteJourneyRequest -> String
$cshow :: WriteJourneyRequest -> String
showsPrec :: Int -> WriteJourneyRequest -> ShowS
$cshowsPrec :: Int -> WriteJourneyRequest -> ShowS
Prelude.Show, forall x. Rep WriteJourneyRequest x -> WriteJourneyRequest
forall x. WriteJourneyRequest -> Rep WriteJourneyRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep WriteJourneyRequest x -> WriteJourneyRequest
$cfrom :: forall x. WriteJourneyRequest -> Rep WriteJourneyRequest x
Prelude.Generic)

-- |
-- Create a value of 'WriteJourneyRequest' 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:
--
-- 'activities', 'writeJourneyRequest_activities' - A map that contains a set of Activity objects, one object for each
-- activity in the journey. For each Activity object, the key is the unique
-- identifier (string) for an activity and the value is the settings for
-- the activity. An activity identifier can contain a maximum of 100
-- characters. The characters must be alphanumeric characters.
--
-- 'closedDays', 'writeJourneyRequest_closedDays' - The time when journey will stop sending messages. QuietTime should be
-- configured first and SendingSchedule should be set to true.
--
-- 'creationDate', 'writeJourneyRequest_creationDate' - The date, in ISO 8601 format, when the journey was created.
--
-- 'journeyChannelSettings', 'writeJourneyRequest_journeyChannelSettings' - The channel-specific configurations for the journey.
--
-- 'lastModifiedDate', 'writeJourneyRequest_lastModifiedDate' - The date, in ISO 8601 format, when the journey was last modified.
--
-- 'limits', 'writeJourneyRequest_limits' - The messaging and entry limits for the journey.
--
-- 'localTime', 'writeJourneyRequest_localTime' - Specifies whether the journey\'s scheduled start and end times use each
-- participant\'s local time. To base the schedule on each participant\'s
-- local time, set this value to true.
--
-- 'openHours', 'writeJourneyRequest_openHours' - The time when journey allow to send messages. QuietTime should be
-- configured first and SendingSchedule should be set to true.
--
-- 'quietTime', 'writeJourneyRequest_quietTime' - The quiet time settings for the journey. Quiet time is a specific time
-- range when a journey doesn\'t send messages to participants, if all the
-- following conditions are met:
--
-- -   The EndpointDemographic.Timezone property of the endpoint for the
--     participant is set to a valid value.
--
-- -   The current time in the participant\'s time zone is later than or
--     equal to the time specified by the QuietTime.Start property for the
--     journey.
--
-- -   The current time in the participant\'s time zone is earlier than or
--     equal to the time specified by the QuietTime.End property for the
--     journey.
--
-- If any of the preceding conditions isn\'t met, the participant will
-- receive messages from the journey, even if quiet time is enabled.
--
-- 'refreshFrequency', 'writeJourneyRequest_refreshFrequency' - The frequency with which Amazon Pinpoint evaluates segment and event
-- data for the journey, as a duration in ISO 8601 format.
--
-- 'refreshOnSegmentUpdate', 'writeJourneyRequest_refreshOnSegmentUpdate' - Specifies whether a journey should be refreshed on segment update.
--
-- 'schedule', 'writeJourneyRequest_schedule' - The schedule settings for the journey.
--
-- 'sendingSchedule', 'writeJourneyRequest_sendingSchedule' - Indicates if journey have Advance Quiet Time (OpenHours and ClosedDays).
-- This flag should be set to true in order to allow (OpenHours and
-- ClosedDays)
--
-- 'startActivity', 'writeJourneyRequest_startActivity' - The unique identifier for the first activity in the journey. The
-- identifier for this activity can contain a maximum of 128 characters.
-- The characters must be alphanumeric characters.
--
-- 'startCondition', 'writeJourneyRequest_startCondition' - The segment that defines which users are participants in the journey.
--
-- 'state', 'writeJourneyRequest_state' - The status of the journey. Valid values are:
--
-- -   DRAFT - Saves the journey and doesn\'t publish it.
--
-- -   ACTIVE - Saves and publishes the journey. Depending on the
--     journey\'s schedule, the journey starts running immediately or at
--     the scheduled start time. If a journey\'s status is ACTIVE, you
--     can\'t add, change, or remove activities from it.
--
-- PAUSED, CANCELLED, COMPLETED, and CLOSED states are not supported in
-- requests to create or update a journey. To cancel, pause, or resume a
-- journey, use the Journey State resource.
--
-- 'waitForQuietTime', 'writeJourneyRequest_waitForQuietTime' - Specifies whether endpoints in quiet hours should enter a wait till the
-- end of their quiet hours.
--
-- 'name', 'writeJourneyRequest_name' - The name of the journey. A journey name can contain a maximum of 150
-- characters. The characters can be alphanumeric characters or symbols,
-- such as underscores (_) or hyphens (-). A journey name can\'t contain
-- any spaces.
newWriteJourneyRequest ::
  -- | 'name'
  Prelude.Text ->
  WriteJourneyRequest
newWriteJourneyRequest :: Text -> WriteJourneyRequest
newWriteJourneyRequest Text
pName_ =
  WriteJourneyRequest'
    { $sel:activities:WriteJourneyRequest' :: Maybe (HashMap Text Activity)
activities = forall a. Maybe a
Prelude.Nothing,
      $sel:closedDays:WriteJourneyRequest' :: Maybe ClosedDays
closedDays = forall a. Maybe a
Prelude.Nothing,
      $sel:creationDate:WriteJourneyRequest' :: Maybe Text
creationDate = forall a. Maybe a
Prelude.Nothing,
      $sel:journeyChannelSettings:WriteJourneyRequest' :: Maybe JourneyChannelSettings
journeyChannelSettings = forall a. Maybe a
Prelude.Nothing,
      $sel:lastModifiedDate:WriteJourneyRequest' :: Maybe Text
lastModifiedDate = forall a. Maybe a
Prelude.Nothing,
      $sel:limits:WriteJourneyRequest' :: Maybe JourneyLimits
limits = forall a. Maybe a
Prelude.Nothing,
      $sel:localTime:WriteJourneyRequest' :: Maybe Bool
localTime = forall a. Maybe a
Prelude.Nothing,
      $sel:openHours:WriteJourneyRequest' :: Maybe OpenHours
openHours = forall a. Maybe a
Prelude.Nothing,
      $sel:quietTime:WriteJourneyRequest' :: Maybe QuietTime
quietTime = forall a. Maybe a
Prelude.Nothing,
      $sel:refreshFrequency:WriteJourneyRequest' :: Maybe Text
refreshFrequency = forall a. Maybe a
Prelude.Nothing,
      $sel:refreshOnSegmentUpdate:WriteJourneyRequest' :: Maybe Bool
refreshOnSegmentUpdate = forall a. Maybe a
Prelude.Nothing,
      $sel:schedule:WriteJourneyRequest' :: Maybe JourneySchedule
schedule = forall a. Maybe a
Prelude.Nothing,
      $sel:sendingSchedule:WriteJourneyRequest' :: Maybe Bool
sendingSchedule = forall a. Maybe a
Prelude.Nothing,
      $sel:startActivity:WriteJourneyRequest' :: Maybe Text
startActivity = forall a. Maybe a
Prelude.Nothing,
      $sel:startCondition:WriteJourneyRequest' :: Maybe StartCondition
startCondition = forall a. Maybe a
Prelude.Nothing,
      $sel:state:WriteJourneyRequest' :: Maybe State
state = forall a. Maybe a
Prelude.Nothing,
      $sel:waitForQuietTime:WriteJourneyRequest' :: Maybe Bool
waitForQuietTime = forall a. Maybe a
Prelude.Nothing,
      $sel:name:WriteJourneyRequest' :: Text
name = Text
pName_
    }

-- | A map that contains a set of Activity objects, one object for each
-- activity in the journey. For each Activity object, the key is the unique
-- identifier (string) for an activity and the value is the settings for
-- the activity. An activity identifier can contain a maximum of 100
-- characters. The characters must be alphanumeric characters.
writeJourneyRequest_activities :: Lens.Lens' WriteJourneyRequest (Prelude.Maybe (Prelude.HashMap Prelude.Text Activity))
writeJourneyRequest_activities :: Lens' WriteJourneyRequest (Maybe (HashMap Text Activity))
writeJourneyRequest_activities = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WriteJourneyRequest' {Maybe (HashMap Text Activity)
activities :: Maybe (HashMap Text Activity)
$sel:activities:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe (HashMap Text Activity)
activities} -> Maybe (HashMap Text Activity)
activities) (\s :: WriteJourneyRequest
s@WriteJourneyRequest' {} Maybe (HashMap Text Activity)
a -> WriteJourneyRequest
s {$sel:activities:WriteJourneyRequest' :: Maybe (HashMap Text Activity)
activities = Maybe (HashMap Text Activity)
a} :: WriteJourneyRequest) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The time when journey will stop sending messages. QuietTime should be
-- configured first and SendingSchedule should be set to true.
writeJourneyRequest_closedDays :: Lens.Lens' WriteJourneyRequest (Prelude.Maybe ClosedDays)
writeJourneyRequest_closedDays :: Lens' WriteJourneyRequest (Maybe ClosedDays)
writeJourneyRequest_closedDays = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WriteJourneyRequest' {Maybe ClosedDays
closedDays :: Maybe ClosedDays
$sel:closedDays:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe ClosedDays
closedDays} -> Maybe ClosedDays
closedDays) (\s :: WriteJourneyRequest
s@WriteJourneyRequest' {} Maybe ClosedDays
a -> WriteJourneyRequest
s {$sel:closedDays:WriteJourneyRequest' :: Maybe ClosedDays
closedDays = Maybe ClosedDays
a} :: WriteJourneyRequest)

-- | The date, in ISO 8601 format, when the journey was created.
writeJourneyRequest_creationDate :: Lens.Lens' WriteJourneyRequest (Prelude.Maybe Prelude.Text)
writeJourneyRequest_creationDate :: Lens' WriteJourneyRequest (Maybe Text)
writeJourneyRequest_creationDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WriteJourneyRequest' {Maybe Text
creationDate :: Maybe Text
$sel:creationDate:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Text
creationDate} -> Maybe Text
creationDate) (\s :: WriteJourneyRequest
s@WriteJourneyRequest' {} Maybe Text
a -> WriteJourneyRequest
s {$sel:creationDate:WriteJourneyRequest' :: Maybe Text
creationDate = Maybe Text
a} :: WriteJourneyRequest)

-- | The channel-specific configurations for the journey.
writeJourneyRequest_journeyChannelSettings :: Lens.Lens' WriteJourneyRequest (Prelude.Maybe JourneyChannelSettings)
writeJourneyRequest_journeyChannelSettings :: Lens' WriteJourneyRequest (Maybe JourneyChannelSettings)
writeJourneyRequest_journeyChannelSettings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WriteJourneyRequest' {Maybe JourneyChannelSettings
journeyChannelSettings :: Maybe JourneyChannelSettings
$sel:journeyChannelSettings:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe JourneyChannelSettings
journeyChannelSettings} -> Maybe JourneyChannelSettings
journeyChannelSettings) (\s :: WriteJourneyRequest
s@WriteJourneyRequest' {} Maybe JourneyChannelSettings
a -> WriteJourneyRequest
s {$sel:journeyChannelSettings:WriteJourneyRequest' :: Maybe JourneyChannelSettings
journeyChannelSettings = Maybe JourneyChannelSettings
a} :: WriteJourneyRequest)

-- | The date, in ISO 8601 format, when the journey was last modified.
writeJourneyRequest_lastModifiedDate :: Lens.Lens' WriteJourneyRequest (Prelude.Maybe Prelude.Text)
writeJourneyRequest_lastModifiedDate :: Lens' WriteJourneyRequest (Maybe Text)
writeJourneyRequest_lastModifiedDate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WriteJourneyRequest' {Maybe Text
lastModifiedDate :: Maybe Text
$sel:lastModifiedDate:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Text
lastModifiedDate} -> Maybe Text
lastModifiedDate) (\s :: WriteJourneyRequest
s@WriteJourneyRequest' {} Maybe Text
a -> WriteJourneyRequest
s {$sel:lastModifiedDate:WriteJourneyRequest' :: Maybe Text
lastModifiedDate = Maybe Text
a} :: WriteJourneyRequest)

-- | The messaging and entry limits for the journey.
writeJourneyRequest_limits :: Lens.Lens' WriteJourneyRequest (Prelude.Maybe JourneyLimits)
writeJourneyRequest_limits :: Lens' WriteJourneyRequest (Maybe JourneyLimits)
writeJourneyRequest_limits = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WriteJourneyRequest' {Maybe JourneyLimits
limits :: Maybe JourneyLimits
$sel:limits:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe JourneyLimits
limits} -> Maybe JourneyLimits
limits) (\s :: WriteJourneyRequest
s@WriteJourneyRequest' {} Maybe JourneyLimits
a -> WriteJourneyRequest
s {$sel:limits:WriteJourneyRequest' :: Maybe JourneyLimits
limits = Maybe JourneyLimits
a} :: WriteJourneyRequest)

-- | Specifies whether the journey\'s scheduled start and end times use each
-- participant\'s local time. To base the schedule on each participant\'s
-- local time, set this value to true.
writeJourneyRequest_localTime :: Lens.Lens' WriteJourneyRequest (Prelude.Maybe Prelude.Bool)
writeJourneyRequest_localTime :: Lens' WriteJourneyRequest (Maybe Bool)
writeJourneyRequest_localTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WriteJourneyRequest' {Maybe Bool
localTime :: Maybe Bool
$sel:localTime:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Bool
localTime} -> Maybe Bool
localTime) (\s :: WriteJourneyRequest
s@WriteJourneyRequest' {} Maybe Bool
a -> WriteJourneyRequest
s {$sel:localTime:WriteJourneyRequest' :: Maybe Bool
localTime = Maybe Bool
a} :: WriteJourneyRequest)

-- | The time when journey allow to send messages. QuietTime should be
-- configured first and SendingSchedule should be set to true.
writeJourneyRequest_openHours :: Lens.Lens' WriteJourneyRequest (Prelude.Maybe OpenHours)
writeJourneyRequest_openHours :: Lens' WriteJourneyRequest (Maybe OpenHours)
writeJourneyRequest_openHours = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WriteJourneyRequest' {Maybe OpenHours
openHours :: Maybe OpenHours
$sel:openHours:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe OpenHours
openHours} -> Maybe OpenHours
openHours) (\s :: WriteJourneyRequest
s@WriteJourneyRequest' {} Maybe OpenHours
a -> WriteJourneyRequest
s {$sel:openHours:WriteJourneyRequest' :: Maybe OpenHours
openHours = Maybe OpenHours
a} :: WriteJourneyRequest)

-- | The quiet time settings for the journey. Quiet time is a specific time
-- range when a journey doesn\'t send messages to participants, if all the
-- following conditions are met:
--
-- -   The EndpointDemographic.Timezone property of the endpoint for the
--     participant is set to a valid value.
--
-- -   The current time in the participant\'s time zone is later than or
--     equal to the time specified by the QuietTime.Start property for the
--     journey.
--
-- -   The current time in the participant\'s time zone is earlier than or
--     equal to the time specified by the QuietTime.End property for the
--     journey.
--
-- If any of the preceding conditions isn\'t met, the participant will
-- receive messages from the journey, even if quiet time is enabled.
writeJourneyRequest_quietTime :: Lens.Lens' WriteJourneyRequest (Prelude.Maybe QuietTime)
writeJourneyRequest_quietTime :: Lens' WriteJourneyRequest (Maybe QuietTime)
writeJourneyRequest_quietTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WriteJourneyRequest' {Maybe QuietTime
quietTime :: Maybe QuietTime
$sel:quietTime:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe QuietTime
quietTime} -> Maybe QuietTime
quietTime) (\s :: WriteJourneyRequest
s@WriteJourneyRequest' {} Maybe QuietTime
a -> WriteJourneyRequest
s {$sel:quietTime:WriteJourneyRequest' :: Maybe QuietTime
quietTime = Maybe QuietTime
a} :: WriteJourneyRequest)

-- | The frequency with which Amazon Pinpoint evaluates segment and event
-- data for the journey, as a duration in ISO 8601 format.
writeJourneyRequest_refreshFrequency :: Lens.Lens' WriteJourneyRequest (Prelude.Maybe Prelude.Text)
writeJourneyRequest_refreshFrequency :: Lens' WriteJourneyRequest (Maybe Text)
writeJourneyRequest_refreshFrequency = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WriteJourneyRequest' {Maybe Text
refreshFrequency :: Maybe Text
$sel:refreshFrequency:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Text
refreshFrequency} -> Maybe Text
refreshFrequency) (\s :: WriteJourneyRequest
s@WriteJourneyRequest' {} Maybe Text
a -> WriteJourneyRequest
s {$sel:refreshFrequency:WriteJourneyRequest' :: Maybe Text
refreshFrequency = Maybe Text
a} :: WriteJourneyRequest)

-- | Specifies whether a journey should be refreshed on segment update.
writeJourneyRequest_refreshOnSegmentUpdate :: Lens.Lens' WriteJourneyRequest (Prelude.Maybe Prelude.Bool)
writeJourneyRequest_refreshOnSegmentUpdate :: Lens' WriteJourneyRequest (Maybe Bool)
writeJourneyRequest_refreshOnSegmentUpdate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WriteJourneyRequest' {Maybe Bool
refreshOnSegmentUpdate :: Maybe Bool
$sel:refreshOnSegmentUpdate:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Bool
refreshOnSegmentUpdate} -> Maybe Bool
refreshOnSegmentUpdate) (\s :: WriteJourneyRequest
s@WriteJourneyRequest' {} Maybe Bool
a -> WriteJourneyRequest
s {$sel:refreshOnSegmentUpdate:WriteJourneyRequest' :: Maybe Bool
refreshOnSegmentUpdate = Maybe Bool
a} :: WriteJourneyRequest)

-- | The schedule settings for the journey.
writeJourneyRequest_schedule :: Lens.Lens' WriteJourneyRequest (Prelude.Maybe JourneySchedule)
writeJourneyRequest_schedule :: Lens' WriteJourneyRequest (Maybe JourneySchedule)
writeJourneyRequest_schedule = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WriteJourneyRequest' {Maybe JourneySchedule
schedule :: Maybe JourneySchedule
$sel:schedule:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe JourneySchedule
schedule} -> Maybe JourneySchedule
schedule) (\s :: WriteJourneyRequest
s@WriteJourneyRequest' {} Maybe JourneySchedule
a -> WriteJourneyRequest
s {$sel:schedule:WriteJourneyRequest' :: Maybe JourneySchedule
schedule = Maybe JourneySchedule
a} :: WriteJourneyRequest)

-- | Indicates if journey have Advance Quiet Time (OpenHours and ClosedDays).
-- This flag should be set to true in order to allow (OpenHours and
-- ClosedDays)
writeJourneyRequest_sendingSchedule :: Lens.Lens' WriteJourneyRequest (Prelude.Maybe Prelude.Bool)
writeJourneyRequest_sendingSchedule :: Lens' WriteJourneyRequest (Maybe Bool)
writeJourneyRequest_sendingSchedule = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WriteJourneyRequest' {Maybe Bool
sendingSchedule :: Maybe Bool
$sel:sendingSchedule:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Bool
sendingSchedule} -> Maybe Bool
sendingSchedule) (\s :: WriteJourneyRequest
s@WriteJourneyRequest' {} Maybe Bool
a -> WriteJourneyRequest
s {$sel:sendingSchedule:WriteJourneyRequest' :: Maybe Bool
sendingSchedule = Maybe Bool
a} :: WriteJourneyRequest)

-- | The unique identifier for the first activity in the journey. The
-- identifier for this activity can contain a maximum of 128 characters.
-- The characters must be alphanumeric characters.
writeJourneyRequest_startActivity :: Lens.Lens' WriteJourneyRequest (Prelude.Maybe Prelude.Text)
writeJourneyRequest_startActivity :: Lens' WriteJourneyRequest (Maybe Text)
writeJourneyRequest_startActivity = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WriteJourneyRequest' {Maybe Text
startActivity :: Maybe Text
$sel:startActivity:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Text
startActivity} -> Maybe Text
startActivity) (\s :: WriteJourneyRequest
s@WriteJourneyRequest' {} Maybe Text
a -> WriteJourneyRequest
s {$sel:startActivity:WriteJourneyRequest' :: Maybe Text
startActivity = Maybe Text
a} :: WriteJourneyRequest)

-- | The segment that defines which users are participants in the journey.
writeJourneyRequest_startCondition :: Lens.Lens' WriteJourneyRequest (Prelude.Maybe StartCondition)
writeJourneyRequest_startCondition :: Lens' WriteJourneyRequest (Maybe StartCondition)
writeJourneyRequest_startCondition = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WriteJourneyRequest' {Maybe StartCondition
startCondition :: Maybe StartCondition
$sel:startCondition:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe StartCondition
startCondition} -> Maybe StartCondition
startCondition) (\s :: WriteJourneyRequest
s@WriteJourneyRequest' {} Maybe StartCondition
a -> WriteJourneyRequest
s {$sel:startCondition:WriteJourneyRequest' :: Maybe StartCondition
startCondition = Maybe StartCondition
a} :: WriteJourneyRequest)

-- | The status of the journey. Valid values are:
--
-- -   DRAFT - Saves the journey and doesn\'t publish it.
--
-- -   ACTIVE - Saves and publishes the journey. Depending on the
--     journey\'s schedule, the journey starts running immediately or at
--     the scheduled start time. If a journey\'s status is ACTIVE, you
--     can\'t add, change, or remove activities from it.
--
-- PAUSED, CANCELLED, COMPLETED, and CLOSED states are not supported in
-- requests to create or update a journey. To cancel, pause, or resume a
-- journey, use the Journey State resource.
writeJourneyRequest_state :: Lens.Lens' WriteJourneyRequest (Prelude.Maybe State)
writeJourneyRequest_state :: Lens' WriteJourneyRequest (Maybe State)
writeJourneyRequest_state = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WriteJourneyRequest' {Maybe State
state :: Maybe State
$sel:state:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe State
state} -> Maybe State
state) (\s :: WriteJourneyRequest
s@WriteJourneyRequest' {} Maybe State
a -> WriteJourneyRequest
s {$sel:state:WriteJourneyRequest' :: Maybe State
state = Maybe State
a} :: WriteJourneyRequest)

-- | Specifies whether endpoints in quiet hours should enter a wait till the
-- end of their quiet hours.
writeJourneyRequest_waitForQuietTime :: Lens.Lens' WriteJourneyRequest (Prelude.Maybe Prelude.Bool)
writeJourneyRequest_waitForQuietTime :: Lens' WriteJourneyRequest (Maybe Bool)
writeJourneyRequest_waitForQuietTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WriteJourneyRequest' {Maybe Bool
waitForQuietTime :: Maybe Bool
$sel:waitForQuietTime:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Bool
waitForQuietTime} -> Maybe Bool
waitForQuietTime) (\s :: WriteJourneyRequest
s@WriteJourneyRequest' {} Maybe Bool
a -> WriteJourneyRequest
s {$sel:waitForQuietTime:WriteJourneyRequest' :: Maybe Bool
waitForQuietTime = Maybe Bool
a} :: WriteJourneyRequest)

-- | The name of the journey. A journey name can contain a maximum of 150
-- characters. The characters can be alphanumeric characters or symbols,
-- such as underscores (_) or hyphens (-). A journey name can\'t contain
-- any spaces.
writeJourneyRequest_name :: Lens.Lens' WriteJourneyRequest Prelude.Text
writeJourneyRequest_name :: Lens' WriteJourneyRequest Text
writeJourneyRequest_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\WriteJourneyRequest' {Text
name :: Text
$sel:name:WriteJourneyRequest' :: WriteJourneyRequest -> Text
name} -> Text
name) (\s :: WriteJourneyRequest
s@WriteJourneyRequest' {} Text
a -> WriteJourneyRequest
s {$sel:name:WriteJourneyRequest' :: Text
name = Text
a} :: WriteJourneyRequest)

instance Prelude.Hashable WriteJourneyRequest where
  hashWithSalt :: Int -> WriteJourneyRequest -> Int
hashWithSalt Int
_salt WriteJourneyRequest' {Maybe Bool
Maybe Text
Maybe (HashMap Text Activity)
Maybe ClosedDays
Maybe JourneyChannelSettings
Maybe JourneyLimits
Maybe JourneySchedule
Maybe OpenHours
Maybe QuietTime
Maybe StartCondition
Maybe State
Text
name :: Text
waitForQuietTime :: Maybe Bool
state :: Maybe State
startCondition :: Maybe StartCondition
startActivity :: Maybe Text
sendingSchedule :: Maybe Bool
schedule :: Maybe JourneySchedule
refreshOnSegmentUpdate :: Maybe Bool
refreshFrequency :: Maybe Text
quietTime :: Maybe QuietTime
openHours :: Maybe OpenHours
localTime :: Maybe Bool
limits :: Maybe JourneyLimits
lastModifiedDate :: Maybe Text
journeyChannelSettings :: Maybe JourneyChannelSettings
creationDate :: Maybe Text
closedDays :: Maybe ClosedDays
activities :: Maybe (HashMap Text Activity)
$sel:name:WriteJourneyRequest' :: WriteJourneyRequest -> Text
$sel:waitForQuietTime:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Bool
$sel:state:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe State
$sel:startCondition:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe StartCondition
$sel:startActivity:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Text
$sel:sendingSchedule:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Bool
$sel:schedule:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe JourneySchedule
$sel:refreshOnSegmentUpdate:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Bool
$sel:refreshFrequency:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Text
$sel:quietTime:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe QuietTime
$sel:openHours:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe OpenHours
$sel:localTime:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Bool
$sel:limits:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe JourneyLimits
$sel:lastModifiedDate:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Text
$sel:journeyChannelSettings:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe JourneyChannelSettings
$sel:creationDate:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Text
$sel:closedDays:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe ClosedDays
$sel:activities:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe (HashMap Text Activity)
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Activity)
activities
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ClosedDays
closedDays
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
creationDate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe JourneyChannelSettings
journeyChannelSettings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
lastModifiedDate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe JourneyLimits
limits
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
localTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe OpenHours
openHours
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe QuietTime
quietTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
refreshFrequency
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
refreshOnSegmentUpdate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe JourneySchedule
schedule
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
sendingSchedule
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
startActivity
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe StartCondition
startCondition
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe State
state
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
waitForQuietTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name

instance Prelude.NFData WriteJourneyRequest where
  rnf :: WriteJourneyRequest -> ()
rnf WriteJourneyRequest' {Maybe Bool
Maybe Text
Maybe (HashMap Text Activity)
Maybe ClosedDays
Maybe JourneyChannelSettings
Maybe JourneyLimits
Maybe JourneySchedule
Maybe OpenHours
Maybe QuietTime
Maybe StartCondition
Maybe State
Text
name :: Text
waitForQuietTime :: Maybe Bool
state :: Maybe State
startCondition :: Maybe StartCondition
startActivity :: Maybe Text
sendingSchedule :: Maybe Bool
schedule :: Maybe JourneySchedule
refreshOnSegmentUpdate :: Maybe Bool
refreshFrequency :: Maybe Text
quietTime :: Maybe QuietTime
openHours :: Maybe OpenHours
localTime :: Maybe Bool
limits :: Maybe JourneyLimits
lastModifiedDate :: Maybe Text
journeyChannelSettings :: Maybe JourneyChannelSettings
creationDate :: Maybe Text
closedDays :: Maybe ClosedDays
activities :: Maybe (HashMap Text Activity)
$sel:name:WriteJourneyRequest' :: WriteJourneyRequest -> Text
$sel:waitForQuietTime:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Bool
$sel:state:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe State
$sel:startCondition:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe StartCondition
$sel:startActivity:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Text
$sel:sendingSchedule:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Bool
$sel:schedule:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe JourneySchedule
$sel:refreshOnSegmentUpdate:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Bool
$sel:refreshFrequency:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Text
$sel:quietTime:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe QuietTime
$sel:openHours:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe OpenHours
$sel:localTime:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Bool
$sel:limits:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe JourneyLimits
$sel:lastModifiedDate:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Text
$sel:journeyChannelSettings:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe JourneyChannelSettings
$sel:creationDate:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Text
$sel:closedDays:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe ClosedDays
$sel:activities:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe (HashMap Text Activity)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Activity)
activities
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ClosedDays
closedDays
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
creationDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe JourneyChannelSettings
journeyChannelSettings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
lastModifiedDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe JourneyLimits
limits
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
localTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe OpenHours
openHours
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe QuietTime
quietTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
refreshFrequency
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
refreshOnSegmentUpdate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe JourneySchedule
schedule
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
sendingSchedule
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
startActivity
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe StartCondition
startCondition
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe State
state
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
waitForQuietTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
name

instance Data.ToJSON WriteJourneyRequest where
  toJSON :: WriteJourneyRequest -> Value
toJSON WriteJourneyRequest' {Maybe Bool
Maybe Text
Maybe (HashMap Text Activity)
Maybe ClosedDays
Maybe JourneyChannelSettings
Maybe JourneyLimits
Maybe JourneySchedule
Maybe OpenHours
Maybe QuietTime
Maybe StartCondition
Maybe State
Text
name :: Text
waitForQuietTime :: Maybe Bool
state :: Maybe State
startCondition :: Maybe StartCondition
startActivity :: Maybe Text
sendingSchedule :: Maybe Bool
schedule :: Maybe JourneySchedule
refreshOnSegmentUpdate :: Maybe Bool
refreshFrequency :: Maybe Text
quietTime :: Maybe QuietTime
openHours :: Maybe OpenHours
localTime :: Maybe Bool
limits :: Maybe JourneyLimits
lastModifiedDate :: Maybe Text
journeyChannelSettings :: Maybe JourneyChannelSettings
creationDate :: Maybe Text
closedDays :: Maybe ClosedDays
activities :: Maybe (HashMap Text Activity)
$sel:name:WriteJourneyRequest' :: WriteJourneyRequest -> Text
$sel:waitForQuietTime:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Bool
$sel:state:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe State
$sel:startCondition:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe StartCondition
$sel:startActivity:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Text
$sel:sendingSchedule:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Bool
$sel:schedule:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe JourneySchedule
$sel:refreshOnSegmentUpdate:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Bool
$sel:refreshFrequency:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Text
$sel:quietTime:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe QuietTime
$sel:openHours:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe OpenHours
$sel:localTime:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Bool
$sel:limits:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe JourneyLimits
$sel:lastModifiedDate:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Text
$sel:journeyChannelSettings:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe JourneyChannelSettings
$sel:creationDate:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe Text
$sel:closedDays:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe ClosedDays
$sel:activities:WriteJourneyRequest' :: WriteJourneyRequest -> Maybe (HashMap Text Activity)
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"Activities" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap Text Activity)
activities,
            (Key
"ClosedDays" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ClosedDays
closedDays,
            (Key
"CreationDate" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
creationDate,
            (Key
"JourneyChannelSettings" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe JourneyChannelSettings
journeyChannelSettings,
            (Key
"LastModifiedDate" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
lastModifiedDate,
            (Key
"Limits" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe JourneyLimits
limits,
            (Key
"LocalTime" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
localTime,
            (Key
"OpenHours" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe OpenHours
openHours,
            (Key
"QuietTime" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe QuietTime
quietTime,
            (Key
"RefreshFrequency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
refreshFrequency,
            (Key
"RefreshOnSegmentUpdate" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
refreshOnSegmentUpdate,
            (Key
"Schedule" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe JourneySchedule
schedule,
            (Key
"SendingSchedule" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
sendingSchedule,
            (Key
"StartActivity" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
startActivity,
            (Key
"StartCondition" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe StartCondition
startCondition,
            (Key
"State" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe State
state,
            (Key
"WaitForQuietTime" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
waitForQuietTime,
            forall a. a -> Maybe a
Prelude.Just (Key
"Name" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
name)
          ]
      )