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

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

-- |
-- Module      : Amazonka.Route53AutoNaming.DiscoverInstances
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Discovers registered instances for a specified namespace and service.
-- You can use @DiscoverInstances@ to discover instances for any type of
-- namespace. For public and private DNS namespaces, you can also use DNS
-- queries to discover instances.
module Amazonka.Route53AutoNaming.DiscoverInstances
  ( -- * Creating a Request
    DiscoverInstances (..),
    newDiscoverInstances,

    -- * Request Lenses
    discoverInstances_healthStatus,
    discoverInstances_maxResults,
    discoverInstances_optionalParameters,
    discoverInstances_queryParameters,
    discoverInstances_namespaceName,
    discoverInstances_serviceName,

    -- * Destructuring the Response
    DiscoverInstancesResponse (..),
    newDiscoverInstancesResponse,

    -- * Response Lenses
    discoverInstancesResponse_instances,
    discoverInstancesResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
import Amazonka.Route53AutoNaming.Types

-- | /See:/ 'newDiscoverInstances' smart constructor.
data DiscoverInstances = DiscoverInstances'
  { -- | The health status of the instances that you want to discover. This
    -- parameter is ignored for services that don\'t have a health check
    -- configured, and all instances are returned.
    --
    -- [HEALTHY]
    --     Returns healthy instances.
    --
    -- [UNHEALTHY]
    --     Returns unhealthy instances.
    --
    -- [ALL]
    --     Returns all instances.
    --
    -- [HEALTHY_OR_ELSE_ALL]
    --     Returns healthy instances, unless none are reporting a healthy
    --     state. In that case, return all instances. This is also called
    --     failing open.
    DiscoverInstances -> Maybe HealthStatusFilter
healthStatus :: Prelude.Maybe HealthStatusFilter,
    -- | The maximum number of instances that you want Cloud Map to return in the
    -- response to a @DiscoverInstances@ request. If you don\'t specify a value
    -- for @MaxResults@, Cloud Map returns up to 100 instances.
    DiscoverInstances -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | Opportunistic filters to scope the results based on custom attributes.
    -- If there are instances that match both the filters specified in both the
    -- @QueryParameters@ parameter and this parameter, all of these instances
    -- are returned. Otherwise, the filters are ignored, and only instances
    -- that match the filters that are specified in the @QueryParameters@
    -- parameter are returned.
    DiscoverInstances -> Maybe (HashMap Text Text)
optionalParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | Filters to scope the results based on custom attributes for the instance
    -- (for example, @{version=v1, az=1a}@). Only instances that match all the
    -- specified key-value pairs are returned.
    DiscoverInstances -> Maybe (HashMap Text Text)
queryParameters :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The @HttpName@ name of the namespace. It\'s found in the
    -- @HttpProperties@ member of the @Properties@ member of the namespace.
    DiscoverInstances -> Text
namespaceName :: Prelude.Text,
    -- | The name of the service that you specified when you registered the
    -- instance.
    DiscoverInstances -> Text
serviceName :: Prelude.Text
  }
  deriving (DiscoverInstances -> DiscoverInstances -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DiscoverInstances -> DiscoverInstances -> Bool
$c/= :: DiscoverInstances -> DiscoverInstances -> Bool
== :: DiscoverInstances -> DiscoverInstances -> Bool
$c== :: DiscoverInstances -> DiscoverInstances -> Bool
Prelude.Eq, ReadPrec [DiscoverInstances]
ReadPrec DiscoverInstances
Int -> ReadS DiscoverInstances
ReadS [DiscoverInstances]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DiscoverInstances]
$creadListPrec :: ReadPrec [DiscoverInstances]
readPrec :: ReadPrec DiscoverInstances
$creadPrec :: ReadPrec DiscoverInstances
readList :: ReadS [DiscoverInstances]
$creadList :: ReadS [DiscoverInstances]
readsPrec :: Int -> ReadS DiscoverInstances
$creadsPrec :: Int -> ReadS DiscoverInstances
Prelude.Read, Int -> DiscoverInstances -> ShowS
[DiscoverInstances] -> ShowS
DiscoverInstances -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DiscoverInstances] -> ShowS
$cshowList :: [DiscoverInstances] -> ShowS
show :: DiscoverInstances -> String
$cshow :: DiscoverInstances -> String
showsPrec :: Int -> DiscoverInstances -> ShowS
$cshowsPrec :: Int -> DiscoverInstances -> ShowS
Prelude.Show, forall x. Rep DiscoverInstances x -> DiscoverInstances
forall x. DiscoverInstances -> Rep DiscoverInstances x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DiscoverInstances x -> DiscoverInstances
$cfrom :: forall x. DiscoverInstances -> Rep DiscoverInstances x
Prelude.Generic)

