Documentação da API de Currículos Trimoji
Última atualização: 22 de Maio de 2024
Esta API permite analisar (parsear) currículos, criar perfis de candidatos ideais (chamados "Personi") e pontuar currículos em relação a esses perfis para otimizar seu processo de recrutamento.
Configuração
Configuração das suas variáveis
Antes de usar esta API, por favor, configure as seguintes variáveis:
-
base_url: A URL base da API (ex:https://integration.trimoji.fr/api/v1/resume). -
partner_token: Seu token de autenticação de parceiro único. -
customer_token: Sua chave de API específica do cliente. Você pode obtê-la no Painel Trimoji clicando no botão "copiar minha chave de API".
Segurança
Autenticação
Todas as requisições da API devem incluir um cabeçalho (header) Authorization contendo seu partner_token.
Authorization: seu_partner_token_aqui
Assíncrono
Mecanismo de Callback (Webhook)
Várias operações, como o upload de currículos, são assíncronas. Quando o processamento for concluído, a Trimoji enviará os resultados para a URL callback_url que você forneceu.
Callback em caso de Sucesso
Os dados enviados para sua callback_url durante um parsing bem-sucedido seguirão esta estrutura JSON:
{
"metadatas": {
"sua_chave": "valor_personalizado"
},
"resumeData": {
"firstname": "string",
"lastname": "string",
"email": "string",
"phone": "string",
"sex": "string ('f', 'm', ou 'other')",
"age": "integer | null",
"introduction": "string | null",
"address": "string | null",
"lat": "number | null",
"lon": "number | null",
"processed_at": "datetime_string"
},
"experiences": [
{
"poste": "string",
"company": "string",
"size": "string | null ('AE', 'MIE', 'TPE', ...)",
"start_date": "integer | null",
"end_date": "integer | null",
"duration": "integer | null",
"tasks": ["string"]
}
],
"diplomas": [
{ "name": "string", "date": "integer | null" }
],
"licenses": [
{ "name": "string", "desc": "string" }
],
"languages": [
{ "name": "string (code_iso)", "level": "string" }
],
"hobbies": ["string"],
"telework": "string | null ('Flexible', 'Full time', ...)"
}
Callback em caso de Falha
Se o processamento do currículo falhar, um callback será enviado contendo os detalhes do erro e os logs de processamento.
{
"metadatas": {
"uid": "user123",
"source": "webapp"
},
"error": {
"code": "PROCESSING_FAILED",
"message": "Falha na extração dos dados do arquivo fornecido devido a um formato inválido."
},
"logs": [
"[2024-05-21T10:00:05.123Z] [FILE_UPLOAD] [OK] Arquivo enviado com sucesso.",
"[2024-05-21T10:00:06.456Z] [PROCESS_STARTED] [OK] Processamento iniciado.",
"[2024-05-21T10:00:15.789Z] [DATA_STRUCTURE_GENERATION] [ERROR] Modelo de IA retornou uma estrutura inválida."
]
}
Parsing de Currículo
API de Parsing de Currículos
1. Enviar um currículo
Envie um arquivo de currículo para parsing assíncrono. Os resultados serão enviados para o callback_url.
POST /upload
Parâmetros do Body (form-data)
| Chave | Tipo | Descrição |
|---|---|---|
customer_token * |
Texto | Sua chave de API do cliente. |
uploaded_file * |
Arquivo | Arquivo do currículo. Tamanho máximo: 5MB. Extensões permitidas: pdf, docx, png, jpg, jpeg, txt, webp, doc, rtf, pptx, otp, odp, odt. |
callback_url |
Texto | URL para receber os resultados assíncronos. |
metadatas |
Texto | String JSON personalizada para rastreamento. |
personi_id |
Texto | ID opcional de um Personi para vincular o currículo. |
{
"success": true,
"message": "Success",
"data": {
"resume_id": "6ff7d7fe-8e53-4ddf-b68a-f9d4658f5bc8"
}
}
2. Obter informações do currículo
Recupere as informações parseadas de um currículo usando seu resume_id.
GET /get/{customer_token}/{resume_id}
{
"success": true,
"message": "Success",
"data": {
"resumeData": {
"firstname": "Lou",
"lastname": "Pagès",
"email": "[email protected]",
"age": 22
},
"experiences": [ ... ],
"diplomas": [ ... ]
}
}
3. Obter os Logs do processo
Recupere os logs de processamento para um currículo específico, útil para depurar problemas de parsing.
GET /get/{customer_token}/{resume_id}/logs
4. Excluir um currículo
Marca um currículo como excluído (exclusão lógica / soft delete).
DELETE /delete/{customer_token}/{resume_id}
Personi & Pontuação
API Personi & Pontuação
Um "Personi" é um perfil de candidato ideal, definido em formato JSON, contra o qual os currículos podem ser pontuados.
1. Criar um Personi
Cria um novo perfil de candidato ideal. Você pode fornecer critérios detalhados manualmente, ou usar os sinalizadores auto_weights e auto_keywords para deixar nossa IA gerá-los com base na descrição da vaga.
POST /personi/create
Parâmetros do Body (JSON)
| Chave | Tipo | Descrição |
|---|---|---|
customer_token * |
String | Sua chave de API do cliente. |
custom_id * |
String | Um ID único para o Personi em seu sistema. |
position * |
String | O título da vaga. |
position_description * |
String | Descrição detalhada do cargo. |
company_description * |
String | Descrição da empresa. |
sector * |
String | O setor de atuação da vaga. |
company |
String | O nome da empresa. |
diploma |
String | Nível mínimo de diploma exigido. |
telework |
String | Política de trabalho remoto. Valores: FLEXIBLE, FULLTIME, HYBRID, NEVER, OCCASIONAL, ONDEMAND, PARTTIME, ROTATION. |
education_weight |
Number | Peso para a pontuação de educação (0-100). |
experience_weight |
Number | Peso para a pontuação de experiência (0-100). |
skills_weight |
Number | Peso para a pontuação de habilidades (0-100). |
knowledge_weight |
Number | Peso para a pontuação de conhecimento (0-100). |
keywords_weight |
Number | Peso para a pontuação de palavras-chave (0-100). |
geolocation |
Object | Critérios de localização: {"address": "string", "radius": number}. Raio em km (padrão 10). |
keywords |
Array | Palavras-chave manuais: [{"word": "string", "is_mandatory": boolean}]. |
languages |
Array | Requisitos de idioma: [{"id": "iso_code", "level": "A1-C2"}]. Níveis: A1, A2, B1, B2, C1, C2. |
driving_licenses |
Array | Carteiras de motorista exigidas, ex: ["B", "C1"]. |
auto_keywords |
Boolean | Defina como true para gerar palavras-chave automaticamente. |
auto_weights |
Boolean | Defina como true para definir pesos automaticamente. |
Nota sobre Pesos: Se você usar pesos manuais, a soma de todos os campos *_weight deve ser exatamente 100. Se nenhum peso for fornecido e auto_weights for falso, uma distribuição padrão será usada.
Exemplos de Requisições
Geração Automática (IA)
{
"custom_id": "MKT_ASSIST_001",
"customer_token": "seu_token",
"position": "Junior Marketing Assistant",
"position_description": "We are looking for...",
"company_description": "Innovate Corp...",
"sector": "Marketing",
"auto_keywords": true,
"auto_weights": true
}
Configuração Manual
{
"custom_id": "SENIOR_DEV_002",
"customer_token": "seu_token",
"position": "Senior Software Engineer",
"position_description": "Seeking experienced...",
"company": "Tech Solutions",
"telework": "HYBRID",
"education_weight": 10,
"experience_weight": 40,
"skills_weight": 20,
"knowledge_weight": 10,
"keywords_weight": 20,
"keywords": [
{"word": "Spring Boot", "is_mandatory": true}
],
"geolocation": { "address": "Paris", "radius": 20 }
}
{
"success": true,
"message": "Success",
"data": {
"personi_id": "f8e1e2c3-6337-4644-9fbf-7e382d089e3d"
}
}
2. Obter todos os Personis
Recupere a lista de todos os Personis ativos para sua conta de cliente. Se vários Personis compartilharem o mesmo custom_id, apenas o mais recentemente atualizado será retornado.
GET /get/{customer_token}/personi/all
{
"success": true,
"message": "Success",
"data": [
{
"id": "f8e1e2c3...",
"custom_id": "SENIOR_DEV_002",
"name": "Perfil de Engenheiro de Software Sênior",
"created_at": "2024-05-15T10:00:00.000Z"
}
]
}
3. Obter detalhes de um Personi
Recupere a configuração completa e os detalhes de um Personi específico.
GET /get/{customer_token}/personi/details/{personi_id}
{
"success": true,
"message": "Success",
"data": {
"id": "5e0273f8-8cfd-4673-9a89-3f4c934d3391",
"name": "Associate Product Manager | London",
"matching_settings": {
"weights": { "percent_experience": 44, "percent_hardskills": 19 },
"languages": [ { "lang": "Inglês", "is_mandatory": true } ],
"skills": [ { "skill": "active_listening", "value": 72 } ]
}
}
}
4. Pontuar um currículo contra um Personi
Calcula a pontuação de um currículo específico contra um Personi específico. Retorna opcionalmente uma explicação em HTML da pontuação.
POST /matching
Parâmetros do Body (JSON)
| Chave | Tipo | Descrição |
|---|---|---|
resume_id * |
String | ID do currículo a ser pontuado. |
personi_id * |
String ou Array | ID do(s) Personi(s) contra o(s) qual(is) pontuar. |
explainer |
String | Retorna a explicação da pontuação. Valores: 'en', 'fr', 'es'. |
{
"success": true,
"message": "Success",
"data": {
"score": 60,
"personi_name": "Desenvolvedor na Trimoji"
}
}
5. Pontuar todos os currículos contra um Personi
Calcula a pontuação de todos os currículos ativos em sua conta contra um único Personi, retornando uma lista ordenada das melhores correspondências.
POST /matchingAll
Parâmetros do Body (JSON)
| Chave | Tipo | Descrição |
|---|---|---|
resume_id * |
String | ID do currículo a ser pontuado. |
customer_token * |
String | Sua chave de API do cliente. |
limit |
Integer | Número máximo de resultados (padrão 100). |
{
"success": true,
"message": "Success",
"data": [
{
"personi_id": "839d2953...",
"personi_name": "SENIOR HR BUSINESS PARTNER...",
"score": 100
}
]
}
6. Pontuar todos os currículos contra um Personi
Calcula a pontuação de todos os currículos ativos em sua conta contra um único Personi.
POST /matchingAllResumes
Parâmetros do Body (JSON)
| Chave | Tipo | Descrição |
|---|---|---|
customer_token * |
String | Sua chave de API do cliente. |
personi_id * |
String | ID do Personi contra o qual pontuar. |
limit |
Integer | Número máximo de currículos a serem pontuados. |
{
"success": true,
"message": "Success",
"data": [
{
"resume_id": "ac4d685e-c8e4-474d-a92a-16758009fafe",
"score": 100
},
{
"resume_id": "602d7fc9-2b85-4064-9ae6-ad5be08d5bcb",
"score": 95
}
]
}
7. Excluir um Personi
Marca um Personi como excluído (exclusão lógica / soft delete).
DELETE /delete/{customer_token}/personi/{personi_id}