1. Pré-requisito (IMPORTANTE)
Antes de utilizar este serviço é necessário que o desenvolvedor valide com o time de Recursos Humanos o que significa, para eles, o termo treinamento pois, pela nossa experiência, alguns clientes entendem como treinamento:
- O módulo;
- A trilha de aprendizagem;
- Ou o ambiente.
Como esta é uma API genérica, que atende a todos estes cenários, é necessária esta definição antes de iniciar os trabalhos de desenvolvimento.
Além disso, para utilização dos serviços da API da Engage é necessário ter em mãos os parâmetros abaixo:
- username;
- password;
- customer_id;
- customer_token;
- client_id;
- client_secret.
Para gerar estes parâmetros, siga os procedimentos descritos neste tutorial. Caso tenha alguma dúvida ou enfrente qualquer problema para obtê-los, entre em contato com o Suporte Técnico da Engage através do endereço meajuda@engage.bz
Por fim, é extremamente recomendado que os testes e desenvolvimento da integração sejam feitos utilizando nosso ambiente de HOMOLOGAÇÃO. Aponte a integração para o ambiente produtivo da Engage somente quando ela estiver concluída, testada e homologada.
2. Ambiente de Homologação
Para desenvolvimento e testes de integração com a plataforma Engage, é disponibilizada abaixo a URL do ambiente de homologação:
3. Ambiente de Produção
4. Autenticação
Para obter acesso aos dados disponibilizados pelos serviços da API é necessário fazer a autenticação utilizando o access_token enviado. Como o serviço utiliza o tipo de autenticação HTTP Bearer, o token de acesso deverá ser inserido na propriedade Authorization do cabeçalho HTTP, conforme exemplo abaixo:
Authorization Bearer {access_token}
OBS.: A palavra Bearer deve ser adicionada antes do token e separada por um espaço.
4.1 POST /auth
Este método deve ser utilizado nos seguintes cenários:
- Nos casos em que o login é efetuado no próprio site
- Para executar métodos que necessitam de autenticação.
Para acessar os métodos que necessitam de autenticação é preciso enviar o parâmetro access_token como argumento para as requisições, ou guardar o cookie gerado a partir deste método e utilizá-lo nas requisições seguintes.
OBS.: O access_token tem um tempo de vida de 25 minutos. Transcorrido este tempo, ele expira e o acesso aos endpoints é negado – devolvendo o status HTTP 401- Unauthorized – sendo necessário renová-lo a partir de uma nova chamada a este endpoint.
Abaixo, seguem descritos os parâmetros que devem ser enviados na requisição.
Parâmetro | Tipo | Obrigatório | Valor Padrão | Descrição |
grant_type | String | Sim | password | Como a autenticação se dará por usuário e senha, o grant_type a chamada deverá enviar o valor password para este parâmetro. |
username | String | Sim | - | Login do usuário. |
password | String | Sim | - | Senha do respectivo usuário. |
client_id | String | Sim | - | ID da aplicação que está se integrando ao Engage. Esta informação será fornecida pela equipe da Engage. |
client_secret | String | Sim | - | Senha da aplicação que está se integrando ao Engage. Esta informação será fornecida pela equipe da Engage. |
customer_id | String | Sim | - | ID da instância que representa o ambiente do cliente. Esta informação será fornecida pela equipe da Engage. |
OBS: O Content-Type dos parâmetros acima deve ser: application/x-www-form-urlencoded, conforme exemplo abaixo feito através do software Postman:
Retornos:
- Em caso de sucesso, o retorno será semelhante ao JSON abaixo:
{
"access_token": "dskdmkdnfi3948339w",
"token_type": "bearer",
"expires_in": 1499,
"client_id": "my_client_id",
"customer_id": "customer_id",
"user_id": "1",
".issued": "Fri, 11 Aug 2017 20:06:53 GMT",
".expires": "Fri, 11 Aug 2017 20:31:53 GMT"
}
- Em caso de falha, o retorno será semelhante ao JSON abaixo:
{
"error": "error_code",
"error_description": "This is an error."
}
4.2. Permissões de Acesso
Os acessos aos métodos da API são autorizados com base nas permissões que um determinado possui. Por exemplo, para acessar determinados endpoints, não basta apenas estar autenticado, mas, também, possuir permissão de acesso ao recurso. Por exemplo, para efetuar cadastros de usuários é necessária permissão “UserManagement” no sistema. Abaixo, segue a lista das principais permissões do sistema.
- UserManagement:
- ScoreManagement:
- GameManagement:
- GroupManagement:
- AchievementManagement:
5. Históricos
5.1. POST {customerId}/attempts/historyData
Este serviço deve ser utilizado para consultar o andamento dos treinamentos realizadas pelos usuários. Através deste serviço é possível obter dados de um ou mais usuários em diversos treinamentos bem como filtrar pelo status de realização do treinamento.
Para consumir este serviço, é necessário estar autenticado com um usuário que possua a permissão CertificateManagement, ou seja, durante a chamada a este método, é obrigatório o envio do access_token no Header da requisição de algum usuário que possua esta permissão de acesso. Para maiores detalhes, consulte o capítulo Autenticação.
Abaixo, segue um exemplo de como o token de acesso deve ser enviado no Header da requisição.
Authorization: Bearer {access_token}
Abaixo, seguem descritos os parâmetros que obrigatórios e opcionais que podem ser enviados na requisição.
- Parâmetros de Entrada:
Parâmetro | Tipo do Parâmetro | Tipo do Dado | Obrigatório | Descrição |
customerId | Path | String | Sim | Id da instância que compõe a rota do endpoint. Esta informação será fornecida pela equipe da Engage. |
filters | Body | Array | Sim | Objeto JSON que representa os filtros possíveis de serem utilizados, conforme modelo abaixo: { "entity_type_id":"RD", "course_external_codes":[], "users":[], "attempt_status":[ "concluido", "aprovado", "reprovado" ], "start_date":"2022-08-11T13:45:14.2586346-03:00", "end_date":"2022-10-11T20:45:14.2586346-03:00", }
|
Onde:
Parâmetro | Tipo de Dado | Obrigatório | Único | Descrição |
entity_type_id | String | Sim | Sim | Flag que representa a unidade de conteúdo que o cliente entende como treinamento, ou seja, de acordo como foi estruturado o programa de treinamentos na plataforma da Engage. Os valores possíveis são:
RD – Passar este valor hard coded no filtro para projetos onde o treinamento seja os modulos.
TR – Passar este valor hard coded no filtro para projetos onde o treinamento seja a trilha de aprendizagem.
CP - Passar este valor hard coded no filtro para projetos onde o treinamento seja o ambiente |
course_external_codes | Array | Não | Sim | Array de Strings contendo os códigos externos ou os ID’s dos treinamentos na Engage que se deseja filtrar. Este parâmetro é opcional |
users_code | Array | Não | Sim | Array de Strings contendo os logins dos usuários ou os Ids dos usuários na Engage que se deseja filtrar. Este parâmetro é opcional |
attempt_status
| Array | Sim | Sim | Array de Strings que representa os status dos treinamentos que se pretendem filtrar. Os valores aceitos são:
OBS: Para retornar todos os treinamentos realizados, informe um array no seguinte formato: “attempt_status”: [ “concluido”, “aprovado”, “reprovado” ] |
start_date | DateTime | Não | Sim | Período inicial de finalização do treinamento pelo usuário |
end_date | DateTime | Não | Sim | Período final de finalização do treinamento pelo usuário |
user_status | Boleano | Não | Não | Filtra pelo status do usuário. Se este parâmetro for omitido, retorna os usuários ativos e inativos.
true: Retorna os usuários ativos false: Retorna os usuários inativos |
Importante: É extramamente recomendado o uso o filtro de datas para reduzir o volume de dados e acelerar a pesquisa
start_date | 2022-08-11T13:45:14.2586346-03:00 |
end_date | 2022-10-11T20:45:14.2586346-03:00 |
Exemplo de chamada para consulta dos treinamentos realizados pelos usuários.
Retornos:
- Em caso de sucesso – HTTP 200 (OK) – o retorno será semelhante ao JSON abaixo:
{
"count": 0,
"results": [
{
"user_id": 175933,
"user_name": "João da Silva",
"user_login": "joao.silva",
"course_id": "44041",
"entity_type_id": "RD",
"course_name": "modulo 01",
"course_external_code": "mission_01",
"progress": 100.0,
"score": 100.0,
"first_start_date": "2021-10-01T07:28:14.063-03:00",
"finalization_date": "2021-10-02T14:22:22.267-03:00"
}
]
}
Onde:
Parâmetro | Tipo de Dado | Descrição |
count | Inteiro | Total de itens retornados de acordo com o resultado da pesquisa. |
results | Array | Coleção que contém os dados sobre o aproveitamento do(s) usuário(s) no(s) treinamento(s) |
user_id | Inteiro | ID do usuário na Engage. |
user_name | String | Nome completo do aluno que realizou o treinamento. |
user_login | String | Login do usuário que realizou o treinamento. Este é o mesmo campo utilizado para o usuário se autenticar no Engage. |
course_id | String | ID do treinamento no Engage. |
entity_type_id
| String | Via de regra, retorna o mesmo valor informado no parâmetro de entrada entity_type_id. Os valores possíveis para este campo são:
RD – Retornado quando o treinamento é considerado a rodada, também chamada de modulo;
TR – Retornado quando o treinamento é considerado a trilha de aprendizagem;
CP – Retornado quando o treinamento é considerado o ambiente, também chamada de campanha.
|
course_name | String | Nome completo do treinamento |
course_external_code
| String | Código externo do treinamento definido pelo administrador da plataforma. |
progress
| Decimal | Progresso do usuário no treinamento. Varia entre 0 e 100. Este valor é retornado se o usuário já iniciou ou se concluiu o treinamento caso contrário retorna null; |
score | Decimal | Aproveitamento obtido pelo aluno no treinamento. Varia entre 0 e 100. Este valor é retornado apenas se o usuário já concluiu o treinamento caso contrário retorna null. |
first_start_date | DateTime | Retorna a data de primeiro acesso do usuário no treinamento. |
finalization_date | DateTime | Retorna a data que o usuário concluiu o treinamento, caso o treinamento esteja pendente o valor null é retornado. |
- Em caso de falha – HTTP 400 (BadRequest), 404 (NotFound), etc – o retorno será semelhante ao JSON abaixo:
{
"count": 1,
"errors": [
{
"error_code": "Não encontrado.",
"message": "Sua pesquisa não retornou resultados.",
"data_occurred": "2021-11-11T13:45:14.2586346-03:00"
}
]
}
Este artigo foi útil?
Que bom!
Obrigado pelo seu feedback
Desculpe! Não conseguimos ajudar você
Obrigado pelo seu feedback
Feedback enviado
Agradecemos seu esforço e tentaremos corrigir o artigo