Documentación API Trimoji Resume
Última actualización: 22 de Mayo de 2024
Esta API le permite analizar (parsear) CVs, crear perfiles de candidatos ideales (denominados "Personi") y puntuar CVs respecto a estos perfiles para optimizar su proceso de reclutamiento.
Configuración
Configuración de sus variables
Antes de utilizar esta API, por favor configure las siguientes variables:
-
base_url: La URL base de la API (ej:https://integration.trimoji.fr/api/v1/resume). -
partner_token: Su token de autenticación de socio único. -
customer_token: Su clave API específica del cliente. Puede obtenerla desde el Panel Trimoji haciendo clic en el botón "copiar mi clave API".
Seguridad
Autenticación
Todas las solicitudes API deben incluir una cabecera (header) Authorization que contenga su partner_token.
Authorization: su_partner_token_aqui
Asíncrono
Mecanismo de Callback (Webhook)
Varias operaciones, como la carga de CVs, son asíncronas. Cuando el procesamiento haya finalizado, Trimoji enviará los resultados a la URL callback_url que usted haya proporcionado.
Callback en caso de Éxito
Los datos enviados a su callback_url durante un parseo exitoso seguirán esta estructura JSON:
{
"metadatas": {
"su_clave": "valor_personalizado"
},
"resumeData": {
"firstname": "string",
"lastname": "string",
"email": "string",
"phone": "string",
"sex": "string ('f', 'm', o '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 en caso de Fallo
Si el procesamiento del CV falla, se enviará un callback con los detalles del error y los logs de procesamiento.
{
"metadatas": {
"uid": "user123",
"source": "webapp"
},
"error": {
"code": "PROCESSING_FAILED",
"message": "Fallo en la extracción de datos del archivo proporcionado debido a un formato inválido."
},
"logs": [
"[2024-05-21T10:00:05.123Z] [FILE_UPLOAD] [OK] Archivo subido con éxito.",
"[2024-05-21T10:00:06.456Z] [PROCESS_STARTED] [OK] Iniciando procesamiento.",
"[2024-05-21T10:00:15.789Z] [DATA_STRUCTURE_GENERATION] [ERROR] El modelo de IA devolvió una estructura inválida."
]
}
Análisis de CV
API de Análisis de CV
1. Subir un CV
Envíe un archivo de CV para un análisis asíncrono. Los resultados se enviarán a la callback_url.
POST /upload
Parámetros del Cuerpo (form-data)
| Clave | Tipo | Descripción |
|---|---|---|
customer_token * |
Texto | Su clave API de cliente. |
uploaded_file * |
Archivo | Archivo del CV. Tamaño máximo: 5MB. Extensiones permitidas: pdf, docx, png, jpg, jpeg, txt, webp, doc, rtf, pptx, otp, odp, odt. |
callback_url |
Texto | URL para recibir los resultados asíncronos. |
metadatas |
Texto | Cadena JSON personalizada para seguimiento (tracking). |
personi_id |
Texto | ID opcional de un Personi para vincular el CV. |
{
"success": true,
"message": "Success",
"data": {
"resume_id": "6ff7d7fe-8e53-4ddf-b68a-f9d4658f5bc8"
}
}
2. Recuperar la información del CV
Recupera la información parseada de un CV usando su 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. Recuperar los Logs del proceso
Recupera los logs de procesamiento para un CV específico, útil para depurar problemas de parseo.
GET /get/{customer_token}/{resume_id}/logs
4. Eliminar un CV
Marca un CV como eliminado (eliminación lógica / soft delete).
DELETE /delete/{customer_token}/{resume_id}
Personi y Puntuación
API Personi y Puntuación
Un "Personi" es un perfil de candidato ideal, definido en formato JSON, contra el cual se pueden puntuar los CVs.
1. Crear un Personi
Crea un nuevo perfil de candidato ideal. Puede proporcionar criterios detallados manualmente, o usar las banderas auto_keywords y auto_weights para que nuestra IA los genere según la descripción del puesto.
POST /personi/create
Parámetros del Cuerpo (JSON)
| Clave | Tipo | Descripción |
|---|---|---|
customer_token * |
String | Su clave API de cliente. |
custom_id * |
String | Un ID único para el Personi en su sistema. |
position * |
String | El título del puesto. |
position_description * |
String | Descripción detallada del rol. |
company_description * |
String | Descripción de la empresa. |
sector * |
String | El sector de actividad del puesto. |
company |
String | El nombre de la empresa. |
diploma |
String | Nivel de diploma mínimo requerido. |
telework |
String | Política de teletrabajo. Valores: FLEXIBLE, FULLTIME, HYBRID, NEVER, OCCASIONAL, ONDEMAND, PARTTIME, ROTATION. |
education_weight |
Number | Peso para la puntuación de educación (0-100). |
experience_weight |
Number | Peso para la puntuación de experiencia (0-100). |
skills_weight |
Number | Peso para la puntuación de habilidades (0-100). |
knowledge_weight |
Number | Peso para la puntuación de conocimientos (0-100). |
keywords_weight |
Number | Peso para la puntuación de palabras clave (0-100). |
geolocation |
Object | Criterios de ubicación: {"address": "string", "radius": number}. Radio en km (por defecto 10). |
keywords |
Array | Palabras clave manuales: [{"word": "string", "is_mandatory": boolean}]. |
languages |
Array | Requisitos de idioma: [{"id": "iso_code", "level": "A1-C2"}]. Niveles: A1, A2, B1, B2, C1, C2. |
driving_licenses |
Array | Permisos de conducir requeridos, ej: ["B", "C1"]. |
auto_keywords |
Boolean | Establecer a true para generar automáticamente palabras clave. |
auto_weights |
Boolean | Establecer a true para definir automáticamente los pesos. |
Nota sobre Pesos: Si utiliza pesos manuales, la suma de todos los campos *_weight debe ser exactamente 100. Si no se proporcionan pesos y auto_weights es falso, se utiliza una distribución por defecto.
Ejemplos de Solicitudes
Generación Automática (IA)
{
"custom_id": "MKT_ASSIST_001",
"customer_token": "su_token",
"position": "Junior Marketing Assistant",
"position_description": "We are looking for...",
"company_description": "Innovate Corp...",
"sector": "Marketing",
"auto_keywords": true,
"auto_weights": true
}
Configuración Manual
{
"custom_id": "SENIOR_DEV_002",
"customer_token": "su_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. Recuperar todos los Personis
Recupera la lista de todos los Personis activos para su cuenta de cliente. Si varios Personis comparten el mismo custom_id, solo se devuelve el actualizado más recientemente.
GET /get/{customer_token}/personi/all
{
"success": true,
"message": "Success",
"data": [
{
"id": "f8e1e2c3...",
"custom_id": "SENIOR_DEV_002",
"name": "Senior Software Engineer Profile",
"created_at": "2024-05-15T10:00:00.000Z"
}
]
}
3. Recuperar detalles de un Personi
Recupera la configuración completa y los detalles de un 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. Puntuación de un CV contra un Personi
Calcula la puntuación de un CV específico contra un Personi específico. Opcionalmente devuelve una explicación HTML de la puntuación.
POST /matching
Parámetros del Cuerpo (JSON)
| Clave | Tipo | Descripción |
|---|---|---|
resume_id * |
String | ID del CV a puntuar. |
personi_id * |
String o Array | ID del/los Personi(s) contra el/los cual(es) puntuar. |
explainer |
String | Devuelve la explicación de la puntuación. Valores: 'en', 'fr', 'es'. |
{
"success": true,
"message": "Success",
"data": {
"score": 60,
"personi_name": "Desarrollador en Trimoji"
}
}
5. Puntuación de todos los CVs contra un Personi
Calcula la puntuación de todos los CVs activos de su cuenta contra un solo Personi.
POST /matchingAllResumes
Parámetros del Cuerpo (JSON)
| Clave | Tipo | Descripción |
|---|---|---|
customer_token * |
String | Su clave API de cliente. |
personi_id * |
String | ID del Personi contra el cual puntuar. |
limit |
Integer | Número máximo de CVs a puntuar. |
{
"success": true,
"message": "Success",
"data": [
{
"resume_id": "ac4d685e-c8e4-474d-a92a-16758009fafe",
"score": 100
},
{
"resume_id": "602d7fc9-2b85-4064-9ae6-ad5be08d5bcb",
"score": 95
}
]
}
6. Puntuación de un CV contra todos los Personis
Calcula la puntuación de un CV contra todos los Personis activos de su cuenta, devolviendo una lista ordenada de las mejores coincidencias.
POST /matching
Parámetros del Cuerpo (JSON)
| Clave | Tipo | Descripción |
|---|---|---|
resume_id * |
String | ID del CV a puntuar. |
personi_id * |
String o Array | ID del/los Personi(s) contra el/los cual(es) puntuar. |
limit |
Integer | Número máximo de resultados (por defecto 100). |
{
"success": true,
"message": "Success",
"data": [
{
"personi_id": "839d2953...",
"personi_name": "SENIOR HR BUSINESS PARTNER...",
"score": 100
}
]
}
7. Eliminar un Personi
Marca un Personi como eliminado (eliminación lógica / soft delete).
DELETE /delete/{customer_token}/personi/{personi_id}