Fluxo de Extração de dados para fins de BI

Esta documentação tem como objetivo apresentar a nossa API como uma fonte de extração de dados.

A extração de dados tem como aplicação a composição de Banco de Dados e então seu uso interno junto à aplicações de BI (Business Intelligence) tais como PowerBI, Tableau, Data Studio, etc.; ou ainda, a montagem de relatórios e consultas personalizadas de métricas.

A Gupy fornece insumo (dados) através de suas APIs e Webhooks para que você possa construir uma forma de armazenar e exibir esses dados de acordo com a sua necessidade e demanda.

Chamadas diretas a partir da plataforma de dados (PowerBI, Tableau..)

Enviamos os dados em formato JSON, e normalmente as ferramentas não possuem a funcionalidade de tratamento do dado, por isso é necessário um middleware que realize a tabulação dos dados e não que a aplicação de dados faça a chamada direto.
Assim, o fluxo precisa ser: Recebe JSON > Trata os dados > Disponibiliza no formato adequado para o PowerBI > Monta as visualizações.

Formas de obtenção de dados a partir da API

Apresentamos o fluxo de integração para a obtenção dos dados. Lembrando que os dados a serem extraídos dependem de:

  • Quais métricas a área de R&S/Análise de dados deseja apurar;

🚧

APIs trabalham por padrão com GMT 0

Considere o fator acima na construção de seus dashboards, pois quando ocorrem atualizações, o campo updatedAt registra a atualização considerando o GMT 0. Assim, se aplicarmos o filtro updatedAfter na consulta, ele irá trazer os dados considerando o horário do campo updatedAt.

Exemplo prático: Se uma atualização em uma candidatura ocorrer às 10:00 ela ficará registrada no campo updatedAt às 13:00. Caso o filtro de data seja construído com o valor de horário T10:30:00 a atualização das 10:00 irá aparecer, pois ela está registrada às 13:00.

Fluxo de integração - Consumindo a API

  1. Preparar a infraestrutura para desenvolvimento do fluxo:
    1. Configurar a base de dados para receber os dados da Gupy [Exemplo: Data Lake]
    2. Configurar o middleware que irá realizar a tradução dos dados para a ferramenta de BI
  2. Definir quais métricas serão utilizadas para construção do dashboard no BI.
  3. Obter o token de autenticação.
  4. Implementar o consumo recorrente das APIs. Através da versão V2 o consumo pode ser incremental, pois os endpoints da V2 possuem um novo parâmetro no filtro da chamada, chamado updatedAfter, que permite obter os registros em intervalos baseados na data/hora de criação ou atualização das movimentações. Os intervalos de busca dos dados podem ser, por exemplo, o período de um dia fechado ou a partir da data/hora desde a última busca foi efetuada.
    A documentação técnica destes novos endpoints pode ser acessada neste link.

Endpoints complementares

Dados complementares podem ser obtidos em endpoints secundários, a partir dos webhooks e endpoints citados acima, se utilizando de campos chaves (IDs) das entidades envolvidas. A documentação técnica dos demais endpoints pode ser acessada neste link.

Diagrama de relacionamento das principais entidades X endpoints

Detalhamos melhor o relacionamento destas 3 entidades no diagrama abaixo:

Detalhamento da estrutura dos novos endpoints (API v2.0)

📘

Campos disponíveis e token de autorização:

Nem todos os campos disponíveis na v1 estão presentes na v2, portanto provavelmente será necessário consumir as duas versões das APIs. Nesses casos será necessário um token com permissão dos endpoints de ambas as versões, se atente a isso no momento da criação do token.

Os parâmetros são úteis para filtrar a extração dos dados a partir de determinados campos, neste caso recomendamos a utilização do parâmetro updatedAfter sozinho ou combinado com outro(s) parâmetro(s).

Applications - Parâmetros possíveis de Header

CAMPOATRIBUIÇÃO
jobIdCódigo chave da vaga do contexto. Pode ser obtido previamente via webhook ou consumindo o endpoint de Listing Jobs
candidateIdCódigo chave do cadastro da pessoa candidata da candidatura do contexto
currentStepIdNúmero da etapa atual em que a pessoa candidata encontra-se
applicationIdCódigo chave da candidatura (vaga x pessoa candidata)
updatedAfterCandidaturas criadas ou atualizadas a partir da data/hora informada
statusStatus da candidatura (em andamento, contratada, reprovada, desistida)
expandLista de dados de entidades (sub-objetos) que se deseja obter no response, além do objeto da estrutura básica de dados da candidatura
maxPageSizeQuantidade máxima de registros a serem retornados por página, <= 100
pageTokenToken de uma página em específico que se deseja consultar (obtido em consulta prévia)

