Я пытаюсь использовать API-интерфейс HubSpot для получения «Все предложения».Итерация через JSON в Python с использованием OFFSET
В API конечная точка: https://api.hubapi.com/deals/v1/deal/all?hapikey=demo
JSON возвращается, как выглядит это ...
{
"deals": [
{
"portalId": 62515,
"dealId": 18039629,
"isDeleted": false,
"associations": {
"associatedVids": [],
"associatedCompanyIds": [],
"associatedDealIds": []
},
"properties": {
"dealname": {
"value": "Company",
"timestamp": 1457040864519,
"source": "API",
"sourceId": null
},
"amount": {
"value": "10",
"timestamp": 1457040864519,
"source": "API",
"sourceId": null
},
"closedate": {
"value": "",
"timestamp": 1457040864519,
"source": "API",
"sourceId": null
},
"hubspot_owner_id": {
"value": "11626092",
"timestamp": 1457046177648,
"source": "SALESFORCE",
"sourceId": null
},
"hs_lastmodifieddate": {
"value": "1457046177662",
"timestamp": 1457046177662,
"source": "CALCULATED",
"sourceId": null
},
"hubspot_owner_assigneddate": {
"value": "1457046177648",
"timestamp": 1457046177648,
"source": "SALESFORCE",
"sourceId": null
},
"num_associated_contacts": {
"value": "0",
"timestamp": 0,
"source": "CALCULATED",
"sourceId": null
},
"hs_createdate": {
"value": "1457040864535",
"timestamp": 1457040864535,
"source": null,
"sourceId": null
},
"createdate": {
"value": "1457040864535",
"timestamp": 1457040864535,
"source": null,
"sourceId": null
},
"hs_salesforceopportunityid": {
"value": "00628000007nRyuAAE",
"timestamp": 1457046177648,
"source": "SALESFORCE",
"sourceId": null
}
},
"imports": []
},
{
"portalId": 62515,
"dealId": 18040854,
"isDeleted": false,
"associations": {
"associatedVids": [],
"associatedCompanyIds": [],
"associatedDealIds": []
},
"properties": {
"dealname": {
"value": "5678",
"timestamp": 1457042290572,
"source": "API",
"sourceId": null
},
"amount": {
"value": "750000.0",
"timestamp": 1457042290572,
"source": "API",
"sourceId": null
},
"closedate": {
"value": "",
"timestamp": 1457042290572,
"source": "API",
"sourceId": null
},
"hs_lastmodifieddate": {
"value": "1457042290592",
"timestamp": 1457042290592,
"source": "CALCULATED",
"sourceId": null
},
"num_associated_contacts": {
"value": "0",
"timestamp": 0,
"source": "CALCULATED",
"sourceId": null
},
"hs_createdate": {
"value": "1457042290592",
"timestamp": 1457042290592,
"source": null,
"sourceId": null
},
"createdate": {
"value": "1457042290592",
"timestamp": 1457042290592,
"source": null,
"sourceId": null
}
},
"imports": []
}
],
"hasMore": true,
"offset": 1467187
}
И я понимаю, что если hasMore==true
, то вы должны захватить offset
и включить его в другой API вызывает примерно следующее: https://api.hubapi.com/deals/v1/deal/all?hapikey=demo&offset=1467187
И продолжайте делать это до hasMore==false
.
Я использую следующий код, чтобы извлечь первый кусок JSON с API:
import requests
url = "https://api.hubapi.com/deals/v1/deal/all"
querystring = {"hapikey":"demo"}
headers = {
'cache-control': "no-cache"
}
response = requests.request("GET", url, headers=headers, params=querystring)
print(response.text)
Итак ... мой вопрос заключается в том, что теперь я получаю мой JSON, как я:
1) Считайте один кусок JSON
2) Если hasMore==true
затем пойти и сделать # 1 снова
3) ELSEIF hasMore==false
затем объединить все JSON из ВСЕХ итераций # 1 выше, в один большой формат JSON
4) возвращает значение из № 3
Любая помощь пожалуйста?
у были очень близки. сделал некоторые изменения, и это прекрасно работает ... – gotmike
Рад, что это работает для вас. Я немного изменил ваши изменения, так как 'response2/3' на самом деле не нужны. Вы можете повторно использовать одну и ту же переменную. –
уверенная вещь, не беспокойтесь ... спасибо тонну за решение! – gotmike