# Picnic v0.1.0 - Table of Contents

> An Elixir client for Picnic's unofficial supermarket API, built to tolerate drift.

## Pages

- [Picnic](readme.md)
- [Changelog](changelog.md)
- [License](license.md)

## Modules

- [Picnic.Page](Picnic.Page.md): Flattens Picnic's display-page payloads into plain lists.

- Core
  - [Picnic](Picnic.md): An Elixir client for Picnic's unofficial supermarket API.
  - [Picnic.Auth](Picnic.Auth.md): Login, password hashing, and the two-factor handshake.
  - [Picnic.Client](Picnic.Client.md): The client struct — plain data, not a process.
  - [Picnic.Config](Picnic.Config.md): Resolves client configuration.
  - [Picnic.Decode](Picnic.Decode.md): Lenient decoding of API payloads.
  - [Picnic.Error](Picnic.Error.md): The error struct returned by every function in this library.
  - [Picnic.HTTP](Picnic.HTTP.md): The single HTTP chokepoint.

- Resources
  - [Picnic.Resources.Cart](Picnic.Resources.Cart.md): The shopping cart.
  - [Picnic.Resources.Deliveries](Picnic.Resources.Deliveries.md): Past and upcoming deliveries.
  - [Picnic.Resources.Recipes](Picnic.Resources.Recipes.md): Meal recipes and their ingredient lists.
  - [Picnic.Resources.Search](Picnic.Resources.Search.md): Product search.
  - [Picnic.Resources.User](Picnic.Resources.User.md): The account profile — address, contact details, and household settings.

- Schemas
  - [Picnic.Schema](Picnic.Schema.md): Behaviour for the optional, deliberately loose domain structs under
`Picnic.Schema.*`.
  - [Picnic.Schema.Cart](Picnic.Schema.Cart.md): Loose struct for the shopping cart. Prices are integers in cents, as the
API sends them. Unknown fields are ignored; the complete original payload
is always available under `:raw`.

  - [Picnic.Schema.Delivery](Picnic.Schema.Delivery.md): Loose struct for a delivery. Unknown fields are ignored; the complete
original payload is always available under `:raw`.

  - [Picnic.Schema.Recipe](Picnic.Schema.Recipe.md): Loose struct for a recipe. Unknown fields are ignored; the complete
original payload is always available under `:raw`.

  - [Picnic.Schema.SearchResult](Picnic.Schema.SearchResult.md): Loose struct for one product matched by a search. Prices are integer cents,
so `129` is €1.29. Unknown fields are ignored; the complete original payload
is always available under `:raw`.

  - [Picnic.Schema.User](Picnic.Schema.User.md): Loose struct for the account profile. Unknown fields are ignored; the
complete original payload is always available under `:raw`.

- Session
  - [Picnic.Session](Picnic.Session.md): Optional managed-auth layer: a GenServer that holds the client and
re-authenticates for you.
  - [Picnic.Session.TokenStore](Picnic.Session.TokenStore.md): Behaviour for persisting the auth token across `Picnic.Session` restarts.
  - [Picnic.Session.TokenStore.Memory](Picnic.Session.TokenStore.Memory.md): The default token store: keeps the token in the session's own state.

