# `WalletPasses.PassDataProvider`
[🔗](https://gitlab.com/phinnaeus/wallet_passes/blob/main/lib/wallet_passes/pass_data_provider.ex#L1)

Behaviour for consumers to implement pass data lookups.

The library calls this when it needs to autonomously build pass content,
e.g. when Apple requests an updated pass via the callback router.

# `pass_bundle`

```elixir
@type pass_bundle() :: %{
  pass_data: WalletPasses.PassData.t(),
  apple: WalletPasses.Apple.Visual.t() | nil,
  google: WalletPasses.Google.Visual.t() | nil
}
```

# `build_pass_data`

```elixir
@callback build_pass_data(serial_number :: String.t()) ::
  {:ok, pass_bundle()} | {:error, term()}
```

---

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