DocumentationResumeRequest → UpdateResumeDto
Solicitud para crear o actualizar un CV
Se usa en POST y PUT /api/v2/resumes. El contenido del CV siempre debe ir dentro de la propiedad resume.
La documentación presenta las API de parsing de CV, matching, webhooks y flujos configurables de anonimización.
Descubre la solución API de parsing de CVLa interfaz y las explicaciones están traducidas. Los identificadores de API, campos JSON, códigos HTTP y ejemplos de código conservan su forma original. Abrir la referencia de API en inglés
https://cvreaderpro.com Authorization: ApiKey <key>Vista general de los recursos de API documentados y sus operaciones disponibles.
| Recurso | Endpoints | Ruta base | Funciones |
|---|---|---|---|
| CV y análisis | 7 | /api/v2/resumes | Análisis extendido, archivos y gestión de CV |
| Ofertas | 6 | /api/v2/jobs | Análisis de archivos, filtros y gestión de ofertas |
| Puntuaciones | 4 | /api/v2/recruiter-scores | Matching de recursos guardados y webhooks de clasificación |
| Generación de PDF | 3 | /api/v2/pdf-generation | Ajustes, PDF individuales y lotes por webhook |
Plan de pruebas de Postman
La colección del backend contiene 27 solicitudes que cubren 20 rutas distintas. Trece rutas se ejecutan de forma predeterminada; siete solicitudes opcionales quedan desactivadas hasta que proporciones archivos locales, permisos del parser o un webhook configurado. Ejecuta la colección en orden para que funcionen los identificadores de prueba y los pasos de limpieza.
Estas plantillas coinciden con los DTO, entidades, nombres de propiedades Jackson y envoltorios de respuesta del backend usados en esta página.
DocumentationResumeRequest → UpdateResumeDto
Se usa en POST y PUT /api/v2/resumes. El contenido del CV siempre debe ir dentro de la propiedad resume.
ParserResponseDTO
La devuelve POST /api/v2/resumes/parser. Es la respuesta normalizada del parser, no el recurso CVXml que devuelve GET /api/v2/resumes/{resumeId}.
DocumentationService
Crear y consultar devuelven CVXml dentro de resume. Actualizar devuelve UpdateResumeDto normalizado dentro de resume. CVXml usa nombres de campos históricos en francés.
Job entity
POST y PUT aceptan la entidad Job. PUT sustituye los campos documentados; envía todos los valores que quieras conservar. Las respuestas también pueden incluir id, filePath, pauseReason, jobskills, createdAt y updatedAt.
DocumentationService / DocumentationJobService
Los dos endpoints de lista utilizan las mismas claves de paginación. La clave de colección cambia según el recurso.
RecruiterScoreDto
La devuelven ambos endpoints de matching síncrono y se incluye en los datos de los webhooks de clasificación.
ResumeSettings, ColorSettings, SectionSettings, ResumeCanvasImage
Se usa en PUT /api/v2/pdf-generation/settings. El ID de sección es de solo lectura; el servidor genera el ID de la imagen del lienzo.
WebhookController.WebhookSettingsDto / DocumentationPdfService
Registrar un webhook requiere autenticación de sesión de reclutador. El endpoint de webhook PDF v2 devuelve la respuesta de lote aceptado que se muestra abajo.
Analiza, crea, consulta, actualiza y elimina los CV del usuario de la clave API.
Estas son las formas exactas de las respuestas correctas que debe deserializar el cliente. Los campos detallados de CVXml y UpdateResumeDto están en la sección Esquemas.
POST /api/v2/resumes/parser
Enviar:Envía multipart/form-data: file (obligatorio), parserType (opcional).
Recibir:Lee la respuesta ParserResponseDTO guardada.
POST /api/v2/resumes
Enviar:Envía application/json. El envoltorio resume es obligatorio.
Recibir:Guarda el id del envoltorio CVXml creado; será resumeId en las siguientes llamadas.
PUT /api/v2/resumes/{resumeId}
Enviar:Usa el mismo envoltorio obligatorio { resume: ... } que al crear.
Recibir:La respuesta contiene el id y el UpdateResumeDto guardado.
/api/v2/resumes/parserAnaliza y guarda un CV enviado como archivo multipart.
Solicitud
multipart/form-data · file (archivo) · parserType? (BASIC | ADVANCED)
Correcto
200 · JSON o XML · ParserResponseDTO guardado
curl -X POST "https://cvreaderpro.com/api/v2/resumes/parser" \
-H "Authorization: ApiKey YOUR_API_KEY" -H "Accept: application/json" \
-F "file=@resume.pdf" -F "parserType=ADVANCED"Esquema de respuesta
ParserResponseDTO
/api/v2/resumes/extended-parserAnaliza un archivo de CV subido o un campo de texto con el parser extendido. Esta ruta requiere una clave API autorizada y consume créditos de análisis premium.
Solicitud
multipart/form-data · file? (archivo) o text? (cadena) · indica exactamente una entrada
Correcto
200 · objeto JSON con los datos extendidos del CV
file
curl --fail-with-body -X POST "https://cvreaderpro.com/api/v2/resumes/extended-parser" \
-H "Authorization: ApiKey YOUR_API_KEY" \
-H "Accept: application/json" \
-F "file=@resume.pdf"text
curl --fail-with-body -X POST "https://cvreaderpro.com/api/v2/resumes/extended-parser" \
-H "Authorization: ApiKey YOUR_API_KEY" \
-H "Accept: application/json" \
--form-string "text=Alex Sample
QA engineer with API testing experience."Esquema de respuesta
Objeto JSON del parser extendido
/api/v2/resumesDevuelve una colección paginada que solo incluye los CV del usuario de la clave API.
Solicitud
parámetros de consulta · page? (número, por defecto 0) · size? (número, por defecto 10)
Correcto
200 · colección paginada { resumes, currentPage, totalItems, totalPages }
curl -X GET "https://cvreaderpro.com/api/v2/resumes?page=0&size=10" \
-H "Authorization: ApiKey YOUR_API_KEY"Esquema de respuesta
Colección paginada de CV
/api/v2/resumesCrea un CV estructurado. Envía DocumentationResumeRequest ({ resume: UpdateResumeDto }); también se acepta un recurso con formato CVXml obtenido de una respuesta de lectura.
Solicitud
application/json · DocumentationResumeRequest
Correcto
201 · cabecera Location: /api/v2/resumes/{id} · { id, resume: CVXml }
curl -X POST "https://cvreaderpro.com/api/v2/resumes" \
-H "Authorization: ApiKey YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"resume": {"candidate": { "firstName": "Ada", "lastName": "Lovelace", "personalEmail": "ada@example.com" },"profile": "Backend engineer","experiences": [], "educations": [], "languages": [], "skills": [],"softSkills": [], "references": []}}'Esquema de respuesta
Envoltorio del CV creado
/api/v2/resumes/{resumeId}Devuelve el CV si existe el UUID y pertenece al usuario de la clave API.
Solicitud
parámetro de ruta · resumeId (UUID)
Correcto
200 · recurso CV { id, resume: CVXml }
curl -X GET "https://cvreaderpro.com/api/v2/resumes/RESUME_UUID" \
-H "Authorization: ApiKey YOUR_API_KEY"Esquema de respuesta
Envoltorio del CV
/api/v2/resumes/{resumeId}Actualiza un CV usando el mismo contenedor DocumentationResumeRequest que se utiliza al crearlo.
Solicitud
parámetro de ruta · resumeId (UUID) · application/json · DocumentationResumeRequest
Correcto
200 · { id, resume: UpdateResumeDto } actualizado
curl -X PUT "https://cvreaderpro.com/api/v2/resumes/RESUME_UUID" \
-H "Authorization: ApiKey YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"resume": {"candidate": { "firstName": "Ada", "lastName": "Lovelace", "personalEmail": "ada@example.com" },"profile": "Backend engineer","experiences": [], "educations": [], "languages": [], "skills": [],"softSkills": [], "references": []}}'Esquema de respuesta
Envoltorio del CV actualizado
/api/v2/resumes/{resumeId}Elimina un CV que pertenece al usuario de la clave API.
Solicitud
parámetro de ruta · resumeId (UUID)
Correcto
204 · sin contenido
curl -X DELETE "https://cvreaderpro.com/api/v2/resumes/RESUME_UUID" \
-H "Authorization: ApiKey YOUR_API_KEY"Esquema de respuesta
Sin cuerpo de respuesta
Analiza archivos de ofertas y gestiona las ofertas estructuradas del usuario autenticado.
/api/v2/jobs/parserAnaliza una descripción de empleo subida como archivo multipart y crea la oferta para el usuario autenticado.
Solicitud
multipart/form-data · file (archivo)
Correcto
200 · application/json · oferta creada
curl -X POST "https://cvreaderpro.com/api/v2/jobs/parser" \
-H "Authorization: ApiKey YOUR_API_KEY" \
-F "file=@job-description.pdf"Esquema de respuesta
Oferta
/api/v2/jobsDevuelve una colección paginada y filtrable de ofertas que pertenecen al usuario de la clave API.
Solicitud
parámetros · page? · size? · status? · source? · reference? · title? · postedFrom? · postedTo? (fecha y hora ISO)
Correcto
200 · colección paginada { jobs, currentPage, totalItems, totalPages }
curl "https://cvreaderpro.com/api/v2/jobs?page=0&size=20&status=ACTIVE&title=engineer" \
-H "Authorization: ApiKey YOUR_API_KEY"Esquema de respuesta
Colección paginada de ofertas
/api/v2/jobsCrea una oferta estructurada a partir de la entidad Job. La plantilla JSON completa está en Esquemas; la respuesta añade campos generados por el servidor.
Solicitud
application/json · objeto Job
Correcto
201 · oferta creada
curl -X POST "https://cvreaderpro.com/api/v2/jobs" \
-H "Authorization: ApiKey YOUR_API_KEY" \
-H "Content-Type: application/json" \
--data @job.jsonEsquema de respuesta
Oferta
/api/v2/jobs/{jobIdOrReference}Busca una oferta por UUID o referencia y solo la devuelve si pertenece al usuario de la clave API.
Solicitud
parámetro de ruta · jobIdOrReference (UUID o referencia de texto)
Correcto
200 · recurso de oferta
curl "https://cvreaderpro.com/api/v2/jobs/JAVA-001" \
-H "Authorization: ApiKey YOUR_API_KEY"Esquema de respuesta
Oferta
/api/v2/jobs/{jobIdOrReference}Actualiza una oferta por UUID o referencia. El backend asigna todos los campos editables documentados; envía el objeto Job completo para evitar borrar valores.
Solicitud
parámetro de ruta · jobIdOrReference · application/json · objeto Job
Correcto
200 · recurso de oferta actualizado
curl -X PUT "https://cvreaderpro.com/api/v2/jobs/JAVA-001" \
-H "Authorization: ApiKey YOUR_API_KEY" \
-H "Content-Type: application/json" \
--data @job.jsonEsquema de respuesta
Oferta
/api/v2/jobs/{jobIdOrReference}Elimina una oferta identificada por UUID o referencia.
Solicitud
parámetro de ruta · jobIdOrReference (UUID o referencia de texto)
Correcto
204 · sin contenido
curl -X DELETE "https://cvreaderpro.com/api/v2/jobs/JAVA-001" \
-H "Authorization: ApiKey YOUR_API_KEY"Esquema de respuesta
Sin cuerpo de respuesta
Calcula matching detallado y entrega clasificaciones mediante webhooks.
/api/v2/recruiter-scores/matchCalcula una puntuación detallada para una oferta y un CV guardados.
Solicitud
application/json · jobId (UUID) · candidateId (UUID)
Correcto
200 · RecruiterScoreDto, incluido el ID de la puntuación final
curl -X POST "https://cvreaderpro.com/api/v2/recruiter-scores/match" \
-H "Authorization: ApiKey YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"jobId":"JOB_UUID","candidateId":"RESUME_UUID"}'Esquema de respuesta
RecruiterScoreDto
/api/v2/recruiter-scores/match/filesAnaliza y guarda el CV y la oferta enviados, y calcula la puntuación detallada de matching para el par creado.
Solicitud
multipart/form-data · resumeFile (archivo) · jobFile (archivo)
Correcto
200 · RecruiterScoreDto
curl -X POST "https://cvreaderpro.com/api/v2/recruiter-scores/match/files" \
-H "Authorization: ApiKey YOUR_API_KEY" \
-F "resumeFile=@resume.pdf" \
-F "jobFile=@job.pdf"Esquema de respuesta
RecruiterScoreDto
/api/v2/recruiter-scores/jobs/{jobId}/top-candidates/webhookActualiza las puntuaciones y encola los 10 candidatos mejor clasificados, con todos sus detalles, para una oferta.
Solicitud
parámetro de ruta · jobId (UUID)
Correcto
202 · entrega encolada { deliveryId, eventType: "resume.matched", status: "QUEUED", resultCount }
curl -X POST "https://cvreaderpro.com/api/v2/recruiter-scores/jobs/JOB_UUID/top-candidates/webhook" \
-H "Authorization: ApiKey YOUR_API_KEY"Esquema de respuesta
Entrega de webhook en cola
/api/v2/recruiter-scores/resumes/{resumeId}/top-jobs/webhookEncola las 10 ofertas detalladas mejor clasificadas para un CV en el webhook configurado.
Solicitud
parámetro de ruta · resumeId (UUID)
Correcto
202 · entrega encolada { deliveryId, eventType: "resume.matched", status: "QUEUED", resultCount }
curl -X POST "https://cvreaderpro.com/api/v2/recruiter-scores/resumes/RESUME_UUID/top-jobs/webhook" \
-H "Authorization: ApiKey YOUR_API_KEY"Esquema de respuesta
Entrega de webhook en cola
Actualiza los ajustes de representación y genera uno o varios PDF de CV.
/api/v2/pdf-generation/settingsActualiza los ResumeSettings del usuario autenticado para generar PDF. Envía el modelo completo para conservar valores existentes; incluye diseño, tipografía, márgenes, colores, secciones, imágenes y marca de la agencia.
Solicitud
application/json · objeto ResumeSettings
Correcto
200 · ResumeSettings actualizado
curl -X PUT "https://cvreaderpro.com/api/v2/pdf-generation/settings" \
-H "Authorization: ApiKey YOUR_API_KEY" \
-H "Content-Type: application/json" \
--data @resume-settings.jsonEsquema de respuesta
ResumeSettings
/api/v2/pdf-generation/resumes/{resumeId}Genera un PDF de un CV del usuario con los ajustes actuales.
Solicitud
parámetro de ruta · resumeId (UUID)
Correcto
200 · application/pdf · documento PDF
curl -X POST "https://cvreaderpro.com/api/v2/pdf-generation/resumes/RESUME_UUID" \
-H "Authorization: ApiKey YOUR_API_KEY" \
-H "Accept: application/pdf" \
--fail --show-error -o resume.pdfEsquema de respuesta
Archivo PDF
/api/v2/pdf-generation/webhookEncola la generación de PDF para una lista de UUID de CV del usuario y entrega los archivos mediante el webhook configurado.
Solicitud
application/json · matriz de cadenas UUID
Correcto
202 · lote encolado { jobId, status, total, message, webhookSecurity }
curl -X POST "https://cvreaderpro.com/api/v2/pdf-generation/webhook" \
-H "Authorization: ApiKey YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '["RESUME_UUID_1", "RESUME_UUID_2"]'Esquema de respuesta
Lote PDF en cola
Configura entregas de eventos firmadas para el análisis asíncrono, el matching y la generación de PDF.
| Operación | Endpoint | Autenticación |
|---|---|---|
| Entrega de mejores candidatos | POST /api/v2/recruiter-scores/jobs/{jobId}/top-candidates/webhook | ApiKey |
| Entrega de mejores ofertas | POST /api/v2/recruiter-scores/resumes/{resumeId}/top-jobs/webhook | ApiKey |
| Entrega del lote de PDF | POST /api/v2/pdf-generation/webhook | ApiKey |
Las solicitudes opcionales de Postman presuponen que el usuario de la clave API ya tiene configurado un webhook HTTPS. Suscríbelo a resume.parsed, resume.matched, or pdf.generated. La colección del backend no registra ni renueva webhooks; configúralos antes de activar las solicitudes opcionales de clasificación o PDF. Las entregas incluyen un ID, una marca de tiempo, una cabecera de evento y una firma HMAC-SHA256.
cvFilePath=/path/to/resume.pdf
jobFilePath=/path/to/job-description.pdf
webhookExpectedStatus=202X-CVReader-Event: resume.matched
X-CVReader-Delivery-Id: <uuid>
X-CVReader-Timestamp: <unix-seconds>
X-CVReader-Signature: v1=<hmac-sha256><timestamp>.<raw-json-body> con HMAC-SHA256, responde con cualquier código 2xx para confirmar la entrega y usa el ID de entrega para garantizar la idempotencia si se repite el evento.Descarga los CV de entrada y las salidas API capturadas. Todas las personas, empresas y ofertas son ficticias. Los documentos de ejemplo están en inglés; los resultados dependen del documento y del parser y requieren revisión humana.