响应
每个请求都会以JSON格式获得响应。 如果请求成功,响应将具有data属性;如果存在问题,则响应将具有error属性。 例如,请求
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使用的基于Cookie的身份验证与Web UI用于系统的身份验证相同。 其中,如果客户端使用Web UI登录到Workfront,则从同一浏览器中进行的任何AJAX调用都使用相同的身份验证。
登录
/login
端点或API密钥。 请改用以下身份验证方法之一:- 使用JWT进行服务器身份验证
- 使用OAuth2进行用户身份验证
使用有效的用户名和密码,您可以使用以下请求获取会话ID:
POST /attask/api/v15.0/login?username=admin&password=user
这将设置一个Cookie以对未来的请求进行身份验证,并返回具有新创建的会话ID、登录用户的用户ID和其他会话属性的JSON响应。
生成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”作为请求参数来验证任何API调用,使用该值替换sessionID或用户名和密码。 从安全角度来看,这是有益的。
以下请求是使用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密钥。