Booking API
Introduction
The Flex Bookings API enables registered parkers ("consumers") to reserve day-based parking stays in advance via the entervo smart select parking platform or a 3rd-party application.
The reservations are based on flex parking products configured in the entervo infinite parking management system. The flex products typically include a monthly limit on the number of days a parker can enter the parking facility. This encourages booking and dynamic usage of parking spaces to regulate parking demand. Alternatively, the system can be configured to automatically book multiple uses for the current calendar day upon entry.
The API supports creating, viewing, updating, deleting, and listing parking bookings. Only full‑day bookings are allowed.
This API extends the Customer & Contract API and relates to the master data, such as customer, contract, consumer, product or facility, defined there.
Prerequisites to Create Flex Bookings
- Facility created
- Product of group type "Flex products" (configured for the
facility)
- Usage limit per customer: the maximum number of flex bookings per month that the consumer must not exceed.
- Earliest booking: the maximum number of days between the booking and the reservation date.
- Customer and contract created
- In the contract, assign the created "Flex products " product.
- Consumer is created, and the "Flex products" product is assigned.
Explore APIs
Flex Booking Instructions
- POST /bookings
- GET /bookings/{bookingID}
- PUT /bookings/{bookingID}
- DELETE /bookings/{bookingID}
- GET /bookings
Business Terms
| Term | Definition | Comment |
|---|---|---|
| YOURPROJECT | Placeholder (path parameter) in the URL that developers must replace with the actual project name or project ID for their environment | Pre-shared |
| Technical Tenant | A project with its own data; there is no multi-tenancy across tenants. | |
| Customer | An organisational entity, usually a company. A Person is a single entity. | Usually, one company is used for sync initiated by 3rd-party systems. |
| Contract | An entity which provides the business context for parking permits | |
| Consumer (i.e. parker) | Has at least one parking product and a license plate number and is assigned to a contract | An entity which uses a parking permit and parks in a car park. |
| Product | Provides the business context, where, when and how to park | Can differentiate groups for different parking policies |
Premises
| Term | Definition | Comment |
|---|---|---|
| Identification for parking | The parking management system provides identification options: License plate, QR code. | |
| Mandatory pre-shared references for API usage | The parking management system:
| The productBusinessID must be associated with a pre-configured flex parking product. In the contract, a consumer must have an assigned flex parking product. FacilityBusinessID relates to the parking area. |
| Conditions for creating/updating a consumer (the one that is parking) |
| externalReference can be used as a reference for synchronizing consumer master data productBusinessId refers to a parking product (can also be dynamically consumed) |
| Conditions for a consumer to be able to park are: |
| See also pre-shared references |
| Flex Parking booking conditions |
| Refers to the actual date; needs to be pre-shared to avoid a constraint. |
Use Cases
| Use Case | Description | Comment |
|---|---|---|
| Create a flex booking for a specific day | Create a booking for one reservation day for a given consumer, contract, product, and facility. | Only one-day bookings; startDateTime = endDateTime |
| Retrieve a booking by ID | Get a specific booking using bookingID. | |
| Update a booking day | Update startDateTime and endDateTime for an existing booking. | Validations are the same as for the Create case. |
| Delete a booking | Remove a booking using bookingID. | |
| List bookings using filters | Retrieve bookings filtered by consumer, contract, product, facility and date range. | Date-range filters apply before or after booking start times (see the API section). |
| Retrieve booking window parameters | Get the earliest or latest booking offsets for the contract's products. | Returned as maxPrebookingAhead and maxLookAhead. |
Create flex booking
POST /bookings
POST
https://pm.preprod.parking.scheidt-bachmann.net/customers-contracts/v2/YOURPROJECT/bookings
Swagger:
https://pm.preprod.parking.scheidt-bachmann.net/customers-contracts/swagger-ui/index.html#/FlexibleBooking/createFlexibleBooking
This endpoint creates a flex booking. Only one-day-long bookings are allowed (no intra-day periods).
The validations to create flex booking are:
- Consumer is assigned to a product of the "Flex products" type
- "Monthly usage limit" is configured in the product and is > 0
- Flex booking start date is:
- After: Today + "Earliest booking" (if "Earliest booking" is configured in product)
- Before: Today + "Latest booking" (if "Latest booking" is configured in product)
- Not in the past
- Within the contract period
- No existing booking for the same consumer, product, facility and datetime
- Available spaces during the selected period and product
Request Body Example
{
"startDateTime": "2026-01-16T00:00:00+00:00",
"endDateTime": "2026-01-16T00:00:00+00:00",
"consumerBusinessId": "N20236c57ODy4",
"contractBusinessId": "A2023XcKzrUxyX",
"productBusinessId": "PP000034",
"facilityBusinessId": "FC5802558"
}
Note: "startDateTime" = "endDateTime" = selected reservation day
GET flex booking by ID
GET /bookings/{bookingID}
GET
https://pm.preprod.parking.scheidt-bachmann.net/customers-contracts/v2/YOURPROJECT/bookings/{bookingID}
Swagger:
https://pm.preprod.parking.scheidt-bachmann.net/customers-contracts/swagger-ui/index.html#/FlexibleBooking/getFlexibleBooking
Update flex booking
PUT /bookings/{bookingID}
PUT
https://pm.preprod.parking.scheidt-bachmann.net/customers-contracts/v2/YOURPROJECT/bookings/{bookingID}
Swagger:
https://pm.preprod.parking.scheidt-bachmann.net/customers-contracts/swagger-ui/index.html#/FlexibleBooking/updateFlexibleBooking
This endpoint updates a flex booking. The validations are the same as for creating a flex booking. The reservation day can be updated by setting startDateTime and endDateTime to the same value.
Request Body Example
{
"startDateTime": "2023-05-25T14:30+02:00",
"endDateTime": "2023-05-25T14:30+02:00",
"consumerBusinessId": "N2023pxOCMHxY",
"contractBusinessId": "A202212345678",
"productBusinessId": "P2022FC4B4h",
"facilityBusinessId": "F2003325D897",
"revision": 3
}
Note: "startDateTime" = "endDateTime" = selected reservation day
Delete flex booking
DELETE /bookings/{bookingID}
DELETE
https://pm.preprod.parking.scheidt-bachmann.net/customers-contracts/v2/YOURPROJECT/bookings/{bookingID}
Swagger:
https://pm.preprod.parking.scheidt-bachmann.net/customers-contracts/swagger-ui/index.html#/FlexibleBooking/deleteFlexibleBooking
List flex bookings
GET /bookings
GET
https://pm.preprod.parking.scheidt-bachmann.net/customers-contracts/v2/YOURPROJECT/bookings
Swagger:
https://pm.preprod.parking.scheidt-bachmann.net/customers-contracts/swagger-ui/index.html#/FlexibleBooking/getFlexibleBooking
This API returns the list of flex bookings. The possible filters are:
- consumerBusinessId: Consumer's business ID
- contractBusinessId: Contract business ID
- productBusinessId: Product business ID
- facilityBusinessId: Facility business ID
- startDateTime: Bookings that inclusively start after this date (example: 2025-01-11T00:00:00Z).
- endDateTime: Bookings that exclusively start before this date (example: 2025-01-11T00:00:00Z).
GET booking parameters by contract ID
The earliest and latest booking dates for Flex products are defined as day offsets. This information is stored in the respective product or product group. The query is performed through the Customer & Contract API.
GET earliest and latest booking
GET
https://pm.preprod.parking.scheidt-bachmann.net/customers-contracts/v2/YOURPROJECT/contracts/{contractBusinessID}/products
Swagger:
https://pm.preprod.parking.scheidt-bachmann.net/customers-contracts/swagger-ui/index.html#/Contract/getContractProducts
Among other things, this API returns the earliest and latest dates on which a booking can be made:
- maxPrebookingAhead: Earliest booking
- maxLookAhead: Latest booking