-- |
-- Create a value of 'DiscoverInstances' 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:
--
-- 'healthStatus', 'discoverInstances_healthStatus' - The health status of the instances that you want to discover. This
-- parameter is ignored for services that don\'t have a health check
-- configured, and all instances are returned.
--
-- [HEALTHY]
--     Returns healthy instances.
--
-- [UNHEALTHY]
--     Returns unhealthy instances.
--
-- [ALL]
--     Returns all instances.
--
-- [HEALTHY_OR_ELSE_ALL]
--     Returns healthy instances, unless none are reporting a healthy
--     state. In that case, return all instances. This is also called
--     failing open.
--
-- 'maxResults', 'discoverInstances_maxResults' - The maximum number of instances that you want Cloud Map to return in the
-- response to a @DiscoverInstances@ request. If you don\'t specify a value
-- for @MaxResults@, Cloud Map returns up to 100 instances.
--
-- 'optionalParameters', 'discoverInstances_optionalParameters' - Opportunistic filters to scope the results based on custom attributes.
-- If there are instances that match both the filters specified in both the
-- @QueryParameters@ parameter and this parameter, all of these instances
-- are returned. Otherwise, the filters are ignored, and only instances
-- that match the filters that are specified in the @QueryParameters@
-- parameter are returned.
--
-- 'queryParameters', 'discoverInstances_queryParameters' - Filters to scope the results based on custom attributes for the instance
-- (for example, @{version=v1, az=1a}@). Only instances that match all the
-- specified key-value pairs are returned.
--
-- 'namespaceName', 'discoverInstances_namespaceName' - The @HttpName@ name of the namespace. It\'s found in the
-- @HttpProperties@ member of the @Properties@ member of the namespace.
--
-- 'serviceName', 'discoverInstances_serviceName' - The name of the service that you specified when you registered the
-- instance.
newDiscoverInstances ::
  -- | 'namespaceName'
  Prelude.Text ->
  -- | 'serviceName'
  Prelude.Text ->
  DiscoverInstances
newDiscoverInstances :: Text -> Text -> DiscoverInstances
newDiscoverInstances Text
pNamespaceName_ Text
pServiceName_ =
  DiscoverInstances'
    { $sel:healthStatus:DiscoverInstances' :: Maybe HealthStatusFilter
healthStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:maxResults:DiscoverInstances' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:optionalParameters:DiscoverInstances' :: Maybe (HashMap Text Text)
optionalParameters = forall a. Maybe a
Prelude.Nothing,
      $sel:queryParameters:DiscoverInstances' :: Maybe (HashMap Text Text)
queryParameters = forall a. Maybe a
Prelude.Nothing,
      $sel:namespaceName:DiscoverInstances' :: Text
namespaceName = Text
pNamespaceName_,
      $sel:serviceName:DiscoverInstances' :: Text
serviceName = Text
pServiceName_
    }

