# `TelemetryDeck.Config`
[🔗](https://github.com/boldflight/telemetry-deck-elixir/blob/v0.1.0/lib/telemetry_deck/config.ex#L1)

Runtime configuration for TelemetryDeck Ingest API v2.

A `TelemetryDeck.Config` contains the namespace endpoint, app ID, test-mode
flag, and request function used by `TelemetryDeck.Client`.

# `request_fun`
*since 0.1.0* 

```elixir
@type request_fun() :: (String.t(), keyword() -&gt;
                    {:ok, Req.Response.t()} | {:error, term()})
```

Function used by `TelemetryDeck.Client` to perform an HTTP request.

# `t`
*since 0.1.0* 

```elixir
@type t() :: %TelemetryDeck.Config{
  app_id: String.t(),
  endpoint: String.t(),
  is_test_mode: boolean(),
  namespace: String.t(),
  request_fun: request_fun()
}
```

Configuration for TelemetryDeck Ingest API v2.

# `ingest_url`
*since 0.1.0* 

```elixir
@spec ingest_url(t()) :: String.t()
```

Returns the Ingest API v2 URL for a `TelemetryDeck.Config`.

## Examples

    iex> config = TelemetryDeck.Config.new!(namespace: "acme", app_id: "APP-ID")
    iex> TelemetryDeck.Config.ingest_url(config)
    "https://nom.telemetrydeck.com/v2/namespace/acme/"

# `new`
*since 0.1.0* 

```elixir
@spec new(keyword() | map()) :: {:ok, t()} | {:error, map()}
```

Builds a `TelemetryDeck.Config`.

Required options are `:namespace` and `:app_id`. Optional values are
`:endpoint`, `:is_test_mode`, and `:request_fun`.

## Examples

    iex> {:ok, config} = TelemetryDeck.Config.new(namespace: "acme", app_id: "APP-ID")
    iex> TelemetryDeck.Config.ingest_url(config)
    "https://nom.telemetrydeck.com/v2/namespace/acme/"

    iex> TelemetryDeck.Config.new([])
    {:error, %{app_id: "is required", namespace: "is required"}}

# `new!`
*since 0.1.0* 

```elixir
@spec new!(keyword() | map()) :: t()
```

Builds a `TelemetryDeck.Config` or raises `ArgumentError`.

---

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