# Snap v0.16.0 - Table of Contents

> A modern Elasticsearch/OpenSearch client

## Pages

- [Snap](readme.md)
- [Changelog](changelog.md)

## Modules

- [Snap](Snap.md): Snap is split into a few key modules
- [Snap.Bulk](Snap.Bulk.md): Supports streaming bulk operations against a `Snap.Cluster`.

- [Snap.Cluster](Snap.Cluster.md): Defines a cluster.
- [Snap.Cluster.Namespace](Snap.Cluster.Namespace.md): Manages the namespacing of a cluster, so a cluster can be scoped to only
operate on indexes with a specific prefix.
- [Snap.Document](Snap.Document.md): Convenience API into the [Document API](https://www.elastic.co/guide/en/elasticsearch/reference/current/docs.html).

- [Snap.Indexes](Snap.Indexes.md): Helper functions around index management.

- [Snap.Request](Snap.Request.md): Supports making arbitrary requests against `Snap.Cluster`.
- [Snap.Scroll](Snap.Scroll.md): Streams documents from a search query using the [scroll API](https://www.elastic.co/guide/en/elasticsearch/reference/current/paginate-search-results.html#scroll-search-results).
- [Snap.Search](Snap.Search.md): Performs searches against an ElasticSearch cluster.

- [Snap.Test](Snap.Test.md): Helpers around testing with `Snap`.

- Authentication
  - [Snap.Auth](Snap.Auth.md): Defines how HTTP request is transformed to add authentication.

  - [Snap.Auth.Plain](Snap.Auth.Plain.md): Implements HTTP Basic Auth, if necessary.

- HTTP Client
  - [Snap.HTTPClient](Snap.HTTPClient.md): Behaviour for the HTTP client used by the `Snap.Cluster`.
  - [Snap.HTTPClient.Adapters.Finch](Snap.HTTPClient.Adapters.Finch.md): Built in adapter using `Finch`.
  - [Snap.HTTPClient.Response](Snap.HTTPClient.Response.md): Response of a http request.

- Bulk operations
  - [Snap.Bulk.Action.Create](Snap.Bulk.Action.Create.md): Represents a create step in a `Snap.Bulk` operation

  - [Snap.Bulk.Action.Delete](Snap.Bulk.Action.Delete.md): Represents a delete step in a `Snap.Bulk` operation

  - [Snap.Bulk.Action.Index](Snap.Bulk.Action.Index.md): Represents an index step in a `Snap.Bulk` operation

  - [Snap.Bulk.Action.Update](Snap.Bulk.Action.Update.md): Represents an update step in a `Snap.Bulk` operation

- Multi search API
  - [Snap.Multi](Snap.Multi.md): Provides a high level abstraction over the [Multi Search
API](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-multi-search.html)
which allows the user to perform multiple searches in a single request.
  - [Snap.Multi.Response](Snap.Multi.Response.md): Represents a successful response for a `Snap.Multi` request.

- Response structs
  - [Snap.DeleteResponse](Snap.DeleteResponse.md): Represents the response from ElasticSearch's [`delete_by_query` request](https://docs.opensearch.org/2.19/api-reference/document-apis/delete-by-query/).

  - [Snap.Hit](Snap.Hit.md): Represents an individual hit dictionary from a [Search API](https://www.elastic.co/guide/en/elasticsearch/reference/current/search.html) response.

  - [Snap.Hits](Snap.Hits.md): Represents the `hits` dictionary returned from an ElasticSearch [Search API](https://www.elastic.co/guide/en/elasticsearch/reference/current/search.html) response.
  - [Snap.SearchResponse](Snap.SearchResponse.md): Represents the response from ElasticSearch's [Search API](https://www.elastic.co/guide/en/elasticsearch/reference/current/search.html).

- Exceptions
  - [Snap.BulkError](Snap.BulkError.md): Represents a list of errors, collected from a `Snap.Bulk` operation.

  - [Snap.HTTPClient.Error](Snap.HTTPClient.Error.md): Represents an Error returned by the HTTPClient.
  - [Snap.HTTPError](Snap.HTTPError.md): Represents an HTTP error returned while executing a query.

  - [Snap.InvalidPathError](Snap.InvalidPathError.md): Represents an error when a request path is malformed or contains
directory-traversal segments.

  - [Snap.ResponseError](Snap.ResponseError.md): Represents an Elasticsearch exception raised while executing a query.

