# IdempotencyPlug v0.2.2 - Table of Contents

> Plug that makes POST and PATCH requests idempotent

## Pages

- [IdempotencyPlug](README.md)
- [CHANGELOG](CHANGELOG.md)

## Modules

- [IdempotencyPlug](IdempotencyPlug.md): Plug that handles `Idempotency-Key` HTTP headers.
- [IdempotencyPlug.RequestTracker](IdempotencyPlug.RequestTracker.md): A GenServer that tracks request processes to ensure each request is processed
at most once.

- Cache Store
  - [IdempotencyPlug.ETSStore](IdempotencyPlug.ETSStore.md): Module that defines an ETS store.
  - [IdempotencyPlug.EctoStore](IdempotencyPlug.EctoStore.md): Module that defines an Ecto store.
  - [IdempotencyPlug.Store](IdempotencyPlug.Store.md): Behaviour for cache stores.

- Errors
  - [IdempotencyPlug.ConcurrentRequestError](IdempotencyPlug.ConcurrentRequestError.md): There's another request currently being processed for this ID.

  - [IdempotencyPlug.HaltedResponseError](IdempotencyPlug.HaltedResponseError.md): The cached response process didn't terminate correctly.

  - [IdempotencyPlug.MultipleHeadersError](IdempotencyPlug.MultipleHeadersError.md): There are multiple Idempotency-Key request headers.

  - [IdempotencyPlug.NoHeadersError](IdempotencyPlug.NoHeadersError.md): There's no Idempotency-Key request headers.

  - [IdempotencyPlug.RequestPayloadFingerprintMismatchError](IdempotencyPlug.RequestPayloadFingerprintMismatchError.md): The fingerprint for the request payload doesn't match the cached response.

## Mix Tasks

- [mix idempotency_plug.ecto.gen.migration](Mix.Tasks.IdempotencyPlug.Ecto.Gen.Migration.md): Generates a IdempotencyPlug store migration.

