Skip to main content

Automatically allocates the best available seats for an event session.

POST 

/api/v1/cart/allocateBestSeats

Automatically selects and temporarily reserves the best available seats for an event session. Each allocation detail (categories, optional contingent/block/floor filters, and rate quantities) produces one group of seats in the response with its own contiguity flag. Rates and amounts are assigned from the sale price grid scoped by the caller's pipeline rights and authorized categories. A cart item is created once all details are allocated; pass the returned cartId in subsequent calls to add seats to the same cart, or 0 to create a new cart.

On any allocation failure (not enough seats, unknown category/rate combination, forbidden amount), all seats reserved by the current call are released and error code 10112 is returned.

Note: Distanciation rules (social distancing) are not applied in the REST version. This is a design decision to simplify the initial implementation. If distanciation support is needed, it will be added in a future version.

SOAP Equivalent: AWSP_AllocSeatsAutomatic

Examples

✅ Success (200)

{
"cartId": 45892,
"cartItemId": 78341,
"cartItemDetail": [
{
"isContiguous": true,
"seats": [
{
"rateId": 2045,
"amount": 38.00,
"fees": 3.00,
"seatProperties": {
"seatId": 156789,
"categoryId": 101,
"contingentId": 3045,
"designationId": 5,
"floorId": 78790,
"blockId": 78821,
"accessId": 1,
"tribuneId": 3,
"doorId": 12,
"categoryLabel": "Catégorie 1",
"designationLabel": "Gradin",
"floorLabel": "Parterre",
"blockLabel": "Bloc A",
"accessLabel": "Accès 1",
"tribuneLabel": "Tribune Nord",
"doorLabel": "Porte 12",
"rank": "A",
"seat": "12",
"coordX": 125.50,
"coordY": 80.25,
"status": 0,
"type": 100,
"isNumbered": true,
"rotation": 0
}
},
{
"rateId": 2045,
"amount": 38.00,
"fees": 3.00,
"seatProperties": {
"seatId": 156790,
"categoryId": 101,
"contingentId": 3045,
"designationId": 5,
"floorId": 78790,
"blockId": 78821,
"accessId": 1,
"tribuneId": 3,
"doorId": 12,
"categoryLabel": "Catégorie 1",
"designationLabel": "Gradin",
"floorLabel": "Parterre",
"blockLabel": "Bloc A",
"accessLabel": "Accès 1",
"tribuneLabel": "Tribune Nord",
"doorLabel": "Porte 12",
"rank": "A",
"seat": "13",
"coordX": 130.50,
"coordY": 80.25,
"status": 0,
"type": 100,
"isNumbered": true,
"rotation": 0
}
}
]
}
]
}

❌ Error 400 - Missing x-tenant header

{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "Bad Request",
"status": 400,
"detail": "The x-tenant header is required"
}

❌ Error 400 - Allocation failed (SOAP code 10112)

Returned when not enough seats are available for the requested criteria, when a requested category/rate combination does not exist in the sale price grid, or when the amount is forbidden. All seats reserved by the current call are released.

{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "Bad Request",
"status": 400,
"detail": "Best seat allocation failed for category 101"
}

❌ Error 400 - Rate/amount assignment failed (SOAP code 10113)

Returned when applying rates and amounts to the allocated seats fails; the seats reserved by the current call are released. The business code 10113 is kept for SOAP parity; its HTTP rendering goes through the shared order error mapping, hence the "Order item already cancelled" title and detail below.

{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "Order item already cancelled",
"status": 400,
"detail": "The order item has already been cancelled or released."
}

❌ Error 403 - Sale not allowed (SOAP code 10114)

Returned when the event is not allowed for the caller, or when the event session is disabled, closed, or locked.

{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.4",
"title": "Forbidden",
"status": 403,
"detail": "Catalog not allowed"
}

❌ Error 422 - Validation failed

{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.21",
"title": "Validation Failed",
"status": 422,
"detail": "The request contains 1 validation error(s)",
"errors": [
{
"field": "eventSessionId",
"message": "EventSessionId must be greater than 0"
}
],
"errorCount": 1
}

❌ Error 500 - Server error

Returned on an unexpected failure (database error, unhandled exception).

{
"type": "https://tools.ietf.org/html/rfc9110#section-15.6.1",
"title": "Internal Server Error",
"status": 500,
"detail": "An unexpected error occurred",
"traceId": "00-a1b2c3d4e5f6-789012345678-00"
}

SOAP to REST Field Mapping

REST FieldSOAP FieldNotes
cartIdid_TemporaryOrder0 creates a new cart
cartItemIdid_TemporaryOrderRowCreated InterfaceFlag identifier
eventIdid_CatalogEvent identifier
eventSessionIdid_CatalogDateEvent session identifier
detaillistAllocRequestOne allocation per detail
detail[].categoryIdsListID_CategoryMultiple categories allowed
detail[].contingentIdsListID_ContingentOptional filter
detail[].blockIdsListID_BlocOptional filter
detail[].floorIdsListID_FloorOptional filter
detail[].quantities[].rateIdListQuantity[].ID_RateRate identifier
detail[].quantities[].quantityListQuantity[].QuantitySeats per rate
cartItemDetaillistAllocResponseOne group per detail
cartItemDetail[].isContiguousisContiguousAlways true for unnumbered venues
cartItemDetail[].seatsListAllocSeatAllocated seats with pricing

Request

Responses

OK