Apresentação

A API do IM Labs permite acesso programático para:

JSON RESTful API

Exemplo de uma resposta com sucesso:

{
    "status": 200,
    "message": "",
    "data": {
        "attribute1": "value",
        "attribute2": "value"
    }
}

Exemplo de uma resposta com erro:

{
    "status": 400,
    "message": "Example error message.",
}

A API IM Labs é do tipo RESTful, utilizando URL e verbos HTTP correspondentes para cada operação (GET para obter, POST para criar e PUT para alterar e DELETE para remover).

O formato de dados padrão na solictação e resposta é o JSON.

A resposta a uma requisição sempre conterá o atributo "status". O valor 200 indica que a solicitação teve sucesso.

Busca e Paginação

200 OK - Múltiplos itens

{
    "data": [
        {"id": 1}, 
        {"id": 2}
    ],
    "pagination": {
        "page": 1,
        "page_size": 100,
        "page_count": 1
    }
}

Algumas chamadas retornam dados na forma de listas. Os atributos abaixo permitem a busca e paginação de dados.

Quando os dados retornados estiverem na forma de lista,

Parâmetros de URL para Busca e Paginação

Parâmetro Tipo Obrigatório Descrição
sort String Não Attributo para ordenação dos resultados. Ex.: sort=name, sort=-date.

Teste e Produção

Durante a fase de desenvolvimento, utilize o ambiente de destes, através da URL base https://staging.api.imlabs.com.br/api/v1.

Quando sua aplicação estiver finalizada, utilize a URL base de produção: https://api.imlabs.com.br/api/v1.

Autenticação e Autorização

A autorização de acesso é feita pelo envio do header X-Access-Token.

A autorização estará limitada ao escopo solicitado na criação do token de acesso.

Autorização via Token de Acesso (X-Access-Token)

Access token via credenciais de client

curl "https://staging.auth.institutomix.com.br/v1/token" \
  --request POST \
  --header 'Content-Type: application/json' \
  --data '{
  "client_id": "{client_id}",
  "client_secret": "{client_secret}",
  "grant_type": "client_credentials",
  "scope": "user.create"
}'

200 OK

{
  "access_token": "eyJ0eXAiOiJKV1QiLCJ(...)",
  "expires_in": 259200,
  "token_type": "bearer",
  "scope": "user.create",
  "refresh_token": "<refresh_token>"
}

Access token via credenciais de aluno

curl "https://staging.auth.institutomix.com.br/v1/token" \
  --request POST \
  --header 'Content-Type: application/json' \
  --data '{
  "client_id": "{client_id}",
  "client_secret": "{client_secret}",
  "username": "{platform_code}:BRA:{cpf}",
  "password": "{password}",
  "grant_type": "password",
  "scope": "user.create lms"
}'

200 OK

{
  "access_token": "eyJ0eXAiOiJKV1QiLCJ(...)",
  "expires_in": 259200,
  "token_type": "bearer",
  "scope": "user.create",
  "refresh_token": "<refresh_token>"
}

401 Unauthorized

{
    "status": 401,
    "data":[],
    "message": "Your request was made with invalid credentials.",
    "errors": []
}

O access token é uma chave temporária obtida via autenticação. O envio do access token deve ser feito por meio do header X-Access-Token.

Requisição HTTP para Obter um Access Token

POST https://staging.auth.institutomix.com.br/v1/token

Parâmetros para Autenticação via Credenciais de Client

Parâmetro Tipo Obrigatório Descrição
client_id String Sim ID do cliente de autenticação.
client_secret String Sim Chave de acesso do cliente de autenticação.
grant_type String Sim Tipo autorização (client_credentials).

Parâmetros para Autenticação com Usuário e Senha

Parâmetro Tipo Obrigatório Descrição
client_id String Sim ID do cliente de autenticação.
client_secret String Sim Chave de acesso do cliente de autenticação.
username String Sim Identificação do usuário no formato PLATFORM_CODE:COUNTRY_CODE:CPF. Ex.: "PLAT_CODE:BRA:99999999999".
password String Sim Senha do usuário.
grant_type String Sim Tipo de autorização (password).
scope String Sim Escopos de acesso separados por espaço. Ex.: user.create lms.

Escopos de Acesso

Múltiplos escopos de acesso podem ser solicitados separados por espaço.

Escopo Descrição
user.create Permite criar usuário tipo aluno.
user.update Permite atualizar usuário tipo aluno.
user.enroll Permite inscrever aluno em curso.
user.enrol_reset Permite reset de progresso de aluno.
lms Permite acessos LMS (progresso em curso).

Erros

É importante considerar a possibilidade do IM Labs API não conseguir atender ao request. É seguro considerar que qualquer resposta com status diferente de 20x (200, 201...) contenha um erro.

Quando a requisição não for bem sucedida, uma reposta JSON será retornada, da seguinte forma:

{
    "status": 400,
    "message": "Mensagem de erro.",
    "data": null
}

Códigos de Erro

Os códigos de erro são retornados no atributo status.

Código Tipo
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
429 Too Many Requests
500 Internal Server Error
503 Service Unavailable

Usuários

Obter

Request

curl "https://staging.api.imlabs.com.br/api/v1/users/{id}" \
  --request GET \
  --header "X-Access-Token: {X-Access-Token}"

200 OK

{
  "status": 200,
  "data": {
    "id": "1",
    "erp_user_id": "000000",
    "platform_name": "EADIM",
    "document": "00000000000",
    "username": "XYZ4439",
    "phone_number": "",
    "name": "João da Silva",
    "country_code": "BRA",
    "address_line_1": null,
    "address_line_2": null,
    "neighborhood": null,
    "city_name": null,
    "state_code": null,
    "postal_code": null,
    "email": "[email protected]",
    "created_at": "2018-05-31 02:25:53",
    "is_news_letter_enabled": false,
    "is_app_notification_enabled": false,
    "is_whatsapp_messaging_enabled": false,
    "is_active": true,
    "survey_url": "https://eadim.staging.loja.imlabs.com.br/pesquisa/1?access-token=..."
  }
}

