{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}

-- |
-- Module      : Amazonka.LexModels
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Derived from API version @2017-04-19@ of the AWS service descriptions, licensed under Apache 2.0.
--
-- Amazon Lex Build-Time Actions
--
-- Amazon Lex is an AWS service for building conversational voice and text
-- interfaces. Use these actions to create, update, and delete
-- conversational bots for new and existing client applications.
module Amazonka.LexModels
  ( -- * Service Configuration
    defaultService,

    -- * Errors
    -- $errors

    -- ** AccessDeniedException
    _AccessDeniedException,

    -- ** PreconditionFailedException
    _PreconditionFailedException,

    -- ** ConflictException
    _ConflictException,

    -- ** NotFoundException
    _NotFoundException,

    -- ** InternalFailureException
    _InternalFailureException,

    -- ** BadRequestException
    _BadRequestException,

    -- ** LimitExceededException
    _LimitExceededException,

    -- ** ResourceInUseException
    _ResourceInUseException,

    -- * Waiters
    -- $waiters

    -- * Operations
    -- $operations

    -- ** StartMigration
    StartMigration (StartMigration'),
    newStartMigration,
    StartMigrationResponse (StartMigrationResponse'),
    newStartMigrationResponse,

    -- ** DeleteIntentVersion
    DeleteIntentVersion (DeleteIntentVersion'),
    newDeleteIntentVersion,
    DeleteIntentVersionResponse (DeleteIntentVersionResponse'),
    newDeleteIntentVersionResponse,

    -- ** GetBotAliases (Paginated)
    GetBotAliases (GetBotAliases'),
    newGetBotAliases,
    GetBotAliasesResponse (GetBotAliasesResponse'),
    newGetBotAliasesResponse,

    -- ** DeleteBotChannelAssociation
    DeleteBotChannelAssociation (DeleteBotChannelAssociation'),
    newDeleteBotChannelAssociation,
    DeleteBotChannelAssociationResponse (DeleteBotChannelAssociationResponse'),
    newDeleteBotChannelAssociationResponse,

    -- ** CreateSlotTypeVersion
    CreateSlotTypeVersion (CreateSlotTypeVersion'),
    newCreateSlotTypeVersion,
    CreateSlotTypeVersionResponse (CreateSlotTypeVersionResponse'),
    newCreateSlotTypeVersionResponse,

    -- ** ListTagsForResource
    ListTagsForResource (ListTagsForResource'),
    newListTagsForResource,
    ListTagsForResourceResponse (ListTagsForResourceResponse'),
    newListTagsForResourceResponse,

    -- ** GetIntent
    GetIntent (GetIntent'),
    newGetIntent,
    GetIntentResponse (GetIntentResponse'),
    newGetIntentResponse,

    -- ** PutIntent
    PutIntent (PutIntent'),
    newPutIntent,
    PutIntentResponse (PutIntentResponse'),
    newPutIntentResponse,

    -- ** DeleteIntent
    DeleteIntent (DeleteIntent'),
    newDeleteIntent,
    DeleteIntentResponse (DeleteIntentResponse'),
    newDeleteIntentResponse,

    -- ** GetBuiltinIntents (Paginated)
    GetBuiltinIntents (GetBuiltinIntents'),
    newGetBuiltinIntents,
    GetBuiltinIntentsResponse (GetBuiltinIntentsResponse'),
    newGetBuiltinIntentsResponse,

    -- ** PutBot
    PutBot (PutBot'),
    newPutBot,
    PutBotResponse (PutBotResponse'),
    newPutBotResponse,

    -- ** DeleteBot
    DeleteBot (DeleteBot'),
    newDeleteBot,
    DeleteBotResponse (DeleteBotResponse'),
    newDeleteBotResponse,

    -- ** GetImport
    GetImport (GetImport'),
    newGetImport,
    GetImportResponse (GetImportResponse'),
    newGetImportResponse,

    -- ** GetIntentVersions (Paginated)
    GetIntentVersions (GetIntentVersions'),
    newGetIntentVersions,
    GetIntentVersionsResponse (GetIntentVersionsResponse'),
    newGetIntentVersionsResponse,

    -- ** GetBuiltinIntent
    GetBuiltinIntent (GetBuiltinIntent'),
    newGetBuiltinIntent,
    GetBuiltinIntentResponse (GetBuiltinIntentResponse'),
    newGetBuiltinIntentResponse,

    -- ** PutBotAlias
    PutBotAlias (PutBotAlias'),
    newPutBotAlias,
    PutBotAliasResponse (PutBotAliasResponse'),
    newPutBotAliasResponse,

    -- ** GetBotVersions (Paginated)
    GetBotVersions (GetBotVersions'),
    newGetBotVersions,
    GetBotVersionsResponse (GetBotVersionsResponse'),
    newGetBotVersionsResponse,

    -- ** GetBotChannelAssociations (Paginated)
    GetBotChannelAssociations (GetBotChannelAssociations'),
    newGetBotChannelAssociations,
    GetBotChannelAssociationsResponse (GetBotChannelAssociationsResponse'),
    newGetBotChannelAssociationsResponse,

    -- ** DeleteBotAlias
    DeleteBotAlias (DeleteBotAlias'),
    newDeleteBotAlias,
    DeleteBotAliasResponse (DeleteBotAliasResponse'),
    newDeleteBotAliasResponse,

    -- ** GetSlotTypes (Paginated)
    GetSlotTypes (GetSlotTypes'),
    newGetSlotTypes,
    GetSlotTypesResponse (GetSlotTypesResponse'),
    newGetSlotTypesResponse,

    -- ** GetMigrations
    GetMigrations (GetMigrations'),
    newGetMigrations,
    GetMigrationsResponse (GetMigrationsResponse'),
    newGetMigrationsResponse,

    -- ** DeleteUtterances
    DeleteUtterances (DeleteUtterances'),
    newDeleteUtterances,
    DeleteUtterancesResponse (DeleteUtterancesResponse'),
    newDeleteUtterancesResponse,

    -- ** GetBots (Paginated)
    GetBots (GetBots'),
    newGetBots,
    GetBotsResponse (GetBotsResponse'),
    newGetBotsResponse,

    -- ** GetBot
    GetBot (GetBot'),
    newGetBot,
    GetBotResponse (GetBotResponse'),
    newGetBotResponse,

    -- ** CreateBotVersion
    CreateBotVersion (CreateBotVersion'),
    newCreateBotVersion,
    CreateBotVersionResponse (CreateBotVersionResponse'),
    newCreateBotVersionResponse,

    -- ** DeleteSlotTypeVersion
    DeleteSlotTypeVersion (DeleteSlotTypeVersion'),
    newDeleteSlotTypeVersion,
    DeleteSlotTypeVersionResponse (DeleteSlotTypeVersionResponse'),
    newDeleteSlotTypeVersionResponse,

    -- ** DeleteBotVersion
    DeleteBotVersion (DeleteBotVersion'),
    newDeleteBotVersion,
    DeleteBotVersionResponse (DeleteBotVersionResponse'),
    newDeleteBotVersionResponse,

    -- ** GetSlotType
    GetSlotType (GetSlotType'),
    newGetSlotType,
    GetSlotTypeResponse (GetSlotTypeResponse'),
    newGetSlotTypeResponse,

    -- ** GetExport
    GetExport (GetExport'),
    newGetExport,
    GetExportResponse (GetExportResponse'),
    newGetExportResponse,

    -- ** GetMigration
    GetMigration (GetMigration'),
    newGetMigration,
    GetMigrationResponse (GetMigrationResponse'),
    newGetMigrationResponse,

    -- ** CreateIntentVersion
    CreateIntentVersion (CreateIntentVersion'),
    newCreateIntentVersion,
    CreateIntentVersionResponse (CreateIntentVersionResponse'),
    newCreateIntentVersionResponse,

    -- ** DeleteSlotType
    DeleteSlotType (DeleteSlotType'),
    newDeleteSlotType,
    DeleteSlotTypeResponse (DeleteSlotTypeResponse'),
    newDeleteSlotTypeResponse,

    -- ** StartImport
    StartImport (StartImport'),
    newStartImport,
    StartImportResponse (StartImportResponse'),
    newStartImportResponse,

    -- ** GetBotChannelAssociation
    GetBotChannelAssociation (GetBotChannelAssociation'),
    newGetBotChannelAssociation,
    GetBotChannelAssociationResponse (GetBotChannelAssociationResponse'),
    newGetBotChannelAssociationResponse,

    -- ** PutSlotType
    PutSlotType (PutSlotType'),
    newPutSlotType,
    PutSlotTypeResponse (PutSlotTypeResponse'),
    newPutSlotTypeResponse,

    -- ** GetBuiltinSlotTypes (Paginated)
    GetBuiltinSlotTypes (GetBuiltinSlotTypes'),
    newGetBuiltinSlotTypes,
    GetBuiltinSlotTypesResponse (GetBuiltinSlotTypesResponse'),
    newGetBuiltinSlotTypesResponse,

    -- ** TagResource
    TagResource (TagResource'),
    newTagResource,
    TagResourceResponse (TagResourceResponse'),
    newTagResourceResponse,

    -- ** GetUtterancesView
    GetUtterancesView (GetUtterancesView'),
    newGetUtterancesView,
    GetUtterancesViewResponse (GetUtterancesViewResponse'),
    newGetUtterancesViewResponse,

    -- ** GetSlotTypeVersions (Paginated)
    GetSlotTypeVersions (GetSlotTypeVersions'),
    newGetSlotTypeVersions,
    GetSlotTypeVersionsResponse (GetSlotTypeVersionsResponse'),
    newGetSlotTypeVersionsResponse,

    -- ** UntagResource
    UntagResource (UntagResource'),
    newUntagResource,
    UntagResourceResponse (UntagResourceResponse'),
    newUntagResourceResponse,

    -- ** GetIntents (Paginated)
    GetIntents (GetIntents'),
    newGetIntents,
    GetIntentsResponse (GetIntentsResponse'),
    newGetIntentsResponse,

    -- ** GetBotAlias
    GetBotAlias (GetBotAlias'),
    newGetBotAlias,
    GetBotAliasResponse (GetBotAliasResponse'),
    newGetBotAliasResponse,

    -- * Types

    -- ** ChannelStatus
    ChannelStatus (..),

    -- ** ChannelType
    ChannelType (..),

    -- ** ContentType
    ContentType (..),

    -- ** Destination
    Destination (..),

    -- ** ExportStatus
    ExportStatus (..),

    -- ** ExportType
    ExportType (..),

    -- ** FulfillmentActivityType
    FulfillmentActivityType (..),

    -- ** ImportStatus
    ImportStatus (..),

    -- ** LexStatus
    LexStatus (..),

    -- ** Locale
    Locale (..),

    -- ** LogType
    LogType (..),

    -- ** MergeStrategy
    MergeStrategy (..),

    -- ** MigrationAlertType
    MigrationAlertType (..),

    -- ** MigrationSortAttribute
    MigrationSortAttribute (..),

    -- ** MigrationStatus
    MigrationStatus (..),

    -- ** MigrationStrategy
    MigrationStrategy (..),

    -- ** ObfuscationSetting
    ObfuscationSetting (..),

    -- ** ProcessBehavior
    ProcessBehavior (..),

    -- ** ResourceType
    ResourceType (..),

    -- ** SlotConstraint
    SlotConstraint (..),

    -- ** SlotValueSelectionStrategy
    SlotValueSelectionStrategy (..),

    -- ** SortOrder
    SortOrder (..),

    -- ** StatusType
    StatusType (..),

    -- ** BotAliasMetadata
    BotAliasMetadata (BotAliasMetadata'),
    newBotAliasMetadata,

    -- ** BotChannelAssociation
    BotChannelAssociation (BotChannelAssociation'),
    newBotChannelAssociation,

    -- ** BotMetadata
    BotMetadata (BotMetadata'),
    newBotMetadata,

    -- ** BuiltinIntentMetadata
    BuiltinIntentMetadata (BuiltinIntentMetadata'),
    newBuiltinIntentMetadata,

    -- ** BuiltinIntentSlot
    BuiltinIntentSlot (BuiltinIntentSlot'),
    newBuiltinIntentSlot,

    -- ** BuiltinSlotTypeMetadata
    BuiltinSlotTypeMetadata (BuiltinSlotTypeMetadata'),
    newBuiltinSlotTypeMetadata,

    -- ** CodeHook
    CodeHook (CodeHook'),
    newCodeHook,

    -- ** ConversationLogsRequest
    ConversationLogsRequest (ConversationLogsRequest'),
    newConversationLogsRequest,

    -- ** ConversationLogsResponse
    ConversationLogsResponse (ConversationLogsResponse'),
    newConversationLogsResponse,

    -- ** EnumerationValue
    EnumerationValue (EnumerationValue'),
    newEnumerationValue,

    -- ** FollowUpPrompt
    FollowUpPrompt (FollowUpPrompt'),
    newFollowUpPrompt,

    -- ** FulfillmentActivity
    FulfillmentActivity (FulfillmentActivity'),
    newFulfillmentActivity,

    -- ** InputContext
    InputContext (InputContext'),
    newInputContext,

    -- ** Intent
    Intent (Intent'),
    newIntent,

    -- ** IntentMetadata
    IntentMetadata (IntentMetadata'),
    newIntentMetadata,

    -- ** KendraConfiguration
    KendraConfiguration (KendraConfiguration'),
    newKendraConfiguration,

    -- ** LogSettingsRequest
    LogSettingsRequest (LogSettingsRequest'),
    newLogSettingsRequest,

    -- ** LogSettingsResponse
    LogSettingsResponse (LogSettingsResponse'),
    newLogSettingsResponse,

    -- ** Message
    Message (Message'),
    newMessage,

    -- ** MigrationAlert
    MigrationAlert (MigrationAlert'),
    newMigrationAlert,

    -- ** MigrationSummary
    MigrationSummary (MigrationSummary'),
    newMigrationSummary,

    -- ** OutputContext
    OutputContext (OutputContext'),
    newOutputContext,

    -- ** Prompt
    Prompt (Prompt'),
    newPrompt,

    -- ** Slot
    Slot (Slot'),
    newSlot,

    -- ** SlotDefaultValue
    SlotDefaultValue (SlotDefaultValue'),
    newSlotDefaultValue,

    -- ** SlotDefaultValueSpec
    SlotDefaultValueSpec (SlotDefaultValueSpec'),
    newSlotDefaultValueSpec,

    -- ** SlotTypeConfiguration
    SlotTypeConfiguration (SlotTypeConfiguration'),
    newSlotTypeConfiguration,

    -- ** SlotTypeMetadata
    SlotTypeMetadata (SlotTypeMetadata'),
    newSlotTypeMetadata,

    -- ** SlotTypeRegexConfiguration
    SlotTypeRegexConfiguration (SlotTypeRegexConfiguration'),
    newSlotTypeRegexConfiguration,

    -- ** Statement
    Statement (Statement'),
    newStatement,

    -- ** Tag
    Tag (Tag'),
    newTag,

    -- ** UtteranceData
    UtteranceData (UtteranceData'),
    newUtteranceData,

    -- ** UtteranceList
    UtteranceList (UtteranceList'),
    newUtteranceList,
  )
where

import Amazonka.LexModels.CreateBotVersion
import Amazonka.LexModels.CreateIntentVersion
import Amazonka.LexModels.CreateSlotTypeVersion
import Amazonka.LexModels.DeleteBot
import Amazonka.LexModels.DeleteBotAlias
import Amazonka.LexModels.DeleteBotChannelAssociation
import Amazonka.LexModels.DeleteBotVersion
import Amazonka.LexModels.DeleteIntent
import Amazonka.LexModels.DeleteIntentVersion
import Amazonka.LexModels.DeleteSlotType
import Amazonka.LexModels.DeleteSlotTypeVersion
import Amazonka.LexModels.DeleteUtterances
import Amazonka.LexModels.GetBot
import Amazonka.LexModels.GetBotAlias
import Amazonka.LexModels.GetBotAliases
import Amazonka.LexModels.GetBotChannelAssociation
import Amazonka.LexModels.GetBotChannelAssociations
import Amazonka.LexModels.GetBotVersions
import Amazonka.LexModels.GetBots
import Amazonka.LexModels.GetBuiltinIntent
import Amazonka.LexModels.GetBuiltinIntents
import Amazonka.LexModels.GetBuiltinSlotTypes
import Amazonka.LexModels.GetExport
import Amazonka.LexModels.GetImport
import Amazonka.LexModels.GetIntent
import Amazonka.LexModels.GetIntentVersions
import Amazonka.LexModels.GetIntents
import Amazonka.LexModels.GetMigration
import Amazonka.LexModels.GetMigrations
import Amazonka.LexModels.GetSlotType
import Amazonka.LexModels.GetSlotTypeVersions
import Amazonka.LexModels.GetSlotTypes
import Amazonka.LexModels.GetUtterancesView
import Amazonka.LexModels.Lens
import Amazonka.LexModels.ListTagsForResource
import Amazonka.LexModels.PutBot
import Amazonka.LexModels.PutBotAlias
import Amazonka.LexModels.PutIntent
import Amazonka.LexModels.PutSlotType
import Amazonka.LexModels.StartImport
import Amazonka.LexModels.StartMigration
import Amazonka.LexModels.TagResource
import Amazonka.LexModels.Types
import Amazonka.LexModels.UntagResource
import Amazonka.LexModels.Waiters

-- $errors
-- Error matchers are designed for use with the functions provided by
-- <http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.
-- This allows catching (and rethrowing) service specific errors returned
-- by 'LexModels'.

-- $operations
-- Some AWS operations return results that are incomplete and require subsequent
-- requests in order to obtain the entire result set. The process of sending
-- subsequent requests to continue where a previous request left off is called
-- pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to
-- 1000 objects at a time, and you must send subsequent requests with the
-- appropriate Marker in order to retrieve the next page of results.
--
-- Operations that have an 'AWSPager' instance can transparently perform subsequent
-- requests, correctly setting Markers and other request facets to iterate through
-- the entire result set of a truncated API operation. Operations which support
-- this have an additional note in the documentation.
--
-- Many operations have the ability to filter results on the server side. See the
-- individual operation parameters for details.

-- $waiters
-- Waiters poll by repeatedly sending a request until some remote success condition
-- configured by the 'Wait' specification is fulfilled. The 'Wait' specification
-- determines how many attempts should be made, in addition to delay and retry strategies.