Evento: Vaga atualizada (JOB_UPDATED)
Dispara quando uma vaga é atualizada — mudança de título, status, localização, campos personalizados, etc.
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_UPDATED (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": "Vaga atualizada",
"event": "JOB_UPDATED",
"url": "https://seu-sistema.com/webhooks/inhire/vaga-atualizada",
"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
O payload é equivalente ao de Vaga criada.
{
"tenantId": "suaempresa",
"jobId": "5dfd3a1e-a5c3-4e53-a3f4-cdb4e311d315",
"jobName": "Analista de Logística",
"jobOriginId": "REQ-123",
"additionalLocations": ["Rio de Janeiro, RJ"],
"customFields": {},
"userId": "u-123",
"userName": "Recrutador"
}
| Campo | Descrição |
|---|---|
jobId / jobName | Identificação da vaga atualizada |
jobOriginId | Identificador externo, se houver (opcional) |
customFields | Campos personalizados da vaga (opcional) |
additionalLocations | Localizações adicionais (opcional) |
userId / userName | Quem atualizou a vaga |
O payload não lista exatamente quais campos mudaram nem traz o status atualizado — ele
identifica a vaga (jobId) e os dados básicos. Trate o evento como um sinal de "esta vaga
mudou".
Quando usar
- Manter uma cópia da vaga sincronizada em um sistema externo (espelho do estado).
- Re-publicar a vaga em um job board quando o título/descrição muda.
- Reagir a mudanças de uma vaga já espelhada no seu sistema.
Filtrando com rules
As regras avaliam os campos do payload (jobId, jobName, jobOriginId, etc.).
Exemplo: recebendo o evento e buscando a vaga
Como o payload não diz o que mudou, use o jobId para buscar o estado atual completo da
vaga na API:
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/vaga-atualizada", 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 } = req.body;
const { data: vaga } = await inhire.get(`/jobs/${jobId}`); // estado atual da vaga
console.log(`Vaga atualizada: "${vaga.name}" — status atual: ${vaga.status}`);
// ...sua lógica aqui (ex.: sincronizar a cópia externa)
});
app.listen(3000);
Endpoint usado: Obter vaga.