Este endpoint permite obter os dados de uma conta de usuário.

Requisição HTTP

GET https://staging.api.imlabs.com.br/api/v1/users/{id}
GET https://staging.api.imlabs.com.br/api/v1/users/self

Parâmetros de Header

Parâmetro Obrigatório Descrição
{id} Sim ID do usuário. O ID "self" pode ser usado para obter dados da conta autenticada.
X-Access-Token Sim Token de acesso obtido via autenticação.

Criar

Request

curl "https://staging.api.imlabs.com.br/api/v1/users/create" \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'X-Access-Token: {X-Access-Token}' \
  --data '{
  "name": "João da Silva",
  "document": "00000000000",
  "erp_user_id": "1234",
  "email": "[email protected]",
  "username": "username123",
  "password": "610X843a34423aa40#2",
  "country_code": "BRA",
  "state_code": "SP",
  "city_name": "São Paulo"
}'

200 OK

{
  "status": 200,
  "data": {
    "id": "711907",
    "erp_user_id": "1234",
    "document": "00000000000",
    "username": "username123",
    "name": "João da Silva",
    "country_code": "BRA",
    "email": "[email protected]",
    "is_active": true,
    "created_at": "2021-08-20 19:26:03",
    "updated_at": "2021-08-20 19:26:03",
    "phone_number": "",
    "state_code": "",
    "city_name": null,
    "franchisee_id": null,
    "campaign_id": null,
    "is_news_letter_enabled": false,
    "address_line_1": null,
    "neighborhood": null,
    "postal_code": "",
    "old_birthdate": null,
    "education_level": null,
    "id_number": "",
    "is_public_school_egress": null,
    "is_app_notification_enabled": false,
    "is_whatsapp_messaging_enabled": false,
    "birthdate": null,
    "address_line_2": null,
    "survey_url": "https://eadim.staging.loja.imlabs.com.br/pesquisa/1?access-token=...",
    "is_lxp_user" : false,
    "is_aprovation_user" : false
  }
}

Este endpoint permite criar uma conta de aluno.

Escopo de permissionamento requerido: user.create.

Requisição HTTP

POST https://staging.api.imlabs.com.br/api/v1/users/create

Parâmetros de Header

Parâmetro Tipo Obrigatório Descrição
X-Access-Token String Sim Token de acesso obtido via autenticação.

Parâmetros de Body

Parâmetro Tipo Obrigatório Descrição
name String Sim Nome completo do usuário.
document String Sim CPF (somente dígitos).
erp_user_id String Não ID de referência. Requer admin no escopo de acesso.
username String Não Nome de usuário. Caso não informado, será preenchido com o atributo document.
email String Sim Email do usuário.
password String Sim Senha, com mínimo de 6 caracteres, entre números e letras.
address_line_1 String Não Endereço, com rua e número da casa.
address_line_2 String Não Complemento do endereço.
neighborhood String Não Bairro
city_name String Sim Nome da cidade. Ex.: São Paulo.
postal_code String Não Código postal (somente dígitos).
state_code String Sim Código do estado com 2 letras. Ex.: SP.
country_code String Sim Código do país com 3 letras (ISO 3166). Ex.: BRA.
phone_number String Não Número do telefone com DDD (somente dígitos).
franchisee_id Integer Não ID da unidade de franquia.
campaign_id String Não Identificação da campanha.
is_news_letter_enabled Boolean Não Habilita/desablita mensagens promocionais. Padrão: false.
is_app_notification_enabled Boolean Não Habilita/desablita envio de notificações via app. Padrão: false.
is_whatsapp_messaging_enabled Boolean Não Habilita/desablita contato via Whatsapp. Padrão: false.
is_lxp_user Boolean Não Indica se é usuario LXP. Padrão: false.
is_postgrad_user Boolean Não Indica se é usuario de pós-graduação. Padrão: false.
is_aprovat_user Boolean Não Indica se é usuario Aprovat. Padrão: false.
is_new_aprovat_user Boolean Não Indica se é um usuário Aprovat no novo sistema. Padrão: false.
is_eja_user Boolean Não Indica se é usuario Eja. Padrão: false.
is_im_tech_user Boolean Não Indica se é usuario IM Tech. Padrão: false.
lxp_sso_token String Não Token de acesso obtido via autenticação SSO do LXP.

Atualizar pelo ID

Request

curl "https://staging.api.imlabs.com.br/api/v1/users/{user_id}/update" \
  --request "PUT" \
  --header 'Content-Type: application/json' \
  --header "X-Access-Token: {X-Access-Token}" \
  --data '{
    "email": "newemail@domain"
}'

200 OK

{
  "status": 200,
  "data": {
    "id": "1",
    "erp_user_id": "632517",
    "document": "00000340022",
    "username": "XYZ4439",
    "name": "João da Silva",
    "country_code": "BRA",
    "email": "[email protected]",
    "is_active": true,
    "created_at": "2018-05-31 02:25:53",
    "updated_at": "2021-08-20 18:21:40",
    "phone_number": "",
    "state_code": null,
    "city_name": null,
    "franchisee_id": 327,
    "campaign_id": null,
    "is_news_letter_enabled": false,
    "address_line_1": null,
    "neighborhood": null,
    "postal_code": null,
    "old_birthdate": "0",
    "education_level": null,
    "id_number": "",
    "is_public_school_egress": 0,
    "is_app_notification_enabled": false,
    "is_whatsapp_messaging_enabled": false,
    "birthdate": "1969-12-31",
    "address_line_2": null,
    "survey_url": "https://eadim.staging.loja.express/pesquisa/1?access-token=..."
  }
}

400 Bad Request

{
  "status": 400,
  "data": [],
  "message": "The attribute \"name\" cannot be updated.",
  "errors": []
}

Este endpoint atualiza dados de um usuário.

Requisição HTTP

PUT https://staging.api.imlabs.com.br/api/v1/users/{user_id}/update
PUT https://staging.api.imlabs.com.br/api/v1/users/self/update

Parâmetros de Header

