Packages

Elixir client SDK for the Surge API

Current section

Files

Jump to
surge_api lib surge blasts.ex
Raw

lib/surge/blasts.ex

defmodule Surge.Blasts do
@moduledoc """
Functions for managing Surge blasts.
"""
alias Surge.Blasts.Blast
alias Surge.Client
@doc """
Sends a Blast.
## Examples
Surge.Blasts.create("acct_123", %{
message: "Hello everyone!",
recipients: ["+15551234567", "+15559876543"]
})
#=> {:ok, %Surge.Blasts.Blast{}}
client = Surge.Client.new("your_api_key")
Surge.Blasts.create(client, "acct_123", %{message: "Test blast"})
#=> {:ok, %Surge.Blasts.Blast{}}
"""
@spec create(String.t(), map()) :: {:ok, Blast.t()} | {:error, Surge.Error.t()}
@spec create(Client.t(), String.t(), map()) :: {:ok, Blast.t()} | {:error, Surge.Error.t()}
def create(client \\ Client.default_client(), account_id, params)
def create(%Client{} = client, account_id, params) do
opts = [json: params, path_params: [account_id: account_id]]
case Client.request(client, :post, "/accounts/:account_id/blasts", opts) do
{:ok, data} -> {:ok, Blast.from_json(data)}
error -> error
end
end
end