Applications - Glossário de dados do result (200-sucesso)

CAMPOATRIBUIÇÃO
idCódigo chave da candidatura (vaga x pessoa candidata)
statusStatus da candidatura (em andamento, contratada, reprovada, retirada)
createdAtData/hora em que a candidatura foi criada
updatedAtData/hora mais recente em que a candidatura foi atualizada
jobIdCódigo chave da vaga do contexto. Pode ser obtido previamente via webhook ou consumindo o endpoint de Listing Jobs. Na tela do R&S Gupy, este código é visível em:
Gestão de vagas abaixo do nome da vaga
Na URL quando acessado detalhes da vaga
currentStepIdNúmero da etapa atual em que a pessoa candidata encontra-se na vaga
candidateIdCódigo chave do cadastro da pessoa candidata na Gupy
prospectIdCódigo chave do cadastro da pessoa candidata enquanto prospecto (caso tenha sido inserida manualmente na vaga por um usuário)
affinityScore de afinidade atribuída pela Gaia, a IA da Gupy, à pessoa candidata conforme os requisitos da vaga
hiredAtData/hora em que a pessoa candidata foi movida para a etapa final de Contratado (se o status = hired)
disqualifiedAtData/hora em que a pessoa candidata foi reprovada (se o status = disqualified)
withdrawnAtData/hora em que a pessoa candidata abandonou o processo seletivo (se o status = withdrawn)
sourceCanal de origem pela qual a pessoa candidata se inscreveu para a vaga do contexto
referralObjeto contendo dados sobre eventual indicação da pessoa para a vaga do contexto (se aplicável)
referral.referrerSub-objeto contendo dados da pessoa colaboradora referenciada
referral.referrer.nameNome da pessoa colaboradora
referral.referrer.emailE-mail da pessoa colaboradora
referral.statusStatus da indicação definido pela pessoa colaboradora - "h-1": "Atribuição",
"0-0": "id",
"0-1": "
admissionObjeto contendo dados sobre a contratação da pessoa (se status = hired)
admission.typeMotivo da contratação
admission.dateData/hora em que a pessoa candidata chegou na etapa final de Contratado
admission.salarySub-objeto de dados do salário da pessoa contratada
admission.salary.amountValor do salário
admission.salary.currencyMoeda do salário
admission.positionIdNúmero da posição/cadeira em que a pessoa candidata foi contratada (se foi definida na vaga)
tagsEtiquetas associadas a pessoa durante a candidatura do contexto
disqualificationObjeto contendo dados sobre a reprovação da pessoa na candidatura (se status = disqualified)
disqualification.reasonMotivo da reprovação
disqualification.observationObservações
disqualification.triggerSe a reprovação foi feita por algum usuario (manual) ou de forma automática (ex. via teste)
disqualification.feedbackSentAtData/hora em que o feedback de reprovação foi enviado à pessoa
disqualification.disqualifiedByPessoa usuária que reprovou a pessoa candidata
expandObjeto contendo blocos de dados complementares de entidades (candidate, job, currentStep, position, prospect)
expand.candidateSub-objeto referente aos dados da pessoa candidata
expand.candidate.idCódigo chave do cadastro da pessoa candidata na Gupy
expand.candidate.firstNamePrimeiro nome da pessoa candidata
expand.candidate.LastNameSobrenome da pessoa candidata
expand.candidate.emailAddressesE-mail da pessoa candidata
expand.jobSub-objeto referente aos dados da vaga
expand.job.idCódigo chave da vaga do contexto
expand.job.nameNome da vaga
expand.job.statusStatus atual da vaga
expand.currentStepSub-objeto referente à etapa atual da candidatura
expand.currentStep.idNúmero da etapa da atual da candidatura
expand.currentStep.nameNome da etapa da atual da candidatura
expand.currentStep.statusStatus da candidatura na etapa atual da candidatura
expand.positionSub-objeto referente a cada posição (uma ou mais) prevista(s) na vaga
expand.position.idNumeral referência da posição na vaga (1, 2, 3…)
expand.position.codeCódigo personalizado atribuído à posição na vaga (preenchimento opcional)
expand.prospectSub-objeto referente às informações da pessoa candidata enquanto prospecto (se inserida manualmente na vaga por um usuário)
expand.prospect.idCódigo chave do prospect
expand.prospect.firstNamePrimeiro nome do prospect
expand.prospect.lastNameSobrenome do prospect
expand.prospect.emailAddressesEndereço de e-mail do prospect
nextPageTokenChave de identificação da página corrente. Necessária para navegar dentre as páginas do result da consulta efetuada