-- | The health status of the instances that you want to discover. This
-- parameter is ignored for services that don\'t have a health check
-- configured, and all instances are returned.
--
-- [HEALTHY]
--     Returns healthy instances.
--
-- [UNHEALTHY]
--     Returns unhealthy instances.
--
-- [ALL]
--     Returns all instances.
--
-- [HEALTHY_OR_ELSE_ALL]
--     Returns healthy instances, unless none are reporting a healthy
--     state. In that case, return all instances. This is also called
--     failing open.
discoverInstances_healthStatus :: Lens.Lens' DiscoverInstances (Prelude.Maybe HealthStatusFilter)
discoverInstances_healthStatus :: Lens' DiscoverInstances (Maybe HealthStatusFilter)
discoverInstances_healthStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DiscoverInstances' {Maybe HealthStatusFilter
healthStatus :: Maybe HealthStatusFilter
$sel:healthStatus:DiscoverInstances' :: DiscoverInstances -> Maybe HealthStatusFilter
healthStatus} -> Maybe HealthStatusFilter
healthStatus) (\s :: DiscoverInstances
s@DiscoverInstances' {} Maybe HealthStatusFilter
a -> DiscoverInstances
s {$sel:healthStatus:DiscoverInstances' :: Maybe HealthStatusFilter
healthStatus = Maybe HealthStatusFilter
a} :: DiscoverInstances)

-- | The maximum number of instances that you want Cloud Map to return in the
-- response to a @DiscoverInstances@ request. If you don\'t specify a value
-- for @MaxResults@, Cloud Map returns up to 100 instances.
discoverInstances_maxResults :: Lens.Lens' DiscoverInstances (Prelude.Maybe Prelude.Natural)
discoverInstances_maxResults :: Lens' DiscoverInstances (Maybe Natural)
discoverInstances_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DiscoverInstances' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:DiscoverInstances' :: DiscoverInstances -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: DiscoverInstances
s@DiscoverInstances' {} Maybe Natural
a -> DiscoverInstances
s {$sel:maxResults:DiscoverInstances' :: Maybe Natural
maxResults = Maybe Natural
a} :: DiscoverInstances)

-- | Opportunistic filters to scope the results based on custom attributes.
-- If there are instances that match both the filters specified in both the
-- @QueryParameters@ parameter and this parameter, all of these instances
-- are returned. Otherwise, the filters are ignored, and only instances
-- that match the filters that are specified in the @QueryParameters@
-- parameter are returned.
discoverInstances_optionalParameters :: Lens.Lens' DiscoverInstances (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
discoverInstances_optionalParameters :: Lens' DiscoverInstances (Maybe (HashMap Text Text))
discoverInstances_optionalParameters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DiscoverInstances' {Maybe (HashMap Text Text)
optionalParameters :: Maybe (HashMap Text Text)
$sel:optionalParameters:DiscoverInstances' :: DiscoverInstances -> Maybe (HashMap Text Text)
optionalParameters} -> Maybe (HashMap Text Text)
optionalParameters) (\s :: DiscoverInstances
s@DiscoverInstances' {} Maybe (HashMap Text Text)
a -> DiscoverInstances
s {$sel:optionalParameters:DiscoverInstances' :: Maybe (HashMap Text Text)
optionalParameters = Maybe (HashMap Text Text)
a} :: DiscoverInstances) 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

