{-# 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.Kendra.Types.ConfluenceSpaceConfiguration
-- 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.Kendra.Types.ConfluenceSpaceConfiguration where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Kendra.Types.ConfluenceSpaceToIndexFieldMapping
import qualified Amazonka.Prelude as Prelude

-- | Configuration information for indexing Confluence spaces.
--
-- /See:/ 'newConfluenceSpaceConfiguration' smart constructor.
data ConfluenceSpaceConfiguration = ConfluenceSpaceConfiguration'
  { -- | @TRUE@ to index archived spaces.
    ConfluenceSpaceConfiguration -> Maybe Bool
crawlArchivedSpaces :: Prelude.Maybe Prelude.Bool,
    -- | @TRUE@ to index personal spaces. You can add restrictions to items in
    -- personal spaces. If personal spaces are indexed, queries without user
    -- context information may return restricted items from a personal space in
    -- their results. For more information, see
    -- <https://docs.aws.amazon.com/kendra/latest/dg/user-context-filter.html Filtering on user context>.
    ConfluenceSpaceConfiguration -> Maybe Bool
crawlPersonalSpaces :: Prelude.Maybe Prelude.Bool,
    -- | A list of space keys of Confluence spaces. If you include a key, the
    -- blogs, documents, and attachments in the space are not indexed. If a
    -- space is in both the @ExcludeSpaces@ and the @IncludeSpaces@ list, the
    -- space is excluded.
    ConfluenceSpaceConfiguration -> Maybe (NonEmpty Text)
excludeSpaces :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | A list of space keys for Confluence spaces. If you include a key, the
    -- blogs, documents, and attachments in the space are indexed. Spaces that
    -- aren\'t in the list aren\'t indexed. A space in the list must exist.
    -- Otherwise, Amazon Kendra logs an error when the data source is
    -- synchronized. If a space is in both the @IncludeSpaces@ and the
    -- @ExcludeSpaces@ list, the space is excluded.
    ConfluenceSpaceConfiguration -> Maybe (NonEmpty Text)
includeSpaces :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | Maps attributes or field names of Confluence spaces to Amazon Kendra
    -- index field names. To create custom fields, use the @UpdateIndex@ API
    -- before you map to Confluence fields. For more information, see
    -- <https://docs.aws.amazon.com/kendra/latest/dg/field-mapping.html Mapping data source fields>.
    -- The Confluence data source field names must exist in your Confluence
    -- custom metadata.
    --
    -- If you specify the @SpaceFieldMappings@ parameter, you must specify at
    -- least one field mapping.
    ConfluenceSpaceConfiguration
-> Maybe (NonEmpty ConfluenceSpaceToIndexFieldMapping)
spaceFieldMappings :: Prelude.Maybe (Prelude.NonEmpty ConfluenceSpaceToIndexFieldMapping)
  }
  deriving (ConfluenceSpaceConfiguration
-> ConfluenceSpaceConfiguration -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ConfluenceSpaceConfiguration
-> ConfluenceSpaceConfiguration -> Bool
$c/= :: ConfluenceSpaceConfiguration
-> ConfluenceSpaceConfiguration -> Bool
== :: ConfluenceSpaceConfiguration
-> ConfluenceSpaceConfiguration -> Bool
$c== :: ConfluenceSpaceConfiguration
-> ConfluenceSpaceConfiguration -> Bool
Prelude.Eq, ReadPrec [ConfluenceSpaceConfiguration]
ReadPrec ConfluenceSpaceConfiguration
Int -> ReadS ConfluenceSpaceConfiguration
ReadS [ConfluenceSpaceConfiguration]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ConfluenceSpaceConfiguration]
$creadListPrec :: ReadPrec [ConfluenceSpaceConfiguration]
readPrec :: ReadPrec ConfluenceSpaceConfiguration
$creadPrec :: ReadPrec ConfluenceSpaceConfiguration
readList :: ReadS [ConfluenceSpaceConfiguration]
$creadList :: ReadS [ConfluenceSpaceConfiguration]
readsPrec :: Int -> ReadS ConfluenceSpaceConfiguration
$creadsPrec :: Int -> ReadS ConfluenceSpaceConfiguration
Prelude.Read, Int -> ConfluenceSpaceConfiguration -> ShowS
[ConfluenceSpaceConfiguration] -> ShowS
ConfluenceSpaceConfiguration -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ConfluenceSpaceConfiguration] -> ShowS
$cshowList :: [ConfluenceSpaceConfiguration] -> ShowS
show :: ConfluenceSpaceConfiguration -> String
$cshow :: ConfluenceSpaceConfiguration -> String
showsPrec :: Int -> ConfluenceSpaceConfiguration -> ShowS
$cshowsPrec :: Int -> ConfluenceSpaceConfiguration -> ShowS
Prelude.Show, forall x.
Rep ConfluenceSpaceConfiguration x -> ConfluenceSpaceConfiguration
forall x.
ConfluenceSpaceConfiguration -> Rep ConfluenceSpaceConfiguration x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ConfluenceSpaceConfiguration x -> ConfluenceSpaceConfiguration
$cfrom :: forall x.
ConfluenceSpaceConfiguration -> Rep ConfluenceSpaceConfiguration x
Prelude.Generic)

