Respuestas de error habituales

Los servicios de la API comparten los siguientes códigos de error, mensajes y formatos de respuesta habituales. Consulta nuestras páginas de documentación por separado para estudiar las respuestas de error exclusivas de cada servicio.

Recomendaciones para solucionar errores de Rapid

Lógica de la resolución de errores

  • Las plataformas y los colaboradores deben asegurarse de que existe una lógica de resolución de errores de compra y reserva para poder solucionar los errores de Rapid.
  • Utiliza siempre un affiliate_reference_id único para cada solicitud de reserva, a menos que se especifique lo contrario en las siguientes notas.
  • Los colaboradores deben revisar y actualizar constantemente su lógica de resolución de errores, sobre todo para las solicitudes de reserva.
  • Cada respuesta de Rapid lleva su propio código HTTP; puedes consultar a continuación la lista de códigos HTTP de respuesta.

Tiempo de espera de conexión o de comunicación

Se recomienda configurar un tiempo de espera de conexión de la API de 90 segundos para las solicitudes de reserva. Aunque no existe ninguna recomendación establecida para otras API, dado que un tiempo de espera límite no conllevaría pérdidas económicas, se aconseja aplicar una configuración similar. Sin embargo, algunos colaboradores pueden decidir utilizar un tiempo de espera de conexión menor para las llamadas de disponibilidad de la compra.

Si un colaborador no ha recibido respuesta en 120 segundos, significa que no la va a recibir. Esto se debe a que EPS Rapid tiene su propia configuración del tiempo de espera, con un tiempo de espera máximo de 120 segundos. Después de dicho tiempo de espera, Rapid emitirá un error "5xx".

En algunos casos, Rapid no admite el proceso HTTP Expect: 100-Continue. Los colaboradores pueden experimentar problemas de conexión al intentar conectar servidores con el proceso, especialmente en los lenguajes cURL, C#/.NET y algunos otros lenguajes de codificación que siguen el proceso de forma predeterminada.

Nota: El error "HTTP 504 gateway time out" no implica que se haya agotado el tiempo de espera de Rapid. En estos casos, o bien ha fallado un servicio de infraestructura o bien Rapid está actuando como pasarela a otro servicio secundario y configura un límite de tiempo de espera para ese servicio. Lo que se ha activado es este tiempo límite de espera, y EPS tendrá que informar de ello como un 504. Si el 504 se produce para una llamada de reserva, debes comprobar si se ha creado la reserva o no usando Itinerary Retrieve (affiliate_reference_id+correo electrónico), ya que el problema puede ser anterior a la creación de la reserva (p. ej., comunicación con el hotel, servidor de pago) o posterior a la creación de la reserva (p. ej., gestión financiera de EPS). Comprueba también que la conexión a Internet es estable. Un comando Traceroute puede ayudar a identificar si hay problemas de conectividad.

Resolución de errores "5xx" de reserva y recuperación

Un error de reserva (estado "5xx") o un tiempo de espera agotado no significan necesariamente que la reserva en sí no sea válida, por lo que no debe sacarse esta conclusión. Es posible que el error se haya producido después de crear la reserva. En estos casos, se recomienda emitir una recuperación de itinerario con affiliate_reference_id+correo electrónico para comprobar el estado de la reserva.

Cualquier error que se devuelva en 90 segundos no indica el estado final de la reserva. Normalmente, la mayoría de las reservas se resuelven como reserva confirmada en un plazo de entre 13 y 30 segundos, aunque algunas pueden tardar hasta 90 segundos en resolverse.

Los colaboradores pueden implementar una lógica para comprobar el estado de la reserva 3 veces en un periodo de 90 segundos. La mayoría de las respuestas se confirmarán en los primeros 30 segundos, y los colaboradores podrán confirmar la respuesta sin esperar a que transcurran los 90 segundos. Si no se ha recibido una respuesta final, los colaboradores pueden volver a intentar la recuperación después de 60 segundos y, finalmente, después de 90 segundos para validar la respuesta final.

Utiliza una llamada de API de recuperación para volver a confirmar los resultados de la reserva (respuesta "HTTP 200" o "HTTP 404").

La respuesta de recuperación devuelve la información de retención y reanudación

A veces, después de una reserva que se realiza correctamente, la respuesta de Itinerary Retrieve devolverá datos de respuesta que parecen ser para una reserva de retención y reanudación. Así, en lugar de la información de reserva esperada (habitaciones, penalizaciones por cancelación, etc.), la respuesta solo tendrá los tokens necesarios para una situación de retención y reanudación.

Ejemplo de respuesta:

{
  "itinerary_id": "2667552437552",
  "links": [
    {
      "rel": "retrieve",
      "method": "GET",
      "href": "/v3/itinerary/{itinerary_id}?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m"
    },
    {
      "rel": "resume",
      "method": "PUT",
      "href": "/v3/itinerary/{itinerary_id}?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m"
    },
    {
      "rel": "cancel",
      "method": "DELETE",
      "href": "/v3/itinerary/{itinerary_id}?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m"
    }
  ]
}

El motivo es que la reserva, aunque es perfectamente válida, sigue apareciendo como pendiente. Este estado desaparecerá, normalmente, en cuestión de minutos, por lo que es necesario repetir las solicitudes de Itinerary Retrieve hasta que se complete la reserva.

