-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | A client implementing the Algolia search API
--
-- A client implementing the Algolia search API
@package algolia
@version 0.1.0.0
-- | Algolia is not based on traditional search solutions like Lucene or
-- Solr. Algolia was built from the ground up specifically for searching
-- through semi-structured data to power user-facing search.
--
-- Speed In order to provide the best user experience, we focus on
-- performance - milliseconds matter, and we developed an engine capable
-- of delivering results in a few milliseconds, fast enough to power a
-- seamless, “as-you-type” experience - the de facto consumer-grade
-- search experience.
--
-- Our ability to achieve unparalleled speed relies on a multitude of
-- factors, many of which are outlined in this blog post. For instance,
-- the Algolia engine handles the vast majority of computation at
-- indexing time, as opposed to at query time. Beyond this, we control
-- the full stack end-to-end. We’ve obsessed over every detail, from
-- obtaining high quality infrastructure (bare-metal servers!) to
-- crafting our own Ubuntu-based OS painstakingly modified for search
-- engine performance.
--
-- Beyond speed, we focus on providing all the features necessary to
-- build a full-fledged search experience out-of-the-box: prefix search,
-- typo-tolerance, faceting, highlighting, and more.
--
-- Relevance
--
-- Performance is important; however, in order for search to be
-- successful, results need to be relevant to the user. Varying from the
-- traditional TF-IDF approach to relevancy, we built a modern
-- tie-breaking algorithm tuned specifically for semi-structured data.
-- Rather than calculating one “score” per result and sorting based
-- solely off a magic number, Algolia calculates N scores and then
-- applies N successive sorting. In layman’s terms, this means “buckets”
-- of results are sorted by a cascade of varying criteria. When matches
-- occur in the first criterion, the second criterion is considered to
-- help break the tie, and so on in succession. This approach is meant to
-- mimic how our brains naturally search for information - and as a
-- consequence, is far easier to debug.
--
-- The Algolia engine provides various criteria for building stellar
-- textual relevancy. On top of these, additional rules can be set to
-- further hone the relevancy for a specific dataset. For example, a
-- numeric “popularity” attribute could be leveraged as a potential
-- tie-breaker rule to help more popular items rank higher. By enabling
-- business relevance metrics to be added at will and via API, this forms
-- the foundation for handling advanced search experiences like
-- personalization, merchandising and more.
module Network.Algolia.Search
-- | Make an algolia client from the provided API key and application id.
mkAlgoliaClient :: ApiKey -> ApplicationId -> AlgoliaClient
data AlgoliaClient
newtype ApiKey
ApiKey :: ByteString -> ApiKey
[fromApiKey] :: ApiKey -> ByteString
newtype ApplicationId
ApplicationId :: ByteString -> ApplicationId
[fromApplicationId] :: ApplicationId -> ByteString
-- | Given a data type c that implements Has AlgoliaClient
-- c, perform an algolia request.
simpleAlgolia :: (MonadIO m, Has AlgoliaClient c) => c -> ReaderT c m a -> m a
-- | Create an algolia client from ALGOLIA_APP_ID and
-- ALGOLIA_KEY environment variables.
algoliaFromEnv :: (MonadIO m) => ReaderT AlgoliaClient m a -> m a
withApiKey :: MonadReader AlgoliaClient m => ApiKey -> m a -> m a
type Result a = forall c m. (Has AlgoliaClient c, MonadReader c m, MonadThrow m, MonadIO m) => m a
-- | Convert a coercible type f
class Reconstrain f
reconstrain :: Reconstrain f => f a -> f b
reconstrain :: (Reconstrain f, Coercible (f a) (f b)) => f a -> f b
newtype IndexName a
IndexName :: ByteString -> IndexName a
[fromIndexName] :: IndexName a -> ByteString
newtype ObjectId a
ObjectId :: ByteString -> ObjectId a
[fromObjectId] :: ObjectId a -> ByteString
newtype TaskId
TaskId :: Int -> TaskId
[fromTaskId] :: TaskId -> Int
data IndexInfo
IndexInfo :: IndexName Object -> Int -> Int -> Int -> Int -> Int -> Bool -> IndexInfo
[indexInfoName] :: IndexInfo -> IndexName Object
[indexInfoEntries] :: IndexInfo -> Int
[indexInfoDataSize] :: IndexInfo -> Int
[indexInfoFileSize] :: IndexInfo -> Int
[indexInfoLastBuildTimeS] :: IndexInfo -> Int
[indexInfoNumberOfPendingTask] :: IndexInfo -> Int
[indexInfoPendingTask] :: IndexInfo -> Bool
data ListIndicesResponse
ListIndicesResponse :: [IndexInfo] -> Int -> ListIndicesResponse
[listIndicesResponseItems] :: ListIndicesResponse -> [IndexInfo]
[listIndicesResponseNbPages] :: ListIndicesResponse -> Int
-- | List existing indexes.
listIndices :: Maybe Int -> Result ListIndicesResponse
data SearchParameters
SearchParameters :: Text -> [Text] -> [Text] -> Maybe Int -> [Text] -> [Text] -> Text -> Text -> Maybe Text -> Bool -> Int -> Int -> Maybe Int -> Maybe Int -> Int -> Int -> Bool -> [Text] -> Bool -> Bool -> Int -> Int -> Bool -> SearchParameters
[query] :: SearchParameters -> Text
[attributesToRetrieve] :: SearchParameters -> [Text]
[facets] :: SearchParameters -> [Text]
[maxValuesPerFacet] :: SearchParameters -> Maybe Int
[attributesToHighlight] :: SearchParameters -> [Text]
[attributesToSnippet] :: SearchParameters -> [Text]
[highlightPreTag] :: SearchParameters -> Text
[highlightPostTag] :: SearchParameters -> Text
[snippetEllipsisText] :: SearchParameters -> Maybe Text
[restrictHighlightAndSnippetArrays] :: SearchParameters -> Bool
[page] :: SearchParameters -> Int
[hitsPerPage] :: SearchParameters -> Int
[offset] :: SearchParameters -> Maybe Int
[length] :: SearchParameters -> Maybe Int
[minWordSizeFor1Typo] :: SearchParameters -> Int
[minWordSizeFor2Typos] :: SearchParameters -> Int
[analytics] :: SearchParameters -> Bool
[analyticsTags] :: SearchParameters -> [Text]
[synonyms] :: SearchParameters -> Bool
[replaceSynonymsInHighlight] :: SearchParameters -> Bool
[minProximity] :: SearchParameters -> Int
[maxFacetHits] :: SearchParameters -> Int
[percentileComputation] :: SearchParameters -> Bool
defaultQuery :: SearchParameters
data SearchResult a
SearchResult :: a -> Maybe Object -> Maybe Object -> Maybe Object -> SearchResult a
[searchResultValue] :: SearchResult a -> a
[searchResultHighlightResult] :: SearchResult a -> Maybe Object
[searchResultSnippetResult] :: SearchResult a -> Maybe Object
[searchResultRankingInfo] :: SearchResult a -> Maybe Object
-- | You may have a single index containing per-user data. In that case,
-- you may wish to restrict access to the records of one particular user.
-- Typically, all your records would be tagged with their associated
-- user_id, and you would add a filter at query time like
-- filters=user_id:${requested_id} to retrieve only what the querying
-- user has access to.
--
-- Adding that filter directly from the frontend (browser or mobile
-- application) will result in a security breach, because the user would
-- be able to modify the filters you’ve set, e.g. by modifying the
-- JavaScript code.
--
-- In order to keep sending the query from the browser (which is
-- recommended for optimal latency) but only target secured records, you
-- can generate secured API keys from your backend and use them in your
-- frontend code. The backend will then automatically enforce the
-- security filters contained in the key; the user will not be able to
-- alter them.
--
-- A secured API key is used like any other API key via the
-- X-Algolia-API-Key request header.
--
-- Generate a secured API key Secured API keys are generated by hashing
-- (HMAC SHA-256) the following criteria together:
--
-- a private API key (can be any API Key that is not the admin API Key),
-- used as the secret for HMAC SHA-256;
--
-- a URL-encoded list of query parameters defining the security filters.
--
-- The result of the hashing is concatenated to the URL-encoded query
-- parameters, and this content is encoded in Base64 to generate the
-- final secured API key.
generateSecuredApiKey :: ApiKey -> Query -> Maybe ByteString -> ByteString
data FacetStat
FacetStat :: Scientific -> Scientific -> Scientific -> Scientific -> FacetStat
[facetStatMin] :: FacetStat -> Scientific
[facetStatMax] :: FacetStat -> Scientific
[facetStatAvg] :: FacetStat -> Scientific
[facetStatSum] :: FacetStat -> Scientific
data SearchResults a
SearchResults :: [SearchResult a] -> Int -> Int -> Int -> Int -> Int -> Text -> Maybe Text -> Text -> Bool -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe (HashMap FacetName Int) -> Maybe (HashMap FacetName FacetStat) -> Maybe Bool -> SearchResults a
[searchResultsHits] :: SearchResults a -> [SearchResult a]
[searchResultsPage] :: SearchResults a -> Int
[searchResultsNbHits] :: SearchResults a -> Int
[searchResultsNbPages] :: SearchResults a -> Int
[searchResultsHitsPerPage] :: SearchResults a -> Int
[searchResultsProcessingtimeMs] :: SearchResults a -> Int
[searchResultsQuery] :: SearchResults a -> Text
[searchResultsParsedQuery] :: SearchResults a -> Maybe Text
[searchResultsParams] :: SearchResults a -> Text
[searchResultsExhaustiveNbHits] :: SearchResults a -> Bool
[searchResultsQueryAfterRemoval] :: SearchResults a -> Maybe Text
[searchResultsMessage] :: SearchResults a -> Maybe Text
[searchResultsAroundLatLng] :: SearchResults a -> Maybe Text
[searchResultsAutomaticRadius] :: SearchResults a -> Maybe Text
[searchResultsServerUsed] :: SearchResults a -> Maybe Text
[searchResultsFacets] :: SearchResults a -> Maybe (HashMap FacetName Int)
[searchResultsFacetsStats] :: SearchResults a -> Maybe (HashMap FacetName FacetStat)
[searchResultsExhaustiveFacetCount] :: SearchResults a -> Maybe Bool
-- | Return objects that match the query.
--
-- You can find the list of parameters that you can use in the POST body
-- in the Search Parameters section.
--
-- Alternatively, parameters may be specified as a URL-encoded query
-- string inside the params attribute.
searchIndex :: FromJSON a => IndexName a -> SearchParameters -> Result (SearchResults a)
data MultiIndexSearchStrategy
None :: MultiIndexSearchStrategy
StopIfEnoughMatches :: MultiIndexSearchStrategy
searchMultipleIndices :: [(IndexName Object, Query)] -> Maybe MultiIndexSearchStrategy -> Result [SearchResults Object]
data DeleteIndexResponse
DeleteIndexResponse :: UTCTime -> TaskId -> DeleteIndexResponse
[deleteIndexResponseDeletedAt] :: DeleteIndexResponse -> UTCTime
[deleteIndexResponseTaskId] :: DeleteIndexResponse -> TaskId
-- | Delete an existing index.
deleteIndex :: IndexName a -> Result DeleteIndexResponse
-- | Delete an index’s content, but leave settings and index-specific API
-- keys untouched.
clearIndex :: IndexName a -> Result IndexOperationResponse
data AddObjectWithoutIdResponse a
AddObjectWithoutIdResponse :: UTCTime -> TaskId -> ObjectId a -> AddObjectWithoutIdResponse a
[addObjectWithoutIdResponseCreatedAt] :: AddObjectWithoutIdResponse a -> UTCTime
[addObjectWithoutIdResponseTaskId] :: AddObjectWithoutIdResponse a -> TaskId
[addObjectWithoutIdResponseObjectId] :: AddObjectWithoutIdResponse a -> ObjectId a
-- | Add an object to the index, automatically assigning it an object ID.
addObjectWithoutId :: ToJSON a => IndexName a -> a -> Result (AddObjectWithoutIdResponse a)
data AddObjectByIdResponse a
AddObjectByIdResponse :: UTCTime -> TaskId -> ObjectId a -> AddObjectByIdResponse a
[addObjectByIdResponseUpdatedAt] :: AddObjectByIdResponse a -> UTCTime
[addObjectByIdResponseTaskId] :: AddObjectByIdResponse a -> TaskId
[addObjectByIdResponseObjectId] :: AddObjectByIdResponse a -> ObjectId a
-- | Add or replace an object with a given object ID. If the object does
-- not exist, it will be created. If it already exists, it will be
-- replaced.
--
-- Be careful: when an object already exists for the specified object ID,
-- the whole object is replaced: existing attributes that are not
-- replaced are deleted.
--
-- If you want to update only part of an object, use a partial update
-- instead.
addObjectById :: ToJSON a => IndexName a -> ObjectId a -> a -> Result (AddObjectByIdResponse a)
data UpdateOp
Increment :: Scientific -> UpdateOp
Decrement :: Scientific -> UpdateOp
Add :: (Either Scientific Text) -> UpdateOp
Remove :: (Either Scientific Text) -> UpdateOp
AddUnique :: (Either Scientific Text) -> UpdateOp
data ObjectResponse
ObjectResponse :: ObjectResponse
partiallyUpdateObject :: IndexName a -> HashMap Text UpdateOp -> Result ObjectResponse
data RetrieveObjectResponse a
RetrieveObjectResponse :: !(ObjectId a) -> a -> RetrieveObjectResponse a
[retrieveObjectResponseObjectId] :: RetrieveObjectResponse a -> !(ObjectId a)
[retrieveObjectResponseObject] :: RetrieveObjectResponse a -> a
retrieveObject :: FromJSON a => IndexName a -> ObjectId a -> [Text] -> Result (Maybe (RetrieveObjectResponse a))
retrieveObjects :: [(IndexName Object, ObjectId Object, [Text])] -> Result [Object]
data DeleteObjectResponse
DeleteObjectResponse :: UTCTime -> TaskId -> DeleteObjectResponse
[deleteObjectResponseDeletedAt] :: DeleteObjectResponse -> UTCTime
[deleteObjectResponseTaskId] :: DeleteObjectResponse -> TaskId
deleteObject :: IndexName a -> ObjectId a -> Result DeleteObjectResponse
data BatchOp a
AddObjectOp :: a -> BatchOp a
UpdateObjectOp :: (ObjectId a) -> a -> BatchOp a
PartialUpdateObjectOp :: (ObjectId a) -> (HashMap Text UpdateOp) -> BatchOp a
PartialUpdateObjectNoCreateOp :: (ObjectId a) -> (HashMap Text UpdateOp) -> BatchOp a
DeleteObjectOp :: (ObjectId a) -> BatchOp a
DeleteIndexOp :: BatchOp a
ClearIndexOp :: BatchOp a
data BatchResponse
BatchResponse :: TaskId -> [Maybe (ObjectId Object)] -> BatchResponse
[batchResponseTaskId] :: BatchResponse -> TaskId
[batchResponseObjectIds] :: BatchResponse -> [Maybe (ObjectId Object)]
batch :: ToJSON a => IndexName a -> [BatchOp a] -> Result BatchResponse
data BatchMultipleIndicesResponse
BatchMultipleIndicesResponse :: HashMap (IndexName Object) TaskId -> [Maybe (ObjectId Object)] -> BatchMultipleIndicesResponse
[batchMultipleIndicesResponseTaskId] :: BatchMultipleIndicesResponse -> HashMap (IndexName Object) TaskId
[batchMultipleIndicesResponseObjectIds] :: BatchMultipleIndicesResponse -> [Maybe (ObjectId Object)]
batchMultipleIndices :: [(IndexName Object, BatchOp Object)] -> Result BatchMultipleIndicesResponse
data BrowseIndexResponse a
BrowseIndexResponse :: Maybe (Cursor a) -> !(Vector (RetrieveObjectResponse a)) -> !Int -> !Int -> !Int -> !Int -> !Int -> !Text -> !Text -> BrowseIndexResponse a
[browseIndexResponseCursor] :: BrowseIndexResponse a -> Maybe (Cursor a)
[browseIndexResponseHits] :: BrowseIndexResponse a -> !(Vector (RetrieveObjectResponse a))
[browseIndexResponsePage] :: BrowseIndexResponse a -> !Int
[browseIndexResponseNumberOfHits] :: BrowseIndexResponse a -> !Int
[browseIndexResponseNumberOfPages] :: BrowseIndexResponse a -> !Int
[browseIndexResponseHitsPerPage] :: BrowseIndexResponse a -> !Int
[browseIndexResponseProcessingTimeMs] :: BrowseIndexResponse a -> !Int
[browseIndexResponseQuery] :: BrowseIndexResponse a -> !Text
[browseIndexResponseParams] :: BrowseIndexResponse a -> !Text
browseAllIndexContent :: FromJSON a => IndexName a -> Result (BrowseIndexResponse a)
data IndexOperation
MoveIndex :: IndexOperation
CopyIndex :: IndexOperation
data IndexOperationResponse
IndexOperationResponse :: UTCTime -> TaskId -> IndexOperationResponse
[indexOperationResponseUpdatedAt] :: IndexOperationResponse -> UTCTime
[indexOperationResponseTaskId] :: IndexOperationResponse -> TaskId
copyOrMoveIndex :: IndexOperation -> IndexName a -> IndexName a -> Result IndexOperationResponse
data TaskStatus
Published :: TaskStatus
NotPublished :: TaskStatus
data TaskStatusResult
TaskStatusResult :: TaskStatus -> Bool -> TaskStatusResult
[taskStatusResultStatus] :: TaskStatusResult -> TaskStatus
[taskStatusResultPendingTask] :: TaskStatusResult -> Bool
-- | Wait for a task to be processed by Algolia
waitTask :: IndexName a -> TaskId -> Result ()
-- | Get the status of a task. This can be used to wait for a task to be
-- processed via polling.
--
-- See waitTask for an implementation of this behavior.
getTaskStatus :: IndexName a -> TaskId -> Result TaskStatusResult
newtype FacetName
FacetName :: Text -> FacetName
[fromFacetName] :: FacetName -> Text
newtype FacetQuery
FacetQuery :: Text -> FacetQuery
[fromFacetQuery] :: FacetQuery -> Text
data FacetHit
FacetHit :: Text -> Text -> Int -> FacetHit
[facetHitValue] :: FacetHit -> Text
[facetHitHighlighted] :: FacetHit -> Text
[facetHitCount] :: FacetHit -> Int
newtype FacetHits
FacetHits :: [FacetHit] -> FacetHits
[facetHits] :: FacetHits -> [FacetHit]
searchFacetValues :: IndexName a -> FacetName -> FacetQuery -> Result FacetHits
newtype SynonymId
SynonymId :: Text -> SynonymId
[fromSynonymId] :: SynonymId -> Text
data Synonym
MultiWaySynonym :: [Text] -> Synonym
OneWaySynonym :: Text -> [Text] -> Synonym
AlternativeCorrection1 :: Correction -> Synonym
AlternativeCorrection2 :: Correction -> Synonym
Placeholder :: Text -> [Text] -> Synonym
data Correction
Correction :: Text -> [Text] -> Correction
[correctionWord] :: Correction -> Text
[correctionCorrections] :: Correction -> [Text]
data SynonymType
-- | Multi-way synonyms (a.k.a. “regular synonyms”). A set of words or
-- phrases that are all substitutable to one another. Any query
-- containing one of them can match records containing any of them.
SynonymTy :: SynonymType
-- | One-way synonym. Alternative matches for a given input. If the input
-- appears inside a query, it will match records containing any of the
-- defined synonyms. The opposite is not true: if a synonym appears in a
-- query, it will not match records containing the input, nor the other
-- synonyms.
OneWaySynonymTy :: SynonymType
-- | Alternative corrections. Same as a one-way synonym, except that when
-- matched, they will count as 1 (respectively 2) typos in the ranking
-- formula.
AltCorrection1Ty :: SynonymType
AltCorrection2Ty :: SynonymType
-- | A placeholder is a special text token that is placed inside records
-- and can match many inputs. For more information on synonyms, please
-- read our Synonyms guide.
-- https://www.algolia.com/doc/guides/textual-relevance/synonyms/
PlaceholderTy :: SynonymType
data SynonymSearch
SynonymSearch :: Maybe Text -> [SynonymType] -> Maybe Int -> Maybe Int -> SynonymSearch
-- | Search for specific synonyms matching this string.
[synonymSearchQuery] :: SynonymSearch -> Maybe Text
-- | Only search for specific types of synonyms.
[synonymSearchType] :: SynonymSearch -> [SynonymType]
-- | Number of the page to retrieve (zero-based).
[synonymSearchPage] :: SynonymSearch -> Maybe Int
-- | Maximum number of synonym objects to retrieve.
[synonymSearchHitsPerPage] :: SynonymSearch -> Maybe Int
data SynonymSearchResponse
SynonymSearchResponse :: Object -> SynonymSearchResponse
-- | Search or browse all synonyms, optionally filtering them by type.
searchSynonyms :: IndexName a -> SynonymSearch -> Result SynonymSearchResponse
data LogType
AllLogs :: LogType
QueryLogs :: LogType
BuildLogs :: LogType
ErrorLogs :: LogType
data LogsResponse
LogsResponse :: [Object] -> LogsResponse
[logsResponseResults] :: LogsResponse -> [Object]
getLogs :: Maybe Int -> Maybe Int -> Maybe (IndexName a) -> Maybe LogType -> Result LogsResponse
data AlgoliaError
-- | The response was a JSON value, but the library does not know how to
-- handle it properly.
JsonParseError :: String -> AlgoliaError
-- | The response was not JSON.
NonConformingResult :: Request -> (Response ()) -> Value -> String -> AlgoliaError
-- | A JSON object was expected as the response, but it was some other JSON
-- type.
ToJsonInstanceMustProduceAnObject :: AlgoliaError
instance GHC.Show.Show Network.Algolia.Search.LogsResponse
instance GHC.Show.Show Network.Algolia.Search.LogType
instance Data.Aeson.Types.FromJSON.FromJSONKey Network.Algolia.Search.SynonymId
instance Data.Aeson.Types.FromJSON.FromJSON Network.Algolia.Search.SynonymId
instance Data.Aeson.Types.ToJSON.ToJSON Network.Algolia.Search.SynonymId
instance GHC.Classes.Eq Network.Algolia.Search.SynonymId
instance GHC.Show.Show Network.Algolia.Search.SynonymId
instance GHC.Classes.Eq Network.Algolia.Search.FacetHits
instance GHC.Show.Show Network.Algolia.Search.FacetHits
instance GHC.Classes.Eq Network.Algolia.Search.FacetHit
instance GHC.Show.Show Network.Algolia.Search.FacetHit
instance GHC.Classes.Eq Network.Algolia.Search.FacetQuery
instance GHC.Show.Show Network.Algolia.Search.FacetQuery
instance GHC.Show.Show a => GHC.Show.Show (Network.Algolia.Search.SearchResults a)
instance Data.Hashable.Class.Hashable Network.Algolia.Search.FacetName
instance Data.Aeson.Types.FromJSON.FromJSONKey Network.Algolia.Search.FacetName
instance Data.Aeson.Types.FromJSON.FromJSON Network.Algolia.Search.FacetName
instance GHC.Classes.Eq Network.Algolia.Search.FacetName
instance GHC.Show.Show Network.Algolia.Search.FacetName
instance GHC.Show.Show Network.Algolia.Search.TaskStatusResult
instance GHC.Classes.Eq Network.Algolia.Search.TaskStatus
instance GHC.Show.Show Network.Algolia.Search.TaskStatus
instance GHC.Classes.Eq Network.Algolia.Search.IndexOperationResponse
instance GHC.Show.Show Network.Algolia.Search.IndexOperationResponse
instance GHC.Classes.Eq Network.Algolia.Search.IndexOperation
instance GHC.Show.Show Network.Algolia.Search.IndexOperation
instance Data.Aeson.Types.FromJSON.FromJSON (Network.Algolia.Search.Cursor a)
instance Data.Aeson.Types.ToJSON.ToJSON (Network.Algolia.Search.Cursor a)
instance GHC.Classes.Eq (Network.Algolia.Search.Cursor a)
instance GHC.Show.Show (Network.Algolia.Search.Cursor a)
instance GHC.Show.Show Network.Algolia.Search.BatchMultipleIndicesResponse
instance GHC.Show.Show Network.Algolia.Search.BatchResponse
instance GHC.Classes.Eq Network.Algolia.Search.RetrieveObjectResults
instance GHC.Show.Show Network.Algolia.Search.RetrieveObjectResults
instance GHC.Classes.Eq a => GHC.Classes.Eq (Network.Algolia.Search.RetrieveObjectResponse a)
instance GHC.Show.Show a => GHC.Show.Show (Network.Algolia.Search.RetrieveObjectResponse a)
instance GHC.Classes.Eq (Network.Algolia.Search.AddObjectWithoutIdResponse a)
instance GHC.Show.Show (Network.Algolia.Search.AddObjectWithoutIdResponse a)
instance GHC.Show.Show Network.Algolia.Search.DeleteIndexResponse
instance GHC.Classes.Eq Network.Algolia.Search.MultiIndexSearchStrategy
instance GHC.Show.Show Network.Algolia.Search.MultiIndexSearchStrategy
instance GHC.Show.Show Network.Algolia.Search.FacetStat
instance GHC.Show.Show a => GHC.Show.Show (Network.Algolia.Search.SearchResult a)
instance GHC.Show.Show Network.Algolia.Search.SearchParameters
instance GHC.Classes.Eq Network.Algolia.Search.ListIndicesResponse
instance GHC.Show.Show Network.Algolia.Search.ListIndicesResponse
instance GHC.Classes.Eq Network.Algolia.Search.IndexInfo
instance GHC.Show.Show Network.Algolia.Search.IndexInfo
instance Data.Aeson.Types.FromJSON.FromJSON Network.Algolia.Search.TaskId
instance Data.Aeson.Types.ToJSON.ToJSON Network.Algolia.Search.TaskId
instance GHC.Classes.Eq Network.Algolia.Search.TaskId
instance GHC.Show.Show Network.Algolia.Search.TaskId
instance Data.String.IsString (Network.Algolia.Search.ObjectId a)
instance GHC.Classes.Eq (Network.Algolia.Search.ObjectId a)
instance GHC.Show.Show (Network.Algolia.Search.ObjectId a)
instance Data.Hashable.Class.Hashable (Network.Algolia.Search.IndexName a)
instance GHC.Classes.Eq (Network.Algolia.Search.IndexName a)
instance GHC.Show.Show (Network.Algolia.Search.IndexName a)
instance GHC.Show.Show Network.Algolia.Search.AlgoliaError
instance Data.Aeson.Types.FromJSON.FromJSON Network.Algolia.Search.LogsResponse
instance Data.Aeson.Types.FromJSON.FromJSON Network.Algolia.Search.SynonymSearchResponse
instance Data.Aeson.Types.ToJSON.ToJSON Network.Algolia.Search.SynonymSearch
instance Data.Aeson.Types.FromJSON.FromJSON Network.Algolia.Search.FacetHits
instance Data.Aeson.Types.FromJSON.FromJSON Network.Algolia.Search.FacetHit
instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Network.Algolia.Search.SearchResults a)
instance Network.URI.Template.Types.ToTemplateValue Network.Algolia.Search.FacetName
instance Data.Aeson.Types.FromJSON.FromJSON Network.Algolia.Search.TaskStatusResult
instance Data.Aeson.Types.FromJSON.FromJSON Network.Algolia.Search.TaskStatus
instance Data.Aeson.Types.FromJSON.FromJSON Network.Algolia.Search.IndexOperationResponse
instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Network.Algolia.Search.BrowseIndexResponse a)
instance Data.Aeson.Types.FromJSON.FromJSON Network.Algolia.Search.BatchMultipleIndicesResponse
instance Data.Aeson.Types.FromJSON.FromJSON Network.Algolia.Search.BatchResponse
instance Data.Aeson.Types.FromJSON.FromJSON Network.Algolia.Search.DeleteObjectResponse
instance Data.Aeson.Types.FromJSON.FromJSON Network.Algolia.Search.RetrieveObjectResults
instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Network.Algolia.Search.RetrieveObjectResponse a)
instance Data.Aeson.Types.ToJSON.ToJSON Network.Algolia.Search.UpdateOp
instance Data.Aeson.Types.FromJSON.FromJSON (Network.Algolia.Search.AddObjectByIdResponse a)
instance Data.Aeson.Types.FromJSON.FromJSON (Network.Algolia.Search.AddObjectWithoutIdResponse a)
instance Data.Aeson.Types.FromJSON.FromJSON Network.Algolia.Search.DeleteIndexResponse
instance Data.Aeson.Types.ToJSON.ToJSON Network.Algolia.Search.MultiIndexSearchStrategy
instance Data.Aeson.Types.FromJSON.FromJSON Network.Algolia.Search.FacetStat
instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Network.Algolia.Search.SearchResult a)
instance Data.Aeson.Types.ToJSON.ToJSON Network.Algolia.Search.SearchParameters
instance Data.Aeson.Types.FromJSON.FromJSON Network.Algolia.Search.ListIndicesResponse
instance Data.Aeson.Types.FromJSON.FromJSON Network.Algolia.Search.IndexInfo
instance Network.Algolia.Search.Reconstrain Network.Algolia.Search.ObjectId
instance Network.Algolia.Search.Reconstrain Network.Algolia.Search.IndexName
instance Network.Algolia.Search.Reconstrain Data.Proxy.Proxy
instance Network.URI.Template.Types.ToTemplateValue Network.Algolia.Search.TaskId
instance Data.Aeson.Types.ToJSON.ToJSON (Network.Algolia.Search.ObjectId a)
instance Data.Aeson.Types.FromJSON.FromJSON (Network.Algolia.Search.ObjectId a)
instance Network.URI.Template.Types.ToTemplateValue (Network.Algolia.Search.ObjectId a)
instance Data.Aeson.Types.ToJSON.ToJSON (Network.Algolia.Search.IndexName a)
instance Data.Aeson.Types.FromJSON.FromJSON (Network.Algolia.Search.IndexName a)
instance Data.Aeson.Types.FromJSON.FromJSONKey (Network.Algolia.Search.IndexName a)
instance Network.URI.Template.Types.ToTemplateValue (Network.Algolia.Search.IndexName a)
instance GHC.Exception.Exception Network.Algolia.Search.AlgoliaError