Parâmetro Obrigatório Descrição
X-Access-Token Sim Token de acesso obtido via autenticação.

Parâmetros de URL

Parâmetro Obrigatório Descrição
user_id Sim ID do usuário. O ID "self" pode ser usado para atualizar a conta autenticada.

Parâmetros do Body

Parâmetro Tipo Obrigatório Descrição
erp_user_id String Não ID de referência no ERP. Requer acesso admin.
name String Não Nome do aluno.
email String Não Email
username String Não Nome de usuário.
phone_number String Não Número do telefone.
city_name String Não Cidade
address_line_1 String Não Endereço
address_line_2 String Não Complemento
neighborhood String Não Bairro
postal_code String Não CEP
state_code String Não Estado (duas letras).
country_code String Não País (Padrão = BRA).
birthdate String Não Data de nascimento.
is_news_letter_enabled String Não Habilitar mensagens promocionais por email.
is_app_notification_enabled String Não Habilitar mensagens por notificação de aplicativo móvel.
is_whatsapp_messaging_enabled String Não Habilitar mensagens por Whatsapp.

Atualizar pelo ID no ERP

Request

curl "https://staging.api.imlabs.com.br/api/v1/users/erp/{erp_user_id}/update" \
  --request "PUT" \
  --header 'Content-Type: application/json' \
  --header "X-Access-Token: {X-Access-Token}" \
  --data '{
    "email": "newemail@domain"
}'

200 OK

{
  "status": 200,
  "data": {
    "id": "1",
    "erp_user_id": "632517",
    "document": "00000340022",
    "username": "XYZ4439",
    "name": "João da Silva",
    "country_code": "BRA",
    "email": "[email protected]",
    "is_active": true,
    "created_at": "2018-05-31 02:25:53",
    "updated_at": "2021-08-20 18:21:40",
    "phone_number": "",
    "state_code": null,
    "city_name": null,
    "franchisee_id": 327,
    "campaign_id": null,
    "is_news_letter_enabled": false,
    "address_line_1": null,
    "neighborhood": null,
    "postal_code": null,
    "old_birthdate": "0",
    "education_level": null,
    "id_number": "",
    "is_public_school_egress": 0,
    "is_app_notification_enabled": false,
    "is_whatsapp_messaging_enabled": false,
    "birthdate": "1969-12-31",
    "address_line_2": null,
    "survey_url": "https://eadim.staging.loja.express/pesquisa/1?access-token=..."
  }
}

Este endpoint atualiza dados de um usuário pelo ID no ERP.

Escopo requerido: admin.

Requisição HTTP

PUT https://staging.api.imlabs.com.br/api/v1/users/erp/{erp_user_id}/update

Parâmetros de Header

Parâmetro Obrigatório Descrição
X-Access-Token Sim Token de acesso obtido via autenticação.

Parâmetros de URL

Parâmetro Obrigatório Descrição
erp_user_id Sim ID do usuário no ERP.

Parâmetros do Body

Parâmetro Tipo Obrigatório Descrição
name String Não Nome do aluno.
email String Não Email
username String Não Nome de usuário.
phone_number String Não Número do telefone.
city_name String Não Cidade
address_line_1 String Não Endereço
address_line_2 String Não Complemento
neighborhood String Não Bairro
postal_code String Não CEP
state_code String Não Estado (duas letras).
country_code String Não País (Padrão = BRA).
birthdate String Não Data de nascimento.
is_news_letter_enabled String Não Habilitar mensagens promocionais por email.
is_app_notification_enabled String Não Habilitar mensagens por notificação de aplicativo móvel.
is_whatsapp_messaging_enabled String Não Habilitar mensagens por Whatsapp.

Buscar

Request

curl "https://staging.api.imlabs.com.br/api/v1/users?search=joao+silva&active_only=1" \
  --request "GET" \
  --header 'Content-Type: application/json' \
  --header "X-Access-Token: {X-Access-Token}" \

200 OK

{
  "status": 200,
  "data": [
    {
      "id": "999999",
      "erp_user_id": "9999999999999",
      "document": "99999999999",
      "username": "maria.silva",
      "phone_number": null,
      "name": "João da Silva",
      "country_code": "BRA",
      "address_line_1": null,
      "address_line_2": null,
      "neighborhood": null,
      "city_name": null,
      "state_code": null,
      "postal_code": null,
      "email": "[email protected]",
      "id_number": null,
      "birthdate": null,
      "campaign_id": null,
      "is_active": true,
      "is_news_letter_enabled": false,
      "is_app_notification_enabled": false,
      "is_whatsapp_messaging_enabled": false,
      "created_at": "1591132063"
    }
  ]
}

Este endpoint permite efetuar uma busca de usuários.

Escopo de permissionamento requerido: admin

Limite máximo de itens etornados: 100

Requisição HTTP

GET https://staging.api.imlabs.com.br/api/v1/users?search={search}&active_only=1

Parâmetros de Header

Parâmetro Obrigatório Descrição
X-Access-Token Sim Token de acesso obtido via autenticação.

Parâmetros de URL

Parâmetro Obrigatório Descrição
search Sim Termo de busca, que pode ser: parte do nome, número do CPF ou ID no ERP. Ex.: ?search=joao+silva.
active_only Não Com active_only=0, usuários inativos também serão retornados (padrão).
Com active_only=1, somente usuários ativos são retornados.

O parâmetro search poderá ser:

Ativar

Request

curl "https://staging.api.imlabs.com.br/api/v1/users/{user_id}/enable" \
  --request "PUT" \
  --header 'Content-Type: application/json' \
  --header "X-Access-Token: {X-Access-Token}" \

200 OK

{
  "status": 200
}

Este endpoint ativa a conta de um usuário.

Escopo de permissionamento requerido: admin.

Requisição HTTP

PUT https://staging.api.imlabs.com.br/api/v1/users/{user_id}/enable

Parâmetros de Header

Parâmetro Obrigatório Descrição
X-Access-Token Sim Token de acesso obtido via autenticação.

Parâmetros de URL

