Criando Campos Personalizados
O InHire possui uma API para criar campos personalizados, Criar campos personalizados.
Os campos personalizados podem ser criados para as seguintes entidades:
- JOB_TALENTS
- TALENTS
- REQUISITIONS
- JOBS
- POSITION
Cada campo pode ser configurado com diferentes tipos, como texto, número, seleção, checkbox, data e outros atributos que definem sua obrigatoriedade, ordem e visibilidade.
Para as entidades JOBS e REQUISITIONS, é possível criar campos condicionados, onde a exibição de um campo depende da seleção de uma opção específica em outro campo. Recomendamos evitar estruturas complexas. Para casos onde seja necessário reutilizar campos com o mesmo nome, orientamos que entre em contato com o nosso time de suporte.
Além disso, cada campo pode ser marcado como obrigatório em contextos específicos, definidos pela propriedade requiredIn. Essa configuração garante que um campo seja requerido somente onde faz sentido para a operação, como por exemplo:
No modal de admissão (ADMISSION_MODAL)
No preenchimento de campos personalizados do talento (JOB_TALENT_MODAL)
Na criação/edição da vaga (JOB)
Na criação/edição da requisição (REQUISITION)
A visualização dos campos também pode ser controlada pela propriedade showIn, aplicável a entidades relacionadas ao talento.
Este endpoint suporta a criação de múltiplos campos em uma única requisição, através do array customFields.
Exemplo de criação de um campo personalizado utilizando Typescript
Recomendamos a criação em lotes por entidade para controlar melhor o order dos campos personalizados. Além de facilitar a manutenção dos campos personalizados.
const INHIRE_AUTH_URL = "https://auth.inhire.app";
const INHIRE_API_URL = "https://api.inhire.app";
let INHIRE_TOKEN = "";
/**
* Obter token de acesso
*/
function getAccessToken() {
const response = await fetch(`${INHIRE_AUTH_URL}/login`, {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Tenant": "{{tenantId}}",
},
body: JSON.stringify({ email: "{{email cadastrado no InHire}}", password: "{{senha}}" }),
});
const data = await response.json();
INHIRE_TOKEN = data.accessToken;
}
/**
* Criar campos personalizados
*/
function createCustomFields(customFields: any) {
const response = await fetch(`${INHIRE_API_URL}/custom-data-manager/custom-fields`, {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${INHIRE_TOKEN}`,
},
body: JSON.stringify({ customFields }),
});
const data = await response.json();
return data;
}
/**
* Campos personalizados para a entidade JOBS
*/
const jobCustomFields = [
{
name: "Cargo",
type: "select",
order: 1,
required: true,
entity: "JOBS",
options: [
{
value: "Auxiliar de Escritório",
label: "Auxiliar de Escritório"
}
],
requiredIn: ['JOB']
},
{
name: "Centro de Custo",
type: "select",
order: 2,
required: true,
entity: "JOBS",
options: [
{
value: "RH",
label: "RH"
}
],
requiredIn: ['JOB']
}
];
/**
* Campos personalizados para a entidade JOB_TALENTS
*/
const jobTalentCustomFields = [
{
"name": "Data de termino do contrato",
type: "date",
order: 1,
required: true,
entity: "JOB_TALENTS",
requiredIn: ['ADMISSION_MODAL'],
showIn: ['JOB_TALENT_MODAL', 'ADMISSION_MODAL']
},
{
"name": "Nº de dependentes",
type: "number",
order: 2,
required: true,
entity: "JOB_TALENTS",
requiredIn: ['ADMISSION_MODAL'],
showIn: ['JOB_TALENT_MODAL', 'ADMISSION_MODAL']
}
];
async function main() {
await getAccessToken();
await createCustomFields(jobCustomFields);
await createCustomFields(jobTalentCustomFields);
}
main();