-- |
-- Create a value of 'ConfluenceSpaceConfiguration' 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:
--
-- 'crawlArchivedSpaces', 'confluenceSpaceConfiguration_crawlArchivedSpaces' - @TRUE@ to index archived spaces.
--
-- 'crawlPersonalSpaces', 'confluenceSpaceConfiguration_crawlPersonalSpaces' - @TRUE@ to index personal spaces. You can add restrictions to items in
-- personal spaces. If personal spaces are indexed, queries without user
-- context information may return restricted items from a personal space in
-- their results. For more information, see
-- <https://docs.aws.amazon.com/kendra/latest/dg/user-context-filter.html Filtering on user context>.
--
-- 'excludeSpaces', 'confluenceSpaceConfiguration_excludeSpaces' - A list of space keys of Confluence spaces. If you include a key, the
-- blogs, documents, and attachments in the space are not indexed. If a
-- space is in both the @ExcludeSpaces@ and the @IncludeSpaces@ list, the
-- space is excluded.
--
-- 'includeSpaces', 'confluenceSpaceConfiguration_includeSpaces' - A list of space keys for Confluence spaces. If you include a key, the
-- blogs, documents, and attachments in the space are indexed. Spaces that
-- aren\'t in the list aren\'t indexed. A space in the list must exist.
-- Otherwise, Amazon Kendra logs an error when the data source is
-- synchronized. If a space is in both the @IncludeSpaces@ and the
-- @ExcludeSpaces@ list, the space is excluded.
--
-- 'spaceFieldMappings', 'confluenceSpaceConfiguration_spaceFieldMappings' - Maps attributes or field names of Confluence spaces to Amazon Kendra
-- index field names. To create custom fields, use the @UpdateIndex@ API
-- before you map to Confluence fields. For more information, see
-- <https://docs.aws.amazon.com/kendra/latest/dg/field-mapping.html Mapping data source fields>.
-- The Confluence data source field names must exist in your Confluence
-- custom metadata.
--
-- If you specify the @SpaceFieldMappings@ parameter, you must specify at
-- least one field mapping.
newConfluenceSpaceConfiguration ::
  ConfluenceSpaceConfiguration
newConfluenceSpaceConfiguration :: ConfluenceSpaceConfiguration
newConfluenceSpaceConfiguration =
  ConfluenceSpaceConfiguration'
    { $sel:crawlArchivedSpaces:ConfluenceSpaceConfiguration' :: Maybe Bool
crawlArchivedSpaces =
        forall a. Maybe a
Prelude.Nothing,
      $sel:crawlPersonalSpaces:ConfluenceSpaceConfiguration' :: Maybe Bool
crawlPersonalSpaces = forall a. Maybe a
Prelude.Nothing,
      $sel:excludeSpaces:ConfluenceSpaceConfiguration' :: Maybe (NonEmpty Text)
excludeSpaces = forall a. Maybe a
Prelude.Nothing,
      $sel:includeSpaces:ConfluenceSpaceConfiguration' :: Maybe (NonEmpty Text)
includeSpaces = forall a. Maybe a
Prelude.Nothing,
      $sel:spaceFieldMappings:ConfluenceSpaceConfiguration' :: Maybe (NonEmpty ConfluenceSpaceToIndexFieldMapping)
spaceFieldMappings = forall a. Maybe a
Prelude.Nothing
    }

