URL da API Workfront
Para obter informações sobre a URL que você usará para chamar a API do Workfront, consulte Formato de domínio para chamadas de API do Adobe Workfront.
Noções básicas de REST
Esta seção fornece uma introdução de alto nível sobre como interagir com a API REST do Workfront para os seguintes princípios REST:
URI do objeto
Cada objeto no sistema recebe um URI exclusivo que consiste no tipo de objeto e na ID. Os exemplos a seguir mostram URIs que descrevem três objetos únicos:
/attask/api/v15.0/project/4c78821c0000d6fa8d5e52f07a1d54d0
/attask/api/v15.0/task/4c78821c0000d6fa8d5e52f07a1d54d1
/attask/api/v15.0/issue/4c78821c0000d6fa8d5e52f07a1d54d2
O tipo de objeto não diferencia maiúsculas de minúsculas e pode ser o ObjCode abreviado (como proj) ou o nome de objeto alternativo (projeto).
Para obter uma lista de objetos, Códigos de Obj válidos e campos de objeto, consulte API Explorer.
Category
, e um campo personalizado é um objeto Parameter
.Operações
Os objetos são manipulados enviando uma solicitação HTTP para seu URI exclusivo. A operação a ser executada é especificada pelo método HTTP.
Os métodos HTTP padrão correspondem às seguintes operações:
- GET - Recupera um objeto por ID, pesquisa todos os objetos por uma consulta, executa relatórios ou executa consultas nomeadas
- POST - Insere um novo objeto
- PUT - Edita um objeto existente
- DELETE - Exclui um objeto
Para contornar deficiências do cliente ou limites de comprimento do protocolo, o parâmetro do método pode ser usado para substituir o comportamento HTTP. Por exemplo, uma operação GET pode ser implementada publicando o seguinte URI:
GET /attask/api/v15.0/project?id=4c78...54d0&method=get
GET /attask/api/v15.0/project/4c78...54d0?method=get
Resposta
Cada solicitação recebe uma resposta no formato JSON. A resposta tem um atributo de dados se a solicitação tiver sido bem-sucedida ou um atributo de erro se houver um problema. Por exemplo, a solicitação
GET /attask/api/v15.0/proj/4c7c08b20000002de5ca1ebc19edf2d5
retorna uma resposta JSON semelhante ao seguinte:
{
"dados": [
{
"percentComplete": 0,
"status": "CUR",
"priority": 2,
"name": "Novo projeto",
"ID": "4c7c08b20000002de5ca1ebc19edf2d5"
}
]
Uma segurança especial foi adicionada às solicitações de PUT, POST e DELETE. Qualquer solicitação que resulte em gravação ou exclusão do banco de dados só poderá ser executada se sessionID=abc123 estiver incluída no URI. Os exemplos a seguir mostram como isso procuraria uma solicitação 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
Autenticação
A API autentica cada solicitação para garantir que o cliente tenha acesso para visualizar ou modificar um objeto solicitado.
A autenticação é realizada transmitindo uma ID de sessão que pode ser fornecida usando um dos seguintes métodos:
Solicitar autenticação de cabeçalho
O método preferido de autenticação é passar um cabeçalho de solicitação chamado SessionID contendo o token de sessão. Isso tem a vantagem de estar seguro contra ataques de falsificação de solicitação entre sites (CSRF) e não interferir no URI para fins de armazenamento em cache.
Veja a seguir um exemplo de um cabeçalho de solicitação:
GET /attask/api/v15.0/project/search
SessionID: abc1234
Autenticação baseada em cookie
A API usa a mesma autenticação baseada em cookies usada pela interface do usuário da Web para o sistema. Onde, se um cliente fizer logon no Workfront usando a interface da Web, qualquer chamada de AJAX feita no mesmo navegador usará a mesma autenticação.
Logon
/login
. Em vez disso, use um dos seguintes métodos de autenticação:- Autenticação do servidor com JWT
- Autenticação de usuário com OAuth2
Usando um nome de usuário e senha válidos, você pode usar a seguinte solicitação para obter uma ID de sessão:
POST /attask/api/v15.0/login?username=admin&password=user
Isso define um cookie para autenticar solicitações futuras, bem como retornar uma resposta JSON com a sessionID recém-criada, a userID do usuário conectado e outros atributos de sessão.
Gerando uma Chave de API
Você pode gerar uma Chave de API ao fazer logon no sistema como esse usuário, conforme mostrado no exemplo a seguir:
PUT /attask/api/v15.0/user?action=generateApiKey&username= username&password=password&method=put
Recuperando uma Chave de API Gerada Anteriormente
Você também pode recuperar uma Chave de API que foi gerada anteriormente para um usuário específico executando getApiKey:
PUT /attask/api/v15.0/user?action=getApiKey&username=user@email.com&password=userspassword&method=put
Você pode usar esse resultado para autenticar qualquer chamada de API adicionando "apiKey" como um parâmetro de solicitação com esse valor no lugar de uma sessionID ou nome de usuário e senha. Isso é benéfico do ponto de vista da segurança.
A solicitação a seguir é um exemplo de recuperação de dados de um projeto usando a apiKey:
GET /attask/api/v15.0/project/abc123xxxxx?apiKey=123abcxxxxxxxxx
Invalidando uma Chave de API
Se o valor apiKey tiver sido comprometido, será possível executar "clearApiKey", que invalida a Chave de API atual, como mostrado no exemplo a seguir:
GET /attask/api/v15.0/user?action=clearApiKey&username=user@email.com&password=userspassword&method=put
Depois de limpa, você pode executar getApiKey novamente para gerar uma nova Chave de API.
Sair
Quando uma sessão é concluída, você pode usar a seguinte solicitação do para fazer logoff do usuário, impedindo qualquer acesso adicional com a sessionID.
GET /attask/api/v15.0/logout?sessionID=abc1234
A sessionID a ser desconectada pode ser especificada como um cookie, cabeçalho de solicitação ou parâmetro de solicitação.
Para fazer logoff de um usuário:
-
Navegue até a tela de logon, mas não faça logon.
-
Altere o URL para /attask/api/v15.0/project/search.
Observe que a página não pode ser encontrada. -
Substitua a palavra search por login?username=admin&password=user, substituindo seu nome de usuário e senha por admin e *user
*Essa sessão é armazenada no navegador como um cookie e não precisa ser reexpressa em cada solicitação subsequente do GET. -
Altere a URL de volta para /attask/api/v15.0/project/search.
-
Observe a resposta fornecida.
Você sempre deve incluir a sessionID fornecida após o logon ao executar solicitações PUT, POST e DELETE.
Comportamento do GET
Use o método HTTP GET para recuperar um ou vários objetos e executar relatórios.
Recuperando Objetos
Você pode aprimorar uma pesquisa por objetos usando modificadores e filtros.
Recuperando um objeto usando a ID do objeto
Se você souber a ID de um objeto, poderá recuperá-lo acessando seu URI exclusivo. Por exemplo, a solicitação
GET /attask/api/v15.0/project/4c78821c0000d6fa8d5e52f07a1d54d0
retorna uma resposta semelhante à seguinte:
{
"percentComplete": 0,
"status": "CUR",
"priority": 2,
"name": "Novo projeto",
"ID": "4c7c08b20000002de5ca1ebc19edf2d5"
Você pode recuperar vários objetos na mesma solicitação especificando o parâmetro de solicitação de id e fornecendo uma lista de IDs separadas por vírgulas, como mostrado no exemplo a seguir:
GET /attask/api/v15.0/project?id=4c78...54d0,4c78...54d1
Observe que a solicitação /attask/api/v15.0/project?id=… é igual à solicitação /attask/api/v15.0/project/...
.