Candidates - Parâmetros possíveis de Header

🚧

Atenção

Para consultas sem utilização do filtro “updatedAfter” ou de “ids”, implementamos o padrão de retornar apenas os dados de pessoas candidatas que atualizaram suas informações nos últimos 6 meses a partir da data de consulta, em vez de abranger todo o histórico disponível na base de dados

CAMPOATRIBUIÇÃO
idCódigo chave do cadastro da pessoa candidata na Gupy
updatedAfterCadastro de pessoas candidatas criado ou atualizado a partir da data/hora informada
updatedBeforeCadastro de pessoas candidatas criado ou atualizado até a data/hora informada
maxPageSizeQuantidade máxima de registros a serem retornados por página, <= 100
pageTokenToken de uma página em específico que se deseja consultar (obtido em consulta prévia)

Candidates - Glossário de dados do result (200-sucesso)

CAMPOATRIBUIÇÃO
idCódigo chave do cadastro da pessoa candidata na Gupy
firstNamePrimeiro nome da pessoa candidata
lastNameSobrenome da pessoa candidata
emailAdressesEndereço de e-mail da pessoa candidata
identityDocumentObjeto contendo o documento de identificação principal da pessoa candidata
identityDocument.numberNúmero do CPF da pessoa candidata
phoneNumbersArray contendo número de telefone(s) de contato da pessoa candidata
birthDateData de nascimento da pessoa candidata
createdAtData em que o cadastro da pessoa candidata foi feito na Gupy
updatedAtData da atualização mais recente do cadastro da pessoa candidata
addressesArray contendo objeto(s) com dados de endereço(s) da pessoa candidata
addresses.streetLogradouro
addresses.cityCidade
addresses.stateCodeUF
addresses.zipCodeCEP
addresses.countryCodeCódigo do país (ex. “BR”)
educationArray contendo objeto(s) do histórico de formação da pessoa candidata
education.degreeGrau de formação
education.institutionInstituição de ensino
education.courseCurso
education.statusStatus de conclusão do curso
education.startMonthMês de início do curso
education.startYearAno de início do curso
education.endMonthMês de término do curso (se concluído)
education.endYearAno de término do curso (se concluído)
languagesArray contendo objeto(s) sobre os idiomas dominados pela pessoa candidata
languages.levelNível do idioma
languages.nameNome do idioma
nextPageTokenChave de identificação da página corrente. Necessária para navegar dentre as páginas do result da consulta efetuada

Prospects - Parâmetros possíveis de Header

CAMPOATRIBUIÇÃO
updatedAfterPessoas candidatas enquanto prospectos (caso tenha sido inserida manualmente na vaga por um usuário) criadas partir da data/hora informada
maxPageSizeQuantidade máxima de registros a serem retornados por página, <= 100
pageTokenToken de uma página em específico que se deseja consultar (obtido em consulta prévia)

Prospects - Glossário de dados do result (200-sucesso)

CAMPOATRIBUIÇÃO
nextPageTokenToken de uma página em específico que se deseja consultar (obtido em consulta prévia)
idCódigo chave do cadastro da pessoa candidata enquanto prospecto (caso tenha sido inserida manualmente na vaga por um usuário)
firstNamePrimeiro nome da pessoa candidata enquanto prospecto
lastNameSobrenome da pessoa candidata enquanto prospecto
emailAddressE-mail da pessoa candidata enquanto prospecto
phoneNumberNúmero de contato da pessoa candidata enquanto prospecto
socialProfilesPerfis em redes sociais da pessoa candidata enquanto prospecto
updatedAtData da atualização mais recente do cadastro da pessoa candidata

Jobs - Parâmetros possíveis de Header

CAMPOATRIBUIÇÃO
idCódigo chave do cadastro da vaga na Gupy
updatedAfterVagas criadas partir da data/hora informada
expandLista de dados de entidades (sub-objetos) que se deseja obter no response, além do objeto da estrutura básica de dados da candidatura
maxPageSizeQuantidade máxima de registros a serem retornados por página, <= 100
pageTokenToken de uma página em específico que se deseja consultar (obtido em consulta prévia)

