Autenticação


O RD Station utiliza o fluxo de OAuth para conceder autorização de acesso.
Neste fluxo seu aplicativo possui duas credenciais - um client_id e um client_secret - utilizados para gerar tokens de acesso. Uma vez que um token de acesso tenha sido gerado, este será utilizado nas requisições para as API's.

Caso você não possua as credenciais, você pode gera-las acessando a RD Station App Store e fazer o processo de submissão do seu aplicativo, após a criação de seu aplicativo, suas credenciais serão criadas.
Para criar seu aplicativo, você precisa ter uma conta do RD Station e uma url de callback, exemplo: https://yourapp.org/auth/callback.

O que é uma URL de callback?
Dentro do fluxo de autenticação de nossas APIs seu aplicativo está solicitando autorização para ter acesso a uma conta dentro da estrutura do RD Station, por isso precisamos de uma URL de callback para devolver o code pertinente ao seu aplicativo para dar prosseguimento ao processo de autenticação.
Basicamente, a URL de callback é o endereço em seu aplicativo para onde retornaremos o código de autenticação caso nosso cliente autorize a conexão de sua ferramenta com o RD Station.

Caso você possua as credenciais, já poderá iniciar o processo de autorização.

Abaixo uma imagem que demonstra o flow de autenticação da API 2.

Diagram oath pt

Iniciando o processo de autorização

Seu aplicativo deverá direcionar o usuário para a URL de autorização abaixo, substituindo os parâmetros por suas credenciais:

Request Parameters:
client_id Type: String ID associado ao aplicativo.
redirect_url Type: String URL do aplicativo que receberá a resposta da autorização.

O usuário verá a caixa de confirmação da autorização, conforme mostra a imagem abaixo e clicará no botão para confirmar o acesso.

Approved name account pt br

Após isso, o RD Station devolverá o controle para o seu aplicativo, redirecionando para redirect_url com o parâmetro code.
Exemplo:

https://yourapp.org/auth/callback?code={code}

Só é necessário fazer este processo uma única vez, porém pode-se repetir caso deseje-se gerar um novo code ou o usuário seja desconectado..

Obtendo o token de acesso

Uma vez que seu aplicativo receba o parâmetro code, este deverá confirmar a identidade fazendo uma requisição para obter um token de acesso:

Returns the Access Token


Request Parameters
client_id Type: String ID associado ao aplicativo.
client_secret Type: String CLIENT_SECRET associado ao aplicativo.
code Type: String Parâmetro recebido em redirect_url após autorização.

Body Example:
          {
  "client_id": "CLIENT_ID",
  "client_secret": "CLIENT_SECRET",
  "code": "CODE"
}
        

Response Body Parameters
access_token Type: String Um access_token no padrão JWT, usado para acessar as API's.
refresh_token Type: String Um refresh_token utilizado para atualizar o access_token após expiração.
expires_in Type: Integer O tempo de expiração do access_token em segundos.

Response Example:
          {
  "access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ik5UZ3hRamM1UWpKR1FUUkNPRVE0UVRZeFJFVTBNRFEzUkRGRE9UVXdPVE5FTXpVM09UUXpRUSJ9.eyJpc3MiOiJodHRwczovL3Jkc3RhdGlvbi5hdXRoMC5jb20vIiwic3ViIjoidklUYjF2N0NoVmhmUVE2QUFTbDNLVUpYRUJTSVNCR2hAY2xpZW50cyIsImF1ZCI6Imh0dHBzOi8vYXBwLnJkc3RhdGlvbi5jb20uYnIvYXBpL3YyLyIsImV4cCI6MTUwNDI5NDQzMSwiaWF0IjoxNTA0MjA4MDMxLCJzY29wZSI6IiJ9.k7OSdhOlTgRBZmEhg_uXXaCofEq4iwDdBi6yuD8SxMF06nCA834KjIqWkmX-W-u84q8SEzGyhb_KT0zZlMvyGotoGPMry_vABXEIorC25zKCUE9BtMJpHJ_suFwQMqZQ8rK6JSnbkOKwLuuDq8_YnrutBURJiBSdSI9325MLw0DZdnw0IgXnNVCHRLdOMl4k_Ovk5Ke3yzESJvMxgJJ3UnojL0ckRExVPwxnbLCyJp1W_PsEe-FOcEl0kDEX-8JQ8MGATiB2vZOu5TJi4sbYCLzg3GInegGh9zvZQR1W4K3isDtOmlNRSYU9A5ez3dQ8HTZdCj9gT_aGWWskxWi6Cw",
  "expires_in":86400,
  "refresh_token":"9YORmXHgOI32k-Y22tZWm-rsf--oFPr8JDCQIQhBEUY"
}
        

