# `LatticeStripe.SetupAttempt`
[🔗](https://github.com/szTheory/lattice_stripe/blob/v2.2.2/lib/lattice_stripe/setup_attempt.ex#L1)

Operations on Stripe SetupAttempt objects.

SetupAttempts are Stripe-generated history records used to inspect how a
SetupIntent save attempt progressed, including any historical setup error.
This module is intentionally read-only and exposes only list/stream access.

**Requires `"setup_intent"` in params for `list/3` and `stream!/3`.** This
filter is required because Stripe only supports setup-intent-scoped listing
for this resource, so missing it raises `ArgumentError` before any network
call.

## Usage

    {:ok, resp} =
      LatticeStripe.SetupAttempt.list(client, %{"setup_intent" => "seti_123"})

    latest_attempt = List.first(resp.data.data)

    client
    |> LatticeStripe.SetupAttempt.stream!(%{"setup_intent" => "seti_123"})
    |> Enum.take(10)

# `t`

```elixir
@type t() :: %LatticeStripe.SetupAttempt{
  application: struct() | String.t() | map() | nil,
  attach_to_self: boolean() | nil,
  created: integer() | nil,
  customer: LatticeStripe.Customer.t() | String.t() | map() | nil,
  customer_account: map() | nil,
  extra: map(),
  flow_directions: [String.t()] | nil,
  id: String.t() | nil,
  livemode: boolean() | nil,
  object: String.t(),
  on_behalf_of: struct() | String.t() | map() | nil,
  payment_method: LatticeStripe.PaymentMethod.t() | String.t() | map() | nil,
  payment_method_details: map() | nil,
  setup_error: LatticeStripe.SetupAttempt.SetupError.t() | nil,
  setup_intent: LatticeStripe.SetupIntent.t() | String.t() | map() | nil,
  status: atom() | String.t() | nil,
  usage: atom() | String.t() | nil
}
```

# `from_map`

```elixir
@spec from_map(map() | nil) :: t() | nil
```

# `list`

```elixir
@spec list(LatticeStripe.Client.t(), map(), keyword()) ::
  {:ok, LatticeStripe.Response.t()} | {:error, LatticeStripe.Error.t()}
```

Lists setup attempts for a specific SetupIntent.

Sends `GET /v1/setup_attempts` and returns typed `%SetupAttempt{}` items.

# `list!`

```elixir
@spec list!(LatticeStripe.Client.t(), map(), keyword()) :: LatticeStripe.Response.t()
```

Like `list/3` but raises `LatticeStripe.Error` on failure.

# `stream!`

```elixir
@spec stream!(LatticeStripe.Client.t(), map(), keyword()) :: Enumerable.t()
```

Streams setup attempts for a specific SetupIntent with auto-pagination.

---

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