-- | @TRUE@ to index archived spaces.
confluenceSpaceConfiguration_crawlArchivedSpaces :: Lens.Lens' ConfluenceSpaceConfiguration (Prelude.Maybe Prelude.Bool)
confluenceSpaceConfiguration_crawlArchivedSpaces :: Lens' ConfluenceSpaceConfiguration (Maybe Bool)
confluenceSpaceConfiguration_crawlArchivedSpaces = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ConfluenceSpaceConfiguration' {Maybe Bool
crawlArchivedSpaces :: Maybe Bool
$sel:crawlArchivedSpaces:ConfluenceSpaceConfiguration' :: ConfluenceSpaceConfiguration -> Maybe Bool
crawlArchivedSpaces} -> Maybe Bool
crawlArchivedSpaces) (\s :: ConfluenceSpaceConfiguration
s@ConfluenceSpaceConfiguration' {} Maybe Bool
a -> ConfluenceSpaceConfiguration
s {$sel:crawlArchivedSpaces:ConfluenceSpaceConfiguration' :: Maybe Bool
crawlArchivedSpaces = Maybe Bool
a} :: ConfluenceSpaceConfiguration)

-- | @TRUE@ to index personal spaces. You can add restrictions to items in
-- personal spaces. If personal spaces are indexed, queries without user
-- context information may return restricted items from a personal space in
-- their results. For more information, see
-- <https://docs.aws.amazon.com/kendra/latest/dg/user-context-filter.html Filtering on user context>.
confluenceSpaceConfiguration_crawlPersonalSpaces :: Lens.Lens' ConfluenceSpaceConfiguration (Prelude.Maybe Prelude.Bool)
confluenceSpaceConfiguration_crawlPersonalSpaces :: Lens' ConfluenceSpaceConfiguration (Maybe Bool)
confluenceSpaceConfiguration_crawlPersonalSpaces = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ConfluenceSpaceConfiguration' {Maybe Bool
crawlPersonalSpaces :: Maybe Bool
$sel:crawlPersonalSpaces:ConfluenceSpaceConfiguration' :: ConfluenceSpaceConfiguration -> Maybe Bool
crawlPersonalSpaces} -> Maybe Bool
crawlPersonalSpaces) (\s :: ConfluenceSpaceConfiguration
s@ConfluenceSpaceConfiguration' {} Maybe Bool
a -> ConfluenceSpaceConfiguration
s {$sel:crawlPersonalSpaces:ConfluenceSpaceConfiguration' :: Maybe Bool
crawlPersonalSpaces = Maybe Bool
a} :: ConfluenceSpaceConfiguration)

-- | A list of space keys of Confluence spaces. If you include a key, the
-- blogs, documents, and attachments in the space are not indexed. If a
-- space is in both the @ExcludeSpaces@ and the @IncludeSpaces@ list, the
-- space is excluded.
confluenceSpaceConfiguration_excludeSpaces :: Lens.Lens' ConfluenceSpaceConfiguration (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
confluenceSpaceConfiguration_excludeSpaces :: Lens' ConfluenceSpaceConfiguration (Maybe (NonEmpty Text))
confluenceSpaceConfiguration_excludeSpaces = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ConfluenceSpaceConfiguration' {Maybe (NonEmpty Text)
excludeSpaces :: Maybe (NonEmpty Text)
$sel:excludeSpaces:ConfluenceSpaceConfiguration' :: ConfluenceSpaceConfiguration -> Maybe (NonEmpty Text)
excludeSpaces} -> Maybe (NonEmpty Text)
excludeSpaces) (\s :: ConfluenceSpaceConfiguration
s@ConfluenceSpaceConfiguration' {} Maybe (NonEmpty Text)
a -> ConfluenceSpaceConfiguration
s {$sel:excludeSpaces:ConfluenceSpaceConfiguration' :: Maybe (NonEmpty Text)
excludeSpaces = Maybe (NonEmpty Text)
a} :: ConfluenceSpaceConfiguration) 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

-- | A list of space keys for Confluence spaces. If you include a key, the
-- blogs, documents, and attachments in the space are indexed. Spaces that
-- aren\'t in the list aren\'t indexed. A space in the list must exist.
-- Otherwise, Amazon Kendra logs an error when the data source is
-- synchronized. If a space is in both the @IncludeSpaces@ and the
-- @ExcludeSpaces@ list, the space is excluded.
confluenceSpaceConfiguration_includeSpaces :: Lens.Lens' ConfluenceSpaceConfiguration (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
confluenceSpaceConfiguration_includeSpaces :: Lens' ConfluenceSpaceConfiguration (Maybe (NonEmpty Text))
confluenceSpaceConfiguration_includeSpaces = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ConfluenceSpaceConfiguration' {Maybe (NonEmpty Text)
includeSpaces :: Maybe (NonEmpty Text)
$sel:includeSpaces:ConfluenceSpaceConfiguration' :: ConfluenceSpaceConfiguration -> Maybe (NonEmpty Text)
includeSpaces} -> Maybe (NonEmpty Text)
includeSpaces) (\s :: ConfluenceSpaceConfiguration
s@ConfluenceSpaceConfiguration' {} Maybe (NonEmpty Text)
a -> ConfluenceSpaceConfiguration
s {$sel:includeSpaces:ConfluenceSpaceConfiguration' :: Maybe (NonEmpty Text)
includeSpaces = Maybe (NonEmpty Text)
a} :: ConfluenceSpaceConfiguration) 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

