Este artículo habla del endpoint web-form, que permite registrar un contacto en Fideltour desde cualquier formulario instalado en la web del cliente.
Endpoint: https://app.hoteldatahub.io/api/v1/contacts/web-form/
Swagger: https://app.hoteldatahub.io/swagger/#/contacts/contacts_web_form
Campo | Tipo | Obl. | Descripción |
hotel_chain | String | Si | Código de la cadena hotelera, facilitado por Fideltour. |
api_user | String | Si | Username del api user, facilitado por Fideltour. |
String | Si | Email del contacto, campo único, usado como identificador del contacto. | |
source | Integer | No | Origen del contacto.
|
name | String | No | Nombre del contacto |
surname | String | No | Apellidos del contacto |
language | String | No | |
country | String | No | Debe estar en formato ISO 3166-1 alpha-2 |
phone1 | String | No | Teléfono del contacto |
phone2 | String | No | Teléfono 2 del contacto |
birthday | Date YYYY-MM-DD | No | Fecha de nacimiento |
address | String | No | Dirección. |
post_code | String | No | Código postal |
province | String | No | Nombre de la provincia. |
town | String | No | Nombre de la ciudad o población. |
zone | String | No | Nombre de la zona. |
identification_document_type | Integer | No | Tipo de documento de identidad.
|
identification_number | String | No | Número de documento de identidad. |
gender | Integer | No | Género:
|
custom_tags | String array | No | Nombres de las etiquetas que deseamos vincular con el contacto. |
business_name | String | No | Nombre de la empresa |
work_place | String | No | Cargo empresarial |
business_address | String | No | Dirección de la empresa |
fiscal_address | String | No | Dirección fiscal |
accept_terms | Booleano | No | Indica si el contacto acepta términos y condiciones.
|
accept_commercial_communications | Booleano | No | Indica si el contacto acepta comunicaciones comerciales.
|
accept_personalized_commercial_communications | Booleano | No | Indica si el contacto acepta comunicaciones comerciales personalizadas.
|
IP | String | No | IP desde la que se aceptan los checkboxes legales |
A continuación, se muestra un ejemplo de petición y respuesta correcta.
En el siguiente ejemplo se muestra una petición para dar de alta al contacto pablo@hdh.com.
PROTOCOLO: HTTP/1.1
METODO: POST
HOST/ENDPOINT: https://app.hoteldatahub.io/api/v1/contacts/web-form/
HEADERS: Content-type: application/json
BODY: se añade un ejemplo a continuación.
A continuación, se muestra un ejemplo de uso de formulario sincronizado con Fideltour, en concreto un formulario de suscripción a newsletter. La información que se recoge del contacto en este ejemplo no es toda la posible. Para conocer toda la información posible del contacto que se puede enviar a Fideltour, leer este artículo.
A continuación, se muestra el código HTML y Javascript necesario para generar un ejemplo de formulario de suscripción a newsletter integrado con Fideltour, además, posteriormente se adjunta el fichero html para poder ejecutarlo.
<form id="fideltour-newsletter-form" method="POST">
<input type="hidden" name="hotel_chain" value="SOLICITAR A FIDELTOUR">
<input type="hidden" name="api_user" value="SOLICITAR A FIDELTOUR">
<div>
<label for="name">Nombre</label>
<input id="name" type="text" name="name">
</div>
<div>
<label for="surname">Apellidos</label>
<input id="surname" type="text" name="surname">
</div>
<div>
<label for="email">Email</label>
<input id="email" type="text" name="email" required>
</div>
<div>
<input id="accept" type="checkbox" name="accept_commercial_communications" required>
<label for="accept">
Acepto suscribirme a la newsletter para recibir comunicaciones comerciales
</label>
</div>
<button type="submit">Enviar</button>
</form>
<script type="text/javascript">
const endpoint = "https://app.hoteldatahub.io/api/v1/contacts/web-form/";
const form = document.getElementById("fideltour-newsletter-form");
form.addEventListener("submit", function(e) {
e.preventDefault();
const xhr = new XMLHttpRequest();
xhr.open("POST", endpoint, true);
xhr.setRequestHeader("Content-type", "application/json");
const formData = new FormData(form);
const data = {};
formData.forEach((value, key) => {
if (value) {
if (value === "on") value = true;
data[key] = value;
}
});
xhr.send(JSON.stringify(data));
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 ) {
if (xhr.status === 200) {
// La solicitud se completó exitosamente
console.log('Respuesta recibida:', xhr.responseText);
} else {
// Hubo un problema con la solicitud
console.error('Error en la solicitud:', xhr.statusText);
}
}
};
});
</script>