回應
每個要求都會有JSON格式的回應。 如果要求成功,回應會具有資料屬性,如果有問題,則會具有錯誤屬性。 例如,請求
GET /attask/api/v15.0/proj/4c7c08b20000002de5ca1ebc19edf2d5
會傳回類似下列的JSON回應:
{
"data": [
{
"percentComplete": 0,
"status": "CUR",
"priority": 2,
"name": "Brand New Project",
"ID": "4c7c08b20000002de5ca1ebc19edf2d5"
}
]
已針對PUT、POST和DELETE請求新增特殊安全性。 只有在URI中包含 sessionID=abc123 時,才能執行導致寫入資料庫或從資料庫刪除的任何要求。 下列範例說明這會如何尋找DELETE請求:
GET/attask/api/v15.0/project?id=4c78...54d0&method=delete&sessionID=abc123
GET/attask/api/v15.0/project/4c78...54d0?method=delete&sessionID=abc123
驗證
API會驗證每個請求,以確保使用者端有權檢視或修改請求的物件。
透過傳入工作階段ID來執行驗證,該ID可使用以下方法之一指定:
請求標頭驗證
首選的驗證方法是傳遞包含工作階段權杖的名為SessionID的請求標頭。 這樣的優點在於可以安全地抵禦跨網站請求偽造(CSRF)攻擊,並且不會為了快取目的而干擾URI。
以下是請求標頭的範例:
GET /attask/api/v15.0/project/search
SessionID: abc1234
Cookie型驗證
此API使用的是Web UI用於系統的相同基於Cookie的驗證。 其中,如果使用者端使用網頁UI登入Workfront,則從相同瀏覽器內進行的任何AJAX呼叫都會使用相同的驗證。
登入
/login
端點或API金鑰。 請改用下列其中一種驗證方法:- 使用JWT進行伺服器驗證
- 使用OAuth2進行使用者驗證
使用有效的使用者名稱和密碼,您可以使用以下要求來取得工作階段ID:
POST /attask/api/v15.0/login?username=admin&password=user
這樣會設定Cookie以驗證未來的請求,並傳回JSON回應,其中包含新建立的sessionID、登入使用者的使用者ID以及其他工作階段屬性。
產生API金鑰
您可以以該使用者身分登入系統時產生API金鑰,如下列範例所示:
PUT /attask/api/v15.0/user?action=generateApiKey&username= username&password=password&method=put
擷取先前產生的API金鑰
您也可以執行getApiKey,擷取先前為特定使用者產生的API金鑰:
PUT /attask/api/v15.0/user?action=getApiKey&username=user@email.com&password=userspassword&method=put
然後,您可以使用此結果,新增「apiKey」作為請求引數,取代工作階段ID或使用者名稱和密碼,以驗證任何API呼叫。 從安全性角度來看,這是有好處的。
以下請求為使用apiKey從專案擷取資料的範例:
GET /attask/api/v15.0/project/abc123xxxxx?apiKey=123abcxxxxxxxxx
使API金鑰失效
如果apiKey值已洩漏,您可以執行「clearApiKey」,讓目前的API金鑰失效,如下列範例所示:
GET /attask/api/v15.0/user?action=clearApiKey&username=user@email.com&password=userspassword&method=put
清除後,您可以再次執行getApiKey以產生新的API金鑰。