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_tags() click to toggle source
# File lib/teamleader/api.rb, line 32
def get_tags
  request "/getTags.php"
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
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