Teamleader

A ruby wrapper around Teamleader.eu API v1.

Some endpoints are still missing. Don't hesitate to open an issue or a PR if you need one of them.

Installation

Add this line to your application's Gemfile:

gem 'teamleader'

And then execute:

$ bundle

Or install it yourself as:

$ gem install teamleader

Usage

require 'teamleader'
teamleader = Teamleader.new('Your API group', 'Your API secret')

You can find your API key in your Teamleader account, under Settings > API & Webhooks. API access is available for every Teamleader account. Note that you need to be admin to access this page.

Configuration

For Rails application create a configuration file config/initializers/teamleader.rb. You can do this anywhere in your application before you make API calls using the gem.

Teamleader.configure do |config|
  config.api_group = '45678'
  config.api_secret = '31e56cf3b3c259f56666ba4a6089ee91c3150683611834f7eb2f5a7a4f039a17910f1fa2d65d282e9c344abcf895dad80a89b13af8fe917dfed1e0798c83350c'
end

Available methods

When a method expects a hash as argument, the hash keys have the same name as described in Teamleader API documentation.

If a required parameter is missing or if the API returns an error, the method will throw an exception.

General

teamleader.get_users
teamleader.get_departments
teamleader.get_tags

Contacts

teamleader.add_contact :forename => "John", :surname => "Doe", :email => "[email protected]"
teamleader.update_contact({:contact_id => 123, :track_changes => 0, :forename => "Johnny"})
teamleader.delete_contact({:contact_id => 123})
teamleader.link_contact_to_company({:contact_id => 123, :company_id => 456, :mode => "link"})
teamleader.get_contacts({:amount => 100, :pageno => 0, :searchby => "John"}) # pagination starts at 0
teamleader.get_contact({:contact_id => 123})
teamleader.get_contacts_by_company({:company_id => 123})
teamleader.get_contact_company_relations({:amount => 10, :pageno => 0})

Companies

teamleader.add_company({:name => "Hello World"})
teamleader.get_company({:company_id => 12345})
teamleader.get_companies({:amount => 100, :pageno => 0, :searchby => "hello"}) # pagination starts at 0

Deals

Supported methods are: add_deal, update_deal, update_deal_items, send_sale_to_client, get_deals, get_deals_by_contact_or_company, get_deals_by_project, get_deal, get_deal_phase_changes, get_all_deal_phase_changes, get_deal_phases, get_deal_sources

Invoices

teamleader.add_invoice({
    :contact_or_company => "company",
    :contact_or_company_id => 12345,
    :sys_department_id => 5678,
    :description_1 => "My awesome item",
    :price_1 => 50,
    :amount_1 => 1
})
teamleader.update_invoice_payment_status({:invoice_id => 123, :status => "paid"})
teamleader.get_invoice({:invoice_id => 123})
teamleader.download_invoice_pdf({:invoice_id => 123})
teamleader.get_invoices({:date_from => "01/01/2017", :date_to => "01/05/2017"})
teamleader.get_creditnotes({:date_from => "01/01/2017", :date_to => "01/05/2017"})
teamleader.get_bookkeeping_accounts({:sys_department_id => 134})

Other supported methods

book_draft_invoice, update_invoice, update_invoice_comments, delete_invoice, get_creditnote, get_invoices_by_project, get_creditnotes_by_project, get_invoices_by_deal, add_creditnote, download_creditnote_pdf

Products

teamleader.add_product({
    :name => "My Awesome Product",
    :price => 49.99
})
teamleader.update_product({:product_id => 123, :price => 39.99})
teamleader.get_product({:product_id => 123})
teamleader.delete_product({:product_id => 123})
teamleader.get_products({:amount => 100, :pageno => 0}) # Pagination starts at 0

Projects

teamleader.get_project({ :project_id => 123 })
teamleader.get_projects_by_client({
  contact_or_company: 'contact',
  contact_or_company_id: '123',
  deep_search: 1
})

teamleader.add_project({
  :project_name => 123,
  :project_budget => 300,
  :project_responsible_user_id => 123,
  :project_start_date => '12/01/2017',
  :milestone_title => 'milestone title',
  :milestone_budget => 200,
  :milestone_invoiceable => 0,
  :milestone_due_date => '12/03/2017',
  :milestone_responsible_user_id => 123
})
teamleader.update_project({
  :project_id => 123,
  :track_changes => 0,
  :title => "New Project Title"
})
teamleader.get_projects({ :amount => 50, pageno: 0 })
# Pagination starts at 0

Tickets

Supported methods are: add_ticket, update_ticket, add_ticket_message, get_tickets, get_ticket, get_ticket_messages, get_ticket_message, get_ticket_cloud_url.

Notes

Supported methods are: add_note, get_notes

Files

teamleader.get_file_info({ :file_id => '1236412' })

teamleader.download_file({ :file_id => '1236412' })

teamleader.upload_file({
  :object_type => 'company',
  :object_id => '1236412',
  :file_content => 'Base64 encoded version the file',
  :file_name => 'file.rb'
})

teamleader.delete_file({ :file_id => '1236412' })

teamleader.get_files({
  :amount => 100,
  :pageno => 0,
  :object_type => 'contact',
  :object_id => '1234567'
})
# Pagination starts at 0

Callbacks

teamleader.add_callback({
  due_date: 1538400423,
  hour: '10h15',
  user_id: '1234',
  for: 'contact',
  for_id: '9876'
})
teamleader.get_calls(amount: 10, pageno: 0)
teamleader.get_call(call_id: '123456')

Subscriptions

Available methods are: get_subscriptions, get_all_subscriptions

Custom Fields

Available methods are: get_custom_fields, get_custom_field_info, add_custom_field_option

License

The Teamleader GEM is released under the MIT License.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Credits

This gem is inspired by the hunterio gem made by Vincenzo Ruggiero

Made with ️❤️️️ by Javry in Belgium.