Fluxo de Integração de Exame Médico (ASO)
O objetivo deste fluxo é enviar dados pessoais da pessoa pré-colaboradora para um sistema de agendamento de exame médico.
Esse fluxo utiliza webhook
Para realizar integrações utilizando Webhooks é necessário um agente integrador (middleware) para receber e tratar os dados.
Para implementar integrações a partir de webhooks é necessário uma configuração prévia através da própria API Gupy: Veja aqui mais informações sobre o recebimento de webhooks
Notas importantes
A URL usada para receber o webhook DEVE ser um endereço HTTPS válido, exposto publicamente. Para configurar o webhook, consulte Webhook Configuração .
URLs com alta taxa de erro (100% dos erros nos últimos 7 dias) serão removidas sem aviso prévio.
O sistema garante pelo menos uma entrega, então podem haver várias notificações do mesmo evento, use a propriedade id para identificar duplicatas.
Não há garantia de ordem de entrega, use a propriedade date para verificar qual evento aconteceu primeiro e classifique os eventos. Exemplo: um application.moved pode ser notificado antes de application.created
NÃO USE serviços como requestcatcher, eles podem expor dados.
Habilitando endpoints
Abaixo encontra-se uma sugestão dos endpoints que devem ser habilitados obrigatoriamente para o funcionamento perfeito deste fluxo.
Configurando o webhook
Antes de iniciar a integração, é importante alinhar com o desenvolvedor qual será a etapa gatilho. Devido à natureza do webhook, as informações serão disparadas a cada movimentação do candidato entre as etapas, e cabe à integração filtrar qual etapa lhe interessa para seguir com a inclusão dos dados em um sistema terceiro.
Passo 1: Configurar webhook pre-employee.moved
- Acessar endpoint POST Webhook
- Alterar parâmetro action para pre-employee.moved
- Inserir no postbackUrl o endereço para onde será direcionado o webhook
- Inserir Bearer Token gerado no passo de autenticação e depois clicar em Try it!
Exemplo de requisição
curl --request POST \
--url https://api.gupy.io/api/v1/webhooks \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '
{
"action": "pre-employee.moved",
"status": "active",
"postbackUrl": "https://urldo.agenteintegrador.net",
"techOwnerName": "Nome Sobrenome",
"techOwnerEmail": "[email protected]"
}
'
Exemplo de Resposta
{
"id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"action": "pre-employee.moved",
"postbackUrl": "https://urldo.agenteintegrador.net",
"status": "active",
"techOwnerName": "Nome Sobrenome",
"techOwnerEmail": "[email protected]"
}
Fluxo de Integração
- O fluxo inicia assim que a pessoa pré-colaboradora é movida para a etapa definida para corresponder ao exame admissional, disparando o webhook configurado;
- Verificação da etapa para qual a pessoa pré-colaboradora foi movida. O fluxo é interrompido caso seja verificado que ela não está na etapa definida;
- Com a pessoa pré-colaboradora na etapa correta, recuperar os dados necessários para o agendamento como: CPF, nome completo, data de nascimento, RG, nome social, posto de trabalho e gênero.
- Não é possível receber o retorno do exame através da integração, ele é fornecido pela pessoa pré-colaboradora através da plataforma.
Obtenção do id da etapa gatilho
Caso sua etapa gatilho seja uma etapa customizada, é possível obter o id da etapa na plataforma indo em:
- Setup
- Admissão
- Definições de etapa
- Editar etapa de interesse
- Na URL terá o id da etapa customizada
Passo 3: Recebimento de informações
O sistema de agendamento de exame médico recebe as informações e realiza o agendamento da pessoa pré-colaboradora.
Após o comparecimento no agendamento, é responsabilidade da pessoa pré-colaboradora enviar o resultado do exame.
Exemplo de requisição do sistema terceiro:
curl -d '{"message":"May the force be with you."}' \
-H "Content-Type: application/json" \
"https://urldo.agenteintegrador.net"
Exemplo de retorno dado ao sistema terceiro
{
"companyName":"ACME",
"id":"24e99765-8583-4be5-87ae-489c86642964",
"event":"application.pre-hiring-info-filled",
"date":"2019-06-19T23:48:46.952Z",
"data":{
"job":{
"id":19139,
"name":"Developer",
"department":{
"id":45,
"code":"45124",
"name":"App Development",
"similarity":"technology"
},
"role":{
"id":56,
"code":"123456",
"name":"Developer",
"similarity":"developer"
},
"branch":{
"id":1895,
"code":"1234",
"name":"GUPY > BRANCH 1"
},
"customFields":[
{
"id":"7bd3b8ba-180b-4ae2-b397-240f8fb249c6",
"title":"Pergunta",
"value":"Resposta"
}
]
},
"application":{
"id":2937132,
"score":71.570454783086,
"preHiringInformation":{
"key1":"value1",
"key2":"value2"
},
"tags":[
"tag1"
],
"currentStep":{
"id":86547,
"name":"Pré-contratação"
}
},
"candidate":{
"id":1999450,
"name":"John",
"lastName":"Doe",
"email":"[email protected]",
"identificationDocument":"25272626207",
"countryOfOrigin":"Brasil",
"birthdate":"1994-11-16",
"addressZipCode":"01414-905",
"addressStreet":"Rua Haddock Lobo",
"addressNumber":"595 - 10º andar",
"addressCity":"São Paulo",
"addressState":"São Paulo",
"addressStateShortName":"SP",
"addressCountry":"Brasil",
"addressCountryShortName":"BR",
"mobileNumber":"+5511999990000",
"phoneNumber":"+551130000000",
"schooling":"technical_course",
"schoolingStatus":"complete",
"disabilities":false,
"gender":"Male"
},
"admission":{
"status":"SIGNING_CONTRACT",
"admissionDeadline":"2019-06-26T00:00:00.000",
"hiringDate":"2019-06-19T00:00:00.000Z",
"documentsTemplate":{
"id":1,
"name":"List of Documents"
},
"documents":{
"preEmployee":[
{
"id":1,
"name":"CNH",
"values":{
"name":"Pre-Employee",
"number":1313213
},
"validation":{
"status":"APPROVED",
"validatedAt":"2020-09-17T22: 49: 10.981Z",
"companyUserId":1
},
"schema":{
"id":1,
"name":"CNH",
"companyId":null,
"additionalProperties":{
"additionalProperty1":{
"attribute":true
}
},
"uiSchema":{
"name":{
"ui:field":"text",
"ui:options":{
"option1":true,
"option2":[
"value1",
"value2",
"value3"
],
"option3":{
"attribute1":"value1",
"attribute2":2
}
},
"ui:help":"text"
},
"number":{
"ui:field":"number"
},
"ui:order":[
"name",
"number"
]
},
"schema":{
"required":[
"name",
"number"
],
"properties":{
"name":{
"type":"string",
"title":"Nome Completo"
},
"number":{
"type":"number",
"title":"Número da CNH"
}
},
"description":"",
"dependencies":{},
"definitions":{}
}
},
"missing":false
},
{
"id": 2,
"name": "Comprovante de residência",
"schema": {
"id": 2,
"name": "Comprovante de residência",
"companyId": null,
"additionalProperties": {
"isCity": {
"cidade": true
},
"isState": {
"estado": true
},
"isCountry": {
"pais": true
}
},
"uiSchema": {
"cep": {
"ui:field": "text",
"ui:options": {
"mask": [
"[0-9]",
"[0-9]",
"[0-9]",
"[0-9]",
"[0-9]",
"-",
"[0-9]",
"[0-9]",
"[0-9]"
],
"exactLength": {
"title": "CEP",
"expectedLength": 8
}
}
},
"pais": {
"ui:field": "select"
},
"tipo": {
"ui:field": "select"
},
"bairro": {
"ui:field": "text"
},
"cidade": {
"ui:field": "select"
},
"estado": {
"ui:field": "select"
},
"numero": {
"ui:field": "houseNumber"
},
"ui:order": [
"tipo",
"logradouro",
"numero",
"complemento",
"bairro",
"pais",
"estado",
"cidade",
"cep"
],
"logradouro": {
"ui:field": "text"
},
"complemento": {
"ui:field": "text"
}
},
"schema": {
"required": [
"tipo",
"logradouro",
"numero",
"bairro",
"cidade",
"estado",
"cep",
"pais"
],
"properties": {
"cep": {
"type": "string",
"title": "CEP",
"description": "00000-000"
},
"pais": {
"type": "string",
"title": "País"
},
"tipo": {
"enum": [],
"type": "string",
"title": "Tipo"
},
"bairro": {
"type": "string",
"title": "Bairro"
},
"cidade": {
"type": "string",
"title": "Cidade"
},
"estado": {
"type": "string",
"title": "Estado"
},
"numero": {
"type": [
"string",
"null"
],
"title": "Número"
},
"logradouro": {
"type": "string",
"title": "Logradouro (ex: nome da rua)"
},
"complemento": {
"type": "string",
"title": "Complemento"
}
},
"definitions": {},
"dependencies": {}
}
}
}
],
"dependents":[
{
"name":"Dependente 1",
"dependentTypeId":"3808db5b-b808-4cf0-97c6-9ac15cc98125",
"documents":[
{
"id":null,
"name":"Dados do dependente",
"values":{
"cpf":"12345678900",
"name":"Dependente 1"
},
"validation":null,
"missing":false,
"schema":{
"id":null,
"name":"Dados do dependente",
"companyId":null,
"additionalProperties":{},
"uiSchema":{
"name":{
"ui:field":"text"
},
"cpf":{
"ui:field":"text"
},
"ui:order":[
"name",
"cpf"
]
},
"schema":{
"required":[
"name",
"cpf"
],
"properties":{
"name":{
"type":"string",
"title":"Nome"
},
"cpf":{
"type":"string",
"title":"CPF"
}
},
"description":"",
"dependencies":{},
"definitions":{}
}
}
}
]
}
],
"steps":[
{
"stepName":"Benefícios",
"forms":[
{
"id":null,
"name":"Plano de Saúde",
"values":{
"cpf":"12345678900",
"name":"Fulano de Tal"
},
"validation":null,
"missing":false,
"schema":{
"id":null,
"name":"Plano de Saúde",
"companyId":null,
"additionalProperties":{},
"uiSchema":{
"name":{
"ui:field":"text"
},
"cpf":{
"ui:field":"text"
},
"ui:order":[
"name",
"cpf"
]
},
"schema":{
"required":[
"name",
"cpf"
],
"properties":{
"cpf":{
"type":"string",
"title":"CPF"
},
"name":{
"type":"string",
"title":"Nome"
}
}
}
}
}
]
}
]
}
}
}
}
Possíveis erros
Recebimento no agente integrador
O ambiente precisa estar público para poder receber os dados, caso contrário, acontecerá um erro.
Updated over 1 year ago