Jobs - Glossário de dados do result (200-sucesso)

CampoAtribuição
idCódigo chave do cadastro da vaga na Gupy
acceptsDisabledPersonAceitação ou não de candidaturas de pessoas com deficiência para
codeCódigo chave oriundo de sistema externo do cliente
branchIdCódigo chave do cadastro da pessoa responsável por criar a vaga
creatorIdCódigo chave do cadastro da pessoa responsável por criar a vaga
departmentIdCódigo chave do departamento em que a vaga está inserida
nameNome da vaga
numPositionsQuantidade de posições que serão contratadas para essa vaga
positionTypeTipo de contratação da vaga
recruiterIdCódigo chave do recrutador responsável pela vaga
roleIdCódigo chave do cargo atribuído à vaga
salaryCampo referente aos dados salariais da vaga
salary.currencyMoeda em que o salário será pago
salary.amountValor do salário
salary.fromValor inicial da faixa salarial (caso use essa funcionalidade)
salary.toValor final da faixa salarial (caso use essa funcionalidade)
statusEstado de publicação da vaga
hiringDeadlinedata/hora da expiração da vaga
expand.addressarray de informações do endereço da vaga
expand.address.streetRua/Logradouro do endereço da vaga
expand.address.numberNúmero do logradouro do endereço da vaga
expand.address.stateEstado do endereço da vaga
expand.address.stateCodeSigla do Estado do endereço da vaga
expand.address.cityCidade do endereço da vaga
expand.address.countryPaís do endereço da vaga
expand.address.countryCodeAbreviação (2 dígitos) do endereço da vaga
expand.address.zipCodeCEP do endereço da vaga
expand.address.latitudeInformação da latitude do endereço da vaga
expand.address.longitudeInformação da longitude do endereço da vaga
expand.companyarray de informações da empresa
expand.company.idid da empresa
expand.company.namenome da empresa
expand.company.typesetor/ramo da empresa
expand.creatorArray com informações do criador da vaga
expand.creator.idId do usuário que criou a vaga
expand.creator.nameNome do criador da vaga
expand.creator.emailE-mail do criador da vaga
expand.managerArray com informações do gestor responsável pela vaga
expand.manager.idId do gestor atribuído à vaga
expand.manager.nameNome do gestor responsável pela vaga
expand.manager.emailE-mail do gestor responsável pela vaga
expand.recruiterArray com informações do recrutador responsável pela vaga
expand.recruiter.idId do recrutador atribuído à vaga
expand.recruiter.nameNome do recrutador responsável pela vaga
expand.recruiter.emailE-mail do recrutador responsável pela vaga
expand.branchArray com informações da filial da vaga
expand.branch.idId da filial da vaga (código gerado pela Gupy automaticamente)
expand.branch.nameNome da filial da vaga
expand.branch.codeCódigo da filial (quando temos integração entre a Gupy e outro sistema, normalmente esse campo se refere ao código da filial no sistema integrado com a Gupy).
expand.departmentArray com informações da área/departamento da vaga
expand.department.idId da área/departamento da vaga (código gerado pela Gupy automaticamente)
expand.department.nameNome da área da vaga
expand.department.codeCódigo da área/filial (quando temos integração entre a Gupy e outro sistema, normalmente esse campo se refere ao código do departamento no sistema integrado com a Gupy).
expand.roleArray com informações do cargo da vaga
expand.role.idId do cargo da vaga (código gerado pela Gupy automaticamente)
expand.role.nameNome do cargo da vaga
expand.role.codeCódigo do cargo (quando temos integração entre a Gupy e outro sistema, normalmente esse campo se refere ao código do cargo no sistema integrado com a Gupy).
expand.careerPageArray com informações da página de carreiras em que a vaga foi publicada.
expand.careerPage.idId da página de carreira em que a vaga foi publicada
expand.careerPage.nameNome da página de carreira em que a vaga foi publicada
expand.careerPage.subdomainSubdomínio da pagina de carreira em que a vaga foi publicada
expand.positionsArray com informações das posições cadastradas na vaga
expand.positions.idNúmero gerado automaticamente pela Gupy
expand.positions.codeCódigo das posições da vaga
expand.positions.statusStatus da posição (ex: valid)
expand.positions.errorMessageMensagem de erro em casos onde a posição tem status de erro (ex: Duplicated code)
expand.postingArray com informações da vaga que ficam disponíveis na página de carreiras
expand.posting.descriptionDescrição da vaga
expand.posting.responsibilitiesResponsabilidades da vaga
expand.posting.prerequisitesPré-requisitos da vaga
expand.posting.additionalInformationInformações adicionais da vaga
expand.posting.publicationTypeTipo de publicação da vaga (interna, externa e não-listada)
expand.posting.imageUrlURL de imagem inserida na página de carreiras em que a vaga foi publicada
expand.posting.socialPictureUrlURL de imagem inserida na página de carreiras em que a vaga foi publicada
expand.posting.videoUrlURL do vídeo da página de carreiras
createdAtData/hora de criação da vaga
updatedAtData/hora de atualização da vaga
approvedAtData/hora da aprovação da vaga
disapprovedAtData/hora da reprovação da vaga
publishedAtData/hora da publicação da vaga
closedAtData/hora do encerramento da vaga

