La distribución de una oferta de empleo a través de un conector API puede utilizarse para una conexión a una bolsa de trabajo o a un sitio de empleo.
Introducción
Contexto
Distribución de ofertas de empleo en una bolsa de trabajo mediante «API» o similar a un webhook: la API se creará en la bolsa de trabajo y será llamada por Beetween.
Las ofertas de empleo se redactan en Beetween y se distribuyen en el portal de empleo de destino gracias a un sistema de «conectores» personalizado integrado en el sistema de multidifusión de ofertas de empleo del software Beetween.
El conector descrito aquí es un conector API, en el que Beetween envía solicitudes HTTP REST a la bolsa de trabajo, según un formato predefinido, para cada operación de publicación/despublicación de una oferta. Por lo tanto, la bolsa de empleo debe desarrollar una API que cumpla con las especificaciones de esta documentación.
En comparación con el feed XML, este sistema ofrece la ventaja de una publicación casi en tiempo real, así como una mejor información al reclutador. También consume muchos menos recursos.
A cambio, requiere un desarrollo específico por parte del portal de empleo.
Requisitos previos
La implementación de un conector de difusión API requiere que la bolsa de empleo desarrolle un punto de entrada API para alimentar las ofertas. Antes de cualquier desarrollo de las especificidades del contenido de las ofertas para su envío por Beetween a través de la API, la persona encargada de los desarrollos por parte de la bolsa de empleo deberá haber leído este documento.
La bolsa de empleo debe integrar un formulario de candidatura para cada oferta de empleo, que permita a los candidatos presentar su candidatura: se asociará una dirección de correo electrónico específica a cada oferta de empleo para enviar las candidaturas a través de este formulario (o redirigir a la URL presente para cada oferta en el archivo JSON).
En caso necesario, también es posible enviar solicitudes por API. Si está interesado, pregunte a su contacto preferido de Beetween.
El conector API
Principio general
Cada oferta de empleo se identifica por su ID público Beetween, que es una secuencia de letras ascii minúsculas y números, de entre 10 y 20 caracteres. Este ID es generado automáticamente por Beetween cuando una oferta se pone en línea y no puede ser modificado. Se anotará como $ID en la descripción de las peticiones HTTP.
Las peticiones HTTP enviadas desde Beetween al portal de empleo permiten la publicación y eliminación de la oferta. Los datos se formatearán en JSON.
Cuando se publica un trabajo en el sitio de destino, se envía una solicitud HTTP POST, que contiene la información del trabajo, al ENDPOINT. La llamada a la creación o actualización es idéntica: corresponde al sitio de destino comprobar la presencia de la oferta gracias al ID proporcionado en parámetro.
Cuando se elimina la publicación de una oferta en Beetween, se envía una solicitud HTTP DELETE con el identificador de la oferta.
Peticiones HTTP
La raíz del punto de entrada está definida por el tablero de trabajo, y se escribirá $ENDPOINT para designarlo.
Por ejemplo:
ENDPOINT = https://punto-de-entrada-elegido-por-la-bolsa-de trabajo.es/api/jobs
Se recomienda encarecidamente un punto de entrada HTTPS (no HTTP plano).
Este punto de entrada debe ser accesible a Beetween a través de Internet, sin configuración VPN u otros
Para evitar llamadas abusivas, consulte el capítulo "Autenticación".
Crear o actualizar una oferta de empleo
Estos son los campos presentes en el JSON :
Para actualizar una oferta, la solicitud es similar a la de poner una oferta en línea: es una solicitud POST con un ID de anuncio existente.
Enviar solicitud (Beetween -> ENDPOINT jobboard)
Encontrará un ejemplo de solicitud API aquí.
Con respecto a application_email, este valor es la dirección de correo electrónico para recibir solicitudes. Por defecto, esta es una dirección generada por Beetween y específica para este trabajo, permitiendo que las aplicaciones se integren directamente en Beetween. Consulte la sección "Integración de aplicaciones en Beetween" para obtener más detalles, en particular el formato de los correos electrónicos que deben enviarse para una recuperación óptima de la información de los candidatos.
Para más detalles sobre los posibles valores de cada campo, consulte el apéndice de este artículo.
Petición de retorno esperada (Jobboard -> ENDPOINT Beetween)
- Estado 200 en caso de éxito
- Todos los demás estados se interpretarán como estado de error
- Body :
{
url:"",
userMessage:"",
developerMessage:""
}
Explicación de los atributos de retorno esperados:
- url (obligatorio): se utiliza para mostrar la URL de la oferta de empleo en la bolsa de trabajo de Beetween, para que el reclutador pueda verla.
- userMessage: mensaje destinado al usuario (el reclutador), por ejemplo para indicar un motivo de fallo ("Título demasiado largo")
- developerMessage: similar a userMessage pero destinado al equipo de soporte de Beetween responsable de supervisar las operaciones de publicación. Proporciona más información técnica que userMessage. Nota: El soporte de Beetween también tiene acceso al userMessage.
Eliminar una oferta
DELETE $ENDPOINT/$ID
ej: DELETE https://punto-de-entrada-elegido-por-la-bolsa-de trabajo.es/api/jobs/a1b2v3d4e5f6
Retorno esperado:
- no body
- si tiene éxito: estado 204 (200 también aceptado)
- si la oferta no estaba en línea o no existía, la operación se considera correcta
- todos los demás estados se interpretarán como un fallo de despublicación
Una Header Authorization: Basic xxxxx se incluirá en cada solicitud, conteniendo un token suministrado por la bolsa de trabajo y utilizado para restringir el acceso a las APIs de publicación que establezca. Esta restricción no es obligatoria, pero se recomienda encarecidamente para evitar posibles abusos.
El token se codificará en base64 UTF-8. El tamaño del token codificado en base64 no debe superar los 64 caracteres.
Por ejemplo, si el token es login:password, la cabecera de autenticación será:
Authorization: Basic bG9naW46cGFzc3dvcmQ=
Il faudra bien utiliser le format login:password en s’assurant de ne pas utiliser le caractère « : » dans le login ou le password.
También tenemos la opción de soportar un Bearer token, que nos debe ser suministrado cuando se configura la API.
Authorization: Bearer bG9naW46cGdsljksmkdFzc3dvcmQ=
Anexo
Descripción de una oferta
Elemento | Descripción | Tipo | Especificidad | Valores |
id | Campo de 1 carácter impuesto por Beetween como referencia y generado automáticamente | Text | Autogenerated | – |
clientId | Identificador del cliente en la bolsa de trabajo de destino | Text | Optionnel | – |
title | Título de la oferta de empleo | Text | Required | – |
recruiter | Nombre de la empresa de contratación | Text | Required | – |
creationDate | Fecha de la primera publicación | Datetime | Autogenerated | – |
LastModificationDate | Fecha de la última publicación (modificación, reedición…) | Datetime | Autogenerated | – |
applicationEmail | Dirección de correo electrónico a la que enviar las solicitudes | Text | Autogenerated | – |
applicationUrl | Url de una página de solicitud de Beetween para el anuncio con formulario de solicitud integrado | Text | Autogenerated | – |
jobDescription | Incluye etiquetas de contenido de la oferta | – | – | – |
― company | Descripción de la empresa | HTML | Required | – |
― mission | Descripción de las tareas | HTML | Required | – |
― profile | Descripción del perfil buscado | HTML | Required | – |
location | Incluye etiquetas de localización geográfica de la vacante, generadas a partir de la dirección seleccionada por el usuario | – | – | – |
― display | Valor visualizable para la ubicación | Text | Required | – |
― city | Ciudad | Text | Required | – |
― post_code | Código postal | Text | Required | – |
― region2Code | Código del departamento | Text | Required | – |
― region2 | Nombre del departamento | Text | Required | – |
― region1 | Nombre de la región | Text | Required | – |
― countryCode | Código del país | Text | Required | – |
― countryNameFr | Nombre del país en francés | Text | Required | – |
― longitude | Coordenadas GPS: longitud | Number | Required | – |
― latitude | Coordenadas GPS: latitud | Number | Required | – |
logoUrl | URL del logotipo vinculado al nombre registrado de la empresa y configurado en Beetween | Text | Autogenerated | – |
contract | Incluye etiquetas relacionadas con el contrato de trabajo propuesto | – | – | – |
― type | Tipo de contrato propuesto, valores fijos propuestos en una lista desplegable | – | Required | Lista de valores |
― ― code | Código asociado al tipo de contrato | Text | Required | – |
― ― displayValue | Valor visualizable para el tipo de contrato | Text | Required | – |
― duration | Duración del contrato para contratos de duración determinada Contiene atributos value (tipo Número) y unit (tipo Texto) |
– | Required para prácticas, contratos de duración determinada y temporales | Lista de valores |
― ― value | Valor de la duración de los contratos de duración determinada | Number | Required para prácticas, contratos de duración determinada y temporales | – |
― ― unit | Unidad de duración (meses, semanas, etc.) | Text | Required para prácticas, contratos de duración determinada y temporales | – |
― ― displayValue | Concatenación de los dos elementos anteriores, valor visualizable | Text | Required para prácticas, contratos de duración determinada y temporales | – |
― rhythm | Número de horas por semana seleccionadas Contiene atributos hours_per_weekdisplay_value (tipo Texto) |
– | – | Lista de valores |
― ― hoursPerWeek | Número de horas trabajadas por semana | Number | Required | – |
― ― fullTime | Tiempo completo o parcia | Text | Required | true o false |
― ― displayValue | Número de horas semanales | Text | Required | – |
― starting_date | Fecha de inicio de la misión | – | – | Lista de valores |
― ― asap | ¿Fecha de inicio más temprana posible? | Boolean | Required | true o false |
― ― value | Fecha de inicio de la misión | Date | Required si asap = « false » | – |
job_language | Idioma del anuncio (lista desplegable) | Text | – | Lista de valores |
salary | Salario propuesto – 2 tipos de visualizaciones: salario y banda salarial Contiene los atributos value, currency, unit; y para su visualización en los rangos min y max |
– | – | Lista de valores |
― min | Salario mínimo | Number | – | – |
― max | Escala salarial máxima | Number | – | – |
― value | Valor fijo del salario | Number | – | – |
― currency | Moneda del salario (EUR, USD …) | Text | Valores múltiples | – |
― unit | Valor temporal del salario (mensual, anual, etc.) | Text | Valores múltiples | – |
― displayValue | Concatenación de campos anteriores | Text | Autogenerated | – |
skills | Competencias necesarias para el puesto (texto libre) | [ Text1, Text2,…] | – | – |
jobTitle | Ámbito de actividad correspondiente al puesto (lista deoratoria) | – | – | Lista de valores |
― code | Código asociado al ámbito de actividad | Text | – | – |
― displayValue | Valor visualizable de la división | Text | – | – |
mainActivityArea | Sector de actividad principal | – | Required | Lista de valores |
― code | Código asociado al sector de actividad primaria | Text | Required | – |
― displayValue | Valor visualizable del sector de actividad principal | Text | Required | – |
secondaryActivityArea | Sector de actividad secundario | – | – | Lista de valores |
― code | Código asociado al sector de actividades secundarias | Text | – | – |
― displayValue | Valor visualizable del sector de actividad secundario | Text | – | – |
qualification | Nivel de cualificación | – | – | Lista de valores |
― code | Código asociado al nivel de cualificación | Text | – | – |
― displayValue | Valor visualizable del nivel de cualificación | Text | – | – |
experience | Experiencia requerida: número de años de experiencia requeridos y número de años en puestos directivos. | – | Required | Detalles |
― experienceYear | Número de años de experiencia requeridos | Text | – | – |
― includingManagementYears | Número de años de experiencia en gestión requeridos | Number | – | – |
― displayValue | Valor visualizable del nivel de experiencia | Text | – | – |
studyLevels | Nivel de cualificación aceptado se añade un elemento por cada nivel de cualificación rellenado |
Tabla de objetos | Valores múltiples | Lista de valores |
― code | Código correspondiente al título | Text | – | – |
― displayValue | Valor visualizable del nivel de estudio | Text | – | – |
school_types | Tipo de escuela se añade un elemento por cada tipo de escuela rellenado | Tabla de objetos | Valores múltiples | Lista de valores |
― code | Código asociado al tipo de escuela solicitada | Text | – | – |
― displayValue | Valor visualizable del tipo de centro solicitado | Text | – | – |
educationDomain | Ámbito de estudio | Text | – | – |
Los valores posibles para el objeto "type" del contrato se muestran en la siguiente tabla:
Es preferible utilizar los valores "code" para la asignación y evitar así cualquier problema de actualización.
Code | displayValue |
PERMANENT | Contrato indefinido |
TEMPORARY | Contrato de duración determinada |
INTERIM | Interinidad |
INTERNSHIP | Prácticas |
APPRENTICESHIP | Contrato de aprendizaje |
CONTRAT_DE_PROFESIONNALISATION | Contrato de formación profesional |
FRANCHISE | Franquicia |
FREELANCE | Trabajador autónomo |
COLLABORATION_AGREEMENT | Contrato de colaboración |
SUMMER_JOB | Trabajo de verano |
FAMILY | Empleo familiar |
Los valores posibles para el elemento "unit" del objeto duración del contrato se muestran en la tabla siguiente:
Del mismo modo, es preferible utilizar los valores "unit" a efectos de asignación para evitar problemas de actualización.
Attribut Unit | Valeur |
YEAR | año(s) |
MONTH | mes(es) |
WEEK | semana(s) |
DAY | día(s) |
HOUR | hora(s) |
El objeto rhythm (rhythm y no rythm) contiene 3 elementos: "hoursPerWeek" que contiene el número de horas trabajadas por semana, fullTime que contiene "true" o "false" y displayValue que contiene el número de horas trabajadas en la forma xx.xh/semana.
He aquí un ejemplo:
"rhythm": {
"hoursPerWeek": "35.0",
"fullTime": "true",
"displayValue": "35.0h/semaine"
},
El objeto startingDate indica la fecha de inicio del contrato. Cuando se elige una fecha para el inicio del contrato, el elemento asap="false" y el valor en el elemento "value" es igual a la fecha introducida por el usuario.
Si el usuario elige "lo antes posible", el atributo asap="true" y la fecha en "value" corresponden a la fecha de publicación del anuncio.
Language
JobLanguage puede tomar dos valores: "inglés" o "francés".
El objeto salary puede presentarse de 2 formas diferentes (rango o valor fijo) según las elecciones del usuario:
Valor fijo:
"salary": {
"value": "100000.0",
"currency": "EUR",
"unit": "YEAR",
"displayValue": "100000 € (Euros) par an"
}
Rango salarial:
"salary": {
"min": "100000.0",
"max": "150000.0",
"currency": "EUR",
"unit": "YEAR",
"displayValue": "De 100000 à 150000 € (Euros) par an"
}
Los valores posibles para los elementos "unit" y "currency" se muestran en la tabla siguiente:
Unit | Valor |
YEAR | al año |
MONTH | al mes |
WEEK | por semana |
DAY | por día |
HOUR | por hora |
Currency | Valor |
EUR | € (Euros) |
GBP | £ (libra esterlina) |
MAD | DH (dirham marroquí) |
USD | $ (dólar estadounidense) |
CAD | $ (dólar canadiense) |
JPY | ¥ (yen japonés) |
CHF | CHF (franco suizo) |
Job title
code | displayValue |
Craft / Worker | Artesano / Trabajador |
Craft / Shop | Artesano / Tienda local |
Worker | Obrero / Construcción |
Technician | Técnico |
Hospitality / Travel | Hostelería / Restauración / Turismo / Ocio |
Sales | Comercio / Ventas |
MLM Commission | VDI |
Computer | Informática / Internet / Telecomunicaciones |
Marketing / Communication | Marketing / Comunicación |
House help | Servicios domésticos |
Cleaning / Help | Limpieza / Mantenimiento |
Nurse / Babysitting / School help | Servicios personales |
Management | Gestión / Supervisión |
Entity management | Dirección general / Gestor de centros de beneficio |
Project management | Gestión de proyectos |
Engineering | Estudios / Investigación / Ingeniería |
HR / Formation / Teaching | RRHH / Formación / Enseñanza |
HR | Recursos Humanos / Formación |
Formation / Teaching | Educación / Enseñanza |
Health Care | Salud / Medicina / Social |
Multi services | Servicios Generales |
Administration | Administración |
Assistant | Asistentes / Secretarias / Recepcionistas |
Accounting / Finance | Contabilidad / Gestión / Finanzas |
Legal / Tax | Jurídico / Fiscal |
Security / Help | Seguridad / Defensa / Vigilancia |
Logistic | Transporte / Logística / Compras |
Activity area
code | displayValue |
Bank | Banca |
Finance | Finanzas |
Assurance | Seguros |
Accounting | Contabilidad |
Gestion | Gestión |
Legal | Jurídico |
Tax | Fiscal |
Agriculture | Agricultura / Pesca |
Agri | Industria alimentaria |
Building | Construcción e ingeniería civil |
Building / infrastucture | Edificación y Obras Públicas Plantas / Carreteras / Tuberías |
Installation / Maintenance / Repair | Instalación / Mantenimiento / Reparación |
Architecture | Arquitectura |
Design | Diseño |
Town planning | Urbanismo |
Real estate | Inmobiliaria |
Craft | Comercio / Artesanía |
Retail | Comercio / Venta |
Distribution | Gran distribución |
Export | Comercio internacional / Exportación |
Customer service | Atención al cliente / postventa |
Call center | Centros de llamadas |
Hostelry | Hoteles |
Food | Restauración |
Tourism | Turismo |
Hobbies | Ocio |
Sport | Deporte |
Equipment manufacturer | Automoción / Aeroespacial / Transporte |
Metallurgy | Metalurgia |
Mechanical / Robotics | Mecánica / Automatización / Robótica |
Materials processing | Procesado de materiales |
Electrical and electronic equipment | Equipos eléctricos y electrónicos |
Quality | Calidad / Inspección |
High technologies | Alta tecnología |
Raw materials | Extracción y transformación de materias primas |
Chemicals | Química - Caucho - Plásticos |
Pharmaceutical | Farmacéutica / Biotecnología |
Manufacturing / Production | Industria / Producción, otros (muebles, textil, imprenta) |
Health | Salud |
Social | Social |
Veterinary | Veterinaria |
Web | Páginas web / SEO / Diseño web |
Software | Desarrollo de software |
Telecom | Telecomunicaciones |
E-business | Comercio electrónico |
IT Services | Empresa de servicios de ingeniería informática |
ConsultingProject management | ConsultoríaGestión de proyectos |
Cleaning | Limpieza / mantenimiento |
Other company services | Otros servicios a empresas |
Individual services | Servicios personales |
Public service | Servicios públicos |
Fashion | Moda |
Luxury | Lujo |
Beauty | Belleza |
Transport | Transporte |
Logistic | Logística |
Handling | Manipulación |
HR | RH |
Recruitment firm | Agencia de colocación |
Interim firm | Empresa de trabajo temporal |
Marketing | Marketing |
Communication | Comunicación / Medios / Prensa |
Advertising | Publicidad |
Journalism | Periodismo |
Edition | Edición y escritura |
Engineering | Ingeniería |
RnD | I+D / Alta Tecnología |
Consultancy | Oficina de diseño |
Private research | Investigación privada |
Public research | Investigación pública |
Security | Seguridad / Defensa |
Art | Arte / Entretenimiento / Cultura |
Teaching | Enseñanza |
Public teaching | Enseñanza pública |
Private teaching | Enseñanza privada |
Formation | Formación profesional |
Apprenticeship Formation | Formación en alternancia |
Water | Agua |
Electricity | Electricidad |
Oil and gas | Petróleo y gas |
Nuclear | Nuclear |
Environment | Medio ambiente / Naturaleza |
Waste | Gestión de residuos |
Humanitarian | Humanitario |
Qualification
Code | displayValue |
MANOEUVRE | Peón |
OUVRIER_SPECIALISE | Trabajador cualificado |
P1_P2 | Trabajador cualificado (P1,P2) |
P3_P4_OHQ | Trabajador cualificado (P3,P4,OHQ) |
ENQ | Trabajador no cualificado |
EQ | Trabajador cualificado |
TECHNICIEN | Técnico |
AGENT_DE_MAITRISE | Supervisor |
CADRE_PRIVE | Ejecutivo del sector privado |
CADRE_PUBLIC | Ejecutivo del sector público / Fuerzas armadas |
Experience
El objeto experience contiene 3 elementos:
- experienceYear : contiene el número de años de experiencia requeridos.
- includingManagementYears : nombre d’années d’expériences requises en tant que manager.
- displayValue, valeurs affichable.
Ejemplo:
"experience": {
"experienceYear": "-2",
"includingManagementYears": "10.0",
"displayValue": "Tous niveaux d'expérience"
},
experienceYear | displayValue |
<0 | Todos los niveles de experiencia |
0.0 | Principiante |
<6 | Con experiencia |
>=6 | Gestor de proyectos |
Study levels
Code | displayValue |
ALL | Ninguno |
BEP_CAP | BEP/CAP |
BAC | Bac |
BAC_1_2 | Bac+1/Bac+2 |
BAC_3 | Bac+3 |
BAC_4 | Bac+4 |
BAC_5 | Bac+5 |
BAC_6_PLUS | Bac+6 y más |
Ejemplo:
"studyLevels": [
{
"code": "BEP_CAP",
"displayValue": "BEP/CAP"
},
{
"code": "BAC",
"displayValue": "Bac"
}
]
School Types
Code | displayValue |
ALL | No importa |
UNI | Universidad |
RESEARCH_LAB | Laboratorio de investigación |
BUSINESS_SCHOOL | Escuela de negocios |
ENGINEER_SCHOOL | Escuela de ingeniería |
A | A |
A_PLUS | A+ |
Ejemplo:
"schoolTypes": [
{
"code": "UNI",
"displayValue": "Université"
},
{
"code": "ENGINEER_SCHOOL",
"displayValue": "École d'ingénieur"
}
]