响应

每个请求都会以JSON格式获得响应。 如果请求成功,响应将具有data属性;如果存在问题,则响应将具有error属性。 例如,请求

GET /attask/api/v15.0/proj/4c7c08b20000002de5ca1ebc19edf2d5

返回类似于以下内容的JSON响应:

{
    "data": [
        {
            "percentComplete": 0,
            "status": "CUR",
            "priority": 2,
            "name": "Brand New Project",
            "ID": "4c7c08b20000002de5ca1ebc19edf2d5" 
        } 
    ] 
NOTE
通过浏览器的地址栏执行GET请求时,不必将sessionID包含在请求中。

已围绕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调用都使用相同的身份验证。

NOTE
为了防止CSRF(跨站点请求伪造)攻击的可能性,此身份验证方法仅适用于只读操作。

登录

IMPORTANT
Workfront不再建议使用/login端点或API密钥。 请改用以下身份验证方法之一:
  • 使用JWT进行服务器身份验证
  • 使用OAuth2进行用户身份验证
有关设置这些身份验证方法的说明,请参阅为Workfront集成创建OAuth2应用程序
有关在Workfront中使用服务器身份验证的说明,请参阅使用JWT流配置和使用您组织的自定义OAuth 2应用程序
有关在Workfront中使用用户身份验证的说明,请参阅使用授权代码流配置和使用您组织的自定义OAuth 2应用程序
NOTE
本节中介绍的过程仅适用于尚未加入Adobe业务平台的组织。 如果您的组织已载入到Adobe业务平台,则无法通过Workfront API登录Workfront。
有关因贵组织是否已登记到Adobe业务平台而不同的过程列表,请参阅基于平台的管理差异(Adobe Workfront/Adobe业务平台)

使用有效的用户名和密码,您可以使用以下请求获取会话ID:

POST /attask/api/v15.0/login?username=admin&password=user

这将设置一个Cookie以对未来的请求进行身份验证,并返回具有新创建的会话ID、登录用户的用户ID和其他会话属性的JSON响应。

NOTE
如果您指定的API用户也是管理员,Workfront强烈建议您使用API密钥进行登录。

生成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密钥。