Desglose de errores con estructura de varios niveles

La respuesta de la API puede desglosar un error en varios niveles en los casos en los que un error de un solo nivel no sea suficiente para explicar todos los detalles. La repetición de la información en todos los niveles ayudará a aclarar y solucionar mejor el error.

Ejemplo de respuesta:

{
    "type": "invalid_input",
    "message": "An invalid request was sent in, please check the nested errors for details.",
    "errors": [
        {
            "type": "duplicate_itinerary",
            "message": "An itinerary already exists with this affiliate reference id.",
            "fields": [
                {
                    "name": "affiliate_reference_id",
                    "type": "body",
                    "value": "XXXXXX"
                }
            ]
        }
    ]
}

Códigos de respuesta HTTP

400 - Bad Request

Aparece si tu solicitud tenía un formato o valores incorrectos.

Los errores de código "400 Bad Request" indican un problema con el encabezado de la solicitud de reserva. La respuesta del error incluirá el campo matriz del error real en el encabezado de la solicitud de reserva que se muestra como no válido. El encabezado de una reserva consta de varias matrices y submatrices, como habitaciones y pagos. La matriz general es el cuerpo. De esta forma, body.email indicaría el parámetro del correo electrónico para el cuerpo del encabezado.

Nota: La matriz de las habitaciones para el encabezado de la reserva debe tener el mismo número de entradas que las habitaciones solicitadas en la llamada de disponibilidad.

Se devuelve un error 400 (solicitud incorrecta) con la etiqueta "Tomcat Exception Report" cuando los parámetros de la solicitud son demasiado grandes, con mayor frecuencia en las API Property Content y Get Availability. Para evitar este error, reduce el número de alojamientos o elimina los parámetros innecesarios de la solicitud.

Ejemplos de respuesta:

Idiomas no aceptados:

{
  "type": "invalid_input",
  "message": "An invalid request was sent in, please check the nested errors for details.",
  "errors": [
    {
      "type": "language.not_supported",
      "message": "Language is not supported. Supported languages are: [de-DE, en-US, es-ES, es-MX, fr-FR, id-ID, it-IT, ja-JP, ko-KR, pt-BR, zh-CN]",
      "fields": [
        {
          "name": "language",
          "type": "querystring",
          "value": "xx-XX"
        }
      ]
    },
    {
      "type": "filter.mismatch",
      "message": "Existing booking is expedia_collect, this cannot be changed",
      "fields": [
        {
          "name": "filter",
          "type": "querystring",
          "value": "property_collect"
        }
      ]
    }
  ]
}

Falta el valor de la versión:

{
  "type": "version.required",
  "message": "You have not specified a version, the supported versions are: [1, 2]",
  "fields": [
    {
      "name": "version",
      "type": "path",
      "value": "missing"
    }
  ]
}

El valor de la versión no es válido:

{
  "type": "version.unsupported",
  "message": "You have requested a version that is not supported, supported versions are: [1, 2]",
  "fields": [
    {
      "name": "version",
      "type": "path",
      "value": "3"
    }
  ]
}

401 - Unauthorized

Aparece si el encabezado de autorización HTTP no ha sido encontrado o no ha podido ser analizado. Cada solicitud a cualquiera de los servicios de Rapid API debe incluir el hash SHA-512 sin sal de la concatenación de tu clave para la API + secreto compartido + marca de tiempo UNIX expresada en segundos. Consulta nuestra página de verificación por firma para obtener todos los detalles.

Ejemplo de la respuesta 401 - Unauthorized:

{
  "type": "request_unauthenticated",
  "message": "Data required to authenticate your request is missing. Ensure that your request follows the guidelines in our documentation.",
  "fields": [
     {
       "name": "apikey",
       "type": "header",
       "value": "jaj3982k239dka328e"
     },
     {
       "name": "signature",
       "type": "header",
       "value": "129d75332614a5bdbe0c7eb540e95a65f9d85a5b53dabb38d19b37fad6312a2bd25c12ee5a82831d55112087e1b"
     },
     {
       "name": "timestamp",
       "type": "header",
       "value": 198284729
     },
     {
       "name": "servertimestamp",
       "type": "server",
       "value": 198284729
     }
  ]
}

403 - Forbidden

Aparece cuando tu encabezado HTTP de autorización es válido, pero no se te permite acceder al recurso solicitado.

Ejemplo de la respuesta 403 - Forbidden:

{
  "type": "request_unauthorized",
  "message": "Your request could not be authorized."
}

404 - Not Found

Aparece si no ha podido encontrarse el recurso de la API solicitado. Compara la URL de la solicitud con los ejemplos que hemos documentado.

La API de geografía y la API de contenido también utilizan respuestas 404 para indicar cuándo no se pueden localizar los archivos geográficos o de contenido específico que se hayan solicitado. Para obtener ejemplos completos, consulta las páginas respectivas de la documentación.

El código 404 después de una recuperación de itinerario indica que no se ha podido encontrar la reserva. Si la recuperación se ha realizado debido a un error de reserva, este código indica que la reserva no se ha creado. Sin embargo, los colaboradores deben asegurarse de que los parámetros de la solicitud de la API Itinerary Retrieve eran válidos, así que comprueba siempre que el affiliate_reference_id de la recuperación, así como el correo electrónico o el número de itinerario, son correctos. Además, si la llamada de recuperación de la API se ha realizado menos de 90 segundos después de la llamada de reserva, intenta la recuperación otra vez y asegúrate de que han transcurrido más de 90 segundos desde dicha llamada de reserva.

