Saltar a contenido

Aforo Disponible

Tal y como hemos visto en el punto obtención de catálogo, los Products tienen la propiedad DaysWithLimitedCapacity, así como mediante la llamada para obtener sesiones vemos que Sessions pueden tener definido AvailableCapacity.

Si el campo DaysWithLimitedCapacity está vacío y, en caso de que el producto tenga sesiones no auto asignadas (véase en el catálogo), si las sesiones no tienen el campo AvailableCapacity definido significa que no hay que consultar la disponibilidad para ninguna fecha, por consiguiente no es necesario realizar está llamada al API.

Si el campo DaysWithLimitedCapacity tiene días definidos o las sesiones tiene definido AvailableCapacity, debemos consultar el aforo disponible del producto y/o de la sesión que corresponda antes de ofrecer el producto al cliente.

Si al intentar confirmar el carrito se ha superado el aforo, es decir, no queda aforo suficiente para llevar a cabo la reserva, se devolverá un error.

El aforo concierne a los tickets de tipo aforo (IsQuotaTicket == true). Por tanto, el aforo de un producto es la cantidad de tickets de tipo aforo que se pueden vender de ese producto.

Ejemplo

Obteniendo la siguiente información del catálogo:

  • El siguiente Product tiene marcados el 15 de agosto y el 17 de abril de 2022 como fechas en la que hay que consultar la disponibilidad.

    {
        "ProductId": "htgy4tgm9q21n",
        "DaysWithLimitedCapacity": "2022-04-17,2022-08-15"
    }
    
  • El siguiente Product tiene dos sesiones, ambas con AvailableCapacity definido, por tanto hay que consultar su disponibilidad.

    {
        "ProductId": "q2oghu9mye7h2",
        "Tickets": [
            {
                "TicketId": "fb8mcqxyo22rg",
                "IsQuotaTicket": true,
                "TicketEnclosureId": "g5u6m3xew6hxy"
            }
        ]
    }
    
    {
        "TicketEnclosureId": "g5u6m3xew6hxy",
        "Sessions": 
        {
            "SessionContentProfileId ": "dkjvidkfjkdfv",
            "SessionGroupProfileId": "dfjbfqwe8934d",
            "TicketEnclosureAutoAssignSessionType": 0
        }
    }
    

    Al obtener las sesiones vemos lo siguiente:

    {
    "Sessions": [
        {
            "SessionId": "5b8qkqnmhdmk1",
            "SessionTime": "2021-06-21T10:00:00",
            "AvailableCapacity": 165
        },
        {
            "SessionId": "5o3bwhx1ze1m1",
            "SessionTime": "2021-09-06T10:00:00",
            "AvailableCapacity": 230
        },
        {
            "SessionId": "sdviufdnvr843",
            "SessionTime": "2021-09-06T17:00:00"
        }
    ]
    }
    
  • El siguiente Product está formado por tres tickets de tipo aforo. Así pues, si el aforo del producto fuera de 9, solo podríamos vender 3 productos. Y si el aforo fuera de 16, solo podríamos vender 5 productos.

    {
        "ProductId": "htgy4tgm9q21n",
        "Tickets": [
            {
                "TicketId": "1tqgtrf7ctefc",
                "IsQuotaTicket": true
            }, 
            {
                "TicketId": "2lob55g8w3fff",
                "IsQuotaTicket": true
            }, 
            {
                "TicketId": "jkp78j40cnfh3",
                "IsQuotaTicket": true
            }, 
            {
                "TicketId": "gggsijt911am4",
                "IsQuotaTicket": false
            }
        ]
    }
    

Método de acceso

POST /availablecapacity

