class Teamleader::Api
Public Class Methods
new(group, secret)
click to toggle source
# File lib/teamleader/api.rb, line 16 def initialize(group, secret) @api_group = group @api_secret = secret uri = URI.parse(API_BASE_URL) @http = Net::HTTP.new(uri.host, uri.port) @http.use_ssl = true end
Public Instance Methods
add_company(params={})
click to toggle source
# File lib/teamleader/api.rb, line 347 def add_company(params={}) raise "name is required" if params[:name].nil? request "/addCompany.php", params end
add_contact(params={})
click to toggle source
Returns the ID of the contact
# File lib/teamleader/api.rb, line 37 def add_contact(params={}) raise "forename is required" if params[:forename].nil? raise "surname is required" if params[:surname].nil? raise "email is required" if params[:email].nil? request "/addContact.php", params end
add_creditnote(params={})
click to toggle source
# File lib/teamleader/api.rb, line 229 def add_creditnote(params={}) raise "invoice_id is required" if params[:invoice_id].nil? request "/addCreditnote.php", params end
add_deal(params={})
click to toggle source
# File lib/teamleader/api.rb, line 85 def add_deal(params={}) raise "contact_or_company is required" if params[:contact_or_company].nil? raise "contact_or_company_id is required" if params[:contact_or_company_id].nil? raise "title is required" if params[:title].nil? raise "source is required" if params[:source].nil? request "/addDeal.php", params end
add_invoice(params={})
click to toggle source
# File lib/teamleader/api.rb, line 147 def add_invoice(params={}) raise "contact_or_company is required" if params[:contact_or_company].nil? raise "contact_or_company_id is required" if params[:contact_or_company_id].nil? raise "sys_department_id is required" if params[:sys_department_id].nil? request "/addInvoice.php", params end
add_note(params={})
click to toggle source
# File lib/teamleader/api.rb, line 333 def add_note(params={}) raise "object_type is required" if params[:object_type].nil? raise "object_id is required" if params[:object_id].nil? raise "note_title is required" if params[:note_title].nil? request "/addNote.php", params end
add_product(params={})
click to toggle source
# File lib/teamleader/api.rb, line 263 def add_product(params={}) raise "name is required" if params[:name].nil? raise "price is required" if params[:price].nil? request "/addProduct.php", params end
add_ticket(params={})
click to toggle source
# File lib/teamleader/api.rb, line 290 def add_ticket(params={}) raise "subject is required" if params[:subject].nil? request "/addTicket.php", params end
add_ticket_message(params={})
click to toggle source
# File lib/teamleader/api.rb, line 300 def add_ticket_message(params={}) raise "ticket_id is required" if params[:ticket_id].nil? raise "message is required" if params[:message].nil? request "/addTicketMessage.php", params end
book_draft_invoice(params={})
click to toggle source
# File lib/teamleader/api.rb, line 161 def book_draft_invoice(params={}) raise "invoice_id is required" if params[:invoice_id].nil? request "/bookDraftInvoice.php", params end
delete_company(params={})
click to toggle source
# File lib/teamleader/api.rb, line 358 def delete_company(params={}) raise "company_id is required" if params[:company_id].nil? request "/deleteCompany.php", params end
delete_contact(params={})
click to toggle source
# File lib/teamleader/api.rb, line 55 def delete_contact(params={}) raise "contact_id is required" if params[:contact_id].nil? request "/deleteContact.php", params end
delete_invoice(params={})
click to toggle source
# File lib/teamleader/api.rb, line 177 def delete_invoice(params={}) raise "invoice_id is required" if params[:invoice_id].nil? request "/deleteInvoice.php", params end
delete_product(params={})
click to toggle source
# File lib/teamleader/api.rb, line 274 def delete_product(params={}) raise "product_id is required" if params[:product_id].nil? request "/deleteProduct.php", params end
download_creditnote_pdf(params={})
click to toggle source
# File lib/teamleader/api.rb, line 197 def download_creditnote_pdf(params={}) raise "creditnote_id is required" if params[:creditnote_id].nil? request "/downloadCreditnotePDF.php", params end
download_invoice_pdf(params={})
click to toggle source
# File lib/teamleader/api.rb, line 192 def download_invoice_pdf(params={}) raise "invoice_id is required" if params[:invoice_id].nil? request "/downloadInvoicePDF.php", params end
get_all_deal_phase_changes(params={})
click to toggle source
# File lib/teamleader/api.rb, line 133 def get_all_deal_phase_changes(params={}) raise "date_from is required" if params[:date_from].nil? raise "date_to is required" if params[:date_to].nil? request "/getAllDealPhaseChanges.php", params end
get_bookkeeping_accounts(params={})
click to toggle source
# File lib/teamleader/api.rb, line 258 def get_bookkeeping_accounts(params={}) raise "sys_department_id is required" if params[:sys_department_id].nil? request "/getBookkeepingAccounts.php", params end
get_business_types(params={})
click to toggle source
# File lib/teamleader/api.rb, line 374 def get_business_types(params={}) raise "country is required" if params[:country].nil? request "/getBusinessTypes.php", params end
get_companies(params={})
click to toggle source
# File lib/teamleader/api.rb, line 363 def get_companies(params={}) raise "amount is required" if params[:amount].nil? raise "pageno is required" if params[:pageno].nil? request "/getCompanies.php", params end
get_company(params={})
click to toggle source
# File lib/teamleader/api.rb, line 369 def get_company(params={}) raise "company_id is required" if params[:company_id].nil? request "/getCompany.php", params end
get_contact(params={})
click to toggle source
# File lib/teamleader/api.rb, line 44 def get_contact(params={}) raise "contact_id is required" if params[:contact_id].nil? request "/getContact.php", params end
get_contact_company_relations(params={})
click to toggle source
# File lib/teamleader/api.rb, line 79 def get_contact_company_relations(params={}) raise "amount is required" if params[:amount].nil? raise "pageno is required" if params[:pageno].nil? request "/getContactCompanyRelations.php", params end
get_contacts(params={})
click to toggle source
# File lib/teamleader/api.rb, line 68 def get_contacts(params={}) raise "amount is required" if params[:amount].nil? raise "pageno is required" if params[:pageno].nil? request "/getContacts.php", params end
get_contacts_by_company(params={})
click to toggle source
# File lib/teamleader/api.rb, line 74 def get_contacts_by_company(params={}) raise "company_id is required" if params[:company_id].nil? request "/getContactsByCompany.php", params end
get_creditnote(params={})
click to toggle source
# File lib/teamleader/api.rb, line 187 def get_creditnote(params={}) raise "creditnote_id is required" if params[:creditnote_id].nil? request "/getCreditnote.php", params end
get_creditnotes(params={})
click to toggle source
# File lib/teamleader/api.rb, line 208 def get_creditnotes(params={}) raise "date_from is required" if params[:date_from].nil? raise "date_to is required" if params[:date_to].nil? request "/getCreditnotes.php", params end
get_creditnotes_by_project(params={})
click to toggle source
# File lib/teamleader/api.rb, line 219 def get_creditnotes_by_project(params={}) raise "project_id is required" if params[:project_id].nil? request "/getCreditnotesByProject.php", params end
get_deal(params={})
click to toggle source
# File lib/teamleader/api.rb, line 123 def get_deal(params={}) raise "deal_id is required" if params[:deal_id].nil? request "/getDeal.php", params end
get_deal_phase_changes(params={})
click to toggle source
# File lib/teamleader/api.rb, line 128 def get_deal_phase_changes(params={}) raise "deal_id is required" if params[:deal_id].nil? request "/getDealPhaseChanges.php", params end
get_deal_phases(params={})
click to toggle source
# File lib/teamleader/api.rb, line 139 def get_deal_phases(params={}) request "/getDealPhases.php", params end
get_deal_sources(params={})
click to toggle source
# File lib/teamleader/api.rb, line 143 def get_deal_sources(params={}) request "/getDealSources.php", params end
get_deals(params={})
click to toggle source
# File lib/teamleader/api.rb, line 106 def get_deals(params={}) raise "amount is required" if params[:amount].nil? raise "pageno is required" if params[:pageno].nil? request "/getDeals.php", params end
get_deals_by_contact_or_company(params={})
click to toggle source
# File lib/teamleader/api.rb, line 112 def get_deals_by_contact_or_company(params={}) raise "contact_or_company is required" if params[:contact_or_company].nil? raise "contact_or_company_id is required" if params[:contact_or_company_id].nil? request "/getDealsByContactOrCompany.php", params end
get_deals_by_project(params={})
click to toggle source
# File lib/teamleader/api.rb, line 118 def get_deals_by_project(params={}) raise "project_id is required" if params[:project_id].nil? request "/getDealsByProject.php", params end
get_departments()
click to toggle source
# File lib/teamleader/api.rb, line 28 def get_departments request "/getDepartments.php" end
get_invoice(params={})
click to toggle source
# File lib/teamleader/api.rb, line 182 def get_invoice(params={}) raise "invoice_id is required" if params[:invoice_id].nil? request "/getInvoice.php", params end
get_invoice_cloud_url(params={})
click to toggle source
# File lib/teamleader/api.rb, line 253 def get_invoice_cloud_url(params={}) raise "invoice_id is required" if params[:invoice_id].nil? request "/getInvoiceCloudURL.php", params end
get_invoice_reminder_template_content(params={})
click to toggle source
# File lib/teamleader/api.rb, line 247 def get_invoice_reminder_template_content(params={}) raise "invoice_id is required" if params[:invoice_id].nil? raise "template_id is required" if params[:template_id].nil? request "/getInvoiceReminderTemplateContent.php", params end
get_invoice_reminder_templates(params={})
click to toggle source
# File lib/teamleader/api.rb, line 242 def get_invoice_reminder_templates(params={}) raise "invoice_id is required" if params[:invoice_id].nil? request "/getInvoiceReminderTemplates.php", params end
get_invoices(params={})
click to toggle source
# File lib/teamleader/api.rb, line 202 def get_invoices(params={}) raise "date_from is required" if params[:date_from].nil? raise "date_to is required" if params[:date_to].nil? request "/getInvoices.php", params end
get_invoices_by_deal(params={})
click to toggle source
# File lib/teamleader/api.rb, line 224 def get_invoices_by_deal(params={}) raise "deal_id is required" if params[:deal_id].nil? request "/getInvoicesByDeal.php", params end
get_invoices_by_project(params={})
click to toggle source
# File lib/teamleader/api.rb, line 214 def get_invoices_by_project(params={}) raise "project_id is required" if params[:project_id].nil? request "/getInvoicesByProject.php", params end
get_notes(params={})
click to toggle source
# File lib/teamleader/api.rb, line 340 def get_notes(params={}) raise "object_type is required" if params[:object_type].nil? raise "object_id is required" if params[:object_id].nil? raise "pageno is required" if params[:pageno].nil? request "/addNote.php", params end
get_product(params={})
click to toggle source
# File lib/teamleader/api.rb, line 279 def get_product(params={}) raise "product_id is required" if params[:product_id].nil? request "/getProduct.php", params end
get_products(params={})
click to toggle source
# File lib/teamleader/api.rb, line 284 def get_products(params={}) raise "amount is required" if params[:amount].nil? raise "pageno is required" if params[:pageno].nil? request "/getProducts.php", params end
get_ticket(params={})
click to toggle source
# File lib/teamleader/api.rb, line 311 def get_ticket(params={}) raise "ticket_id is required" if params[:ticket_id].nil? request "/getTickets.php", params end
get_ticket_cloud_url(params={})
click to toggle source
# File lib/teamleader/api.rb, line 328 def get_ticket_cloud_url(params={}) raise "ticket_id is required" if params[:ticket_id].nil? request "/getTicketCloudURL.php", params end
get_ticket_message(params={})
click to toggle source
# File lib/teamleader/api.rb, line 323 def get_ticket_message(params={}) raise "message_id is required" if params[:message_id].nil? request "/getTicketMessage.php", params end
get_ticket_messages(params={})
click to toggle source
# File lib/teamleader/api.rb, line 316 def get_ticket_messages(params={}) raise "ticket_id is required" if params[:ticket_id].nil? raise "include_internal_message is required" if params[:include_internal_message].nil? raise "include_third_party_message is required" if params[:include_third_party_message].nil? request "/getTicketMessages.php", params end
get_tickets(params={})
click to toggle source
# File lib/teamleader/api.rb, line 306 def get_tickets(params={}) raise "type is required" if params[:type].nil? request "/getTickets.php", params end
get_users(params={})
click to toggle source
# File lib/teamleader/api.rb, line 24 def get_users(params={}) request "/getUsers.php", params end
link_contact_to_company(params={})
click to toggle source
# File lib/teamleader/api.rb, line 60 def link_contact_to_company(params={}) raise "contact_id is required" if params[:contact_id].nil? raise "company_id is required" if params[:company_id].nil? raise "mode is required" if params[:mode].nil? raise "mode must be 'link' or 'unlink'" unless ['link', 'unlink'].include?(params[:mode]) request "/linkContactToCompany.php", params end
send_invoice(params={})
click to toggle source
# File lib/teamleader/api.rb, line 234 def send_invoice(params={}) raise "invoice_id is required" if params[:invoice_id].nil? raise "email_to is required" if params[:email_to].nil? raise "email_subject is required" if params[:email_subject].nil? raise "email_text is required" if params[:email_text].nil? request "/sendInvoice.php", params end
send_sale_to_client(params={})
click to toggle source
# File lib/teamleader/api.rb, line 102 def send_sale_to_client(params={}) request "/sendSaleToClient.php", params end
update_company(params={})
click to toggle source
# File lib/teamleader/api.rb, line 352 def update_company(params={}) raise "company_id is required" if params[:company_id].nil? raise "track_changes is required" if params[:track_changes].nil? request "/updateCompany.php", params end
update_contact(params={})
click to toggle source
# File lib/teamleader/api.rb, line 49 def update_contact(params={}) raise "contact_id is required" if params[:contact_id].nil? raise "track_changes is required" if params[:track_changes].nil? request "/updateContact.php", params end
update_deal(params={})
click to toggle source
# File lib/teamleader/api.rb, line 93 def update_deal(params={}) raise "deal_id is required" if params[:deal_id].nil? request "/updateDeal.php", params end
update_deal_items(params={})
click to toggle source
# File lib/teamleader/api.rb, line 98 def update_deal_items(params={}) request "/updateDealItems.php", params end
update_invoice(params={})
click to toggle source
# File lib/teamleader/api.rb, line 166 def update_invoice(params={}) raise "invoice_id is required" if params[:invoice_id].nil? request "/updateInvoice.php", params end
update_invoice_comments(params={})
click to toggle source
# File lib/teamleader/api.rb, line 171 def update_invoice_comments(params={}) raise "invoice_id is required" if params[:invoice_id].nil? raise "comments is required" if params[:comments].nil? request "/updateInvoiceComments.php", params end
update_invoice_payment_status(params={})
click to toggle source
# File lib/teamleader/api.rb, line 154 def update_invoice_payment_status(params={}) raise "invoice_id is required" if params[:invoice_id].nil? raise "status is required" if params[:status].nil? raise "status must be 'paid' or 'not_paid'" unless ['paid', 'not_paid'].include?(params[:status]) request "/setInvoicePaymentStatus.php", params end
update_product(params={})
click to toggle source
# File lib/teamleader/api.rb, line 269 def update_product(params={}) raise "product_id is required" if params[:product_id].nil? request "/updateProduct.php", params end
update_ticket(params={})
click to toggle source
# File lib/teamleader/api.rb, line 295 def update_ticket(params={}) raise "ticket_id is required" if params[:ticket_id].nil? request "/updateTicket.php", params end
Private Instance Methods
request(path, data={})
click to toggle source
# File lib/teamleader/api.rb, line 381 def request(path, data={}) headers = { "Content-Type" => "application/x-www-form-urlencoded" } data[:api_group] = @api_group data[:api_secret] = @api_secret data = URI.encode_www_form data response = @http.post "/api" + path, data, headers code = Integer(response.code) if code >= 200 && code < 300 begin JSON.parse response.body, :symbolize_names => true rescue response.body end elsif code == 505 raise "Error: API rate limit reached" else err = "unknown error" begin err = JSON.parse(response.body)["reason"] || "#{response.body}" rescue err = "#{response.body}" end raise "HTTP Error #{code}: " + err end end
required_params(attributes, params)
click to toggle source
# File lib/teamleader/api.rb, line 409 def required_params(attributes, params) attributes.each { |attr| raise "#{attr} is required" if params[attr].nil? } end