-- | Filters to scope the results based on custom attributes for the instance
-- (for example, @{version=v1, az=1a}@). Only instances that match all the
-- specified key-value pairs are returned.
discoverInstances_queryParameters :: Lens.Lens' DiscoverInstances (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
discoverInstances_queryParameters :: Lens' DiscoverInstances (Maybe (HashMap Text Text))
discoverInstances_queryParameters = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DiscoverInstances' {Maybe (HashMap Text Text)
queryParameters :: Maybe (HashMap Text Text)
$sel:queryParameters:DiscoverInstances' :: DiscoverInstances -> Maybe (HashMap Text Text)
queryParameters} -> Maybe (HashMap Text Text)
queryParameters) (\s :: DiscoverInstances
s@DiscoverInstances' {} Maybe (HashMap Text Text)
a -> DiscoverInstances
s {$sel:queryParameters:DiscoverInstances' :: Maybe (HashMap Text Text)
queryParameters = Maybe (HashMap Text Text)
a} :: DiscoverInstances) 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 @HttpName@ name of the namespace. It\'s found in the
-- @HttpProperties@ member of the @Properties@ member of the namespace.
discoverInstances_namespaceName :: Lens.Lens' DiscoverInstances Prelude.Text
discoverInstances_namespaceName :: Lens' DiscoverInstances Text
discoverInstances_namespaceName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DiscoverInstances' {Text
namespaceName :: Text
$sel:namespaceName:DiscoverInstances' :: DiscoverInstances -> Text
namespaceName} -> Text
namespaceName) (\s :: DiscoverInstances
s@DiscoverInstances' {} Text
a -> DiscoverInstances
s {$sel:namespaceName:DiscoverInstances' :: Text
namespaceName = Text
a} :: DiscoverInstances)

-- | The name of the service that you specified when you registered the
-- instance.
discoverInstances_serviceName :: Lens.Lens' DiscoverInstances Prelude.Text
discoverInstances_serviceName :: Lens' DiscoverInstances Text
discoverInstances_serviceName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DiscoverInstances' {Text
serviceName :: Text
$sel:serviceName:DiscoverInstances' :: DiscoverInstances -> Text
serviceName} -> Text
serviceName) (\s :: DiscoverInstances
s@DiscoverInstances' {} Text
a -> DiscoverInstances
s {$sel:serviceName:DiscoverInstances' :: Text
serviceName = Text
a} :: DiscoverInstances)

instance Core.AWSRequest DiscoverInstances where
  type
    AWSResponse DiscoverInstances =
      DiscoverInstancesResponse
  request :: (Service -> Service)
-> DiscoverInstances -> Request DiscoverInstances
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DiscoverInstances
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DiscoverInstances)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe [HttpInstanceSummary] -> Int -> DiscoverInstancesResponse
DiscoverInstancesResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"Instances" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable DiscoverInstances where
  hashWithSalt :: Int -> DiscoverInstances -> Int
hashWithSalt Int
_salt DiscoverInstances' {Maybe Natural
Maybe (HashMap Text Text)
Maybe HealthStatusFilter
Text
serviceName :: Text
namespaceName :: Text
queryParameters :: Maybe (HashMap Text Text)
optionalParameters :: Maybe (HashMap Text Text)
maxResults :: Maybe Natural
healthStatus :: Maybe HealthStatusFilter
$sel:serviceName:DiscoverInstances' :: DiscoverInstances -> Text
$sel:namespaceName:DiscoverInstances' :: DiscoverInstances -> Text
$sel:queryParameters:DiscoverInstances' :: DiscoverInstances -> Maybe (HashMap Text Text)
$sel:optionalParameters:DiscoverInstances' :: DiscoverInstances -> Maybe (HashMap Text Text)
$sel:maxResults:DiscoverInstances' :: DiscoverInstances -> Maybe Natural
$sel:healthStatus:DiscoverInstances' :: DiscoverInstances -> Maybe HealthStatusFilter
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe HealthStatusFilter
healthStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
optionalParameters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
queryParameters
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
namespaceName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
serviceName

instance Prelude.NFData DiscoverInstances where
  rnf :: DiscoverInstances -> ()
rnf DiscoverInstances' {Maybe Natural
Maybe (HashMap Text Text)
Maybe HealthStatusFilter
Text
serviceName :: Text
namespaceName :: Text
queryParameters :: Maybe (HashMap Text Text)
optionalParameters :: Maybe (HashMap Text Text)
maxResults :: Maybe Natural
healthStatus :: Maybe HealthStatusFilter
$sel:serviceName:DiscoverInstances' :: DiscoverInstances -> Text
$sel:namespaceName:DiscoverInstances' :: DiscoverInstances -> Text
$sel:queryParameters:DiscoverInstances' :: DiscoverInstances -> Maybe (HashMap Text Text)
$sel:optionalParameters:DiscoverInstances' :: DiscoverInstances -> Maybe (HashMap Text Text)
$sel:maxResults:DiscoverInstances' :: DiscoverInstances -> Maybe Natural
$sel:healthStatus:DiscoverInstances' :: DiscoverInstances -> Maybe HealthStatusFilter
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe HealthStatusFilter
healthStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
optionalParameters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
queryParameters
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
namespaceName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
serviceName

