Skip to content

Latest commit

 

History

History
206 lines (163 loc) · 8.91 KB

README.zh-tw.md

File metadata and controls

206 lines (163 loc) · 8.91 KB

Onfleet Python Wrapper

Build License Latest version Top language Downloads

其他語言版本:
English
Español

欲了解本開源專案的背景,請參閱我們的部落格,如果對於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
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={})
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, autoAssignWorkers節點上的setScheduleTeams節點上的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.teams.autoDispatch(id="<24_digit_ID>", body="<data>")

onfleet_api.<entity_name_pluralized>.matchMetadata(body="<data>")

參考資料:clone, forceComplete, batchCreate, autoAssign, setSchedule, matchMetadata, 以及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>")

返回頂端