Home

Awesome

ExCloseio

Hex.pm

Learn about the Closeio API at http://developer.close.io.

I :heart: Close.io, so if you have problems using the gem or would like to see support for new endpoints, please open a GitHub issue -- I'll get it resolved as quick as I can.

Fwiw, I also run DripEmails.com -- a service for building automated email sequences using Close.io

Installation

ExCloseio is currently beta software. You can install it from Hex:

def deps do
  [ {:ex_closeio, "~> 0.0.6"} ]
end

Configuration

For security, I recommend that you use environment variables for storing your account credentials. If you don't already have an environment variable manager, you can create a .env file in your project with the following content:

export CLOSEIO_API_KEY={{ your api key }}

Then, just be sure to run source .env in your shell before compiling your project.

Alternatively, you can set the following configuration variables in your config/config.exs file:

config :ex_closeio, closeio_api_key: System.get_env("CLOSEIO_API_KEY"),

Or you can pass the API key in with each request:

ExCloseio.Lead.find("lead_id_1234", "api_key_5678")

Usage

ExCloseio comes with module for each supported Close.io API resource. For example, the "Lead" resource is accessible through the ExCloseio.Lead module. Depending on what the underlying API supports, a resource module may have the following methods:

MethodDescription
allGet the first page of the resource.
paginateLoad all of the resource items on all pages. Use with care!
findFind a resource given its id.
createCreate a resource.
updateUpdate a resource.
destroyDestroy a resource.

Supported Endpoints

ExCloseio currently supports the following Closeio endpoints:

Example

# Get all the leads in the Lead endpoint. Be warned, this will block
# until all the pages of leads have been fetched.
leads = ExCloseio.Lead.paginate(
  %{query: "custom.current_system:paypal"},
  API_KEY
)

# Get the first page. The meta variable is a map of paging information
# from Close.io.
{:ok, leads} = ExCloseio.Lead.all

# Find a lead
{:ok, lead} = ExCloseio.Lead.find("lead_id_1234")

# Update a lead
lead = ExCloseio.Lead.update(lead, status: "cancelled")

# Destroy a lead
ExCloseio.Lead.destroy("lead_id_1234")

License

ExCloseio is licensed under the MIT license. For more details, see the LICENSE file at the root of the repository. It depends on Elixir, which is under the Apache 2 license.

Closeio<sup>TM</sup> is trademark of Elastic, Inc.