Parâmetro Obrigatório Descrição
user_id Sim ID do usuário.

Desativar

Request

curl "https://staging.api.imlabs.com.br/api/v1/users/{user_id}/disable" \
  --request "PUT" \
  --header 'Content-Type: application/json' \
  --header "X-Access-Token: {X-Access-Token}" \

200 OK

{
  "status": 200
}

Este endpoint desativa a conta de um usuário.

Escopo de permissionamento requerido: admin.

Requisição HTTP

PUT https://staging.api.imlabs.com.br/api/v1/users/{user_id}/disable

Parâmetros de Header

Parâmetro Obrigatório Descrição
X-Access-Token Sim Token de acesso obtido via autenticação.

Parâmetros de URL

Parâmetro Obrigatório Descrição
user_id Sim ID do usuário.

LMS

Obter Notas do Estudante

Request

curl "https://staging.api.imlabs.com.br/api/v1/lms/student/grades?limit=10&sort=-enrolled_at&search=javascript" \
  --request GET \
  --header "X-Access-Token: {X-Access-Token}"

200 OK

{
  "status": 200,
  "data": {
    "pagination": {
      "count": 3,
      "total_count": 15,
      "offset": 0,
      "limit": 10
    },
    "stats": {
      "course_count": 15,
      "total_hours": 95,
      "module_count": 45,
      "lesson_count": 127
    },
    "data": [
      {
        "id": 1,
        "name": "Curso de JavaScript Avançado",
        "short_name": "JS_ADV",
        "description": "Curso completo de JavaScript com foco em conceitos avançados",
        "enrolled_at": "2024-01-15T10:30:00Z",
        "progress": 85,
        "is_completed": false,
        "grade": 8.5,
        "has_grades": true,
        "minimum_grade": 7.0,
        "is_minimum_grade_required": true,
        "is_passing": true,
        "certification_hours": 40,
        "certificated_at": null,
        "category": "Tecnologia",
        "stats": {
          "module_count": 12,
          "lesson_count": 35,
          "total_hours": 15
        }
      },
      {
        "id": 2,
        "name": "Fundamentos de React",
        "short_name": "REACT_FUND",
        "description": "Introdução ao desenvolvimento com React",
        "enrolled_at": "2024-01-10T14:20:00Z",
        "progress": 100,
        "is_completed": true,
        "grade": 9.2,
        "has_grades": true,
        "minimum_grade": 7.0,
        "is_minimum_grade_required": true,
        "is_passing": true,
        "certification_hours": 30,
        "certificated_at": "2024-01-25T16:45:00Z",
        "category": "Tecnologia",
        "stats": {
          "module_count": 8,
          "lesson_count": 24,
          "total_hours": 10
        }
      },
      {
        "id": 3,
        "name": "Node.js para Iniciantes",
        "short_name": "NODE_INIT",
        "description": "Curso introdutório de Node.js",
        "enrolled_at": "2024-01-05T09:15:00Z",
        "progress": 60,
        "is_completed": false,
        "grade": 6.8,
        "has_grades": true,
        "minimum_grade": 7.0,
        "is_minimum_grade_required": true,
        "is_passing": false,
        "certification_hours": 25,
        "certificated_at": null,
        "category": "Tecnologia",
        "stats": {
          "module_count": 6,
          "lesson_count": 18,
          "total_hours": 8
        }
      }
    ]
  }
}

Este endpoint permite obter a lista de cursos em que o estudante está matriculado com suas respectivas notas e progresso. A resposta inclui estatísticas gerais sobre o total de cursos, horas, módulos e aulas, além de estatísticas individuais para cada curso. As notas são calculadas a partir da média dos objetos de aprendizagem (atividades) avaliados e completados pelo estudante.

Requisição HTTP

GET https://staging.api.imlabs.com.br/api/v1/lms/student/grades

Parâmetros de Header

Parâmetro Obrigatório Descrição
X-Access-Token Sim Token de acesso obtido via autenticação.

Parâmetros de Query

Parâmetro Obrigatório Descrição
limit Não Número de resultados por página. Padrão: 20, Máximo: 100
offset Não Posição inicial para paginação. Padrão: 0
sort Não Campo(s) para ordenação. Valores possíveis: name, enrolled_at, grade, progress. Use - para decrescente, + para crescente. Padrão: -enrolled_at
search Não Termo para busca nos campos name e short_name. Mínimo: 3 caracteres
category_id Não Filtro por ID da categoria

Campos de Resposta

Estatísticas Gerais (stats)

Campo Tipo Descrição
course_count integer Total de cursos em que o estudante está matriculado
total_hours integer Soma total das horas estimadas de todos os cursos
module_count integer Total de módulos ativos em todos os cursos
lesson_count integer Total de aulas ativas em todos os cursos

Dados dos Cursos (data)

Campo Tipo Descrição
id integer ID único do curso
name string Nome completo do curso
short_name string Nome abreviado do curso
description string Descrição do curso
enrolled_at string Data e hora da matrícula (ISO 8601)
progress integer Progresso do estudante no curso (0-100)
is_completed boolean Indica se o curso foi concluído
grade float Nota média do estudante no curso (0-10), calculada a partir dos objetos de aprendizagem avaliados
has_grades boolean Indica se o curso possui atividades avaliativas com notas
minimum_grade float Nota mínima exigida para aprovação
is_minimum_grade_required boolean Indica se existe nota mínima obrigatória
is_passing boolean Indica se o estudante está aprovado (considerando nota mínima)
certification_hours integer Carga horária para certificação
certificated_at string Data e hora da certificação (ISO 8601) ou null
category string Nome da categoria do curso
stats object Estatísticas específicas do curso

Estatísticas do Curso Individual (stats)

Campo Tipo Descrição
module_count integer Total de módulos ativos no curso específico
lesson_count integer Total de aulas ativas no curso específico
total_hours integer Total de horas estimadas do curso específico (soma das durações das aulas)

Exemplos de Ordenação

Filtros de Busca

A busca é aplicada nos campos name e short_name do curso, requerendo no mínimo 3 caracteres.

