class Hubspot::Deal

HubSpot Deals API

{developers.hubspot.com/docs/methods/deals/deals_overview}

Constants

ALL_DEALS_PATH
ASSOCIATED_DEAL_PATH
ASSOCIATE_DEAL_PATH
CREATE_DEAL_PATH
DEAL_PATH
RECENT_UPDATED_PATH
UPDATE_DEAL_PATH

Attributes

company_ids[R]
deal_id[R]
portal_id[R]
properties[R]
vids[R]

Public Class Methods

all(opts = {}) click to toggle source
# File lib/hubspot/deal.rb, line 59
def all(opts = {})
  path = ALL_DEALS_PATH

  opts[:includeAssociations] = true # Needed for initialize to work
  response = Hubspot::Connection.get_json(path, opts)

  result = {}
  result['deals'] = response['deals'].map { |d| new(d) }
  result['offset'] = response['offset']
  result['hasMore'] = response['hasMore']
  return result
end
associate!(deal_id, company_ids=[], vids=[]) click to toggle source

Associate a deal with a contact or company {developers.hubspot.com/docs/methods/deals/associate_deal} Usage Hubspot::Deal.associate!(45146940, [], [52])

# File lib/hubspot/deal.rb, line 47
def associate!(deal_id, company_ids=[], vids=[])
  objecttype = company_ids.any? ? 'COMPANY' : 'CONTACT'
  object_ids = (company_ids.any? ? company_ids : vids).join('&id=')
  Hubspot::Connection.put_json(ASSOCIATE_DEAL_PATH, params: { deal_id: deal_id, OBJECTTYPE: objecttype, objectId: object_ids}, body: {})
end
create!(portal_id, company_ids, vids, params={}) click to toggle source
# File lib/hubspot/deal.rb, line 34
def create!(portal_id, company_ids, vids, params={})
  #TODO: clean following hash, Hubspot::Utils should do the trick
  associations_hash = {"portalId" => portal_id, "associations" => { "associatedCompanyIds" => company_ids, "associatedVids" => vids}}
  post_data = associations_hash.merge({ properties: Hubspot::Utils.hash_to_properties(params, key_name: "name") })

  response = Hubspot::Connection.post_json(CREATE_DEAL_PATH, params: {}, body: post_data )
  new(response)
end
find(deal_id) click to toggle source
# File lib/hubspot/deal.rb, line 54
def find(deal_id)
  response = Hubspot::Connection.get_json(DEAL_PATH, { deal_id: deal_id })
  new(response)
end
find_by_association(object) click to toggle source

Find all deals associated to a contact or company {developers.hubspot.com/docs/methods/deals/get-associated-deals} @param object [Hubspot::Contact || Hubspot::Company] a contact or company @return [Array] Array of Hubspot::Deal records

# File lib/hubspot/deal.rb, line 101
def find_by_association(object)
  path = ASSOCIATED_DEAL_PATH
  objectType =  case object
                when Hubspot::Company then :company
                when Hubspot::Contact then :contact
                else raise(Hubspot::InvalidParams, "Instance type not supported")
                end

  params = { objectType: objectType, objectId: object.vid }
  response = Hubspot::Connection.get_json(path, params)
  response["results"].map { |deal_id| find(deal_id) }
end
find_by_company(company) click to toggle source

Find all deals associated to a company {developers.hubspot.com/docs/methods/deals/get-associated-deals} @param company [Hubspot::Company] the company @return [Array] Array of Hubspot::Deal records

# File lib/hubspot/deal.rb, line 85
def find_by_company(company)
  find_by_association company
end
find_by_contact(contact) click to toggle source

Find all deals associated to a contact {developers.hubspot.com/docs/methods/deals/get-associated-deals} @param contact [Hubspot::Contact] the contact @return [Array] Array of Hubspot::Deal records

# File lib/hubspot/deal.rb, line 93
def find_by_contact(contact)
  find_by_association contact
end
new(response_hash) click to toggle source
# File lib/hubspot/deal.rb, line 24
def initialize(response_hash)
  props = response_hash['properties'] || {}
  @properties = Hubspot::Utils.properties_to_hash(props)
  @portal_id = response_hash["portalId"]
  @deal_id = response_hash["dealId"]
  @company_ids = response_hash["associations"]["associatedCompanyIds"]
  @vids = response_hash["associations"]["associatedVids"]
end
recent(opts = {}) click to toggle source

Find recent updated deals. {developers.hubspot.com/docs/methods/deals/get_deals_modified} @param count [Integer] the amount of deals to return. @param offset [Integer] pages back through recent contacts.

# File lib/hubspot/deal.rb, line 76
def recent(opts = {})
  response = Hubspot::Connection.get_json(RECENT_UPDATED_PATH, opts)
  response['results'].map { |d| new(d) }
end

Public Instance Methods

[](property) click to toggle source
# File lib/hubspot/deal.rb, line 127
def [](property)
  @properties[property]
end
destroy!() click to toggle source

Archives the contact in hubspot {developers.hubspot.com/docs/methods/contacts/delete_contact} @return [TrueClass] true

# File lib/hubspot/deal.rb, line 118
def destroy!
  Hubspot::Connection.delete_json(DEAL_PATH, {deal_id: deal_id})
  @destroyed = true
end
destroyed?() click to toggle source
# File lib/hubspot/deal.rb, line 123
def destroyed?
  !!@destroyed
end
update!(params) click to toggle source

Updates the properties of a deal {developers.hubspot.com/docs/methods/deals/update_deal} @param params [Hash] hash of properties to update @return [Hubspot::Deal] self

# File lib/hubspot/deal.rb, line 135
def update!(params)
  query = {"properties" => Hubspot::Utils.hash_to_properties(params.stringify_keys!, key_name: 'name')}
  Hubspot::Connection.put_json(UPDATE_DEAL_PATH, params: { deal_id: deal_id }, body: query)
  @properties.merge!(params)
  self
end