欲了解本開源專案的背景,請參閱我們的部落格,如果對於Onfleet應用程式介面或是我們產品有任何的問題,歡迎在此留言或直接聯繫 [email protected]。
python_onfleet
提供一個快速又便捷的方式,以獲取Onfleet應用程式介面內的資料。
pip install pyonfleet
在使用Onfleet應用程式介面之前,請先索取應用程式介面金鑰。創建應用程式介面金鑰的詳情,請洽Onfleet官方網站。
將您的金鑰取代下面的api_key參數即可開始使用:
在開始使用之前,請先在工作資料夾內創建一個檔案,並命名為.auth.json
,內容存入您的金鑰參數。
.auth.json
的格式如下:
{
"API_KEY": "<your_API_key>"
}
當Onfleet物件成功被創建,而金鑰又是合法的,您會獲得訪問以下各endpoint資源的函式。欲獲得各endpoint資源的定義,請洽Onfleet官方應用程式介面文件。
假如您不想儲存金鑰至檔案內,您亦可以直接引入API金鑰做為一參數:
from onfleet import Onfleet
# Option 1 - Recommended
onfleet_api = Onfleet() # Using the .auth.json file
# Option 2
onfleet_api = Onfleet(api_key="<your_api_key>") # Without the .auth.json file
docker-compose up --build
原則上API的速限為每秒鐘20次請求,詳情請參考官方文件。
pyonfleet
所回應的物件為一Response物件的本體。
下面為各entity所支援的函式列表:
Entity | GET | POST | PUT | DELETE |
---|---|---|---|---|
Admins/Administrators | get() | create(body={}) matchMetadata(body={}) |
update(id, body={}) | deleteOne(id) |
Containers | get(workers=id) get(teams=id) get(organizations=id) |
x | update(id, body={}) | x |
Destinations | get(id) | create(body={}) matchMetadata(body={}) |
x | x |
Hubs | get() | create(body={}) | update(id, body={}) | x |
Organization | get() get(id) |
x | insertTask(id, body={}) | x |
Recipients | get(id) get(name='') get(phone='') |
create(body={}) matchMetadata(body={}) |
update(id, body={}) | x |
Tasks | get(queryParams={}) get(id) get(shortId=id) |
create(body={}) clone(id) forceComplete(id) batch(body={}) autoAssign(body={}) matchMetadata(body={}) |
update(id, body={}) | deleteOne(id) |
Teams | get() get(id) getWorkerEta(id, queryParams={}) getTasks(id, queryParams={}) |
create(body={}) autoDispatch(id, body={}) |
update(id, body={}) insertTask(id, body={}) |
deleteOne(id) |
Webhooks | get() | create(body={}) | x | deleteOne(id) |
Workers | get() get(id) get(queryParams={}) getByLocation(queryParams={}) getSchedule(id) getTasks(id, queryParams={}) |
create(body={}) setSchedule(id, body={}) matchMetadata(body={}) getDeliveryManifest(workerId, hubId, googleApiKey, queryParams={}) |
update(id, body={}) insertTask(id, body={}) |
deleteOne(id) |
展示所有資源的指令如下:
get()
onfleet_api.workers.get()
onfleet_api.workers.get(queryParams="")
部分的endpoint有支援queryParams
(查詢參數),詳情請參考Onfleet官方文件:
# Option 1
onfleet_api.workers.get(queryParams={"phones": "<phone_number>"})
# Option 2
onfleet_api.workers.get(queryParams="phones=<phone_number>")
展示指定資源的指令如下,根據欲展示的資源參數取代param
則會根據參數做展示:
get(param=<some_param>)
onfleet_api.workers.get(id="<24_digit_ID>")
onfleet_api.workers.get(id="<24_digit_ID>", queryParams={"analytics": "true"})
onfleet_api.tasks.get(shortId="<shortId>")
onfleet_api.recipients.get(phone="<phone_number>")
onfleet_api.recipients.get(name="<name>")
onfleet_api.containers.get(workers="<worker_ID>")
onfleet_api.containers.get(teams="<team_ID>")
onfleet_api.containers.get(organizations="<organization_ID>")
提交某單一指定資源的指令如下:
create(body="<data>")
data = {
"name": "John Driver",
"phone": "+16173428853",
"teams": ["<team_ID>", "<team_ID> (optional)", "..."],
"vehicle": {
"type": "CAR",
"description": "Tesla Model S",
"licensePlate": "FKNS9A",
"color": "purple",
},
}
onfleet_api.workers.create(body=data)
其他延伸的POST請求包含了Tasks節點上的clone
, forceComplete
, batchCreate
, autoAssign
,Workers節點上的setSchedule
,Teams節點上的autoDispatch
,以及所有支持節點上的matchMetadata
:
onfleet_api.tasks.clone(id="<24_digit_ID>")
onfleet_api.tasks.forceComplete(id="<24_digit_ID>", body="<data>")
onfleet_api.tasks.batchCreate(body="<data>")
onfleet_api.tasks.autoAssign(body="<data>")
onfleet_api.workers.setSchedule(id="<24_digit_ID>", body="<data>")
onfleet.api.workers.getDeliveryManifest(workerId="<workerId>", hubId="<hubId>", googleApiKey="<googleApiKey>", queryParams={"<startDate>", "<endDate>"})
onfleet_api.teams.autoDispatch(id="<24_digit_ID>", body="<data>")
onfleet_api.<entity_name_pluralized>.matchMetadata(body="<data>")
參考資料:clone
, forceComplete
, batchCreate
, autoAssign
, setSchedule
, matchMetadata
, getDeliveryManifest
以及autoDispatch
。
取代(更新)某單一指定資源的指令如下:
update(id="<24_digit_ID>", body="<data>")
new_data = {
"name": "Jack Driver",
}
onfleet_api.workers.update(id="<24_digit_ID>", body=new_data)
onfleet_api.workers.insertTask(id="24_digit_ID", body="<data>")
刪除某單一指定資源的指令如下:
deleteOne(id="<24_digit_ID>")
onfleet_api.workers.deleteOne(id="<24_digit_ID>")
返回頂端。