Onfleet Python Wrapper
May 19, 2026 · View on GitHub
欲了解本開源專案的背景,請參閱我們的部落格,如果對於Onfleet應用程式介面或是我們產品有任何的問題,歡迎在此留言或直接聯繫 support@onfleet.com。
目錄
概要
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進行單元測試
docker-compose up --build
API速限
原則上API的速限為每秒鐘20次請求,詳情請參考官方文件。
請求回應
pyonfleet所回應的物件為一Response物件的本體。
支援的CRUD操作
下面為各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 |
| Orders | get(id) quote(queryParams={}) | create(body={}) cancel(body={}) clone(id) reject(id) | 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 |
| Route Plans | get(id) get(queryParams="") | create(body={}) | update(id, body={}) addTasksToRoutePlan(id, body={}) | deleteOne(id) |
| Tasks | get(queryParams={}) get(id) get(shortId=id) getBatchCreateAsyncStatus(id) | create(body={}) clone(id) forceComplete(id) batchCreate(body={}) batchCreateAsync(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={}) matchMetadata(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 請求
展示所有資源的指令如下:
get()
使用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>)
使用get(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>")
POST 請求
提交某單一指定資源的指令如下:
create(body="<data>")
使用create提交指定資源的範例
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。
PUT 請求
取代(更新)某單一指定資源的指令如下:
update(id="<24_digit_ID>", body="<data>")
使用update取代指定資源的範例
new_data = {
"name": "Jack Driver",
}
onfleet_api.workers.update(id="<24_digit_ID>", body=new_data)
使用insertTask取代指定資源的範例
onfleet_api.workers.insertTask(id="24_digit_ID", body="<data>")
DELETE 請求
刪除某單一指定資源的指令如下:
deleteOne(id="<24_digit_ID>")
使用deleteOne刪除指定資源的範例
onfleet_api.workers.deleteOne(id="<24_digit_ID>")
返回頂端。