Para utilizar os endpoints dessa documentação é necessario primeiro entender como funciona o modelo de autenticação e autorização com OAuth2 (OpenId Connect) atraves desse link:
OIDC.
Após o entendimento todos os enpoints dessa documentação podem ser acessados através do token de aplicação.
Uma aplicação deve solicitar ao LEX as informações dos usuários que podem acessá-la. Isso é realizado usando a API de sincronização.
A solicitação de sincronização deve ser feita por inquilino (tenant), portanto, a aplicação precisa saber a quais inquilinos ela tem acesso. Um inquilino representa um grupo de unidades escolares. Algumas escolas podem agrupar todas as unidades escolares no mesmo inquilino, enquanto outras preferem agrupar as unidades escolares por regiões geográficas.
Para obter informações sobre inquilinos, a aplicação deve enviar uma solicitação HTTP GET para a seguinte URL:
https://api.lex.education/sync/v1/tenants
{
"header": {
"syncDate": "[Data e hora da sincronização no padrão ISO 8601 em UTC]",
"syncId": "[UUID da solicitação de sincronização]"
},
"payload": [
{
"id": "[UUID do Inquilino]",
"name": "[Nome do Inquilino]"
},
{
"id": "[UUID do Inquilino]",
"name": "[Nome do Inquilino]"
},
{
"id": "[UUID do Inquilino]",
"name": "[Nome do Inquilino]"
}
]
}
Para cada inquilino da coleção, a aplicação deve solicitar a sincronização através da seguinte URL:
https://api.lex.education/sync/v1/full?tenantId=[UUID do inquilino]
A resposta contém uma coleção de registros com informações detalhadas sobre inquilinos, usuários, escolas e turmas.
{
"header": {
"syncDate": "[Data e hora da sincronização no padrão ISO 8601 em UTC]",
"syncId": "[UUID de identificação da solicitação de sincronização]"
},
"payload": {
"tenantId": "[UUID do Inquilino]",
"tenantName": "[Nome do Inquilino]",
"profiles": [
{
"id": "[UUID do Perfil]",
"name": "[Nome do Perfil]",
"type": "[Tipo de Perfil (aluno | coordenador | gestor | operador | professor | avaliador | responsável | secretário | comercial | marketing | operadorFinanceiro)]"
},
{
"id": "[UUID do Perfil]",
"name": "[Nome do Perfil]",
"type": "[Tipo de Perfil (aluno | coordenador | gestor | operador | professor | avaliador | responsável | secretário | comercial | marketing | operadorFinanceiro)]"
}
],
"users": [
{
"accountId": "[UUID da Conta LEX do usuário]",
"id": "[UUID do Usuário]",
"name": "[Nome do Usuário]",
"birthDate": "[Data de nascimento no padrão ISO 8601]",
"email": "[E-mail do Usuário]",
"gender": "[Gênero do Usuário (masculino | feminino | não informado)]",
"login": "[Login do Usuário]"
},
{
"accountId": "[UUID da Conta LEX do usuário]",
"id": "[UUID do Usuário]",
"name": "[Nome do Usuário]",
"birthDate": "[Data de nascimento no padrão ISO 8601]",
"email": "[E-mail do Usuário]",
"gender": "[Gênero do Usuário (masculino | feminino | não informado)]",
"login": "[Login do Usuário]",
"sponsorsId": [
"[UUID do Usuário responsável (pai/mãe/tutor) por este usuário]",
"[UUID do Usuário responsável (pai/mãe/tutor) por este usuário]"
]
}
],
"schools": [
{
"id": "[UUID da Escola]",
"name": "[Nome da Escola]",
"cnpj": "[Número de registro da empresa (usado apenas no Brasil)]",
"structures": [
{
"id": "[UUID da Estrutura]",
"name": "[Nome da Estrutura]",
"type": "[Tipo de Estrutura (segmento | período)]",
"description": "[Descrição da Estrutura]",
"structures": [
{
"id": "[UUID da Estrutura]",
"name": "[Nome da Estrutura]",
"type": "[Tipo de Estrutura (série)]",
"description": "[Descrição da Estrutura]"
}
]
}
],
"groups": [
{
"id": "[UUID do Grupo]",
"type": "[Tipo de Grupo (turma)]",
"name": "[Nome do Grupo]",
"schoolYear": "[Ano letivo da turma]",
"structures": [
{
"id": "[UUID da Estrutura]",
"type": "[Tipo de Estrutura (série | período)]"
}
],
"users": [
{
"userId": "[UUID do Usuário]",
"profileId": "[UUID do Perfil]"
}
]
}
]
}
]
}
}
Ao usar a sincronização completa, o seguinte algoritmo deve ser usado para os objetos de inquilino, escola, usuário e turmas:
Após processar cada resposta, a aplicação deve atualizar o status da sincronização usando a seguinte URL:
https://api.lex.education/sync/v1/status
{
"syncId": "[UUID da solicitação de sincronização]",
"status": "sucesso | falha"
}
Os seguintes perfis de usuário são suportados pelo LEX:
A aplicação deve mapear os perfis LEX que irá utilizar com os respectivos perfis da aplicação. Não é obrigatório que a aplicação possua todos esses perfis, mas aqueles que forem utilizados devem ser informados à equipe LEX para configuração.
Para fins de desenvolvimento, deve-se utilizar o ambiente de desenvolvimento do LEX. As URLs relevantes neste ambiente são:
https://homolog-api.lex.education/sync/v1/tenantshttps://homolog-api.lex.education/sync/v1/fullhttps://homolog-api.lex.education/sync/v1/status