Ejemplo de respuesta:

{
    "type": "resource.not_found",
    "message": "The requested resource could not be found."
}

409 - Price Mismatch

Muchos alojamientos y cadenas utilizan precios dinámicos, o lo que también se denomina "precios basados en el tiempo". Esto significa que los precios varían en función de los algoritmos de la oferta y la demanda. Expedia Group recibe tarifas actualizadas de los alojamientos varias veces por segundo, lo que significa que las tarifas cambian con frecuencia.

Es importante señalar que esto suele ser decisión del alojamiento y no de EPS. Además, como se realiza un almacenamiento en caché a varios niveles para las tarifas o la disponibilidad, incluido a nivel de colaborador, puede haber varias capas de latencia en cualquier reserva.

El desajuste de precios (PMM, por sus siglas en inglés) es una situación habitual y puede darse por varias razones, incluido el deterioro de los sistemas o que estos no reflejen los precios actualizados que introduzcan los alojamientos. Los colaboradores deben vigilar la frecuencia de estos eventos y ponerse en contacto con el servicio de asistencia de EPS si el índice aumenta repentinamente o alcanza un umbral.

Si se ha producido un desajuste de precios para varios alojamientos o habitaciones al mismo tiempo, comprueba si existe un posible deterioro del servicio de Rapid.

Si el sistema devuelve un desajuste de precios para la misma tarifa o habitación durante un largo periodo de tiempo, probablemente se deba a que el alojamiento ha introducido las tarifas incorrectamente. Ponte en contacto con el servicio de asistencia técnica de EPS para comprobarlo.

Para solucionar un desajuste de precios, vuelve a realizar la llamada de la API de comprobación de precios para obtener un nuevo token de URL de reserva. Puedes utilizar el mismo affiliate_reference_id en la llamada de reserva.

Ejemplo de respuesta:

{
  "type": "price_mismatch",
  "message": "Payment amount did not match current price, please check price and try again.",
  "fields": [
    {
      "name": "payments.amount",
      "type": "body",
      "value": "100.00"
    },
    {
      "name": "price.amount",
      "type": "body",
      "value": "120.00"
    }
  ]
}

410 - Gone or Sold Out

Esta respuesta se devuelve si el enlace de Rapid que se ha usado ha caducado o si las habitaciones solicitadas ya no están disponibles.

Muchas cadenas hoteleras y alojamientos tienen enlaces de comunicación directos con Expedia Group. La comunicación síncrona es un intercambio interactivo que tiene lugar en tiempo real entre Expedia Group y los alojamientos o cadenas.

La reserva con comunicación síncrona se produce cuando el alojamiento o la cadena facilitan a EPS su inventario de habitaciones (disponibilidad y precio), el cual EPS se encarga de gestionar. Las posteriores llamadas de comprobación de disponibilidad y precio de la API de compra se realizan con estos datos. Posteriormente, en el momento de la reserva, se realiza una llamada síncrona al alojamiento para reservar las habitaciones. Este error se produce cuando no hay inventario suficiente para las habitaciones seleccionadas. Si se comprueba que el inventario es insuficiente, Rapid devolverá el código de error 410.

Puede tratarse de una situación temporal y, si se intenta otra vez, quizá se obtengan las habitaciones disponibles. Espera 90 segundos y, a continuación, comprueba el estado de la reserva con una solicitud de recuperación utilizando el mismo affiliate_reference_id que se envió con la reserva. Si no se encuentra ninguna reserva, es posible que los usuarios deban elegir otra combinación de alojamiento/habitación/tarifa/fecha.

Si hay problemas en la conexión con el alojamiento, también es posible obtener mensajes de error de "Agotado", ya que Rapid no tendrá forma de conocer la disponibilidad real.

Ejemplo de respuesta:

Enlace caducado:

{
  "type": "link.expired",
  "message": "The link you followed has expired. Please request a new link."
}

Agotado:

"type": "rooms_unavailable",
"message": "One or more requested rooms are unavailable."

426 - Upgrade Required

Aparece si la solicitud no ha utilizado TLS (sustituye a SSL).

Ejemplo de respuesta:

{
  "type": "upgrade_required",
  "message": "This service requires the use of TLS."
}

429 - Rate Limit Errors

Nota: Si recibes un error por un exceso de solicitudes, espera al menos cinco minutos antes de intentar enviar una solicitud corregida. Si lo reintentas antes de ese tiempo, se seguirán produciendo errores debido a la sincronización de la caché.

Cuando el recuento de solicitudes supera el límite de cuota, se devuelve un código de estado 429. Cada respuesta puede ser sometida a dos límites de cuota diferentes: una en la que una integración está enviando solicitudes a una velocidad superior al límite y otra en la que los servidores de Expedia Group están sufriendo una carga que sobrepasa el límite.