Exemplo: search=javascript retornará cursos que contenham "javascript" no nome ou nome abreviado.

Obter Detalhes de Notas e Progresso do Curso

Request

curl "https://staging.api.imlabs.com.br/api/v1/lms/student/grades/123/details" \
  --request GET \
  --header "X-Access-Token: {X-Access-Token}"

200 OK

{
  "status": 200,
  "data": {
    "id": 123,
    "name": "Curso de JavaScript Avançado",
    "short_name": "JS_ADV",
    "description": "Curso completo de JavaScript com foco em conceitos avançados",
    "enrolled_at": "2024-01-15T10:30:00Z",
    "progress": 85,
    "is_completed": false,
    "grade": 8.5,
    "has_grades": true,
    "minimum_grade": 7.0,
    "is_minimum_grade_required": true,
    "is_passing": true,
    "certification_hours": 40,
    "certificated_at": null,
    "category": "Tecnologia",
    "modules": [
      {
        "id": 1,
        "name": "Fundamentos Avançados",
        "description": "Conceitos fundamentais avançados de JavaScript",
        "order": 1,
        "estimated_duration": 120,
        "progress": 90,
        "is_completed": false,
        "grade": 8.2,
        "has_grades": true,
        "lessons": [
          {
            "id": 1,
            "name": "Closures e Scope",
            "description": "Entendendo closures e escopo em JavaScript",
            "order": 1,
            "estimated_duration": 60,
            "progress": 100,
            "is_completed": true,
            "grade": 8.5,
            "has_grades": true,
            "learning_objects": [
              {
                "id": 1,
                "name": "Video Aula: Closures",
                "type": "video",
                "order": 1,
                "status": "completed",
                "progress": 100,
                "progress_measure": 100.00,
                "grade": null,
                "has_grade": false,
                "is_completed": true,
                "started_at": "2024-01-15T11:00:00Z",
                "completed_at": "2024-01-15T11:45:00Z"
              },
              {
                "id": 2,
                "name": "Quiz: Closures",
                "type": "quiz",
                "order": 2,
                "status": "passed",
                "progress": 100,
                "progress_measure": 100.00,
                "grade": 8.5,
                "has_grade": true,
                "is_completed": true,
                "started_at": "2024-01-15T11:50:00Z",
                "completed_at": "2024-01-15T12:05:00Z"
              }
            ]
          },
          {
            "id": 2,
            "name": "Promises e Async/Await",
            "description": "Programação assíncrona em JavaScript",
            "order": 2,
            "estimated_duration": 60,
            "progress": 80,
            "is_completed": false,
            "grade": 7.8,
            "has_grades": true,
            "learning_objects": [
              {
                "id": 3,
                "name": "Video Aula: Promises",
                "type": "video",
                "order": 1,
                "status": "completed",
                "progress": 100,
                "progress_measure": 100.00,
                "grade": null,
                "has_grade": false,
                "is_completed": true,
                "started_at": "2024-01-16T09:00:00Z",
                "completed_at": "2024-01-16T09:50:00Z"
              },
              {
                "id": 4,
                "name": "Exercício: Async/Await",
                "type": "exercise",
                "order": 2,
                "status": "incomplete",
                "progress": 60,
                "progress_measure": 60.00,
                "grade": 7.8,
                "has_grade": true,
                "is_completed": false,
                "started_at": "2024-01-16T10:00:00Z",
                "completed_at": null
              }
            ]
          }
        ]
      }
    ]
  }
}

Este endpoint permite obter informações detalhadas sobre notas e progresso de um curso específico em que o estudante está matriculado, incluindo dados granulares por módulo, aula e objeto de aprendizagem.

Requisição HTTP

GET https://staging.api.imlabs.com.br/api/v1/lms/student/grades/{course_id}/details

Parâmetros de URL

Parâmetro Tipo Obrigatório Descrição
course_id integer Sim ID único do curso

Parâmetros de Header

Parâmetro Obrigatório Descrição
X-Access-Token Sim Token de acesso obtido via autenticação.

Campos de Resposta

Dados do Curso (raiz)

Campo Tipo Descrição
id integer ID único do curso
name string Nome completo do curso
short_name string Nome abreviado do curso
description string Descrição do curso
enrolled_at string Data e hora da matrícula (ISO 8601)
progress integer Progresso do estudante no curso (0-100)
is_completed boolean Indica se o curso foi concluído
grade float Nota média do estudante no curso (0-10)
has_grades boolean Indica se o curso possui atividades avaliativas
minimum_grade float Nota mínima exigida para aprovação
is_minimum_grade_required boolean Indica se existe nota mínima obrigatória
is_passing boolean Indica se o estudante está aprovado (considerando nota mínima)
certification_hours integer Carga horária para certificação
certificated_at string Data e hora da certificação (ISO 8601) ou null
category string Nome da categoria do curso
modules array Lista de módulos do curso

Dados dos Módulos (modules)

Campo Tipo Descrição
id integer ID único do módulo
name string Nome do módulo
description string Descrição do módulo
order integer Ordem do módulo no curso
estimated_duration integer Duração estimada em minutos
progress integer Progresso do estudante no módulo (0-100)
is_completed boolean Indica se o módulo foi concluído
grade float Nota média do estudante no módulo (0-10)
has_grades boolean Indica se o módulo possui atividades avaliativas
lessons array Lista de aulas do módulo

Dados das Aulas (lessons)

Campo Tipo Descrição
id integer ID único da aula
name string Nome da aula
description string Descrição da aula
order integer Ordem da aula no módulo
estimated_duration integer Duração estimada em minutos
progress integer Progresso do estudante na aula (0-100)
is_completed boolean Indica se a aula foi concluída
grade float Nota média do estudante na aula (0-10)
has_grades boolean Indica se a aula possui atividades avaliativas
learning_objects array Lista de objetos de aprendizagem da aula

Dados dos Objetos de Aprendizagem (learning_objects)