instance Data.ToHeaders DiscoverInstances where
  toHeaders :: DiscoverInstances -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"Route53AutoNaming_v20170314.DiscoverInstances" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DiscoverInstances where
  toJSON :: DiscoverInstances -> Value
toJSON DiscoverInstances' {Maybe Natural
Maybe (HashMap Text Text)
Maybe HealthStatusFilter
Text
serviceName :: Text
namespaceName :: Text
queryParameters :: Maybe (HashMap Text Text)
optionalParameters :: Maybe (HashMap Text Text)
maxResults :: Maybe Natural
healthStatus :: Maybe HealthStatusFilter
$sel:serviceName:DiscoverInstances' :: DiscoverInstances -> Text
$sel:namespaceName:DiscoverInstances' :: DiscoverInstances -> Text
$sel:queryParameters:DiscoverInstances' :: DiscoverInstances -> Maybe (HashMap Text Text)
$sel:optionalParameters:DiscoverInstances' :: DiscoverInstances -> Maybe (HashMap Text Text)
$sel:maxResults:DiscoverInstances' :: DiscoverInstances -> Maybe Natural
$sel:healthStatus:DiscoverInstances' :: DiscoverInstances -> Maybe HealthStatusFilter
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"HealthStatus" 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 HealthStatusFilter
healthStatus,
            (Key
"MaxResults" 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 Natural
maxResults,
            (Key
"OptionalParameters" 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 Text)
optionalParameters,
            (Key
"QueryParameters" 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 Text)
queryParameters,
            forall a. a -> Maybe a
Prelude.Just (Key
"NamespaceName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
namespaceName),
            forall a. a -> Maybe a
Prelude.Just (Key
"ServiceName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
serviceName)
          ]
      )

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

instance Data.ToQuery DiscoverInstances where
  toQuery :: DiscoverInstances -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newDiscoverInstancesResponse' smart constructor.
data DiscoverInstancesResponse = DiscoverInstancesResponse'
  { -- | A complex type that contains one @HttpInstanceSummary@ for each
    -- registered instance.
    DiscoverInstancesResponse -> Maybe [HttpInstanceSummary]
instances :: Prelude.Maybe [HttpInstanceSummary],
    -- | The response's http status code.
    DiscoverInstancesResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DiscoverInstancesResponse -> DiscoverInstancesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DiscoverInstancesResponse -> DiscoverInstancesResponse -> Bool
$c/= :: DiscoverInstancesResponse -> DiscoverInstancesResponse -> Bool
== :: DiscoverInstancesResponse -> DiscoverInstancesResponse -> Bool
$c== :: DiscoverInstancesResponse -> DiscoverInstancesResponse -> Bool
Prelude.Eq, ReadPrec [DiscoverInstancesResponse]
ReadPrec DiscoverInstancesResponse
Int -> ReadS DiscoverInstancesResponse
ReadS [DiscoverInstancesResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DiscoverInstancesResponse]
$creadListPrec :: ReadPrec [DiscoverInstancesResponse]
readPrec :: ReadPrec DiscoverInstancesResponse
$creadPrec :: ReadPrec DiscoverInstancesResponse
readList :: ReadS [DiscoverInstancesResponse]
$creadList :: ReadS [DiscoverInstancesResponse]
readsPrec :: Int -> ReadS DiscoverInstancesResponse
$creadsPrec :: Int -> ReadS DiscoverInstancesResponse
Prelude.Read, Int -> DiscoverInstancesResponse -> ShowS
[DiscoverInstancesResponse] -> ShowS
DiscoverInstancesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DiscoverInstancesResponse] -> ShowS
$cshowList :: [DiscoverInstancesResponse] -> ShowS
show :: DiscoverInstancesResponse -> String
$cshow :: DiscoverInstancesResponse -> String
showsPrec :: Int -> DiscoverInstancesResponse -> ShowS
$cshowsPrec :: Int -> DiscoverInstancesResponse -> ShowS
Prelude.Show, forall x.
Rep DiscoverInstancesResponse x -> DiscoverInstancesResponse
forall x.
DiscoverInstancesResponse -> Rep DiscoverInstancesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DiscoverInstancesResponse x -> DiscoverInstancesResponse
$cfrom :: forall x.
DiscoverInstancesResponse -> Rep DiscoverInstancesResponse x
Prelude.Generic)