-- | Maps attributes or field names of Confluence spaces to Amazon Kendra
-- index field names. To create custom fields, use the @UpdateIndex@ API
-- before you map to Confluence fields. For more information, see
-- <https://docs.aws.amazon.com/kendra/latest/dg/field-mapping.html Mapping data source fields>.
-- The Confluence data source field names must exist in your Confluence
-- custom metadata.
--
-- If you specify the @SpaceFieldMappings@ parameter, you must specify at
-- least one field mapping.
confluenceSpaceConfiguration_spaceFieldMappings :: Lens.Lens' ConfluenceSpaceConfiguration (Prelude.Maybe (Prelude.NonEmpty ConfluenceSpaceToIndexFieldMapping))
confluenceSpaceConfiguration_spaceFieldMappings :: Lens'
  ConfluenceSpaceConfiguration
  (Maybe (NonEmpty ConfluenceSpaceToIndexFieldMapping))
confluenceSpaceConfiguration_spaceFieldMappings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ConfluenceSpaceConfiguration' {Maybe (NonEmpty ConfluenceSpaceToIndexFieldMapping)
spaceFieldMappings :: Maybe (NonEmpty ConfluenceSpaceToIndexFieldMapping)
$sel:spaceFieldMappings:ConfluenceSpaceConfiguration' :: ConfluenceSpaceConfiguration
-> Maybe (NonEmpty ConfluenceSpaceToIndexFieldMapping)
spaceFieldMappings} -> Maybe (NonEmpty ConfluenceSpaceToIndexFieldMapping)
spaceFieldMappings) (\s :: ConfluenceSpaceConfiguration
s@ConfluenceSpaceConfiguration' {} Maybe (NonEmpty ConfluenceSpaceToIndexFieldMapping)
a -> ConfluenceSpaceConfiguration
s {$sel:spaceFieldMappings:ConfluenceSpaceConfiguration' :: Maybe (NonEmpty ConfluenceSpaceToIndexFieldMapping)
spaceFieldMappings = Maybe (NonEmpty ConfluenceSpaceToIndexFieldMapping)
a} :: ConfluenceSpaceConfiguration) 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

instance Data.FromJSON ConfluenceSpaceConfiguration where
  parseJSON :: Value -> Parser ConfluenceSpaceConfiguration
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"ConfluenceSpaceConfiguration"
      ( \Object
x ->
          Maybe Bool
-> Maybe Bool
-> Maybe (NonEmpty Text)
-> Maybe (NonEmpty Text)
-> Maybe (NonEmpty ConfluenceSpaceToIndexFieldMapping)
-> ConfluenceSpaceConfiguration
ConfluenceSpaceConfiguration'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CrawlArchivedSpaces")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CrawlPersonalSpaces")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ExcludeSpaces")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"IncludeSpaces")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"SpaceFieldMappings")
      )

instance
  Prelude.Hashable
    ConfluenceSpaceConfiguration
  where
  hashWithSalt :: Int -> ConfluenceSpaceConfiguration -> Int
hashWithSalt Int
_salt ConfluenceSpaceConfiguration' {Maybe Bool
Maybe (NonEmpty Text)
Maybe (NonEmpty ConfluenceSpaceToIndexFieldMapping)
spaceFieldMappings :: Maybe (NonEmpty ConfluenceSpaceToIndexFieldMapping)
includeSpaces :: Maybe (NonEmpty Text)
excludeSpaces :: Maybe (NonEmpty Text)
crawlPersonalSpaces :: Maybe Bool
crawlArchivedSpaces :: Maybe Bool
$sel:spaceFieldMappings:ConfluenceSpaceConfiguration' :: ConfluenceSpaceConfiguration
-> Maybe (NonEmpty ConfluenceSpaceToIndexFieldMapping)
$sel:includeSpaces:ConfluenceSpaceConfiguration' :: ConfluenceSpaceConfiguration -> Maybe (NonEmpty Text)
$sel:excludeSpaces:ConfluenceSpaceConfiguration' :: ConfluenceSpaceConfiguration -> Maybe (NonEmpty Text)
$sel:crawlPersonalSpaces:ConfluenceSpaceConfiguration' :: ConfluenceSpaceConfiguration -> Maybe Bool
$sel:crawlArchivedSpaces:ConfluenceSpaceConfiguration' :: ConfluenceSpaceConfiguration -> Maybe Bool
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
crawlArchivedSpaces
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
crawlPersonalSpaces
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Text)
excludeSpaces
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Text)
includeSpaces
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty ConfluenceSpaceToIndexFieldMapping)
spaceFieldMappings