Cuando un colaborador realiza una solicitud de la API de Expedia Group, el servidor que la recibe comprueba si el recuento de solicitudes está dentro del límite. Si el recuento de solicitudes está dentro del límite, la solicitud prosperará y se incrementará el recuento para el cliente. Si el recuento de la solicitud del cliente sobrepasa el límite, el servidor devolverá una respuesta con un código HTTP de estado 429 (demasiadas solicitudes).

El servidor puede incluir, de forma opcional, un encabezado Rate-Limit-Day-Reset y Rate-Limit-Minute-Reset. Indica cuánto tiempo deberías esperar antes de enviar siguiente solicitud. Se trata de las marcas de tiempo en las que se producirá la siguiente caída, expresadas en microsegundos (no en milisegundos).

Por ejemplo, cuando se convierten a una fecha u hora, el valor "15489792000000" da como resultado Friday, February 1, 2019 12:00:00 AM (UTC).

Ejemplo de respuesta:

HTTP/1.1 429 Too Many Requests
Connection →keep-alive
Content-Length →106
Date →Fri, 01 Feb 2019 06:20:51 GMT
Rate-Limit-Day-Remaining →18
Rate-Limit-Day-Reset →1548979200000
Rate-Limit-Minute-Remaining →0
Rate-Limit-Minute-Reset →1549002000000
Rate-Limit-Reduction-Status →inactive
Server →EAN
Transaction-Id →003224d2-1407-42fe-8bf8-6d74226e7f00

500 – Internal Server Error

Devuelve un error presente en Rapid API o en los sistemas que preceden en la cadena. Sigue las instrucciones del campo del mensaje si se indica una acción específica; de lo contrario, intenta realizar la solicitud otra vez con el mismo affiliate_reference_id.

Rapid responde con un HTTP 500 cuando detecta un problema, pero no puede ofrecer más detalles sobre este. Al utilizar Rapid es normal que, de vez en cuando, se reciban respuestas de código 500.

También se puede producir un error HTTP 500 cuando se utiliza un punto de venta no compatible, como Siria.

Si has recibido un error en una respuesta de la API que no sea "Crear reserva" o "Cancelar reserva", y no parece haber ningún problema de conexión, vuelve a intentar la solicitud en otro momento. Puede que incluya un encabezado Retry-After para indicar el retardo mínimo (en segundos) antes de volver a intentarlo.

Si has recibido un error en la respuesta de la API al crear una reserva:

  • Espera 90 segundos y, a continuación, comprueba el estado de la reserva con una solicitud de recuperación utilizando el mismo affiliate_reference_id que se envió con la reserva.
  • Si no se encuentra ninguna reserva o sigues recibiendo el error 500, vuelve a intentar la reserva más tarde.

Si has recibido un error en la respuesta de la API al cancelar una reserva:

  • Espera 90 segundos y, a continuación, comprueba el estado de la reserva con una solicitud de Itinerary Retrieve utilizando el itinerary_id conocido.
  • Si la reserva no se cancela o sigues recibiendo el error 500, vuelve a intentar la cancelación más tarde.

Ejemplos de respuesta:

{
  "type": "unknown_internal_error",
  "message": "An internal server error has occurred."
}
{
  "type": "internal_error",
  "message": "An internal server error has occurred. Please discard any previously received results in this pagination and restart the pagination from the beginning."
}

503 - Service Unavailable

El error HTTP 503 suele ser temporal e indica que Rapid, o un servicio posterior, no puede gestionar la solicitud en ese momento. Hay varias razones posibles, desde una sobrecarga temporal hasta la pérdida de la conexión con el alojamiento.

Si has recibido un error en una respuesta de la API que no sea "Crear reserva" o "Cancelar reserva", y no parece haber ningún problema de conexión, vuelve a intentar la solicitud en otro momento. Puede que incluya un encabezado Retry-After para indicar el retardo mínimo (en segundos) antes de volver a intentarlo.

Si has recibido un error en la respuesta de la API al crear una reserva:

  • El enlace de la reserva generado en tu respuesta previa de comprobación de precios caduca tras un breve periodo de tiempo. Si, tras el primer intento, se te muestra un error HTTP 503, es probable que el enlace haya caducado. Deberás obtener un nuevo enlace y realizar un nuevo intento de reserva.
  • Si recibes un 503 en el segundo intento, espera 90 segundos y, a continuación, comprueba el estado de la reserva con una solicitud de recuperación utilizando el mismo affiliate_reference_id que se envió con la reserva.
  • Si no se encuentra ninguna reserva o sigues recibiendo el error 503, vuelve a intentar la reserva más tarde.

Si has recibido un error en la respuesta de la API al cancelar una reserva:

  • Espera 90 segundos y, a continuación, comprueba el estado de la reserva con una solicitud de Itinerary Retrieve utilizando el itinerary_id conocido.
  • Si la reserva no se cancela o sigues recibiendo el error 503, vuelve a intentar la cancelación más tarde.

Ejemplo de respuesta:

{
  "type": "service_unavailable",
  "message": "This service is currently unavailable."
}

504 - Gateway Time Out

El error HTTP 504 no suele proceder de Rapid, sino de la nube o de la infraestructura periférica, e indica que un elemento de la infraestructura de red (como el equilibrador de carga) ha experimentado un problema durante la transacción. Normalmente se trata de un evento temporal.

