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 Field | SOAP Field | Notes |
|---|---|---|
| cartId | id_TemporaryOrder | 0 creates a new cart |
| cartItemId | id_TemporaryOrderRow | Created InterfaceFlag identifier |
| eventId | id_Catalog | Event identifier |
| eventSessionId | id_CatalogDate | Event session identifier |
| detail | listAllocRequest | One allocation per detail |
| detail[].categoryIds | ListID_Category | Multiple categories allowed |
| detail[].contingentIds | ListID_Contingent | Optional filter |
| detail[].blockIds | ListID_Bloc | Optional filter |
| detail[].floorIds | ListID_Floor | Optional filter |
| detail[].quantities[].rateId | ListQuantity[].ID_Rate | Rate identifier |
| detail[].quantities[].quantity | ListQuantity[].Quantity | Seats per rate |
| cartItemDetail | listAllocResponse | One group per detail |
| cartItemDetail[].isContiguous | isContiguous | Always true for unnumbered venues |
| cartItemDetail[].seats | ListAllocSeat | Allocated seats with pricing |
Request
Responses
- 200
- 400
- 401
- 403
- 404
- 422
- 500
OK
Bad Request
Unauthorized
Forbidden
Not Found
Unprocessable Content
Internal Server Error