# `KapsoEx.WhatsApp.Templates`
[🔗](https://github.com/rocket4ce/kapso_ex/blob/v0.1.0/lib/kapso_ex/whatsapp/templates.ex#L1)

Manage message templates of a WhatsApp Business Account (WABA).

Templates go through Meta's review; see Kapso's
[template lifecycle guide](https://docs.kapso.ai/docs/whatsapp/templates/lifecycle).
To send one, use `KapsoEx.WhatsApp.Messages.send_template/6`.

# `result`

```elixir
@type result() :: {:ok, map()} | {:error, KapsoEx.Error.t()}
```

# `create`

```elixir
@spec create(KapsoEx.Client.t(), String.t(), map() | keyword()) :: result()
```

Creates a template.

    Templates.create(client, waba_id, %{
      name: "order_update",
      language: "es",
      category: "UTILITY",
      parameter_format: "NAMED",
      components: [
        %{type: "BODY", text: "Hola {{first_name}}, tu pedido {{order}} fue enviado.",
          example: %{body_text_named_params: [
            %{param_name: "first_name", example: "Ana"},
            %{param_name: "order", example: "#1234"}
          ]}}
      ]
    })

# `delete`

```elixir
@spec delete(KapsoEx.Client.t(), String.t(), map() | keyword()) :: result()
```

Deletes a template. Pass `name:` to delete every language of a template,
or `hsm_id:` to delete a single one.

    Templates.delete(client, waba_id, name: "order_update")

# `get`

```elixir
@spec get(KapsoEx.Client.t(), String.t(), String.t(), map() | keyword()) :: result()
```

Gets a template by ID. Params: `fields`.

# `list`

```elixir
@spec list(KapsoEx.Client.t(), String.t(), map() | keyword()) :: result()
```

Lists templates. Params: `name`, `status`, `category`, `language`, `limit`.

# `update`

```elixir
@spec update(KapsoEx.Client.t(), String.t(), String.t(), map() | keyword()) ::
  result()
```

Updates the template with ID `template_id` (Meta's `hsm_id`).

---

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