Documentación API

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
                       

Autenticació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

 

                      

Contract Type

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

Volver a la tabla

                      

Contract Duration

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)

 Volver a la tabla 

                      

Contract Rythm

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

Volver a la tabla

Contract Starting Date

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.

Volver a la tabla

Language

JobLanguage puede tomar dos valores: "inglés" o "francés".

Volver a la tabla

                      

Salary

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)

Volver a la tabla

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

Volver a la tabla

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

Volver a la tabla

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

Volver a la tabla

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

Volver a la tabla

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

Volver a la tabla

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

Volver a la tabla