instance Prelude.NFData ConfluenceSpaceConfiguration where
  rnf :: ConfluenceSpaceConfiguration -> ()
rnf ConfluenceSpaceConfiguration' {Maybe Bool
Maybe (NonEmpty Text)
Maybe (NonEmpty ConfluenceSpaceToIndexFieldMapping)
spaceFieldMappings :: Maybe (NonEmpty ConfluenceSpaceToIndexFieldMapping)
includeSpaces :: Maybe (NonEmpty Text)
excludeSpaces :: Maybe (NonEmpty Text)
crawlPersonalSpaces :: Maybe Bool
crawlArchivedSpaces :: Maybe Bool
$sel:spaceFieldMappings:ConfluenceSpaceConfiguration' :: ConfluenceSpaceConfiguration
-> Maybe (NonEmpty ConfluenceSpaceToIndexFieldMapping)
$sel:includeSpaces:ConfluenceSpaceConfiguration' :: ConfluenceSpaceConfiguration -> Maybe (NonEmpty Text)
$sel:excludeSpaces:ConfluenceSpaceConfiguration' :: ConfluenceSpaceConfiguration -> Maybe (NonEmpty Text)
$sel:crawlPersonalSpaces:ConfluenceSpaceConfiguration' :: ConfluenceSpaceConfiguration -> Maybe Bool
$sel:crawlArchivedSpaces:ConfluenceSpaceConfiguration' :: ConfluenceSpaceConfiguration -> Maybe Bool
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
crawlArchivedSpaces
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
crawlPersonalSpaces
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Text)
excludeSpaces
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Text)
includeSpaces
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty ConfluenceSpaceToIndexFieldMapping)
spaceFieldMappings

instance Data.ToJSON ConfluenceSpaceConfiguration where
  toJSON :: ConfluenceSpaceConfiguration -> Value
toJSON ConfluenceSpaceConfiguration' {Maybe Bool
Maybe (NonEmpty Text)
Maybe (NonEmpty ConfluenceSpaceToIndexFieldMapping)
spaceFieldMappings :: Maybe (NonEmpty ConfluenceSpaceToIndexFieldMapping)
includeSpaces :: Maybe (NonEmpty Text)
excludeSpaces :: Maybe (NonEmpty Text)
crawlPersonalSpaces :: Maybe Bool
crawlArchivedSpaces :: Maybe Bool
$sel:spaceFieldMappings:ConfluenceSpaceConfiguration' :: ConfluenceSpaceConfiguration
-> Maybe (NonEmpty ConfluenceSpaceToIndexFieldMapping)
$sel:includeSpaces:ConfluenceSpaceConfiguration' :: ConfluenceSpaceConfiguration -> Maybe (NonEmpty Text)
$sel:excludeSpaces:ConfluenceSpaceConfiguration' :: ConfluenceSpaceConfiguration -> Maybe (NonEmpty Text)
$sel:crawlPersonalSpaces:ConfluenceSpaceConfiguration' :: ConfluenceSpaceConfiguration -> Maybe Bool
$sel:crawlArchivedSpaces:ConfluenceSpaceConfiguration' :: ConfluenceSpaceConfiguration -> Maybe Bool
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"CrawlArchivedSpaces" 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
crawlArchivedSpaces,
            (Key
"CrawlPersonalSpaces" 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
crawlPersonalSpaces,
            (Key
"ExcludeSpaces" 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 (NonEmpty Text)
excludeSpaces,
            (Key
"IncludeSpaces" 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 (NonEmpty Text)
includeSpaces,
            (Key
"SpaceFieldMappings" 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 (NonEmpty ConfluenceSpaceToIndexFieldMapping)
spaceFieldMappings
          ]
      )