Campo Tipo Descrição
id integer ID único do objeto de aprendizagem
name string Nome do objeto de aprendizagem
type string Tipo do objeto (video, quiz, exercise, document, etc.)
order integer Ordem do objeto na aula
status string Status do objeto (not_attempted, incomplete, browsed, completed, passed, failed)
progress integer Progresso no objeto (0-100)
progress_measure float Medida de progresso detalhada (0-100.00)
grade float Nota obtida no objeto (0-10) ou null se não avaliativo
has_grade boolean Indica se o objeto possui nota
is_completed boolean Indica se o objeto foi concluído
started_at string Data e hora de início (ISO 8601) ou null
completed_at string Data e hora de conclusão (ISO 8601) ou null

Status dos Objetos de Aprendizagem

Status Descrição
not_attempted Não foi iniciado pelo estudante
incomplete Iniciado mas não concluído
browsed Visualizado/navegado pelo estudante
completed Concluído com sucesso
passed Aprovado (em objetos avaliativos)
failed Reprovado (em objetos avaliativos)

Códigos de Erro

Código Descrição
404 Curso não encontrado ou estudante não está matriculado
401 Token de acesso inválido ou expirado
403 Acesso negado

Observações

Request

curl "https://staging.api.imlabs.com.br/api/v1/lms/settings/privacy_policy?b64=1" \
  --request GET \
  --header "X-Access-Token: {X-Access-Token}"

200 OK

{
  "status": 200,
  "data": {
    "resource": "setting",
    "type": "privacy_policy",
    "value": "PGgxPlBvbMOtdGljYSBkZSBQcml2YWNpZGFkZSBFQURJTTwvaDE(...)"
  }
}

Este endpoint permite obter o valor de uma configuração.

Requisição HTTP

GET https://staging.api.imlabs.com.br/api/v1/lms/settings/{code}?b64={b64}

Parâmetros de Header

Parâmetro Obrigatório Descrição
X-Access-Token Sim Token de acesso obtido via autenticação.

Parâmetros de URL

Parâmetro Obrigatório Descrição
code Sim Código da configuração a ser retornada.
b64 Não b64=1 retorna o valor encodado em base 64.
b64=0 retorna texto normal.
Padrão: b64=0.

Valores possíveis para o parâmetro code

Cursos

Buscar

Request

curl "https://staging.api.imlabs.com.br/api/v1/admin/courses?q=gpp&modalityType=Hybrid" \
  --request "GET" \
  --header 'Content-Type: application/json' \
  --header "X-Access-Token: {X-Access-Token}" \

200 OK

{
  "status": 200,
  "data": [
    {
      "id": "15",
      "name": "Gestão pessoal e profissional ",
      "short_name": "GPP",
      "description": null,
      "is_active": "0",
      "is_appending_enabled": "0",
      "is_certification_enabled": "0",
      "platform_id": "1"
    },
    {
      "id": "7",
      "name": "Teste GPP",
      "short_name": "Teste GPP",
      "description": null,
      "is_active": "0",
      "is_appending_enabled": "0",
      "is_certification_enabled": "0",
      "platform_id": "1"
    }
  ]
}

Este endpoint permite pesquisar entre os cursos disponíveis.

Escopo: admin
Limite de resultados: 100

Requisição HTTP

GET https://staging.api.imlabs.com.br/api/v1/admin/courses?q={q}&modalityType={modalityType}

Parâmetros de Header

Parâmetro Obrigatório Descrição
X-Access-Token Sim Token de acesso obtido via autenticação.

Parâmetros de URL

Parâmetro Obrigatório Descrição
q Não Termo para busca nos campos name e short_name.
modalityType Não Filtro por modalidade. Valores possíveis: Online e Hybrid. Padrão: todos.

Módulos

Listar Módulos

Request

curl "https://staging.api.imlabs.com.br/api/v1/admin/modules?course_id={course_id}" \
  --request "GET" \
  --header 'Content-Type: application/json' \
  --header "X-Access-Token: {X-Access-Token}" \

200 OK

{
  "status": 200,
  "data": [
    {
      "id": "58",
      "course_id": "24",
      "name": "Módulo 1 - Autoconhecimento",
      "description": "Aqui você terá noções de como optar pela profissão correta, conhecendo seu perfil no mercado de trabalho e seus pontos fortes e fracos.",
      "color": "BD0014",
      "is_active": "1",
      "created_at": "1527001546",
      "updated_at": "1628706557",
      "display_order": "0"
    },
    {
      "id": "60",
      "course_id": "24",
      "name": "Módulo 2 - Orientação profissional",
      "description": "Neste módulo você receberá orientações que o auxiliarão na escolha do emprego certo. ",
      "color": "BD0014",
      "is_active": "1",
      "created_at": "1527005053",
      "updated_at": "1552397632",
      "display_order": "1"
    }
  ]
}

Este endpoint permite listar módulos de um curso.

Escopo: admin

Requisição HTTP

GET https://staging.api.imlabs.com.br/api/v1/admin/modules?course_id={course_id}

Parâmetros de Header

Parâmetro Obrigatório Descrição
X-Access-Token Sim Token de acesso obtido via autenticação.

Parâmetros de URL

Parâmetro Obrigatório Descrição
course_id Sim ID do curso.

Matrículas

Obter

Request

curl "https://staging.api.imlabs.com.br/api/v1/enrollments/{user_id},{course_id}" \
  --request GET \
  --header "X-Access-Token: {X-Access-Token}"

200 OK

