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.
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
- Fork it
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request
Credits
This gem is inspired by the hunterio gem made by Vincenzo Ruggiero
Made with ️❤️️️ by Javry in Belgium.