# `RevenueCat.Customer`

Parsed customer response from RevenueCat.

# `t`

```elixir
@type t() :: %RevenueCat.Customer{
  attributes: %{optional(String.t()) =&gt; RevenueCat.Customer.Attribute.t()},
  entitlements: %{optional(String.t()) =&gt; RevenueCat.Customer.Entitlement.t()},
  first_seen: String.t() | nil,
  last_seen: String.t() | nil,
  management_url: String.t() | nil,
  non_subscriptions: map(),
  original_app_user_id: String.t() | nil,
  original_application_version: String.t() | nil,
  original_purchase_date: String.t() | nil,
  other_purchases: map(),
  request_date: String.t() | nil,
  request_date_ms: integer() | nil,
  subscriptions: %{optional(String.t()) =&gt; RevenueCat.Customer.Subscription.t()}
}
```

# `from_response`

```elixir
@spec from_response(map()) :: {:ok, t()} | {:error, term()}
```

Build a customer struct from a RevenueCat response map.

---

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