Login - GrupoBRA/SocialAPI-v2-Doc GitHub Wiki
Endpoints usados para efetuar login por um segurado
POST /v1/person/login/contact/
Retorna as informações de contato de uma pessoa, os emails e telefones, censurados
-
Se o campo "captch-by-pass" estiver presente contendo a informação de data/hora e uma assinatura HMAC desse valor, verificar se esta assinatura foi criando utilizando o
DEVICE_SIGNATURE_SECRETdo OnyxERP e, verificar se a data/hora informada está dentro do intervalo de 6 horas para mais ou para menos em relação ao horário do server e seguir para o passo 3;- Caso contrário, retornar status code 401;
-
Enviar uma requisição para este-endpoint utilizando o valor do campo "response-token" do payload para verificar se o captcha é válido;
- Caso contrário, retornar status code 401;
-
Verificar se existe na tabela "pf_cpf" um documento com a chave "pf_cpf" equivalente ao "cpf" presente no payload desta requisição.
- Caso não exista, retornar status code 404;
-
Consultar se a data de nascimento do cadastro retornado no item anterior é equivalente a informada no payload;
- Caso contrário, retornar status code 403;
-
Consultar neste endpoint as matrículas do usuário no órgão informado no payload.
- Caso tenha matrícula de ativo ou pensionista, seguir para o próximo passo.
- Caso tenha informado um instituidor, retornar status code 405.
- Caso tenha informado um usuário sem matriculas, retornar status code 412.
-
Retornar todos os emails e telefones cadastrados para o usuário, filtrando pelo oid informado no payload:
Header:
Authorization: Bearer {JWT} //token de aplicação
Body:
{
"cpf": "123.456.789.10",
"nascimento": "2000-12-31",
"oid": "{oid}",
"oeid": "{oeid}",
"response-token": "{re-captch-response-token}",
"re-captcha-by-pass": "2022-01-01_00:00:01-2bb18b40266e498c6009b6ca54f9c838ee8fc0f53b5cccc02340be835a8fbb05"
}
Resposta:
{
"success": true,
"data": {
"SocialAPI": {
"pf_id": "{snow_flake}",
"emails": [
{
"email": "***dre@bracon***",
"email_id": "{snow_flake}"
}
],
"cellphones": [
{
"cellphones": "081*****7151",
"cellphones_id": "{snow_flake}"
}
]
}
}
}
200 | 400 | 401 | 403 | 404 | 405 | 412
POST /v2/person/login/contact/
Retorna as informações de contato de uma pessoa, os emails e telefones, censurados, usando apenas o CPF
-
Enviar uma requisição para este-endpoint utilizando o valor do campo "response-token" do payload para verificar se o captcha é válido;
- Caso contrário, retornar status code 401;
-
Verificar se existe na tabela "pf_cpf" um documento com a chave "pf_cpf" equivalente ao "cpf" presente no payload desta requisição.
- Caso não exista, retornar status code 404;
-
Consultar neste endpoint as matrículas do usuário no órgão informado no payload.
- Caso tenha matrícula de ativo ou pensionista, seguir para o próximo passo.
- Caso tenha informado um instituidor, retornar status code 405.
- Caso tenha informado um usuário sem matriculas, retornar status code 412.
-
Retornar todos os emails e telefones cadastrados para o usuário, filtrando pelo oid informado no payload:
Header:
Authorization: Bearer {JWT} //token de aplicação
Body:
{
"cpf": "123.456.789.10",
"oid": "{oid}",
"oeid": "{oeid}",
"response-token": "{re-captch-response-token}"
}
Resposta:
{
"success": true,
"data": {
"SocialAPI": {
"pf_id": "{snow_flake}",
"emails": [
{
"email": "***dre@bracon***",
"email_id": "{snow_flake}"
}
],
"cellphones": [
{
"cellphones": "081*****7151",
"cellphones_id": "{snow_flake}"
}
]
}
}
}
200 | 400 | 401 | 403 | 404 | 405 | 412
POST /v1/person/login/email/send-code/
Envia para o email o código para acessar a aplicação
-
Verificar se existe um usuário com o pf_id informado
*Caso não encontrado, retornar status code 404;
-
Verificar se o email_id informado é referente a um email referente ao pf_id
- Caso contrário, retornar status code 405;
-
Adicionar na collection Verification Code um novo documento com as informações do email e código gerado;
-
Enviar para o email o código de acesso a aplicação;
Header:
Authorization: Bearer {JWT} //Token aplicação
Body:
{
"pf_id": "{snow_flake}",
"email_id": "{snow_flake}"
}
Resposta:
200 | 404 | 405
POST /v1/person/login/cellphone/send-code/
Envia para o celular o código para acessar a aplicação
-
Verificar se existe um usuário com o pf_id informado
*Caso não encontrado, retornar status code 404;
-
Verificar se o phone_id informado é referente a um celular referente ao pf_id
- Caso contrário, retornar status code 405;
-
Adicionar na collection Verification Code um novo documento com as informações do celular e código gerado;
-
Enviar para o celular o código de acesso a aplicação;
Header:
Authorization: Bearer {JWT} //Token aplicação
Body:
{
"pf_id": "{snow_flake}",
"cellphone_id": "{snow_flake}"
}
Resposta:
200 | 404 | 405
POST /v1/person/login/
Retorna o token do usuário, com o campo superUsuario="U", indicando login de usuário segurado e status="limited", token limitado
-
Verificar se existe na collection Verification Code um documento com o pf_id e o resource_id referente ao informado no payload.
*Caso não encontrado, retornar status code 404;
-
Verificar se o código informado no payload está de acordo com o código encontrado no item anterior;
*Caso contrário, retornar status code 405;
-
Verificar se o código informado no payload não foi expirado;
*Caso contrário, retornar status code 412;
-
Verificar se o código informado no payload já foi validado anteriormente;
*Caso verdade, retornar status code 409;
-
Verificar se na RH existe ao menos um registro de matrícula(servidor_id) vinculado ao pf_id retornado no item anterior;
- Caso contrário, retornar status code 406;
-
Adicionar na collection Verification Code o atributo "used" com a hora de acesso deste endpoint;
-
Consultar neste endpoint as matrículas do usuário no órgão informado no payload.
- Caso tenha matrícula de ativo ou pensionista, seguir para o próximo passo.
- Caso tenha informado um pensionario ou não exista matrícula para o usuário, retornar status code 417.
-
Validar o email ou celular pelo resource_id informado;
-
Retornar token de usuário com validade de 15 minutos e status="limited";
Header:
Authorization: Bearer {JWT} //token de aplicação
Body:
{
"pf_id": "{snow_flake}",
"code": "123456",
"resource_id": "{snow_flake}" // email_id ou cellphone_id
"oid": "{oid}",
"oeid": "{oeid}"
}
Resposta:
{
"success": true,
"data": {
"SocialAPI": {
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1NjUxODg1OTEsImlzcyI6Ik9ueXhwcmV2IiwiZXhwIjoxNTY1MjMxNzkxLCJuYmYiOjE1NjUxODg1OTAsImRhdGEiOnsiYXBwIjp7ImFwaUlkIjoiMjJlNmVjYjVhZGFhIiwiYXBwQ29kIjozMiwiYXBwT3NDb2QiOjEsIm5hbWUiOiJGb3BhZyIsImFwaWtleSI6IjIyZTZlY2I1YWRhYSIsInNlY3VyaXR5IjoiSSIsImxhdW5jaGVySWdub3JlIjoiTiIsImNhY2hlIjoiSSIsInZlcnNpb24iOiIxLjAuMCJ9LCJ1c2VyIjp7InBmQ29kIjo5OTksInVzdWFyaW9Db2QiOjI1Niwib3JnYW9Db2QiOjEsIm9yZ2FvRW50aWRhZGVDb2QiOjEsInByaXZDb2QiOjE1LCJzdXBlclVzdWFyaW8iOiJTIiwibm9tZSI6IkFORFJFIFBFUkVJUkEgTEVJVEUiLCJ1dWlkIjoiZDQ2MTIwZDRlMTk1ZjJjNWE3ZGFkN2JkYjhmYTYwIiwibG9naW4iOiIwNDYyMTQ2NTM3NiIsImZvdG8iOiJodHRwczpcL1wvc3RvcmFnZS1hbHBoYTIub255eGVycC5jb20uYnJcLzJmNGJjZGJlM2I3Yjg3NzZkZjU5NDUxZmEzNDk1Yi5wbmciLCJjZWx1bGFyIjpudWxsLCJlbWFpbCI6bnVsbCwidXNlci1sZW5ndGgiOjgsInBmaWQiOiI1MDE0OTA4NjE3ODc2NjgwNzU1Iiwib2lkIjoiNTA4YjM4NjdmOTFmYTBlMzNjYmI1ODkyYjY0NDNjIiwib2VpZCI6IjYxNTNlYWM5MGQzOTI3ZjVmYWE5MWViYzM2YWRiOCIsImZ1c29Ib3JhcmlvIjoiLTMiLCJtb2VkYSI6ImJyYXppbGlhbl9yZWFsIiwiaWRpb21hIjoicHQtYnIiLCJkYXRhIjoiYnJhemlsaWFuX2RhdGVfZm9ybWF0IiwibGF1bmNoZXIiOiJfYmxhbmsifX19.yu1p6e-rdaQSejprBNjRiv8a-5P8Ko3acIGMefxjbbM"
}
}
}
200 | 400 | 401 | 403 | 404 | 405 | 409 | 412 | 417
Challenge
Endpoints usados para certificar que o usuário está autorizado a adicionar uma forma de contanto (email ou celular)
POST /v1/person/login/challenge/questions/
Retorna as perguntas e opções de resposta do challenge
-
Verificar se o pf_id informado é um pf_id válido;
- Caso contrário, retornar status code 404;
-
Verificar se o usuário não está com bloqueio temporário e/ou permanente no challenge vigente;
- Caso contrário, retornar status code 405;
-
Iniciar a captura de informações do usuário para gerar as perguntas do challenge:
- rg: data de emissão
- nome dos pais: nome do meio, ultimo nome
- naturalidade: cidade/UF
- matricula: número
- data ingresso
-
Gerar respostas aleatórias de acordo com as perguntas;
-
Concatenar os headers das perguntas e assinar com um HMAC;
-
Retornar um objeto com as perguntas e respostas e a assinatura dos headers das perguntas;
Header:
Authorization: Bearer {JWT} //token de aplicação
Body:
{
"pf_id": "{snowflake_id}",
"oid": "{oid}",
"oeid": "{oeid}"
}
Resposta:
{
"success": true,
"data": {
"SocialAPI": {
"questions":[
{
"nome_mae_meio": [
"pereira", "josefina", "da silva", "costa", "Ferreira"
]
},
{
"rg_data_emissao": [
"2010-01-01", "2012-05-10", "2013-10-20", "2015-06-15", "2008-08-01"
]
},
{
"naturalidade": [
"São Paulo - SP", "Olinda - PE", "Cuibá - MT", "Buenos Aires - PE", "Guarulhos - SP"
]
},
{
"nome_pai_ultimo": [
"Silva", "Pereira", "Costa", "Filho", "Bueno"
]
},
{
"matricula": [
"0123", "4569", "1290", "2100", "4232"
]
}
],
"signature": "6eaa3c39c802f58be2c88f46bef79d24893e5e7e73eaa144cafcee67ec8df8a8"
}
}
}
200 | 400 | 403 | 404
POST /v1/person/login/challenge/answers/
Envia a resposta do challenge
-
Verificar se o usuário não está com bloqueio temporário e/ou permanente no challenge vigente;
- Caso contrário, retornar status code 412;
-
Verificar se a assinatura informada confere com os headers das respostas;
- Caso contrário, retornar 400
-
Verificar se existe um usuário com o pf_id informado;
- Caso não encontrado, retornar status code 404;
-
Verificar se o celular ou email informado é válido;
- Caso contrário, retornar 406;
- Caso seja informado celular e email, considerar apenas o celular;
-
Verificar se o email ou celular informado já existe para outro segurado e se o mesmo já está validado;
- Caso verdadeiro, retornar status code 409;
-
Verificar se as respostas informadas estão corretas;
- Caso contrário, retornar status code 405;
- Aplicar bloqueio temporário no challenge com duração exponencial em relação ao número de tentativas incorretas;
-
Adicionar o email ou celular ao segurado;
-
Enviar o código de acesso a aplicação para o celular ou email informado;
Header:
Authorization: Bearer {JWT} //Token aplicação
Body:
{
"pf_id": "{snow_flake}",
"oid": "{oid}",
"oeid": "{oeid}",
"answers": [
{
"nome_mae_meio":"pereira"
},
{
"rg_data_emissao": "2010-01-01"
},
{
"naturalidade": "São Paulo - SP"
},
{
"nome_pai_ultimo": "Filho"
},
{
"matricula": "2100"
}
],
"cellphone": "81988776655", // ou null
"email": "[email protected]", // ou null
"signature": "6eaa3c39c802f58be2c88f46bef79d24893e5e7e73eaa144cafcee67ec8df8a8" // Deve ser a mesma que foi retornada junto com as perguntas
}
{
"success": true,
"data": {
"SocialAPI": {
"resource_id": "{cellphone_id | email_id inserido}"
}
}
}
Resposta:
200 | 400 | 404 | 405 | 406 | 409
User Domain
GET /v1/person/login/user-domain/
Retorna as entidades nas quais o usuário-segurado está cadastrado e possui matrícula de servidor(ativo e/ou inativo) e/ou pensionista.
-
Verificar na RhAPI em quais órgãos o servidor possui matrícula(s);
-
Retornar os órgãos nos quais foram encontradas matrículas para este servidor, conforme o exemplo abaixo;
Header:
Authorizarion: Bearer {JWT}
Resposta:
{
"success": true,
"data": {
"SocialAPI": [
{
"oid": "4bf8e55d68d7fc622fa89b63d91570",
"label": "Guarulhos/SP",
"entidades": [
{
"matricula": "4940",
"categoria": "EFETIVO",
"servidor_id": "{snowflake-id}",
"oeid": "3893661735371a3c49cfee472e1699",
"label": "IPREF",
"tipo": "RPPS" //Prefeitura|Câmara|RPPS
}
]
},
{
"oid": "9f9d3826d823bcc6dfb0d6fa038469",
"label": "Mafra/SC",
"entidades": [
{
"matricula": "4940",
"categoria": "EFETIVO",
"servidor_id": "{snowflake-id}",
"oeid": "e184da3009889c2a5c59006a04976f",
"label": "RPPS",
"tipo": "RPPS" //Prefeitura|Câmara|RPPS
}
]
}
]
}
}
200 | 403 | 404
Trocando de entidade
PATCH /v1/person/login/user-domain/
Troca a entidade do usuário, gerando um novo token
-
Verificar na RhAPI em quais órgãos o servidor possui matrícula(s);
-
Verificar se a entidade informada no payload encontra-se entre os resultados coletados no passo anterior;
- Caso contrário, retornar status code 405;
-
Retornar o token do usuário com as novas informações.
Header:
Authorization: Bearer {JWT}
Body:
{
"oid": "{oid}",
"oeid": "{oeid}"
}
Resposta:
{
"success": true,
"data": {
"SocialAPI": {
"access_token": "{JSON-WEB-TOKEN}"
}
}
}
200 | 400 | 404 | 405 | 406