Ten en cuenta que el tiempo de espera puede agotarse antes o después de la creación del itinerario, por lo que deberás comprobar siempre si el itinerario se ha creado o no.

Las respuestas con error HTTP 504 (y 502) emplean el formato HTML en lugar del par de objetos tipo/mensaje en formato JSON de Rapid. Esta es otra indicación de que estos errores no los genera Rapid.

Ejemplo de respuesta:

<html>
<head><title>504 Gateway Time-out</title></head>
<body>
<center><h1>504 Gateway Time-out</h1></center>
</body>
</html>

Tasa umbral de respuestas erróneas

A fin de establecer sus propios umbrales, los colaboradores deben medir la tasa diaria de los siguientes códigos de respuesta: 409, 410, 500, 503 y 504. Si se supera el umbral, deberán ponerse en contacto con el servicio de asistencia de EPS.

EPS no tiene establecido ningún umbral fijo, ya que, entre otros factores, depende del mercado en el que se encuentren los colaboradores y los mercados a los que vendan. Así pues, es fundamental conocer a fondo el mercado para determinar por qué se producen algunas respuestas de error. A modo orientativo, es habitual que entre el 5 y el 6 % de las llamadas de reserva devuelvan un error de código "50xx" a lo largo de un día o una semana.

Con el tiempo, los colaboradores deberían poder calcular sus propios umbrales. No es recomendable que se limiten a buscar un aumento diario repentino. Aunque se establezca un umbral de 5 al día, la obtención de dos errores "500" con 5 minutos de diferencia, por ejemplo, puede ser motivo de consulta al servicio de asistencia de EPS.

Registros

Si EPS solicita los registros de solicitud/respuesta, intenta proporcionar lo siguiente:

  • El valor Transaction-Id del encabezado de respuesta de la API. Esto es fundamental para investigar a fondo el caso.
  • Los registros de solicitudes y respuestas de la API. Los registros de solicitudes deben incluir la URL completa del punto de conexión utilizado. Los registros de respuestas deben incluir el código HTTP devuelto, los datos completos de las respuestas y cualquier encabezado que se haya devuelto.
  • La solicitud de la API de disponibilidad con el parámetro point_of_sale, así como la respuesta de disponibilidad. Esta información permitirá al servicio de asistencia de EPS identificar la cuenta de Rapid y el perfil que se ha utilizado.
  • El encabezado de la solicitud de la API de reserva y el encabezado de autorización (con APIKey, firma y marca de tiempo) para cada solicitud de reserva.
  • La URL de la solicitud de reserva y el token que aparecen en los registros de solicitudes.
  • La recuperación de itinerario emitida después de una llamada de la API de reserva, independientemente de si dicha llamada se ha realizado correctamente.

Incluye también la solicitud y la respuesta JSON completas. Una cadena JSON debe ir debidamente entrecomillada, por lo que no es necesario incluir el carácter de escape de barra invertida delante del carácter de comillas dobles.

Código JSON correctoCódigo JSON incorrecto
| json "id": "208646250", "status": "available", | json\"id\": \"208646250\", \"status\": \"available\", |

Utiliza el carácter de escape de barra invertida delante de unas comillas dobles solo cuando necesites que las comillas dobles formen parte de la cadena.

Ejemplo de respuesta:

"spokenwords": "He said "hello world""

No pongas los registros en formato PDF. El servicio de asistencia de EPS y los desarrolladores a veces copian y pegan los datos de registro en sus herramientas internas, y el formato PDF añade caracteres de salto de línea innecesarios a los datos.

Apéndice

|

Respuestas de error en HTTP de Rapid

Consulta los errores conocidos de compra, reserva, cancelación y otros errores habituales. El valor de type puede cambiar sin previo aviso.

