# `Arangox.API.HotBackups`
[🔗](https://github.com/ArangoDB-Community/arangox/blob/v0.8.0/lib/arangox/api/hot_backups.ex#L1)

ArangoDB's HotBackups operations.

Every function takes the pool as its first argument and returns the decoded
response body. See `Arangox.API.Client` for the options they all accept and
for what a `404` returns.

# `all`

```elixir
@spec all(Arangox.conn(), term(), keyword()) ::
  {:ok, term()} | {:error, Exception.t()}
```

List all backups

Lists all locally found backups.

# `all!`

```elixir
@spec all!(Arangox.conn(), term(), keyword()) :: term()
```

List all backups. Raises on error.

See `all/2`.

# `create`

```elixir
@spec create(Arangox.conn(), term(), keyword()) ::
  {:ok, term()} | {:error, Exception.t()}
```

Create a backup

Creates a consistent local backup "as soon as possible", very much
like a snapshot in time, with a given label. The ambiguity in the
phrase "as soon as possible" refers to the next window during which a
global write lock across all databases can be obtained in order to
guarantee consistency. Note that the backup at first resides on the
same machine and hard drive as the original data. Make sure to upload
it to a remote site for an actual backup.

# `create!`

```elixir
@spec create!(Arangox.conn(), term(), keyword()) :: term()
```

Create a backup. Raises on error.

See `create/2`.

# `delete`

```elixir
@spec delete(Arangox.conn(), term(), keyword()) ::
  {:ok, term()} | {:error, Exception.t()}
```

Delete a backup

Delete a specific local backup identified by the given `id`.

# `delete!`

```elixir
@spec delete!(Arangox.conn(), term(), keyword()) :: term()
```

Delete a backup. Raises on error.

See `delete/2`.

# `download`

```elixir
@spec download(Arangox.conn(), term(), keyword()) ::
  {:ok, term()} | {:error, Exception.t()}
```

Download a backup from a remote repository

Download a specific local backup from a remote repository, or query
progress on a previously scheduled download operation, or abort
a running download operation.

# `download!`

```elixir
@spec download!(Arangox.conn(), term(), keyword()) :: term()
```

Download a backup from a remote repository. Raises on error.

See `download/2`.

# `restore`

```elixir
@spec restore(Arangox.conn(), term(), keyword()) ::
  {:ok, term()} | {:error, Exception.t()}
```

Restore a backup

Restores a consistent local backup from a
snapshot in time, with a given id. The backup snapshot must reside on
the ArangoDB service locally.

# `restore!`

```elixir
@spec restore!(Arangox.conn(), term(), keyword()) :: term()
```

Restore a backup. Raises on error.

See `restore/2`.

# `upload`

```elixir
@spec upload(Arangox.conn(), term(), keyword()) ::
  {:ok, term()} | {:error, Exception.t()}
```

Upload a backup to a remote repository

Upload a specific local backup to a remote repository, or query
progress on a previously scheduled upload operation, or abort
a running upload operation.

# `upload!`

```elixir
@spec upload!(Arangox.conn(), term(), keyword()) :: term()
```

Upload a backup to a remote repository. Raises on error.

See `upload/2`.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
