Pular para o conteúdo principal

Evento: Talento inscrito em uma vaga (JOB_TALENT_ADDED)

Dispara quando um talento é inscrito em uma vaga — ou seja, quando uma nova candidatura é criada (via página de divulgação, importação ou pela API).

Novo nos webhooks? Veja a visão geral para o conceito (registrar uma vez, receber sempre que a ação ocorre).

Criando o webhook​

Registre um webhook para o evento JOB_TALENT_ADDED (Criar webhook):

curl -X POST https://api.inhire.app/integrations/webhooks \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "X-Tenant: suaempresa" \
-H "Content-Type: application/json" \
-d '{
"name": "Nova candidatura",
"event": "JOB_TALENT_ADDED",
"url": "https://seu-sistema.com/webhooks/inhire/inscricao",
"headers": { "Authorization": "Bearer UM_SEGREDO_SEU" }
}'

A partir daí, o InHire chamará a sua URL sempre que este evento ocorrer. Para filtrar quais ocorrências recebe, adicione rules (ver abaixo).

Payload​

{
"tenantId": "suaempresa",
"jobId": "5dfd3a1e-a5c3-4e53-a3f4-cdb4e311d315",
"jobName": "Analista de Logística",
"talentId": "b1c2d3e4-f5a6-7890-bcde-1234567890ab",
"stageName": "Inscritos",
"source": "career-page",
"linkedinUsername": "fulano-de-tal",
"location": "São Paulo, SP",
"targetSalary": 5000,
"workModel": "hybrid",
"resumeFile": {
"fileCategory": "resumes",
"name": "curriculo.pdf"
},
"userId": "u-123",
"userName": "Recrutador"
}
CampoDescrição
jobId / jobNameVaga em que o talento foi inscrito
talentIdIdentificador do talento
stageNameEtapa inicial em que o candidato entrou (opcional)
sourceOrigem da candidatura, ex.: career-page (opcional)
linkedinUsername, location, targetSalary, workModelDados do talento (opcionais)
resumeFileMetadados do currículo, se enviado (opcional)
userId / userNameQuem inscreveu (nulos se foi inscrição pública)

Quando usar​

  • Cadastrar a candidatura em um sistema externo assim que ela chega.
  • Notificar o time (Slack, e-mail) sobre cada novo candidato de uma vaga.
  • Enviar uma mensagem de boas-vindas automática ao candidato.
  • Disparar um enriquecimento de dados externo a partir do LinkedIn do talento.

Filtrando com rules​

// Apenas candidaturas vindas da página de carreira
{ "source": { "operator": "=", "value": "career-page" } }

Exemplo: recebendo o evento e buscando os dados​

O payload traz só os identificadores e alguns campos resumidos. Quando você precisar dos dados completos, busque-os na API do InHire a partir do jobId e do talentId. Aqui buscamos a vaga, a candidatura (o talento naquela vaga) e o talento:

import express from "express";
import axios from "axios";

const app = express();
app.use(express.json());

// Cliente autenticado da API do InHire (use um service account — ver guia de Autenticação)
const inhire = axios.create({
baseURL: "https://api.inhire.app",
headers: {
Authorization: `Bearer ${process.env.INHIRE_TOKEN}`,
"X-Tenant": "suaempresa",
},
});

app.post("/webhooks/inhire/inscricao", async (req, res) => {
// Valide a origem usando o header secreto configurado no webhook
if (req.headers.authorization !== "Bearer UM_SEGREDO_SEU") {
return res.sendStatus(401);
}
res.sendStatus(200); // responda rápido e processe de forma assíncrona

const { jobId, talentId } = req.body;

const [{ data: vaga }, { data: candidatura }, { data: talento }] = await Promise.all([
inhire.get(`/jobs/${jobId}`), // a vaga
inhire.get(`/job-talents/${jobId}/talents/${talentId}`), // o talento na vaga (candidatura)
inhire.get(`/talents/${talentId}`), // o talento
]);

console.log(`${talento.name} se candidatou à vaga "${vaga.name}" (etapa: ${candidatura.stage?.name})`);

// ...sua lógica aqui (ex.: criar registro no seu sistema)
});

app.listen(3000);

Endpoints usados: Obter vaga, Obter candidaturas de um talento e Obter talento.