Reserva de Productos

La reserva de productos es el primer paso antes de crear una transacción. Permite garantizar disponibilidad y fijar el precio de los productos seleccionados por un tiempo determinado.

1. Método de Acceso

Parámetro

Descripción

URL

{baseurl}/api/reservation

URL (Versión 3.60)

{baseurl}/api/reservation&api-version=3.60

Verbo HTTP

POST

Formato de Envío

application/json

 

2. Datos de Envío

Para realizar una reserva, se deben enviar los siguientes parámetros:

Campo

Descripción

ApiKey

Clave privada única del colaborador. Debe mantenerse secreta.

IsTest

Si es true, no se realizará ninguna acción real en la API, solo una simulación.

AccessDateTime

Fecha de acceso a los productos.

AccessEndDateTime

(Opcional) Fin del rango de fechas de acceso. Obligatorio para productos con acceso basado en alojamiento.

LanguageCode

Idioma en que se mostrarán los textos de la reserva (esenfrit).

Products

Lista de productos incluidos en la reserva.

ProductId

Identificador del producto.

CombinedProductId

(Opcional) Identificador del producto combinado.

Quantity

Cantidad de productos a reservar.

Tickets

(Opcional) Lista de tickets asociados a los productos.

TicketId

Identificador del ticket.

SessionId

(Opcional) Identificador de la sesión.

SessionContentName

(Opcional) Nombre del contenido de la sesión.

SessionTime

(Opcional) Hora de inicio de la sesión.

AccessDateTime

Fecha de acceso del ticket.

Questions

(Opcional) Lista de preguntas asociadas al ticket.

ReturnPaymentMethods

(Opcional) Indica si se deben incluir métodos de pago en la respuesta.

api-version

Versión de la API a utilizar (por defecto 3.21).

 

3. Ejemplo de Petición

Ejemplo 1: Reserva de productos sin sesiones

{

    "ApiKey": "{partnerId}",

    "IsTest": false,

    "AccessDateTime": "2025-04-04",

    "Products": [

        {

            "ProductId": "4hfspe75or5ie",

            "Quantity": 2

        }

    ]

}

Ejemplo 2: Reserva con tickets y preguntas

{

    "ApiKey": "{partnerId}",

    "IsTest": false,

    "AccessDateTime": "2025-04-04",

    "Products": [

        {

            "ProductId": "4hfspe75or5ie",

            "Quantity": 2,

            "Tickets": [

                {

                    "TicketId": "odjvu374udF8D",

                    "Questions": [

                        {

                            "TicketQuestionId": "doejfu729du4R",

                            "StringValue": "respuesta de la pregunta"

                        }

                    ]

                }

            ]

        }

    ]

}

Ejemplo 3: Reserva con productos combinados

{

    "ApiKey": "{partnerId}",

    "IsTest": false,

    "AccessDateTime": "2025-04-04",

    "Products": [

        {

            "ProductId": "abc123",

            "CombinedProductId": "xyz987",

            "Quantity": 1

        }

    ]

}

4. Estructura de la Respuesta

Si la reserva es exitosa, se devuelve una estructura similar a la enviada, agregando información relevante.

Campo

Descripción

ReservationId

Identificador de la reserva. Se usará para crear la transacción o cancelar la reserva.

MinutesToExpiry

Tiempo en minutos que la reserva está asegurada.

AccessDateTime

Fecha de acceso.

TotalPrice

Precio total de la reserva.

Products

Array con la información de los productos reservados.

ProductId

Identificador del producto.

CombinedProductId

Identificador del producto combinado.

Quantity

Cantidad reservada del producto.

Price

Precio unitario del producto.

PriceMode

1 = PVP, 2 = Precio Neto.

CancellationConditions

Condiciones de cancelación aplicables.

IsRefundable

Indica si el cliente puede cancelar gratuitamente.

SaleFlowRule

Indica si se aplicó una regla de flujo de venta.

PaymentMethods

(Opcional) Lista de métodos de pago disponibles.

Success

true si la reserva fue exitosa, false en caso de error.

ErrorMessage

Mensaje de error en caso de falla.

 


 

5. Ejemplo de Respuesta Exitosa

{

    "ReservationId": "zp83haxd5ucwn",

    "MinutesToExpiry": 20,

    "AccessDateTime": "2025-04-04T00:00:00",

    "TotalPrice": 42,

    "Products": [

        {

            "ProductId": "4hfspe75or5ie",

            "CombinedProductId": "94osaxf9pep5a",

            "Quantity": 2,

            "Price": 21,

            "Success": true

        }

    ],

    "Success": true,

    "ErrorMessage": ""

}

6. Ejemplo de Respuesta con Error

{

    "Success": false,

    "ErrorMessage": "El producto solicitado no tiene disponibilidad.",

    "ErrorEntityBreakDown": [

        {

            "Id": "4hfspe75or5ie",

            "Name": "Producto sin disponibilidad"

        }

    ]

}

7. Consideraciones Finales

  • Cada reserva tiene un tiempo límite de expiración, después del cual los productos pueden quedar nuevamente disponibles para otros usuarios.
  • Los precios quedan fijados en el momento de la reserva, sin importar cambios posteriores.
  • Si un producto no se puede reservar, la solicitud completa fallará. Se debe validar disponibilidad antes de la reserva.
  • La reserva debe completarse con una transacción para garantizar la compra final del producto.
  • Se pueden incluir tickets, sesiones y preguntas si la estructura del producto lo requiere.

¿Te ha parecido útil este artículo?