Diversidade - Parâmetros possíveis de Header

ParâmetroTipoDescrição
jobIdarray de inteirosLista de IDs de vagas para filtragem. Lista separada por vírgulas.
currentStepIdarray de inteirosLista de IDs de etapas atuais para filtragem. Lista separada por vírgulas.
updatedAfterdata-horaValor igual ou maior que a propriedade de atualização.
maxPageSizenúmeroNúmero máximo de itens na resposta (max 100).
pageTokenstringToken usado para navegar entre páginas.

Diversidade - Glossário de dados

CAMPODescriçãoTipoEnum (se aplicável)Formato
anonymizedIdIdentificador anonimizado da pessoa candidatastring--
jobIdID da Vaga atual da pessoa candidatainteger--
currentStepIdID da Etapa atual da pessoa candidatainteger--
statusInformação do status da Candidaturastringin_process, reproved, give_up, hired-
hasDisabilitiesInformação de Candidato PCDboolean--
cityOfOriginInformação da Cidade de Origem do Candidatostring--
stateOfOriginInformação do Estado de Origem do Candidatostring-UF
genderIdentityInformação de identidade de gênerostringcisgender, transgender, no_answer-
sexualOrientationInformação de orientação sexualstringheterosexual, homosexual, bisexual, asexual, pansexual, no_answer-
raceColorInformação de raçastringwhite, black, pardo, indigenous, yellow, no_answer-
createdAtData da criação da applicationstring-date
updatedAtData da última atualização da applicationstring-date

Modelagem de tabelas do Banco de Dados base para BI/Analytics

Uma vez que os registros estão sendo obtidos a partir da API Gupy, eles devem ser armazenados de forma incremental em tabelas de Banco de Dados no ambiente de domínio do cliente, para que então estejam acessíveis para a aplicação de BI ou outras formas de consulta internas. Sugerimos abaixo um diagrama de composição de tabelas normalizadas a partir das entidades Gupy disponibilizadas nos endpoints.

📘

Note

A definição da modelagem dependerá de quais campos e métricas a área de negócio desejar apurar a partir dos registros armazenados, e recomendamos que seja submetida a uma análise interna de um(a) profissional (ex. DBA ou Analista de Dados).

Exemplos apuração de métricas a partir dos dados obtidos da API

Identificação de pessoas contratadas nas vagas

A partir dos campos status = hired, hiredAt e dos campos do objeto admission {} nos registros de application é possível fazer um acompanhamento de pessoas contratadas por período e salário de contratação.

Cálculos de diferentes tipos de SLA

SLA de aprovação de requisição de vaga (jobs)

approvedAt - createdAt

SLA de publicação (jobs)

Quando houver fluxo de aprovação: publishedAt - approvedAt
Quando não houver fluxo de aprovação: publishedAt - createdAt

Time to Hire (jobs e applications)

Diferentes pontos de vista para esse indicador, podendo ser:
createdAt - hiringDate
createdAt - closedAt
approvedAt - hiringDate
approvedAt - closedAt
publishedAt - hiringDate
publishedAt - closedAt

Candidaturas/contratações por indicação

Considerar todas as candidaturas com "referred": "true" usar o campo hiringDate para diferenciar quem chegou a ser contratado.

Dúvidas frequentes:

  1. Todos os dados de relatórios estão disponíveis na API? Não, nem todas informações presentes em relatórios são possíveis de obter através da API. Porém reforçamos que estamos em constante evolução de nossas APIs.
  2. Onde encontro os dados de workflow na API? Esses dados não estão disponíveis através da API