Skip to main content

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.

Note

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

TermDefinitionComment
YOURPROJECTPlaceholder (path parameter) in the URL that developers must replace with the actual project name or project ID for their environmentPre-shared
Technical TenantA project with its own data; there is no multi-tenancy across tenants.
CustomerAn organisational entity, usually a company. A Person is a single entity.Usually, one company is used for sync initiated by 3rd-party systems.
ContractAn 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 contractAn entity which uses a parking permit and parks in a car park.
ProductProvides the business context, where, when and how to parkCan differentiate groups for different parking policies

Premises

TermDefinitionComment
Identification for parkingThe parking management system provides identification options: License plate, QR code.
Mandatory pre-shared references for API usageThe parking management system:
  • Pre-configured Tenant Name
  • Pre-configured Consumer-BusinessID
  • Pre-configured Contract-BusinessID
  • ProductBusinessId
  • FacilityBusinessID
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)
  • License plate is valid (pattern = "^[A-ZÄÖÜ0-9]*$", length %, country, region code if entered is valid, check …)
  • Product exists and is configured in the contract
  • E-mail is valid (optional); no check for uniqueness for two consumers with the same e-mail address
  • Uniqueness of externalReference (S&B external ID for staffID) per Consumer
  • Uniqueness of the license plate number; the license plate is not used by another parker ("consumer") or another company ("customer")
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:
  • Valid Customer
  • Valid contract with parking products for that facility
  • Valid parking product
  • Valid consumer
  • Valid parking media: License plate
  • First name and last name
  • E-mail address mandatory
  • Assigned product
See also pre-shared references
Flex Parking booking conditions
  • Earliest booking: number of days to book a product in advance
  • Latest booking: number of days until a product can be booked in advance
Refers to the actual date; needs to be pre-shared to avoid a constraint.

Use Cases

Use CaseDescriptionComment
Create a flex booking for a specific dayCreate a booking for one reservation day for a given consumer, contract, product, and facility.Only one-day bookings; startDateTime = endDateTime
Retrieve a booking by IDGet a specific booking using bookingID.
Update a booking dayUpdate startDateTime and endDateTime for an existing booking.Validations are the same as for the Create case.
Delete a bookingRemove a booking using bookingID.
List bookings using filtersRetrieve 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 parametersGet 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