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