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

Represents a link to a Stripe file that can be shared outside your account.

FileLinks are top-level resources (not nested under File). They provide
publicly accessible URLs with optional expiration. File links expire --
they are not deleted.

## Create a Link

    {:ok, link} = LatticeStripe.FileLink.create(client, %{
      "file" => "file_abc123"
    })

## Update Expiration

    {:ok, link} = LatticeStripe.FileLink.update(client, "link_abc123", %{
      "expires_at" => 1700000000
    })

## List with Auto-Pagination

    LatticeStripe.FileLink.stream!(client)
    |> Enum.take(50)

## Stripe API Reference

See the [Stripe FileLink API](https://docs.stripe.com/api/file_links) for the
full object reference and available parameters.

# `t`

```elixir
@type t() :: %LatticeStripe.FileLink{
  created: integer() | nil,
  expired: boolean() | nil,
  expires_at: integer() | nil,
  extra: map(),
  file: String.t() | LatticeStripe.File.t() | nil,
  id: String.t() | nil,
  livemode: boolean() | nil,
  metadata: map(),
  object: String.t(),
  url: String.t() | nil
}
```

# `create`

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

Creates a new file link for a given file ID.

# `create!`

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

Same as `create/3` but raises on error.

# `from_map`

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

# `list`

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

Lists file links with optional filters.

# `list!`

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

Same as `list/3` but raises on error.

# `retrieve`

```elixir
@spec retrieve(LatticeStripe.Client.t(), String.t(), keyword()) ::
  {:ok, t()} | {:error, LatticeStripe.Error.t()}
```

Retrieves a file link by ID.

# `retrieve!`

```elixir
@spec retrieve!(LatticeStripe.Client.t(), String.t(), keyword()) :: t()
```

Same as `retrieve/3` but raises on error.

# `stream!`

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

Returns a lazy stream of all file links, auto-paginating as needed.

# `update`

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

Updates a file link (e.g., sets or clears expiration).

# `update!`

```elixir
@spec update!(LatticeStripe.Client.t(), String.t(), map(), keyword()) :: t()
```

Same as `update/4` but raises on error.

---

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