README.md

# RevenueCat

Minimal RevenueCat client for Elixir

[docs](https://hexdocs.pm/revenuecat)

## Installation

```elixir
def deps do
  [
    {:revenuecat, "~> 0.1.0"}
  ]
end
```

## Configuration

Set your API key in config or environment:

```elixir
config :revenuecat, api_key: System.get_env("REVENUECAT_API_KEY")
```

Optional:

```elixir
config :revenuecat,
  base_url: "https://api.revenuecat.com",
  client_adapter: RevenueCat.Client.Req
```

Optional cache:

```elixir
config :revenuecat, customer_cache_ttl_seconds: 120
```

## Usage

```elixir
# get a customer (cached by customer_cache_ttl_seconds)
{:ok, customer} = RevenueCat.get_customer(app_user_id)

# always fetch a customer independent of cache value
{:ok, customer} = RevenueCat.fetch_customer(app_user_id)

IO.inspect(customer)

# Entitlements
RevenueCat.entitlement(customer, "pro")
|> IO.inspect

RevenueCat.has_entitlement?(customer, "pro")

IO.inspect(customer.entitlements)

# Subscriptions
RevenueCat.subscription(customer, "my_sub")
|> IO.inspect

RevenueCat.has_subscription?(customer, "my_subscription")

IO.inspect(customer.subscriptions)

# Attributes
IO.inspect(customer.attributes)

RevenueCat.attribute(customer, "$email")
|> IO.inspect
```

### Add customer attributes:

```elixir
{:ok, customer} =
  RevenueCat.update_customer_attributes(app_user_id, %{
    "foo" => "bar"
  })
```

## License

MIT