APICódigo HTTPValor del tipo de errorMotivoAcción recomendada
General401Problemas de accesoComunicación comercial o técnican/a
General403Problemas de accesoComunicación comercial o técnican/a
General426La versión de la API es demasiado antigua.Comunicación comercial o técnican/a
General429Control del tráficoComunicación comercial o técnican/a
Reserva400affiliate_confirmation_id.invalid_exceeds_char_limitaffiliate_reference_id tiene un formato incorrecto.Corregir el contenido de la solicitud.
Reserva400book.hold_and_resume.not_allowedProblemas de accesoSegún el caso
Reserva400payments.affiliate_collect.not_allowedProblemas de accesoSegún el caso
Reserva400payments.declinedError en la transacciónConsultar los errores anidados para obtener información.
Reserva400payments.rejectedError en la transacciónConsultar los errores anidados para obtener información.
Reserva400payments.invalidError en la transacciónConsultar los errores anidados para obtener información.
Reserva400payments.fraud_detectedSospechas de fraudeEl usuario no debe realizar más reservas. Se debe seguir investigando el caso.
Reserva400body.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400body_requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400address.city.invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400address.country_code.invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400address.line_1.invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400address.postal_code.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400address.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400address.state.invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400billing_contact.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400customer_ip.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400email.invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400email.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400family_name.invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400family_name.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400given_name.invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400given_name.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400invalid_inputEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400json.invalid_formatEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400json_formatEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400link.invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400payments.affiliate_collect.missing_informationEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400payments.credit_card.type.invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400payments.credit_card.type.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400payments.multiple_paymentsEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400payments.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400payments.type.not_supportedEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400phone.invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400phone.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400rooms.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400rooms.size.invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400test.content_invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Reserva400n/aExcepción desconocidaEsperar 90 segundos y utilizar affiliate_reference_id para revisar las actualizaciones de la reserva.
Reserva400rooms.invalid_sizeEl número de las habitaciones de compra no coincide con el de la reserva.Corregir el contenido de la solicitud.
Reserva400payments.credit_card.number.requiredFalta el número de la tarjeta bancaria.Mejorar la verificación local de la información de las tarjetas bancarias.
Reserva400payments.credit_card.number.invalidNúmero de tarjeta bancaria no válido.Mejorar la verificación local de la información de las tarjetas bancarias.
Reserva400payments.credit_card.security_code.requiredFalta el código de verificación de la tarjeta bancaria.Mejorar la verificación local de la información de las tarjetas bancarias.
Reserva400payments.credit_card.security_code.invalidCódigo de verificación de tarjeta bancaria no válido.Mejorar la verificación local de la información de las tarjetas bancarias.
Reserva400payments.credit_card.security_code.not_matchedCódigo de verificación de tarjeta bancaria no válido.Mejorar la verificación local de la información de las tarjetas bancarias.
Reserva400payments.credit_card.expiredLa tarjeta bancaria ha caducado.Mejorar la verificación local de la información de las tarjetas bancarias.
Reserva400payments.credit_card.expiration_month.requiredFalta la validez de la tarjeta bancaria.Mejorar la verificación local de la información de las tarjetas bancarias.
Reserva400payments.credit_card.expiration_year.requiredFalta la validez de la tarjeta bancaria.Mejorar la verificación local de la información de las tarjetas bancarias.
Reserva400payments.credit_card.expiration_year.length_invalidValidez de la tarjeta bancaria no válida.Mejorar la verificación local de la información de las tarjetas bancarias.
Reserva400payments.insufficient_fundsSaldo insuficiente de la tarjeta bancaria.Pedir al usuario que confirme la información y volver a intentarlo.
Reserva400duplicate_itineraryIntento de reserva duplicado.Esperar 90 segundos y utilizar affiliate_reference_id para revisar las actualizaciones de la reserva.
Reserva409price_mismatchSe ha detectado un ajuste del precio antes de procesar la reserva.Esperar 90 segundos y utilizar affiliate_reference_id para revisar posibles reservas duplicadas antes de sugerir al usuario un nuevo precio u otra habitación/hotel.
Reserva410rooms_unavailableSe ha detectado un estado agotado antes de procesar la reserva.Esperar 90 segundos y utilizar affiliate_reference_id para revisar posibles reservas duplicadas antes de sugerir al usuario otra habitación u hotel.
Reserva415n/aExcepción desconocidaEsperar 90 segundos y utilizar affiliate_reference_id para revisar las actualizaciones de la reserva.
Reserva415n/aExcepción desconocidaEsperar 90 segundos y utilizar affiliate_reference_id para revisar las actualizaciones de la reserva.
Reserva500create.system_failureExcepción desconocidaEsperar 90 segundos y utilizar affiliate_reference_id para revisar las actualizaciones de la reserva.
Reserva500payment_registration.system_failureExcepción desconocidaEsperar 90 segundos y utilizar affiliate_reference_id para revisar las actualizaciones de la reserva.
Reserva500pricing_system.failureExcepción desconocidaEsperar 90 segundos y utilizar affiliate_reference_id para revisar las actualizaciones de la reserva.
Reserva500unknown_internal_errorExcepción desconocidaEsperar 90 segundos y utilizar affiliate_reference_id para revisar las actualizaciones de la reserva.
Reserva500n/aExcepción desconocidaEsperar 90 segundos y utilizar affiliate_reference_id para revisar las actualizaciones de la reserva.
Reserva503create.no_responseExcepción desconocidaEsperar 90 segundos y utilizar affiliate_reference_id para revisar las actualizaciones de la reserva.
Reserva503service_unavailableExcepción desconocidaEsperar 90 segundos y utilizar affiliate_reference_id para revisar las actualizaciones de la reserva.
Reserva504n/aExcepción desconocidaEsperar 90 segundos y utilizar affiliate_reference_id para revisar las actualizaciones de la reserva.
Cancelar400cancel.post_checkoutCancelar después de la fecha de salida.Detener la cancelación online después de la fecha de salida y contactar con el servicio de atención al cliente.
Cancelar400customer_ip.requiredEl contenido de la solicitud es incorrecto.Utilizar affiliate_reference_id para revisar las actualizaciones de la reserva, contactar con el servicio de atención al cliente y realizar las investigaciones necesarias.
Cancelar400invalid_inputEl contenido de la solicitud es incorrecto.Utilizar affiliate_reference_id para revisar las actualizaciones de la reserva, contactar con el servicio de atención al cliente y realizar las investigaciones necesarias.
Cancelar400room_id.invalidEl contenido de la solicitud es incorrecto.Utilizar affiliate_reference_id para revisar las actualizaciones de la reserva, contactar con el servicio de atención al cliente y realizar las investigaciones necesarias.
Cancelar400test.content_invalidEl contenido de la solicitud es incorrecto.Utilizar affiliate_reference_id para revisar las actualizaciones de la reserva, contactar con el servicio de atención al cliente y realizar las investigaciones necesarias.
Cancelar400room_already_cancelledCancelar un pedido cancelado.Utilizar affiliate_reference_id para revisar las actualizaciones de la reserva, contactar con el servicio de atención al cliente y realizar las investigaciones necesarias.
Cancelar400cancel.post_checkinCancelar después de la fecha de entrada.Detener la cancelación online después de la fecha de entrada y contactar con el servicio de atención al cliente.
Cancelar404resource_not_foundExcepción desconocidaEsperar 90 segundos y utilizar affiliate_reference_id para revisar las actualizaciones de la reserva; contactar con el servicio de atención al cliente y realizar las investigaciones necesarias.
Cancelar500cancel.system_failureExcepción desconocidaEsperar 90 segundos y utilizar affiliate_reference_id para revisar las actualizaciones de la reserva antes de volver a intentarlo; contactar con el servicio de atención al cliente y realizar las investigaciones necesarias.
Cancelar500unknown_internal_errorExcepción desconocidaVolver a intentar la operación y contactar con el servicio de atención al cliente.
Cancelar501itinerary_level_cancel_not_supportedEl contenido de la solicitud es incorrecto.Esperar 90 segundos y utilizar affiliate_reference_id para revisar las actualizaciones de la reserva; contactar con el servicio de atención al cliente y realizar las investigaciones necesarias.
Cancelar503cancel.system_failureExcepción desconocidaEsperar 90 segundos y utilizar affiliate_reference_id para revisar las actualizaciones de la reserva antes de volver a intentarlo; contactar con el servicio de atención al cliente y realizar las investigaciones necesarias.
Cancelar503service_unavailableExcepción desconocidaEsperar 90 segundos y utilizar affiliate_reference_id para revisar las actualizaciones de la reserva antes de volver a intentarlo; contactar con el servicio de atención al cliente y realizar las investigaciones necesarias.
Comprobación de los precios200availability.not_foundAgotadoSugerir a los viajeros que cambien de tipo de habitación o de hotel.
Comprobación de los precios200n/aExcepción desconocidaVolver a intentar
Comprobación de los precios400customer_session_id.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Comprobación de los precios400invalid_inputEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Comprobación de los precios400link.invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Comprobación de los precios400test.content_invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Comprobación de los precios409availability.not_foundAgotadoSugerir a los viajeros que cambien de tipo de habitación o de hotel.
Comprobación de los precios409n/aExcepción desconocidaVolver a intentar
Comprobación de los precios410invalid_inputEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Comprobación de los precios410availability.not_foundAgotadoSugerir a los viajeros que cambien de tipo de habitación o de hotel.
Comprobación de los precios410n/aExcepción desconocidaVolver a intentar
Comprobación de los precios410checkin.invalid_date_too_far_outReservar lo antes posible una estancia para los próximos 500 días.Mejorar la validación local de las entradas de los usuarios.
Comprobación de los precios500availability.not_foundAgotadoSugerir a los viajeros que cambien de tipo de habitación o de hotel.
Comprobación de los precios500unknown_internal_errorExcepción desconocidaVolver a intentar
Comprobación de los precios500n/aExcepción desconocidaVolver a intentar
Comprobación de los precios503availability.not_foundAgotadoSugerir a los viajeros que cambien de tipo de habitación o de hotel.
Comprobación de los precios503service_unavailableExcepción desconocidaVolver a intentar
Comprobación de los precios503n/aExcepción desconocidaVolver a intentar
Compras200availability.not_foundEstado agotado o código de hotel no válido.Sugerir a los viajeros que cambien de tipo de habitación o de hotel.
Compras400property_id.above_maximumUna sola solicitud puede incluir hasta 250 ID de alojamiento.Corregir el contenido de la solicitud.
Compras400currency.not_supportedLa unidad de divisa no es válida.Según el caso
Compras400departure.invalid_departure_before_arrivalLa fecha de salida es anterior a la fecha de entrada.Mejorar la validación local de las entradas de los usuarios.
Compras400number_of_adults.invalid_above_maximumCada habitación no puede superar los 15 adultos.Mejorar la validación local de las entradas de los usuarios.
Compras400number_of_adults.invalid_below_minimumCada habitación no puede superar los 15 adultos.Mejorar la validación local de las entradas de los usuarios.
Compras400number_of_occupancies.invalid_above_maximumCada habitación no puede superar los 15 adultos.Mejorar la validación local de las entradas de los usuarios.
Compras400checkin.invalid_date_formatEl contenido de la solicitud es incorrecto.Mejorar la validación local de las entradas de los usuarios.
Compras400checkin.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400checkout.invalid_date_formatEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400checkout.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400child_age.invalid_age_formatEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400child_age.invalid_outside_accepted_rangeEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400country_code.above_maximumEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400country_code.invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400country_code.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400currency.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400customer-ip.invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400filter.invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400include.invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400invalid_inputEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400language.above_maximumEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400language.not_supportedEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400language.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400link.invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400occupancy.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400platform_name.invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400property_id.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400rate_option.invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400rate_plan_count.above_maximumEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400rate_plan_count.invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400rate_plan_count.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400sales_channel.above_maximumEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400sales_channel.invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400sales_channel.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400sales_environment.above_maximumEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400sales_environment.invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400sales_environment.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400sort_type.above_maximumEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400sort_type.invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400sort_type.requiredEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400test.content_invalidEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras400arrival.invalid_date_in_the_pastFecha de entradaMejorar la validación local de las entradas de los usuarios.
Compras400checkin.invalid_date_in_the_pastFecha de entradaMejorar la validación local de las entradas de los usuarios.
Compras400checkout.above_maximumEstancia superior a 28 díasMejorar la validación local de las entradas de los usuarios.
Compras400checkout.invalid_length_of_stay_too_longEstancia superior a 28 díasMejorar la validación local de las entradas de los usuarios.
Compras400checkout.invalid_length_of_stay_too_shortEstancia superior a 28 díasMejorar la validación local de las entradas de los usuarios.
Compras400departure.invalid_length_of_stay_too_longEstancia superior a 28 díasMejorar la validación local de las entradas de los usuarios.
Compras400departure.invalid_length_of_stay_too_shortEstancia superior a 28 díasMejorar la validación local de las entradas de los usuarios.
Compras400checkout.invalid_checkout_before_checkinLa fecha de salida es anterior a la fecha de entrada.Mejorar la validación local de las entradas de los usuarios.
Compras400property_id.invalidID de alojamiento no válidoCorregir el contenido de la solicitud.
Compras400arrival.invalid_date_too_far_outReservar lo antes posible una estancia para los próximos 500 días.Mejorar la validación local de las entradas de los usuarios.
Compras400checkin.invalid_date_too_far_outReservar lo antes posible una estancia para los próximos 500 días.Mejorar la validación local de las entradas de los usuarios.
Compras403filter.conflictEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras403request_forbiddenEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras404availability.not_foundEstado agotado o código de hotel no válido.Sugerir a los viajeros que cambien de tipo de habitación o de hotel.
Compras500invalid_inputEl contenido de la solicitud es incorrecto.Corregir el contenido de la solicitud.
Compras500unknown_internal_errorExcepción desconocidaVolver a intentar
Compras500checkin.invalid_date_too_far_outReservar lo antes posible una estancia para los próximos 500 días.Mejorar la validación local de las entradas de los usuarios.
Compras503availability.not_foundEstado agotado o código de hotel no válido.Sugerir a los viajeros que cambien de tipo de habitación o de hotel.
Compras503service_unavailableExcepción desconocidaVolver a intentar

