# myanimelist v0.1.0 - Table of Contents

> MyAnimeList API v2 client for Elixir, covering both anime and manga: public search & metadata, the OAuth (PKCE) login flow, and authenticated list sync. Errors as values, a Req.Test seam, and a TokenStore behaviour so persistence stays in your app (no Ecto dependency).

## Pages

- [MyAnimeList](readme.md)
- [Changelog](changelog.md)
- [LICENSE](license.md)

## Modules

- [MyAnimeList](MyAnimeList.md): A [MyAnimeList API v2](https://myanimelist.net/apiconfig/references/api/v2)
client for Elixir, covering **both anime and manga**. The media type is
the first argument on every call
- [MyAnimeList.Client](MyAnimeList.Client.md): OAuth app credentials for MyAnimeList.
- [MyAnimeList.Token](MyAnimeList.Token.md): An OAuth token set. `expires_at` is computed from the `expires_in` MAL
returns, so `MyAnimeList.ensure_fresh/3` can refresh before it lapses.
Persist all three fields in your own store (see `MyAnimeList.TokenStore`).

- [MyAnimeList.TokenStore](MyAnimeList.TokenStore.md): Behaviour for persisting per-owner MAL tokens.