{
  "status": 200,
  "data": {
    "id": 1,
    "name": "Inglês",
    "short_name": "ENG",
    "description": null,
    "is_available_upon_schedule": false,
    "available_dayofweek": null,
    "schedule_start_at": null,
    "schedule_end_at": null,
    "platform_id": 1,
    "original_platform_id": 1,
    "is_minimum_grade_required": true,
    "minimum_grade": 7,
    "is_minimum_progress_required": null,
    "minimum_progress": null,
    "certification_hours": null,
    "enrolled_at": "2020-07-30 00:00:16",
    "reset_at": null,
    "reset_by_user_id": null,
    "progress": 0,
    "is_completed": false,
    "has_attachments": false,
    "grade": 0,
    "owner_platform_id": 1,
    "viewed_at": null,
    "modules": [],
    "is_graduable": false,
    "pointer": {
      "module_id": null,
      "module_index": null,
      "lesson_id": null,
      "lesson_index": null,
      "learning_object_id": null,
      "learning_object_index": null
    },
    "is_certifiable": false,
    "estimated_duration": 0,
    "is_inside_scheduled_hours": true,
    "user": {
      "id": 1,
      "erp_user_id": 632517,
      "name": "Rafaela Cristina da Silva Coelho",
      "document": "00000340022",
      "email": "[email protected]"
    }
  }
}

Este endpoint retorna os dados de uma matricula.

Requisição HTTP

GET https://staging.api.imlabs.com.br/api/v1/enrollments/{user_id},{course_id}

Parâmetros de Header

Parâmetro Obrigatório Descrição
X-Access-Token Sim Token de acesso obtido via autenticação.

Parâmetros de URL

Parâmetro Obrigatório Descrição
user_id Sim ID do usuário.
course_id Sim ID do curso.

Matricular

Request

curl "https://staging.api.imlabs.com.br/api/v1/users/{user_id}/enroll" \
  --request "POST" \
  --header 'Content-Type: application/json' \
  --header "X-Access-Token: {X-Access-Token}" \
  --data '{
    "course_id": [111, 222, 333]
}'

200 OK

{
  "status": 200
}

Este endpoint matricula um aluno em um ou mais cursos.

Escopos: admin ou user.enroll.

Requisição HTTP

POST https://staging.api.imlabs.com.br/api/v1/users/{user_id}/enroll

Parâmetros de Header

Parâmetro Obrigatório Descrição
X-Access-Token Sim Token de acesso obtido via autenticação.

Parâmetros de URL

Parâmetro Obrigatório Descrição
user_id Sim ID do aluno a ser matriculado.

Parâmetros de Body

Parâmetro Tipo Obrigatório Descrição
course_id Array Sim Lista dos ID's dos cursos a se efetuar matrícula.

Zerar Matrícula

Request

curl "https://staging.api.imlabs.com.br/api/v1/users/{user_id}/resetEnrollment" \
  --request "POST" \
  --header 'Content-Type: application/json' \
  --header "X-Access-Token: {X-Access-Token}" \
  --data '{
    "course_id": "123"
}'

200 OK

{
  "status": 200
}

Este endpoint zera o progresso de uma matrícula.

Escopo: admin ou user.enroll_reset.

Requisição HTTP

POST https://staging.api.imlabs.com.br/api/v1/users/{user_id}/resetEnrollment

Parâmetros de Header

Parâmetro Obrigatório Descrição
X-Access-Token Sim Token de acesso obtido via autenticação.

Parâmetros de URL

Parâmetro Obrigatório Descrição
user_id Sim ID do aluno a ser matriculado.

Parâmetros de Body

Parâmetro Tipo Obrigatório Descrição
course_id String Sim ID do curso para zerar o progresso.

Obter Módulos do Aluno

Request

curl "https://staging.api.imlabs.com.br/api/v1/admin/users/{user_id}/courses/{course_id}/modules" \
  --request "GET" \
  --header 'Content-Type: application/json' \
  --header "X-Access-Token: {X-Access-Token}"

200 OK

{
  "status": 200,
  "data": [
    {
      "id": "60",
      "name": "Módulo 2 - Orientação profissional",
      "created_at": "1622144240"
    },
    {
      "id": "61",
      "name": "Módulo 3 - Marketing Pessoal",
      "created_at": "1622144240"
    },
    {
      "id": "62",
      "name": "Módulo 4 - Currículo",
      "created_at": "1622144240"
    }
  ]
}

Este endpoint lista módulos acessíveis pelo aluno.

Escopo: admin

Requisição HTTP

GET https://staging.api.imlabs.com.br/api/v1/admin/users/{user_id}/courses/{course_id}/modules

Parâmetros de Header

Parâmetro Obrigatório Descrição
X-Access-Token Sim Token de acesso obtido via autenticação.

Parâmetros de URL

Parâmetro Obrigatório Descrição
user_id Sim ID de usuário do aluno.
course_id Sim ID do curso.

Acrescentar Módulos

Request

curl "https://staging.api.imlabs.com.br/api/v1/admin/users/{user_id}/courses/{course_id}/modules" \
  --request "POST" \
  --header 'Content-Type: application/json' \
  --header "X-Access-Token: {X-Access-Token}" \
  --data '{
  "modules": [
    {
      "id": 62
    }
  ]
}'

200 OK

{
  "status": 200,
  "data": {
    "user_id": "1",
    "course_id": "24",
    "modules": [
      {
        "id": "60",
        "name": "Módulo 2 - Orientação profissional",
        "created_at": "1622221486"
      },
      {
        "id": "61",
        "name": "Módulo 3 - Marketing Pessoal",
        "created_at": "1622221486"
      },
      {
        "id": "62",
        "name": "Módulo 4 - Currículo",
        "created_at": "1622221486"
      }
    ]
  }
}

Request

curl "https://staging.api.imlabs.com.br/api/v1/admin/users/{user_id}/courses/{course_id}/modules" \
  --request "POST" \
  --header 'Content-Type: application/json' \
  --header "X-Access-Token: {X-Access-Token}" \
  --data '{
  "modules": [
    {
      "id": 3
    }
  ]
}'

400 Bad Request

{
  "status": 400,
  "message": "The module '3' does not exist in course '24'",
  "more_info": ""
}

Este endpoint permite acrescentar módulos acessíveis para um aluno (curso híbrido). Múltiplos módulos pode ser acrescentandos na mesma requisição. O retorno conterá a lista atualizada de módulos.

Escopo: admin

Requisição HTTP

POST https://staging.api.imlabs.com.br/api/v1/admin/users/{user_id}/courses/{course_id}/modules

Parâmetros de Header

Parâmetro Obrigatório Descrição
X-Access-Token Sim Token de acesso obtido via autenticação.

