Skip to content

Commit 67157b3

Browse files
committed
added owner information to deal properties
1 parent 94cd9a0 commit 67157b3

File tree

1 file changed

+40
-8
lines changed

1 file changed

+40
-8
lines changed

hubspot-deals.py

Lines changed: 40 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,21 @@
1818
# - name: portal_id
1919
# type: integer
2020
# description: The portal id for the deal
21+
# - name: owner_id
22+
# type: integer
23+
# description: The id of the owner of the deal
24+
# - name: owner_first_name
25+
# type: string
26+
# description: The first name of the owner of the deal
27+
# - name: owner_last_name
28+
# type: string
29+
# description: The last name of the owner of the deal
2130
# - name: deal_id
2231
# type: integer
2332
# description: The deal id for the deal
2433
# - name: deal_name
2534
# type: string
2635
# description: The deal name
27-
# - name: deal_owner
28-
# type: integer
29-
# description: The deal owner
3036
# - name: deal_stage_id
3137
# type: integer
3238
# description: The deal stage id
@@ -113,12 +119,33 @@ def get_data(params):
113119
# https://developers.hubspot.com/docs/methods/deals/get_deal_properties
114120
# example: https://api.hubapi.com/properties/v1/deals/properties?hapikey=demo
115121

122+
# see here to get owner information:
123+
# https://developers.hubspot.com/docs/methods/owners/owners_overview
124+
# https://developers.hubspot.com/docs/methods/owners/get_owners
125+
116126
# see here to get deal stage information:
117127
# https://developers.hubspot.com/docs/methods/pipelines/pipelines_overview
118128
# https://developers.hubspot.com/docs/methods/pipelines/get_pipelines_for_object_type
119129

130+
# STEP 1: get the owner info
131+
headers = {
132+
'Authorization': 'Bearer ' + auth_token,
133+
}
134+
url = 'https://api.hubapi.com/owners/v2/owners'
135+
url_query_params = {'includeInactive': True}
136+
url_query_str = urllib.parse.urlencode(url_query_params)
137+
138+
page_url = url + '?' + url_query_str
139+
response = requests_retry_session().get(page_url, headers=headers)
140+
response.raise_for_status()
141+
content = response.json()
142+
data = content
120143

121-
# STEP 1: get the stage info
144+
owners = {}
145+
for item in data:
146+
owners[item.get('ownerId')] = item
147+
148+
# STEP 2: get the stage info
122149
headers = {
123150
'Authorization': 'Bearer ' + auth_token,
124151
}
@@ -137,7 +164,7 @@ def get_data(params):
137164
for s in item.get('stages',[]):
138165
stages[s.get('stageId')] = s
139166

140-
# STEP 2: get the deal info
167+
# STEP 3: get the deal info
141168
headers = {
142169
'Authorization': 'Bearer ' + auth_token,
143170
}
@@ -172,7 +199,7 @@ def get_data(params):
172199

173200
buffer = ''
174201
for item in data:
175-
item = get_item_info(item, stages)
202+
item = get_item_info(item, owners, stages)
176203
buffer = buffer + json.dumps(item, default=to_string) + "\n"
177204
yield buffer
178205

@@ -219,14 +246,19 @@ def to_integer(value):
219246
except ValueError:
220247
return ''
221248

222-
def get_item_info(item, stages):
249+
def get_item_info(item, owners, stages):
223250

224251
info = OrderedDict()
225252

226253
info['portal_id'] = to_integer(item.get('portalId'))
254+
255+
owner_id = to_integer(item.get('properties',{}).get('hubspot_owner_id',{}).get('value'))
256+
info['owner_id'] = owner_id
257+
info['owner_first_name'] = owners.get(owner_id,{}).get('firstName')
258+
info['owner_last_name'] = owners.get(owner_id,{}).get('lastName')
259+
227260
info['deal_id'] = to_integer(item.get('dealId'))
228261
info['deal_name'] = item.get('properties',{}).get('dealname',{}).get('value','')
229-
info['deal_owner'] = to_integer(item.get('properties',{}).get('hubspot_owner_id',{}).get('value'))
230262

231263
deal_stage_id = to_integer(item.get('properties',{}).get('dealstage',{}).get('value'))
232264
info['deal_stage_id'] = deal_stage_id

0 commit comments

Comments
 (0)