Pseudocódigo de gestión de reservas

Mostramos un ejemplo del proceso de reserva por pasos con las API de creación de reservas y de recuperación de reserva. Incluye recomendaciones para procesar las reservas y realizar un seguimiento de las excepciones.

function create_booking(affiliate_reference_id){
  ### make API request to create booking ###
  book_resp = rapid_book_req(affiliate_reference_id, timeout = 90seconds, hold = false)
  ### Retrieve is always required to confirm final status of bookings, to avoid duplicate requests for the last inventory ###
  retrieve_booking(book_resp.retrieve_link, affiliate_reference_id, book_resp.status_code, book_resp.req_timestamp) }

function retrieve_booking(retrieve_link, affiliate_reference_id, book_resp_status_code, rapid_book_req_time) {
  ### display the pending booking message to customers ###
  booking_final_status = "pending"
  ### always use Retrieve link when it returned in booking response ###
   if (retrieve_link == null) {
       retrieve_link = "/rapid_path?XXXXXX&affiliate_reference_id=" + affiliate_reference_id }
       ### confirm the final status of bookings ###
      while (booking_final_status not in ("booked", “canceled”, "manualFollowup", "failed")) 
        ### make API request to retrieve booking ###
      retrieve_resp = retrieve_resquest(retrieve_link) 
      ### a complete Retrieve returns room level Expedia confirmation ID ###
      if (retrieve_resp.rooms.[].confirmation_id is not null) {
          booking_final_status = retrieve_resp.rooms.[].status }
      ### retry Retrieve to monitor booking updates if 90 seconds have not elapsed yet OR system error returned ###
      elseif (currentTime - rapid_book_req_time <= 90seconds) or (retrieve_resp.status_code not in (404, 200)) {
          continue }
      ### retry Retrieve for incomplete booking result or make manual follow-ups after 11 minutes ### 
      elseif (book_resp_status_code in (200, 201, 202, 204)) or (retrieve_resp.itinerary_id is not null) {
          if (currentTime - rapid_book_req_time <= 11minutes) {
            continue } else { booking_final_status = "manualFollowup" } 
      ### retry booking request with the same affiliate reference id value to cover the booking ###
      elseif (booking_retries <= 2) {
          create_booking(affiliate_reference_id) } 
      ### the booking is failed only when the above actions have all been taken ###
      else {
booking_final_status = "failed" }}}

Ejemplos de la interfaz de usuario para errores de reserva de Rapid

Reserva que no se ha resuelto rápidamente.

Reserva que no se ha resuelto rápidamente.

Reserva confirmada.

Reserva confirmada.

Error de reserva.

Error de reserva.

¿Te ha resultado útil esta página?
¿Cómo podemos mejorar este contenido?
�Gracias por ayudarnos a mejorar!