API Hardskills

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.
Ejemplo de Respuesta

{
    "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}

Ejemplo de Respuesta

{
    "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 }
}
Ejemplo de Respuesta

{
    "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

Ejemplo de Respuesta

{
    "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}

Ejemplo de Respuesta

{
    "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'.
Ejemplo de Respuesta (Estándar)

{
    "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.
Ejemplo de Respuesta

{
    "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).
Ejemplo de Respuesta

{
    "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}

Top