Parâmetros de URL

Parâmetro Tipo Obrigatório Descrição
user_id String Sim ID de usuário do aluno.
course_id String Sim ID docurso

Parâmetros de Body

Parâmetro Tipo Obrigatório Descrição
modules[] Array Sim Módulos a serem acrescetados para o aluno.
modules[].id Integer Sim ID do módulo a ser acrescentado.

Atualizar Módulos

Request

curl "https://staging.api.imlabs.com.br/api/v1/admin/users/{user_id}/courses/{course_id}/modules" \
  --request "PUT" \
  --header 'Content-Type: application/json' \
  --header "X-Access-Token: {X-Access-Token}" \
  --data '{
  "modules": [
    {
      "id": 60
    },
    {
      "id": 61
    },
    {
      "id": 62
    }
  ]
}'

200 OK

{
  "status": 200,
  "data": {
    "user_id": "1",
    "course_id": "24",
    "modules": [
      {
        "id": "60",
        "name": "Módulo 2 - Orientação profissional",
        "created_at": "1622221486"
      },
      {
        "id": "61",
        "name": "Módulo 3 - Marketing Pessoal",
        "created_at": "1622221486"
      },
      {
        "id": "62",
        "name": "Módulo 4 - Currículo",
        "created_at": "1622221486"
      }
    ]
  }
}

Request

curl "https://staging.api.imlabs.com.br/api/v1/admin/users/{user_id}/courses/{course_id}/modules" \
  --request "PUT" \
  --header 'Content-Type: application/json' \
  --header "X-Access-Token: {X-Access-Token}" \
  --data '{
  "modules": [
    {
      "id": 1
    },
    {
      "id": 2
    },
    {
      "id": 3
    }
  ]
}'

400 Bad Request

{
  "status": 400,
  "message": "The module '1' does not exist in course '24'",
  "more_info": ""
}

Este endpoint permite atualizar a lista de módulos acessíveis pelo aluno.

Escopo: admin

Requisição HTTP

PUT https://staging.api.imlabs.com.br/api/v1/admin/users/{user_id}/courses/{course_id}/modules

Parâmetros de Header

Parâmetro Obrigatório Descrição
X-Access-Token Sim Token de acesso obtido via autenticação.

Parâmetros de URL

Parâmetro Tipo Obrigatório Descrição
user_id String Sim ID de usuário do aluno.
course_id String Sim ID docurso

Parâmetros de Body

Parâmetro Tipo Obrigatório Descrição
modules[] Array Sim Módulos a serem disponibilizados para o aluno.
modules[].id Integer Sim ID do módulo a ser disponibilizado.

Notificações

Criar Envio em Lote

Request

curl "https://staging.api.imlabs.com.br/api/v1/notification-batches" \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'X-Access-Token: {X-Access-Token}' \
  --data '{
  "app_type": "LmsStudent",
  "notifier_type": "Custom",
  "recipients_filters": {
    "course_id": 24,
    "user_id": 1
  },
  "subject": "Subject",
  "body": "Body"
}'

200 OK

{
  "status": 200,
  "data": {
    "id": 79,
    "app_type": "LmsStudent",
    "notifier_type": "Custom",
    "subject": "Subject",
    "body": "Body",
    "status": "New",
    "created_at": "2021-11-01 22:56:18",
    "updated_at": "2021-11-01 22:56:18",
    "recipients_filters": {
      "course_id": "24",
      "user_id": "1"
    },
    "estimated_recipient_count": "1",
  }
}

Este endpoint permite criar um lote de notificações a serem enviadas para os filtros selecionados. Por exemplo: notificar todos os alunos do curso "24 GPP - Gestão Profissional Pessoal" ou notificar individualmente os alunos "711649 - João da Silva" e "702536 - João da Silva Teste".

Escopo: admin

Requisição HTTP

POST https://staging.api.imlabs.com.br/api/v1/notification-batches

Parâmetros de Header

Parâmetro Tipo Obrigatório Descrição
X-Access-Token String Sim Token de acesso obtido via autenticação.

Parâmetros de Body

Parâmetro Tipo Obrigatório Descrição
app_type String Sim Tipo do app que está enviando a notificação. Valores possíveis: LmsStudent e LmsStore.
notifier_type String Sim Tipo da notificação que está sendo enviada. Valores possíveis: Custom, DelayedCourseProgress, ByCourse, PreEnrollmentReceived, PreEnrollmentApproved, PreEnrollmentUnapproved e OrderReceived.
recipients_filters Object Sim Objeto JSON com os atributos e valores que serão utilizados como filtros na consulta. Valores possíveis: user_id e course_id.
subject String Sim Título da notificação que será enviada.
body String Sim Corpo da mensagem que será enviada.

Obter Histórico de Notificações

Request

curl "https://staging.api.imlabs.com.br/api/v1/users/self/notification-deliveries" \
  --request GET \
  --header 'X-Access-Token: {X-Access-Token}' \

200 OK

{
  "status": 200,
  "data": [
    {
      "subject": "Subject",
      "body": "Body",
      "sender_type": "MobileApp",
      "status": "Sent",
      "created_at": "2021-10-28 18:51:59",
      "updated_at": "2021-10-28 18:51:59"
    }
  ],
  "pagination": {
    "page": 1,
    "page_size": 100,
    "page_count": 1
  }
}

Este endpoint permite obter o histórico de notificações que foram enviadas ao usuário informado.

Escopo: LMS ou Admin

Requisição HTTP

GET https://staging.api.imlabs.com.br/api/v1/users/{userId}/notification-deliveries
GET https://staging.api.imlabs.com.br/api/v1/users/self/notification-deliveries

Parâmetros de Header

Parâmetro Obrigatório Descrição
X-Access-Token Sim Token de acesso obtido via autenticação.

Parâmetros de URL

Parâmetro Obrigatório Descrição
{userId} Sim ID do usuário (requer escopo Admin), já o ID como "self" pode ser usado para obter dados da conta autenticada (requer escopo LMS).