Teamleader
A ruby wrapper around Teamleader.eu API v1.
Please note that this gem is linked to the deprecated Teamleader API. Teamleader recommends to use the new Teamleader API.
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 => "john.doe@provider.com"
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
, add_subscription
, update_subscription
, delete_subscription
, get_subscription
, get_invoices_by_subscription
, get_related_subscriptions_by_invoice
, get_subscriptions_by_deal
, get_subscriptions_by_contact_or_company
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.