Estructura de la petición

  • ProductIds: (list). Array de identificadores de productos por los que filtrar.

    • (string): Identificador del producto.
  • SessionIds: (list). Array de identificadores de sesión por los que filtrar.

    • (string): Identificador del proveedor.
  • Dates: (list). Array de fechas por las que filtrar. Formato ISO 8601 (yyyy-MM-dd).
    • (date): Identificador del proveedor.
  • FromDate: (date). Si se quiere filtrar mediante un rango de fechas, se puede filtrar por fecha de inicio. No permite valores anteriores al día de hoy. Su valor por defecto es el día de hoy. Formato ISO 8601 (yyyy-MM-dd).
  • ToDate: (date). Si se quiere filtrar mediante un rango de fechas, se puede filtrar por fecha de fin. Su valor por defecto es la fecha correspondiente a dentro de un año. Formato ISO 8601 (yyyy-MM-dd).

Importante

Se debe definir al menos un ProductId o un SessionId. Se pueden añadir tantos como se desee y se considerarán un OR.

Ejemplos de petición

{
    "ProductIds": [
        "dj48vjsyufvyu",
        "jnvfnvjkivnnf"
    ]
}
{
    "SessionIds": [
        "usdhdsa124asd",
        "iujnvi83nd347"
    ]
}
{
    "ProductIds": [
        "dj48vjsyufvyu"
    ],
    "Dates": [
        "2022-08-15"
    ]
}
{
    "ProductIds": [
        "dj48vjsyufvyu"
    ],
    "FromDate": "2022-08-01",
    "ToDate": "2022-08-31"
}
{
    "ProductIds": 
    [
        "dj48vjsyufvyu",
        "jnvfnvjkivnnf"
    ],
    "SessionIds": [
        "usdhdsa124asd",
        "iujnvi83nd347"
    ],
    "Dates": 
    [
        "2022-08-15",
        "2022-11-01"
    ]
}

Estructura de la respuesta

  • Products: (list). Array que contiene los productos solicitados. Corresponde a cada día con acceso limitado de cada uno de los productos.
    • ProductId: (string). Identificador del producto.
    • Date: (date). Fecha de acceso. Formato ISO 8601 (yyyy-MM-dd).
    • AvailableCapacity: (int). Capacidad disponible para la venta.
  • Sessions: (list). Array que contiene las sesiones solicitadas. Corresponde a cada día con acceso limitado de cada una de las sesiones.
    • SessionId: (string). dentificador de la sesión.
    • Date: (date). Fecha de acceso. Formato ISO 8601 (yyyy-MM-ddThh:mm:ss.fffffff).
    • AvailableCapacity: (int). Capacidad disponible para la venta.
  • Success (boolean): valor que indica si la llamada ha sido procesada correctamente o no.
  • Timestamp (dateTime): instante de tiempo en el que se procesó la petición. Formato ISO 8601 (yyyy-MM-ddThh:mm:ss.fffffff).
  • ErrorMessage (string): mensaje de error explicando por qué la petición no ha sido correcta. En caso que haya sido correcta, devolverá null.
  • ErrorCodes (string[]): lista de códigos que identifican los errores que se hayan producido en la llamada.
  • ErrorEntityBreakDown (list): Lista que contiene objetos con el nombre e ID en caso de error.
    • Id (string): Identificador
    • Name (string): Nombre relacionado del identificador.

Ejemplo de respuesta

{
    "Products":
    [
        {
            "ProductId": "dj48vjsyufvyu",
            "Date": "2022-07-20",
            "AvailableCapacity": 0
        },
        {
            "ProductId": "jnvfnvjkivnnf",
            "Date": "2022-07-22",
            "AvailableCapacity": 63
        }
    ],
    "Sessions":
    [
        {
            "SessionId": "usdhdsa124asd",
            "Date": "2022-07-20T18:30:00.0000000",
            "AvailableCapacity": 2
        },
        {
            "SessionId": "iujnvi83nd347",
            "Date": "2022-07-20T20:00:00.0000000",
            "AvailableCapacity": 20
        }
    ],
    "Success": true,
    "Timestamp": "2022-02-18T17:02:27.8165916"
}