Skip to content
Bueno, Feliphe edited this page Jun 11, 2022 · 35 revisions

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

  1. 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_SECRET do 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;
  2. 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;
  3. 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;
  4. Consultar se a data de nascimento do cadastro retornado no item anterior é equivalente a informada no payload;

    • Caso contrário, retornar status code 403;
  5. 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.
  6. 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

  1. 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;
  2. 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;
  3. 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.
  4. 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

  1. Verificar se existe um usuário com o pf_id informado

    *Caso não encontrado, retornar status code 404;

  2. Verificar se o email_id informado é referente a um email referente ao pf_id

    • Caso contrário, retornar status code 405;
  3. Adicionar na collection Verification Code um novo documento com as informações do email e código gerado;

  4. 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

  1. Verificar se existe um usuário com o pf_id informado

    *Caso não encontrado, retornar status code 404;

  2. Verificar se o phone_id informado é referente a um celular referente ao pf_id

    • Caso contrário, retornar status code 405;
  3. Adicionar na collection Verification Code um novo documento com as informações do celular e código gerado;

  4. 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

  1. 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;

  2. 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;

  3. Verificar se o código informado no payload não foi expirado;

    *Caso contrário, retornar status code 412;

  4. Verificar se o código informado no payload já foi validado anteriormente;

    *Caso verdade, retornar status code 409;

  5. 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;
  6. Adicionar na collection Verification Code o atributo "used" com a hora de acesso deste endpoint;

  7. 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.
  8. Validar o email ou celular pelo resource_id informado;

  9. 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

  1. Verificar se o pf_id informado é um pf_id válido;

    • Caso contrário, retornar status code 404;
  2. 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;
  3. 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
  4. Gerar respostas aleatórias de acordo com as perguntas;

  5. Concatenar os headers das perguntas e assinar com um HMAC;

  6. 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

  1. 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;
  2. Verificar se a assinatura informada confere com os headers das respostas;

    • Caso contrário, retornar 400
  3. Verificar se existe um usuário com o pf_id informado;

    • Caso não encontrado, retornar status code 404;
  4. Verificar se o celular ou email informado é válido;

    • Caso contrário, retornar 406;
    • Caso seja informado celular e email, considerar apenas o celular;
  5. 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;
  6. 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;
  7. Adicionar o email ou celular ao segurado;

  8. 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": "teste@teste.com", // 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.

  1. Verificar na RhAPI em quais órgãos o servidor possui matrícula(s);

  2. 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

  1. Verificar na RhAPI em quais órgãos o servidor possui matrícula(s);

  2. Verificar se a entidade informada no payload encontra-se entre os resultados coletados no passo anterior;

    • Caso contrário, retornar status code 405;
  3. 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

Iniciando

Cached results

Miscelânea

Pesquisando

Pessoa física

Nome

Nome social

Data de nascimento

Data de óbito

Estado civil

Escolaridade

Raça/cor

PNE

Nacionalidade

Naturalidade

Foto do perfil

Perfil

Bio

Login

Documentos

Identidade

PIS/PASEP/NIT

Título de eleitor

CNH

CTPS

CTC

Reservista

Cursos

Certidão de Nascimento Casamento

Carteira do Conselho de Classe

Remoção de Documentos

Contatos

Telefones

Emails

Endereços

Endereços(v2)

Família

Data exchange

Pessoa física

Clone this wiki locally