-- |
-- Create a value of 'DiscoverInstancesResponse' 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:
--
-- 'instances', 'discoverInstancesResponse_instances' - A complex type that contains one @HttpInstanceSummary@ for each
-- registered instance.
--
-- 'httpStatus', 'discoverInstancesResponse_httpStatus' - The response's http status code.
newDiscoverInstancesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DiscoverInstancesResponse
newDiscoverInstancesResponse :: Int -> DiscoverInstancesResponse
newDiscoverInstancesResponse Int
pHttpStatus_ =
  DiscoverInstancesResponse'
    { $sel:instances:DiscoverInstancesResponse' :: Maybe [HttpInstanceSummary]
instances =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DiscoverInstancesResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | A complex type that contains one @HttpInstanceSummary@ for each
-- registered instance.
discoverInstancesResponse_instances :: Lens.Lens' DiscoverInstancesResponse (Prelude.Maybe [HttpInstanceSummary])
discoverInstancesResponse_instances :: Lens' DiscoverInstancesResponse (Maybe [HttpInstanceSummary])
discoverInstancesResponse_instances = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DiscoverInstancesResponse' {Maybe [HttpInstanceSummary]
instances :: Maybe [HttpInstanceSummary]
$sel:instances:DiscoverInstancesResponse' :: DiscoverInstancesResponse -> Maybe [HttpInstanceSummary]
instances} -> Maybe [HttpInstanceSummary]
instances) (\s :: DiscoverInstancesResponse
s@DiscoverInstancesResponse' {} Maybe [HttpInstanceSummary]
a -> DiscoverInstancesResponse
s {$sel:instances:DiscoverInstancesResponse' :: Maybe [HttpInstanceSummary]
instances = Maybe [HttpInstanceSummary]
a} :: DiscoverInstancesResponse) 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 response's http status code.
discoverInstancesResponse_httpStatus :: Lens.Lens' DiscoverInstancesResponse Prelude.Int
discoverInstancesResponse_httpStatus :: Lens' DiscoverInstancesResponse Int
discoverInstancesResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DiscoverInstancesResponse' {Int
httpStatus :: Int
$sel:httpStatus:DiscoverInstancesResponse' :: DiscoverInstancesResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DiscoverInstancesResponse
s@DiscoverInstancesResponse' {} Int
a -> DiscoverInstancesResponse
s {$sel:httpStatus:DiscoverInstancesResponse' :: Int
httpStatus = Int
a} :: DiscoverInstancesResponse)

instance Prelude.NFData DiscoverInstancesResponse where
  rnf :: DiscoverInstancesResponse -> ()
rnf DiscoverInstancesResponse' {Int
Maybe [HttpInstanceSummary]
httpStatus :: Int
instances :: Maybe [HttpInstanceSummary]
$sel:httpStatus:DiscoverInstancesResponse' :: DiscoverInstancesResponse -> Int
$sel:instances:DiscoverInstancesResponse' :: DiscoverInstancesResponse -> Maybe [HttpInstanceSummary]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [HttpInstanceSummary]
instances
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus