Current section
Files
Jump to
Current section
Files
lib/surge/campaigns.ex
defmodule Surge.Campaigns do
@moduledoc """
Functions for managing Surge campaigns.
"""
alias Surge.Campaigns.Campaign
alias Surge.Client
@doc """
Creates a campaign to register account to send text messages.
## Examples
Surge.Campaigns.create("acct_123", %{
consent_flow: "People will sign up through a long flow.",
description: "This campaign will be used to send people messages.",
message_samples: ["Get 20% off!"]
})
#=> {:ok, %Surge.Campaigns.Campaign{}}
client = Surge.Client.new("your_api_key")
Surge.Campaigns.create(client, "acct_123", %{consent_flow: "People will opt in"})
#=> {:ok, %Surge.Campaigns.Campaign{}}
"""
@spec create(String.t(), map()) :: {:ok, Campaign.t()} | {:error, Surge.Error.t()}
@spec create(Client.t(), String.t(), map()) :: {:ok, Campaign.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/campaigns", opts) do
{:ok, data} -> {:ok, Campaign.from_json(data)}
error -> error
end
end
end