cURL example request:
    
 curl --request POST --url 'https://api.rd.services/auth/token' --header 'Content-Type: application/json' --data '{ "code": "dbexxxxxxxxxxxxxxx865", "client_id": "5c6xxxxxxxxxxxxxxxacc",  "client_secret":"LzHxxxxxxxxxxxxxxx98V"}'
 

Com o access_token gerado, este deverá ser enviado no cabeçalho de cada requisição para a API Pública.

API Pública

A API pública deve receber os seguintes cabeçalhos para cada solicitação:


Authorization: Bearer access_token Required on client request
Content-Type: application/json Required on client request

Atualizando um token expirado

Todo access_token é temporário, e tem como prazo de validade o valor definido pelo atributo expires_in em segundos.
Um novo access_token é gerado utilizando o refresh_token, exemplo:

Returns the Access Token


Request Parameters
client_id Type: String ID associado ao aplicativo.
client_secret Type: String CLIENT_SECRET associado ao aplicativo.
refresh_token Type: String Um refresh_token utilizado para atualizar o access_token após expiração.

Body Example:
          {
  "client_id": "CLIENT_ID",
  "client_secret": "CLIENT_SECRET",
  "refresh_token": "REFRESH_TOKEN"
}
        

Response Body Parameters
access_token Type: String Um access_token no padrão JWT, usado para acessar as API's.
refresh_token Type: String Um refresh_token utilizado para atualizar o access_token após expiração.
expires_in Type: Integer O tempo de expiração do access_token em segundos.

Response Example:
          {
  "access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ik5UZ3hRamM1UWpKR1FUUkNPRVE0UVRZeFJFVTBNRFEzUkRGRE9UVXdPVE5FTXpVM09UUXpRUSJ9.eyJpc3MiOiJodHRwczovL3Jkc3RhdGlvbi5hdXRoMC5jb20vIiwic3ViIjoidklUYjF2N0NoVmhmUVE2QUFTbDNLVUpYRUJTSVNCR2hAY2xpZW50cyIsImF1ZCI6Imh0dHBzOi8vYXBwLnJkc3RhdGlvbi5jb20uYnIvYXBpL3YyLyIsImV4cCI6MTUwNDI5NDQzMSwiaWF0IjoxNTA0MjA4MDMxLCJzY29wZSI6IiJ9.k7OSdhOlTgRBZmEhg_uXXaCofEq4iwDdBi6yuD8SxMF06nCA834KjIqWkmX-W-u84q8SEzGyhb_KT0zZlMvyGotoGPMry_vABXEIorC25zKCUE9BtMJpHJ_suFwQMqZQ8rK6JSnbkOKwLuuDq8_YnrutBURJiBSdSI9325MLw0DZdnw0IgXnNVCHRLdOMl4k_Ovk5Ke3yzESJvMxgJJ3UnojL0ckRExVPwxnbLCyJp1W_PsEe-FOcEl0kDEX-8JQ8MGATiB2vZOu5TJi4sbYCLzg3GInegGh9zvZQR1W4K3isDtOmlNRSYU9A5ez3dQ8HTZdCj9gT_aGWWskxWi6Cw",
  "expires_in":86400,
  "refresh_token":"9YORmXHgOI32k-Y22tZWm-rsf--oFPr8JDCQIQhBEUY"
}
        

cURL example request:
            
  curl --request POST --url 'https://api.rd.services/auth/token' --header 'Content-Type: application/json' --data '{ "refresh_token": "OlzExxxxxxxxxxxxxxx-379", "client_id": "5c6xxxxxxxxxxxxxxxacc",  "client_secret":"LzHxxxxxxxxxxxxxxx98V"}'
        

Revogando o acesso de um token

O acesso dos clientes oauth podem ser revogados sempre que necessário.
Ele pode ser revogado utilizando ou o access_token ou o refresh_token do cliente oauth, por exemplo:

Revokes the Access Grant the Access Token


Request Headers
Content-Type x-www-form-urlencoded
Authorization Bearer ACCESS_TOKEN

Request Parameters
Field Type Required Description
token String true The value of the refresh_token or access_token.
token_type_hint String false OPTIONAL. It indicates the type of token provided. Available options: "access_token" or "refresh_token".

Body Example:
          {
  "token": "REFRESH_TOKEN",
  "token_type_hint": "refresh_token"
}
        

cURL example request:
            
  curl --request POST --url 'https://api.rd.services/auth/revoke' --header 'Content-Type: application/x-www-form-urlencoded' --header 'Authorization: Bearer ACCESS_TOKEN' --data '{ "token": "OlzExxxxxxxxxxxxxxx-379", "token_type_hint": "refresh_token"}'