Download OpenAPI specification:Download
Ticket (breaking changes)
isAnAppointment indicates whether the ticket is a FIFO ticket or an appointment.ticketPosition was a ticket position number on the endpoint, it becomes an object with the position of the ticket expressed in number of tickets and number of people, either globally on the queue or on the endpoint.Queue State (breaking changes)
New field – queueIsOpened indicates if an operator is currently operating the queue, and if the queue is progressing or not.
New field – queueIsFullForTheDay indicates if there are availabilities for the current day. The only availabilities may be for the next days.
New field – beta – queueIsFullForFifo indicates if there are availabilities for FIFO tickets. The only availabilities may be for appointment.
New field – beta – queueIsFullForAppointment indicates if there are availabilities for appointment tickets. The only availabilities may be for FIFO.
Renamed field – opened has been renamed into bookingIsOpened. No other changes.
Renamed field – full has been renamed into queueIsFull. No other changes.
New route – /queues/state/sse to get the state of multiple queues in real time.
New route – /places/{placeId}/queuesStates/sse to get the state of all the queues of a place in real time.
Queue Availabilities (breaking changes)
/queues/{queueId}/appointmentTypes/{appointmentTypeId}/groupSize/{groupSize}/availabilities has become /queues/{queueId}/availabilities.groupSize and appointmentTypeId are no longer required, but the returned data is not the same as before.availabilityType field./queues/{queueId}/daysWithAvailabilities meets the need to be able to book for a distant day. It list all the days between a start and an end parameter that have at least one availability.Queue Config
mailRequired indicates if the mail is required on the booking.availabilitiesType indicates the type of availabilities returned from /queues/{queueId}/availabilities.
From now on there is no longer a single availability format but several that depend on the configuration of the queue. The type is specified on the queue config: availabilityType that describes the format of availabilities, and firstAvailability.mustAskToSendPush, mustAskToSendSms and mustAskToSendMail indicate whether to respectively pass the parameters userData.sendClientPush, userData.sendClientSms and userData.sendClientMail when taking a ticket to tell us at Lineberty whether we should send the sms/push/mail to the client, or not. Obviously, this can only be sent if a phone, an email or a pushId is specified.Notifications (breaking changes)
Booking a Ticket
userData.sendClientMail and userData.sendClientPush to indicates if Lineberty must respectively send mail or push notification to the user.userData.mail and userData.pushId to respectively specify the user's email and the user's push ID to send the notifications.Evolution
Counter (New)
Lineberty is a Booking System that increases users' satisfaction by reducing the time spent waiting for their turn.
Users simply have to book a ticket, either on their phone using your application, or on a terminal you’re providing at your place, then to select the time when they want to enjoy visiting your place or use your service. They receive a notification shortly before their appointment, informing them that it is soon their turn.
There is no longer any need to wait in a line! Users now have time to visit around or make more purchases thanks to the Lineberty Virtual Queueing Solution.
Create your own Booking (web)application with the Lineberty Booking API, whether for a mobile or a terminal. Whatever the number of places (or even subplaces) managed by your company, Lineberty allows you to manage queues, tickets, appointments and users in one secured solution.
Define the time slots when users can book tickets, manage the appointments, the availabilities for booking. Allow groups of users to have the same ticket, manage authorizations and eligibility. Organize your places and subplaces into categories for a more detailed management. Or even allow the users to rate and comment their visit on their ticket and that way get some valuable information!
Your Booking application will have to communicate with the Lineberty server to get the data needed to book a ticket. This communication requires an API Key.
We will provide you with a private key included in a JSON file. This JSON file must be stored safe on your application server.
This private key also contains an email address associated to your account to access the Lineberty Booking API, and afterwards get the API Key.
See The Lineberty User Documentation for detailed information.
This is the first step before accessing the resources of the API. Use this route to get a valid API Key to access the Lineberty Booking API resources with your private key. We recommend to use API Key caching to optimize the number of requests per day and resend the request once a day.
| Authorization required | string Example: Bearer <DEVELOPER_TOKEN> JWT token is generated on your server from your secret file. |
curl -X GET \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <DEVELOPER_TOKEN>" \ https://api-booking.lineberty.net/v2/api_key
{- "apiKey": "QJ15bv43hKXTpVClbyMnofYOXHZdyb2Lxwv8yEpzrV1laO"
}Use this route to create a Lineberty user, who will be able to book a ticket. It returns a JWT token.
| Authorization required | string Example: Bearer <DEVELOPER_TOKEN> JWT token is generated on your server from your secret file. |
curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <DEVELOPER_TOKEN>" \ https://api-booking.lineberty.net/v2/users
{- "jwtToken": "QJ15bv43hKXTpVClbyMnofYOXHZdyb2Lxwv8yEpzrV1laO"
}Use this route to log a user with her/his ticket code.
| key required |
All the data required to rate the visit.
| code required | string The ticket code. |
| validation | object Optional object containing dynamic validation fields. Each key can represent a ticket element like a phone number, an email address, or an extended attribute . |
{- "code": "c6nl7PjYe2EQ3Fvc92d9ivgMJVoa2D",
- "validation": [
- {
- "phone": "+33600000000"
}, - {
- "mail": "me@acme.org"
}
]
}{- "jwtToken": "QJ15bv43hKXTpVClbyMnofYOXHZdyb2Lxwv8yEpzrV1laO"
}Use this route to log a user with her/his user ID.
| userId required | string The user's ID. |
| Authorization required | string Example: Bearer <DEVELOPER_TOKEN> JWT token is generated on your server from your secret file. |
curl -X GET \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <DEVELOPER_TOKEN>" \ https://api-booking.lineberty.net/v2/users/{userId}/login
{- "jwtToken": "QJ15bv43hKXTpVClbyMnofYOXHZdyb2Lxwv8yEpzrV1laO"
}Use this route to refresh the user's session token, using the user ID and the session ID.
| userId required | string The user's ID. |
| sessionId required | string The ID of the session. |
| Authorization required | string Example: Bearer <DEVELOPER_TOKEN> JWT token is generated on your server from your secret file. |
curl -X GET \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <DEVELOPER_TOKEN>" \ https://api-booking.lineberty.net/v2/users/{userId}/session/{sessionId}/refreshToken
{- "jwtToken": "QJ15bv43hKXTpVClbyMnofYOXHZdyb2Lxwv8yEpzrV1laO"
}Use these routes to get the list of the companies, and for each company the places relating to it.
Use this route to get the list of all the companies that are associated with the API key, and their languages.
| key required | |
| langs | Array of strings Items Enum: "fr_FR" "en_US" "es_ES" "de_DE" "zh_CN" "zh_TW" "ja_JP" "ko_KR" "th_TH" Example: langs=fr_FR,en_US An array of locales, used to get the translated names of the data. |
| companiesId | Array of strings An array of company IDs that will be used to filter the result. |
curl -X GET \ -H "Content-Type: application/json" \ https://api-booking.lineberty.net/v2/companies?key=YOUR_API_KEY&langs=fr_FR,en_US
{- "companyId1": {
- "companyId": "companyId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US"
}
}Use this route to get detailed information on the places of a company, using the company ID.
| companyId required | string The ID of the company. |
| key required | |
| lat | number Example: lat=48.1234 A latitude, at least 4 decimal digits. If both lat & lng are passed, the places will contain the distance field. |
| lng | number Example: lng=2.1234 A longitude, at least 4 decimal digits. If both lat & lng are passed, the places will contain the distance field. |
| langs | Array of strings Items Enum: "fr_FR" "en_US" "es_ES" "de_DE" "zh_CN" "zh_TW" "ja_JP" "ko_KR" "th_TH" Example: langs=fr_FR,en_US An array of locales, used to get the translated names of the data. |
| placesId | Array of strings An array of place IDs that will be used to filter the result. |
curl -X GET \ -H "Content-Type: application/json" \ https://api-booking.lineberty.net/v2/companies/{companyId}/places?key=YOUR_API_KEY&lat=48.1234&lng=2.1234&langs=fr_FR,en_US
{- "placeId1": {
- "placeId": "placeId1",
- "companyId": "companyId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "address": "5 Avenue Anatole France",
- "city": "Paris",
- "country": "France",
- "zip": "75007",
- "language": "fr_FR",
- "timezone": "Europe/Paris",
- "position": {
- "lat": 48.858471,
- "lng": 2.294434
}, - "distance": 2133,
- "subplaces": { },
- "categories": {
- "categoryId1": {
- "categoryId": "categoryId1",
- "companyId": "companyId1",
- "placeId": "placeId1",
- "subPlaceId": "",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "nbMaxTickets": 2
}, - "categoryId2": {
- "categoryId": "categoryId2",
- "companyId": "companyId1",
- "placeId": "placeId1",
- "subPlaceId": "",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "nbMaxTickets": 1
}
}
}, - "placeId2": {
- "placeId": "placeId2",
- "companyId": "companyId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "address": "5 Avenue Anatole France",
- "city": "Paris",
- "country": "France",
- "zip": "75007",
- "language": "fr_FR",
- "timezone": "Europe/Paris",
- "position": {
- "lat": 48.858471,
- "lng": 2.294434
}, - "distance": 2133,
- "subplaces": {
- "subPlaceId1": {
- "subPlaceId": "subPlaceId1",
- "placeId": "placeId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "categories": {
- "categoryId1": {
- "categoryId": "categoryId1",
- "companyId": "companyId1",
- "placeId": "placeId1",
- "subPlaceId": "subPlaceId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "nbMaxTickets": 2
}, - "categoryId2": {
- "categoryId": "categoryId2",
- "companyId": "companyId1",
- "placeId": "placeId1",
- "subPlaceId": "subPlaceId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "nbMaxTickets": 1
}
}
}, - "subPlaceId2": {
- "subPlaceId": "subPlaceId2",
- "placeId": "placeId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "categories": {
- "categoryId3": {
- "categoryId": "categoryId3",
- "companyId": "companyId1",
- "placeId": "placeId1",
- "subPlaceId": "subPlaceId2",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "nbMaxTickets": 2
}, - "categoryId4": {
- "categoryId": "categoryId4",
- "companyId": "companyId1",
- "placeId": "placeId1",
- "subPlaceId": "subPlaceId2",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "nbMaxTickets": 1
}
}
}
}, - "categories": { }
}
}Use these routes to get the list of the places, and for each place the subplaces, categories and queues relating to it.
Use this route to get all the places relating to a company, including information on the language and the GPS position.
| key required | |
| lat | number Example: lat=48.1234 A latitude, at least 4 decimal digits. If both lat & lng are passed, the places will contain the distance field. |
| lng | number Example: lng=2.1234 A longitude, at least 4 decimal digits. If both lat & lng are passed, the places will contain the distance field. |
| langs | Array of strings Items Enum: "fr_FR" "en_US" "es_ES" "de_DE" "zh_CN" "zh_TW" "ja_JP" "ko_KR" "th_TH" Example: langs=fr_FR,en_US An array of locales, used to get the translated names of the data. |
| placesId | Array of strings An array of place IDs that will be used to filter the result. |
curl -X GET \ -H "Content-Type: application/json" \ https://api-booking.lineberty.net/v2/places?key=YOUR_API_KEY&lat=48.1234&lng=2.1234&langs=fr_FR,en_US
{- "placeId1": {
- "placeId": "placeId1",
- "companyId": "companyId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "address": "5 Avenue Anatole France",
- "city": "Paris",
- "country": "France",
- "zip": "75007",
- "language": "fr_FR",
- "timezone": "Europe/Paris",
- "position": {
- "lat": 48.858471,
- "lng": 2.294434
}, - "distance": 2133,
- "subplaces": { },
- "categories": {
- "categoryId1": {
- "categoryId": "categoryId1",
- "companyId": "companyId1",
- "placeId": "placeId1",
- "subPlaceId": "",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "nbMaxTickets": 2
}, - "categoryId2": {
- "categoryId": "categoryId2",
- "companyId": "companyId1",
- "placeId": "placeId1",
- "subPlaceId": "",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "nbMaxTickets": 1
}
}
}, - "placeId2": {
- "placeId": "placeId2",
- "companyId": "companyId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "address": "5 Avenue Anatole France",
- "city": "Paris",
- "country": "France",
- "zip": "75007",
- "language": "fr_FR",
- "timezone": "Europe/Paris",
- "position": {
- "lat": 48.858471,
- "lng": 2.294434
}, - "distance": 2133,
- "subplaces": {
- "subPlaceId1": {
- "subPlaceId": "subPlaceId1",
- "placeId": "placeId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "categories": {
- "categoryId1": {
- "categoryId": "categoryId1",
- "companyId": "companyId1",
- "placeId": "placeId1",
- "subPlaceId": "subPlaceId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "nbMaxTickets": 2
}, - "categoryId2": {
- "categoryId": "categoryId2",
- "companyId": "companyId1",
- "placeId": "placeId1",
- "subPlaceId": "subPlaceId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "nbMaxTickets": 1
}
}
}, - "subPlaceId2": {
- "subPlaceId": "subPlaceId2",
- "placeId": "placeId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "categories": {
- "categoryId3": {
- "categoryId": "categoryId3",
- "companyId": "companyId1",
- "placeId": "placeId1",
- "subPlaceId": "subPlaceId2",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "nbMaxTickets": 2
}, - "categoryId4": {
- "categoryId": "categoryId4",
- "companyId": "companyId1",
- "placeId": "placeId1",
- "subPlaceId": "subPlaceId2",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "nbMaxTickets": 1
}
}
}
}, - "categories": { }
}
}Use this route to get detailed information on a place in particular, using its ID. It includes the language and the GPS position.
| placeId required | string The ID of the place. |
| key required | |
| lat | number Example: lat=48.1234 A latitude, at least 4 decimal digits. If both lat & lng are passed, the places will contain the distance field. |
| lng | number Example: lng=2.1234 A longitude, at least 4 decimal digits. If both lat & lng are passed, the places will contain the distance field. |
| langs | Array of strings Items Enum: "fr_FR" "en_US" "es_ES" "de_DE" "zh_CN" "zh_TW" "ja_JP" "ko_KR" "th_TH" Example: langs=fr_FR,en_US An array of locales, used to get the translated names of the data. |
curl -X GET \ -H "Content-Type: application/json" \ https://api-booking.lineberty.net/v2/places/{placeId}?key=YOUR_API_KEY&lat=48.1234&lng=2.1234&langs=fr_FR,en_US
{- "placeId": "placeId1",
- "companyId": "companyId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "address": "5 Avenue Anatole France",
- "city": "Paris",
- "country": "France",
- "zip": "75007",
- "language": "fr_FR",
- "timezone": "Europe/Paris",
- "position": {
- "lat": 48.858471,
- "lng": 2.294434
}, - "distance": 2133,
- "subplaces": { },
- "categories": { }
}Use this route to get the list of the subplaces relating to a place, including their languages.
| placeId required | string The ID of the place. |
| key required | |
| langs | Array of strings Items Enum: "fr_FR" "en_US" "es_ES" "de_DE" "zh_CN" "zh_TW" "ja_JP" "ko_KR" "th_TH" Example: langs=fr_FR,en_US An array of locales, used to get the translated names of the data. |
| subplacesId | Array of strings An array of subplace IDs that will be used to filter the result. |
curl -X GET \ -H "Content-Type: application/json" \ https://api-booking.lineberty.net/v2/places/{placeId}/subplaces?key=YOUR_API_KEY&langs=fr_FR,en_US
{- "subPlaceId1": {
- "subPlaceId": "subPlaceId1",
- "placeId": "placeId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "categories": {
- "categoryId1": {
- "categoryId": "categoryId1",
- "companyId": "companyId1",
- "placeId": "placeId1",
- "subPlaceId": "subPlaceId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "nbMaxTickets": 2
}, - "categoryId2": {
- "categoryId": "categoryId2",
- "companyId": "companyId1",
- "placeId": "placeId1",
- "subPlaceId": "subPlaceId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "nbMaxTickets": 1
}
}
}, - "subPlaceId2": {
- "subPlaceId": "subPlaceId2",
- "placeId": "placeId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "categories": {
- "categoryId3": {
- "categoryId": "categoryId3",
- "companyId": "companyId1",
- "placeId": "placeId1",
- "subPlaceId": "subPlaceId2",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "nbMaxTickets": 2
}, - "categoryId4": {
- "categoryId": "categoryId4",
- "companyId": "companyId1",
- "placeId": "placeId1",
- "subPlaceId": "subPlaceId2",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "nbMaxTickets": 1
}
}
}
}Places can be organized into categories. Use this route to get the categories of a place.
| placeId required | string The ID of the place. |
| key required | |
| langs | Array of strings Items Enum: "fr_FR" "en_US" "es_ES" "de_DE" "zh_CN" "zh_TW" "ja_JP" "ko_KR" "th_TH" Example: langs=fr_FR,en_US An array of locales, used to get the translated names of the data. |
| categoriesId | Array of strings An array of category IDs that will be used to filter the result. |
curl -X GET \ -H "Content-Type: application/json" \ https://api-booking.lineberty.net/v2/places/{placeId}/categories?key=YOUR_API_KEY&langs=fr_FR,en_US
{- "categoryId1": {
- "categoryId": "categoryId1",
- "companyId": "companyId1",
- "placeId": "placeId1",
- "subPlaceId": "",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "nbMaxTickets": 2
}, - "categoryId2": {
- "categoryId": "categoryId2",
- "companyId": "companyId1",
- "placeId": "placeId1",
- "subPlaceId": "",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "nbMaxTickets": 1
}
}Use this route to get the list of the queues relating to a place in particular, including detailed information.
| placeId required | string The ID of the place. |
| key required | |
| lat | number Example: lat=48.1234 A latitude, at least 4 decimal digits. If both lat & lng are passed, the places will contain the distance field. |
| lng | number Example: lng=2.1234 A longitude, at least 4 decimal digits. If both lat & lng are passed, the places will contain the distance field. |
| langs | Array of strings Items Enum: "fr_FR" "en_US" "es_ES" "de_DE" "zh_CN" "zh_TW" "ja_JP" "ko_KR" "th_TH" Example: langs=fr_FR,en_US An array of locales, used to get the translated names of the data. |
| queuesId | Array of strings An array of queue IDs that will be used to filter the result. |
curl -X GET \ -H "Content-Type: application/json" \ https://api-booking.lineberty.net/v2/places/{placeId}/queues?key=YOUR_API_KEY&lat=48.1234&lng=2.1234&langs=fr_FR,en_US
{- "queueId1": {
- "queueId": "queueId1",
- "placeId": "placeId1",
- "companyId": "companyId1",
- "categoryId": "",
- "subPlaceId": "",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "fr_FR",
- "timezone": "Europe/Paris",
- "position": {
- "lat": 48.858471,
- "lng": 2.294434
}, - "distance": 2133,
- "config": {
- "bookingType": "FIRST_AVAILABLE_TIMESLOT",
- "distanceEligibility": 1500,
- "postponeEnabled": false,
- "cancelEnabled": true,
- "groupSizeLimit": {
- "min": 1,
- "max": 5
}, - "mustAskToSendSms": false,
- "mustAskToSendPush": false,
- "mustAskToSendMail": false,
- "phoneRequired": true,
- "mailRequired": true,
- "gpsRequired": true,
- "availabilityType": {
- "description": "Indicates which format will be returned for the queue on \"/queues/state\" and \"/queues/{queueId}/availabilities\", that is either FIFO or appointment. All the availabilities are the same for all the tickets of the queue. It is possible to add a \"detailsLevel = 10\" parameter in the GET request of a queue to obtain details on a format with its examples.\n",
- "example": {
- "firstAvailability": "2022-01-03T09:42:08.484Z",
- "availabilities": {
- "fifo": [
- "2022-01-03T09:42:08.484Z"
], - "appointment": [
- "2022-01-03T09:42:08.484Z"
]
}
}, - "format": {
- "availabilities": {
- "fifo": [
- "ArrayOfDate"
], - "appointment": [
- "ArrayOfDate"
]
}, - "firstAvailability": "Date"
}, - "objects": {
- "ArrayOfDate": {
- "description": "A JS array of dates.",
- "path": "",
- "type": "dataResult"
}, - "Date": {
- "description": "A date in the string format (ISO-8601).",
- "path": "",
- "type": "dataResult"
}
}, - "type": "Simple"
}, - "extendedAttributes": {
- "phoneNumber": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^(\\\\+|00)([0-9]{1,2}\\\\-)?([0-9]{1,4})([0-9] ?){3,12}$"
}
}, - "civility": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^f|m$"
}
}, - "name": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^((?![\\\\.,\\\\|:\\\\!=%\\\\$€£\\\\(\\\\[\\\\]\\\\\\\"\\\\&@#\\\\\\\\\\\\`\\\\+\\\\-_\\\\?;§\\\\)]).){3,30}$"
}
}
}
}, - "appointmentTypes": {
- "appointmentTypeId1": {
- "appointmentTypeId": "appointmentTypeId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}
}, - "appointmentTypeId2": {
- "appointmentTypeId": "appointmentTypeId2",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}
}
}
}, - "queueId2": {
- "queueId": "queueId2",
- "placeId": "placeId1",
- "companyId": "companyId1",
- "categoryId": "",
- "subPlaceId": "",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "fr_FR",
- "timezone": "Europe/Paris",
- "position": {
- "lat": 48.858471,
- "lng": 2.294434
}, - "distance": 2133,
- "config": {
- "bookingType": "FIRST_AVAILABLE_TIMESLOT",
- "distanceEligibility": 1500,
- "postponeEnabled": false,
- "cancelEnabled": true,
- "groupSizeLimit": {
- "min": 1,
- "max": 5
}, - "mustAskToSendSms": false,
- "mustAskToSendPush": false,
- "mustAskToSendMail": false,
- "phoneRequired": true,
- "mailRequired": true,
- "gpsRequired": true,
- "availabilityType": {
- "description": "Indicates which format (FIFO or appointment) is used for a specific queue. All the availabilities are the same for all the tickets of the queue.\n",
- "example": {
- "firstAvailability": "2022-01-03T09:42:08.484Z",
- "availabilities": {
- "fifo": [
- "2022-01-03T09:42:08.484Z"
], - "appointment": [
- "2022-01-03T09:42:08.484Z"
]
}
}, - "format": {
- "availabilities": {
- "fifo": [
- "ArrayOfDate"
], - "appointment": [
- "ArrayOfDate"
]
}, - "firstAvailability": "Date"
}, - "objects": {
- "ArrayOfDate": {
- "description": "A JS array of dates.",
- "path": "",
- "type": "dataResult"
}, - "Date": {
- "description": "A date in the string format (ISO-8601).",
- "path": "",
- "type": "dataResult"
}
}, - "type": "Simple"
}, - "extendedAttributes": {
- "phoneNumber": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^(\\\\+|00)([0-9]{1,2}\\\\-)?([0-9]{1,4})([0-9] ?){3,12}$"
}
}, - "civility": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^f|m$"
}
}, - "name": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^((?![\\\\.,\\\\|:\\\\!=%\\\\$€£\\\\(\\\\[\\\\]\\\\\\\"\\\\&@#\\\\\\\\\\\\`\\\\+\\\\-_\\\\?;§\\\\)]).){3,30}$"
}
}
}
}, - "appointmentTypes": {
- "appointmentTypeId3": {
- "appointmentTypeId": "appointmentTypeId3",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}
}, - "appointmentTypeId4": {
- "appointmentTypeId": "appointmentTypeId4",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}
}
}
}
}Use this route to get the counter(s) of a place.
| placeId required | string The ID of the place. |
| key required | |
| langs | Array of strings Items Enum: "fr_FR" "en_US" "es_ES" "de_DE" "zh_CN" "zh_TW" "ja_JP" "ko_KR" "th_TH" Example: langs=fr_FR,en_US An array of locales, used to get the translated names of the data. |
| countersId | Array of strings An array of counter IDs (actually, queue IDs) that will be used to filter the result. |
curl -X GET \ -H "Content-Type: application/json" \ https://api-booking.lineberty.net/v2/places/{placeId}/counters?key=YOUR_API_KEY&langs=fr_FR,en_US
{- "counterId1": {
- "counterId": "counterId1",
- "placeId": "placeId1",
- "companyId": "companyId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "timezone": "Europe/Paris",
- "infos": {
- "value": 2,
- "nextRestart": "2022-01-01T12:00:00.000Z"
}
}, - "counterId2": {
- "counterId": "counterId2",
- "placeId": "placeId1",
- "companyId": "companyId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "timezone": "Europe/Paris",
- "infos": {
- "value": 3,
- "nextRestart": "2022-01-01T12:00:00.000Z"
}
}
}Use this route to get a subplace using its ID.
| subplaceId required | string The ID of the subplace. |
| key required | |
| langs | Array of strings Items Enum: "fr_FR" "en_US" "es_ES" "de_DE" "zh_CN" "zh_TW" "ja_JP" "ko_KR" "th_TH" Example: langs=fr_FR,en_US An array of locales, used to get the translated names of the data. |
curl -X GET \ -H "Content-Type: application/json" \ https://api-booking.lineberty.net/v2/subplaces/{subplaceId}?key=YOUR_API_KEY&langs=fr_FR,en_US
{- "subPlaceId": "subPlaceId1",
- "placeId": "placeId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "categories": {
- "categoryId1": {
- "categoryId": "categoryId1",
- "companyId": "companyId1",
- "placeId": "placeId1",
- "subPlaceId": "subPlaceId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "nbMaxTickets": 2
}, - "categoryId2": {
- "categoryId": "categoryId2",
- "companyId": "companyId1",
- "placeId": "placeId1",
- "subPlaceId": "subPlaceId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "nbMaxTickets": 1
}
}
}Use this route to get the queues of a subplace, and information on the language and the GPS position.
| subplaceId required | string The ID of the subplace. |
| key required | |
| lat | number Example: lat=48.1234 A latitude, at least 4 decimal digits. If both lat & lng are passed, the places will contain the distance field. |
| lng | number Example: lng=2.1234 A longitude, at least 4 decimal digits. If both lat & lng are passed, the places will contain the distance field. |
| langs | Array of strings Items Enum: "fr_FR" "en_US" "es_ES" "de_DE" "zh_CN" "zh_TW" "ja_JP" "ko_KR" "th_TH" Example: langs=fr_FR,en_US An array of locales, used to get the translated names of the data. |
| queuesId | Array of strings An array of queue IDs that will be used to filter the result. |
curl -X GET \ -H "Content-Type: application/json" \ https://api-booking.lineberty.net/v2/subplaces/{subplaceId}/queues?key=YOUR_API_KEY&lat=48.1234&lng=2.1234&langs=fr_FR,en_US
{- "queueId1": {
- "queueId": "queueId1",
- "placeId": "placeId1",
- "companyId": "companyId1",
- "categoryId": "",
- "subPlaceId": "",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "fr_FR",
- "timezone": "Europe/Paris",
- "position": {
- "lat": 48.858471,
- "lng": 2.294434
}, - "distance": 2133,
- "config": {
- "bookingType": "FIRST_AVAILABLE_TIMESLOT",
- "distanceEligibility": 1500,
- "postponeEnabled": false,
- "cancelEnabled": true,
- "groupSizeLimit": {
- "min": 1,
- "max": 5
}, - "mustAskToSendSms": false,
- "mustAskToSendPush": false,
- "mustAskToSendMail": false,
- "phoneRequired": true,
- "mailRequired": true,
- "gpsRequired": true,
- "availabilityType": {
- "description": "Indicates which format will be returned for the queue on \"/queues/state\" and \"/queues/{queueId}/availabilities\", that is either FIFO or appointment. All the availabilities are the same for all the tickets of the queue. It is possible to add a \"detailsLevel = 10\" parameter in the GET request of a queue to obtain details on a format with its examples.\n",
- "example": {
- "firstAvailability": "2022-01-03T09:42:08.484Z",
- "availabilities": {
- "fifo": [
- "2022-01-03T09:42:08.484Z"
], - "appointment": [
- "2022-01-03T09:42:08.484Z"
]
}
}, - "format": {
- "availabilities": {
- "fifo": [
- "ArrayOfDate"
], - "appointment": [
- "ArrayOfDate"
]
}, - "firstAvailability": "Date"
}, - "objects": {
- "ArrayOfDate": {
- "description": "A JS array of dates.",
- "path": "",
- "type": "dataResult"
}, - "Date": {
- "description": "A date in the string format (ISO-8601).",
- "path": "",
- "type": "dataResult"
}
}, - "type": "Simple"
}, - "extendedAttributes": {
- "phoneNumber": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^(\\\\+|00)([0-9]{1,2}\\\\-)?([0-9]{1,4})([0-9] ?){3,12}$"
}
}, - "civility": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^f|m$"
}
}, - "name": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^((?![\\\\.,\\\\|:\\\\!=%\\\\$€£\\\\(\\\\[\\\\]\\\\\\\"\\\\&@#\\\\\\\\\\\\`\\\\+\\\\-_\\\\?;§\\\\)]).){3,30}$"
}
}
}
}, - "appointmentTypes": {
- "appointmentTypeId1": {
- "appointmentTypeId": "appointmentTypeId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}
}, - "appointmentTypeId2": {
- "appointmentTypeId": "appointmentTypeId2",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}
}
}
}, - "queueId2": {
- "queueId": "queueId2",
- "placeId": "placeId1",
- "companyId": "companyId1",
- "categoryId": "",
- "subPlaceId": "",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "fr_FR",
- "timezone": "Europe/Paris",
- "position": {
- "lat": 48.858471,
- "lng": 2.294434
}, - "distance": 2133,
- "config": {
- "bookingType": "FIRST_AVAILABLE_TIMESLOT",
- "distanceEligibility": 1500,
- "postponeEnabled": false,
- "cancelEnabled": true,
- "groupSizeLimit": {
- "min": 1,
- "max": 5
}, - "mustAskToSendSms": false,
- "mustAskToSendPush": false,
- "mustAskToSendMail": false,
- "phoneRequired": true,
- "mailRequired": true,
- "gpsRequired": true,
- "availabilityType": {
- "description": "Indicates which format (FIFO or appointment) is used for a specific queue. All the availabilities are the same for all the tickets of the queue.\n",
- "example": {
- "firstAvailability": "2022-01-03T09:42:08.484Z",
- "availabilities": {
- "fifo": [
- "2022-01-03T09:42:08.484Z"
], - "appointment": [
- "2022-01-03T09:42:08.484Z"
]
}
}, - "format": {
- "availabilities": {
- "fifo": [
- "ArrayOfDate"
], - "appointment": [
- "ArrayOfDate"
]
}, - "firstAvailability": "Date"
}, - "objects": {
- "ArrayOfDate": {
- "description": "A JS array of dates.",
- "path": "",
- "type": "dataResult"
}, - "Date": {
- "description": "A date in the string format (ISO-8601).",
- "path": "",
- "type": "dataResult"
}
}, - "type": "Simple"
}, - "extendedAttributes": {
- "phoneNumber": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^(\\\\+|00)([0-9]{1,2}\\\\-)?([0-9]{1,4})([0-9] ?){3,12}$"
}
}, - "civility": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^f|m$"
}
}, - "name": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^((?![\\\\.,\\\\|:\\\\!=%\\\\$€£\\\\(\\\\[\\\\]\\\\\\\"\\\\&@#\\\\\\\\\\\\`\\\\+\\\\-_\\\\?;§\\\\)]).){3,30}$"
}
}
}
}, - "appointmentTypes": {
- "appointmentTypeId3": {
- "appointmentTypeId": "appointmentTypeId3",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}
}, - "appointmentTypeId4": {
- "appointmentTypeId": "appointmentTypeId4",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}
}
}
}
}Some subplaces are organized into categories. Use this route to get the categories of a place in particular.
| subplaceId required | string The ID of the subplace. |
| key required | |
| langs | Array of strings Items Enum: "fr_FR" "en_US" "es_ES" "de_DE" "zh_CN" "zh_TW" "ja_JP" "ko_KR" "th_TH" Example: langs=fr_FR,en_US An array of locales, used to get the translated names of the data. |
| categoriesId | Array of strings An array of category IDs that will be used to filter the result. |
curl -X GET \ -H "Content-Type: application/json" \ https://api-booking.lineberty.net/v2/subplaces/{subplaceId}/categories?key=YOUR_API_KEY&langs=fr_FR,en_US
{- "categoryId1": {
- "categoryId": "categoryId1",
- "companyId": "companyId1",
- "placeId": "placeId1",
- "subPlaceId": "",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "nbMaxTickets": 2
}, - "categoryId2": {
- "categoryId": "categoryId2",
- "companyId": "companyId1",
- "placeId": "placeId1",
- "subPlaceId": "",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "nbMaxTickets": 1
}
}Use these routes to get the list of the queues, or a queue in particular and its configuration.
Use this route to get the list of the queues that are associated with the API Key, including language and position.
| key required | |
| lat | number Example: lat=48.1234 A latitude, at least 4 decimal digits. If both lat & lng are passed, the places will contain the distance field. |
| lng | number Example: lng=2.1234 A longitude, at least 4 decimal digits. If both lat & lng are passed, the places will contain the distance field. |
| langs | Array of strings Items Enum: "fr_FR" "en_US" "es_ES" "de_DE" "zh_CN" "zh_TW" "ja_JP" "ko_KR" "th_TH" Example: langs=fr_FR,en_US An array of locales, used to get the translated names of the data. |
| queuesId | Array of strings An array of queue IDs that will be used to filter the result. |
curl -X GET \ -H "Content-Type: application/json" \ https://api-booking.lineberty.net/v2/queues?key=YOUR_API_KEY&lat=48.1234&lng=2.1234&langs=fr_FR,en_US
{- "queueId1": {
- "queueId": "queueId1",
- "placeId": "placeId1",
- "companyId": "companyId1",
- "categoryId": "",
- "subPlaceId": "",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "fr_FR",
- "timezone": "Europe/Paris",
- "position": {
- "lat": 48.858471,
- "lng": 2.294434
}, - "distance": 2133,
- "config": {
- "bookingType": "FIRST_AVAILABLE_TIMESLOT",
- "distanceEligibility": 1500,
- "postponeEnabled": false,
- "cancelEnabled": true,
- "groupSizeLimit": {
- "min": 1,
- "max": 5
}, - "mustAskToSendSms": false,
- "mustAskToSendPush": false,
- "mustAskToSendMail": false,
- "phoneRequired": true,
- "mailRequired": true,
- "gpsRequired": true,
- "availabilityType": {
- "description": "Indicates which format will be returned for the queue on \"/queues/state\" and \"/queues/{queueId}/availabilities\", that is either FIFO or appointment. All the availabilities are the same for all the tickets of the queue. It is possible to add a \"detailsLevel = 10\" parameter in the GET request of a queue to obtain details on a format with its examples.\n",
- "example": {
- "firstAvailability": "2022-01-03T09:42:08.484Z",
- "availabilities": {
- "fifo": [
- "2022-01-03T09:42:08.484Z"
], - "appointment": [
- "2022-01-03T09:42:08.484Z"
]
}
}, - "format": {
- "availabilities": {
- "fifo": [
- "ArrayOfDate"
], - "appointment": [
- "ArrayOfDate"
]
}, - "firstAvailability": "Date"
}, - "objects": {
- "ArrayOfDate": {
- "description": "A JS array of dates.",
- "path": "",
- "type": "dataResult"
}, - "Date": {
- "description": "A date in the string format (ISO-8601).",
- "path": "",
- "type": "dataResult"
}
}, - "type": "Simple"
}, - "extendedAttributes": {
- "phoneNumber": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^(\\\\+|00)([0-9]{1,2}\\\\-)?([0-9]{1,4})([0-9] ?){3,12}$"
}
}, - "civility": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^f|m$"
}
}, - "name": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^((?![\\\\.,\\\\|:\\\\!=%\\\\$€£\\\\(\\\\[\\\\]\\\\\\\"\\\\&@#\\\\\\\\\\\\`\\\\+\\\\-_\\\\?;§\\\\)]).){3,30}$"
}
}
}
}, - "appointmentTypes": {
- "appointmentTypeId1": {
- "appointmentTypeId": "appointmentTypeId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}
}, - "appointmentTypeId2": {
- "appointmentTypeId": "appointmentTypeId2",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}
}
}
}, - "queueId2": {
- "queueId": "queueId2",
- "placeId": "placeId1",
- "companyId": "companyId1",
- "categoryId": "",
- "subPlaceId": "",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "fr_FR",
- "timezone": "Europe/Paris",
- "position": {
- "lat": 48.858471,
- "lng": 2.294434
}, - "distance": 2133,
- "config": {
- "bookingType": "FIRST_AVAILABLE_TIMESLOT",
- "distanceEligibility": 1500,
- "postponeEnabled": false,
- "cancelEnabled": true,
- "groupSizeLimit": {
- "min": 1,
- "max": 5
}, - "mustAskToSendSms": false,
- "mustAskToSendPush": false,
- "mustAskToSendMail": false,
- "phoneRequired": true,
- "mailRequired": true,
- "gpsRequired": true,
- "availabilityType": {
- "description": "Indicates which format (FIFO or appointment) is used for a specific queue. All the availabilities are the same for all the tickets of the queue.\n",
- "example": {
- "firstAvailability": "2022-01-03T09:42:08.484Z",
- "availabilities": {
- "fifo": [
- "2022-01-03T09:42:08.484Z"
], - "appointment": [
- "2022-01-03T09:42:08.484Z"
]
}
}, - "format": {
- "availabilities": {
- "fifo": [
- "ArrayOfDate"
], - "appointment": [
- "ArrayOfDate"
]
}, - "firstAvailability": "Date"
}, - "objects": {
- "ArrayOfDate": {
- "description": "A JS array of dates.",
- "path": "",
- "type": "dataResult"
}, - "Date": {
- "description": "A date in the string format (ISO-8601).",
- "path": "",
- "type": "dataResult"
}
}, - "type": "Simple"
}, - "extendedAttributes": {
- "phoneNumber": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^(\\\\+|00)([0-9]{1,2}\\\\-)?([0-9]{1,4})([0-9] ?){3,12}$"
}
}, - "civility": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^f|m$"
}
}, - "name": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^((?![\\\\.,\\\\|:\\\\!=%\\\\$€£\\\\(\\\\[\\\\]\\\\\\\"\\\\&@#\\\\\\\\\\\\`\\\\+\\\\-_\\\\?;§\\\\)]).){3,30}$"
}
}
}
}, - "appointmentTypes": {
- "appointmentTypeId3": {
- "appointmentTypeId": "appointmentTypeId3",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}
}, - "appointmentTypeId4": {
- "appointmentTypeId": "appointmentTypeId4",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}
}
}
}
}Use this route to get a queue in particular, using its ID. It includes the language and the GPS position.
| queueId required | string The ID of the queue. |
| key required | |
| lat | number Example: lat=48.1234 A latitude, at least 4 decimal digits. If both lat & lng are passed, the places will contain the distance field. |
| lng | number Example: lng=2.1234 A longitude, at least 4 decimal digits. If both lat & lng are passed, the places will contain the distance field. |
| langs | Array of strings Items Enum: "fr_FR" "en_US" "es_ES" "de_DE" "zh_CN" "zh_TW" "ja_JP" "ko_KR" "th_TH" Example: langs=fr_FR,en_US An array of locales, used to get the translated names of the data. |
| detailsLevel | number Example: detailsLevel=10 Field to activate more details in response, like availabilityType example. |
curl -X GET \ -H "Content-Type: application/json" \ https://api-booking.lineberty.net/v2/queues/{queueId}?key=YOUR_API_KEY&lat=48.1234&lng=2.1234&langs=fr_FR,en_US&detailsLevel=10
{- "queueId": "queueId1",
- "placeId": "placeId1",
- "companyId": "companyId1",
- "categoryId": "",
- "subPlaceId": "",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "fr_FR",
- "timezone": "Europe/Paris",
- "position": {
- "lat": 48.858471,
- "lng": 2.294434
}, - "distance": 2133,
- "config": {
- "bookingType": "FIRST_AVAILABLE_TIMESLOT",
- "distanceEligibility": 1500,
- "postponeEnabled": false,
- "cancelEnabled": true,
- "groupSizeLimit": {
- "min": 1,
- "max": 5
}, - "mustAskToSendSms": true,
- "mustAskToSendPush": true,
- "mustAskToSendMail": true,
- "phoneRequired": true,
- "mailRequired": true,
- "gpsRequired": true,
- "availabilityType": {
- "description": "Indicates which format (FIFO or appointment) is used for a specific queue. All the availabilities are the same for all the tickets of the queue.\n",
- "example": {
- "firstAvailability": "2022-01-03T09:42:08.484Z",
- "availabilities": {
- "fifo": [
- "2022-01-03T09:42:08.484Z"
], - "appointment": [
- "2022-01-03T09:42:08.484Z"
]
}
}, - "format": {
- "availabilities": {
- "fifo": [
- "ArrayOfDate"
], - "appointment": [
- "ArrayOfDate"
]
}, - "firstAvailability": "Date"
}, - "objects": {
- "ArrayOfDate": {
- "description": "A JS array of dates.",
- "path": "",
- "type": "dataResult"
}, - "Date": {
- "description": "A date in the string format (ISO-8601).",
- "path": "",
- "type": "dataResult"
}
}, - "type": "Simple"
}, - "extendedAttributes": {
- "phoneNumber": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^(\\\\+|00)([0-9]{1,2}\\\\-)?([0-9]{1,4})([0-9] ?){3,12}$"
}
}, - "civility": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^f|m$"
}
}, - "name": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^((?![\\\\.,\\\\|:\\\\!=%\\\\$€£\\\\(\\\\[\\\\]\\\\\\\"\\\\&@#\\\\\\\\\\\\`\\\\+\\\\-_\\\\?;§\\\\)]).){3,30}$"
}
}
}
}, - "appointmentTypes": {
- "appointmentTypeId1": {
- "appointmentTypeId": "appointmentTypeId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}
}, - "appointmentTypeId2": {
- "appointmentTypeId": "appointmentTypeId2",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}
}
}
}Use this route to get the configuration of a queue in particular, using its ID. It includes the booking type as well as the lower and upper limits of the group size.
| queueId required | string The ID of the queue. |
| key required |
curl -X GET \ -H "Content-Type: application/json" \ https://api-booking.lineberty.net/v2/queues/{queueId}/config?key=YOUR_API_KEY
{- "bookingType": "FIRST_AVAILABLE_TIMESLOT",
- "distanceEligibility": 1500,
- "postponeEnabled": false,
- "cancelEnabled": true,
- "groupSizeLimit": {
- "min": 1,
- "max": 5
}, - "mustAskToSendSms": false,
- "mustAskToSendMail": false,
- "mustAskToSendPush": false,
- "phoneRequired": true,
- "mailRequired": true,
- "gpsRequired": true,
- "availabilityType": {
- "description": "List of fields that can be added on the ticket. These fields are configurated by Lineberty on customer demand. They allow storing different types of information (the attributes) on each ticket then displaying them on the validation interface to provide more information to the operators. These extended attributes are configurated at the queue level, which means that every tickets of a same queue share the same attributes, but the values of these attributes are bound to one ticket only.\n",
- "example": {
- "firstAvailability": "2022-01-03T09:42:08.484Z",
- "availabilities": {
- "fifo": [
- "2022-01-03T09:42:08.484Z"
], - "appointment": [
- "2022-01-03T09:42:08.484Z"
]
}
}, - "format": {
- "availabilities": {
- "fifo": [
- "ArrayOfDate"
], - "appointment": [
- "ArrayOfDate"
]
}, - "firstAvailability": "Date"
}, - "objects": {
- "ArrayOfDate": {
- "description": "A JS array of dates.",
- "path": "",
- "type": "dataResult"
}, - "Date": {
- "description": "A date in the string format (ISO-8601).",
- "path": "",
- "type": "dataResult"
}
}, - "type": "Simple"
}, - "extendedAttributes": {
- "phoneNumber": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^(\\\\+|00)([0-9]{1,2}\\\\-)?([0-9]{1,4})([0-9] ?){3,12}$"
}
}, - "civility": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^f|m$"
}
}, - "name": {
- "editAllowed": false,
- "requiredOnBooking": false,
- "validation": {
- "type": "string",
- "pattern": "^((?![\\\\.,\\\\|:\\\\!=%\\\\$€£\\\\(\\\\[\\\\]\\\\\\\"\\\\&@#\\\\\\\\\\\\`\\\\+\\\\-_\\\\?;§\\\\)]).){3,30}$"
}
}
}
}Use this route to check the eligibility of a list of queues concerning the GPS, limitations on ticket, and the state of the queue.
| key required |
| Authorization | string Example: Bearer <USER_TOKEN> Adding the user's JWT token allows you to get a more specific response. You get the user's JWT token from /createUser. |
All the data to get information on the eligibility.
| queuesId required | Array of strings An array of queue IDs. |
object (GpsPosition) Position |
{- "queuesId": [
- "queueId1",
- "queueId2",
- "queueId3"
], - "position": {
- "lat": -37,
- "lng": 164
}
}{- "queueId1": {
- "queueId": "queueId1",
- "eligibility": false,
- "details": {
- "gpsRequiredButNotSend": false,
- "gpsEligibility": false,
- "maximumTicketInCategory": true,
- "ticketOnTheSameQueue": false,
- "queueIsFull": false,
- "queueIsClose": false,
- "queueIsOnPause": false
}
}, - "queueId2": {
- "queueId": "queueId2",
- "eligibility": true,
- "details": {
- "gpsRequiredButNotSend": false,
- "gpsEligibility": true,
- "maximumTicketInCategory": true,
- "ticketOnTheSameQueue": false,
- "queueIsFull": false,
- "queueIsClose": false,
- "queueIsOnPause": false
}
}
}Use this route to get information on the current state of the queues (whether open or closed, full, etc.).
| key required |
All the data to get state information.
| queuesId required | Array of strings An array of queue IDs (required). |
{- "queuesId": [
- "queueId1",
- "queueId2",
- "queueId3"
]
}{- "queueId1": {
- "queueId": "queueId1",
- "bookingIsOpened": true,
- "queueIsOpened": true,
- "queueIsFull": false,
- "queueIsFullForTheDay": true,
- "queueIsFullForFifo": false,
- "queueIsFullForAppointment": false,
- "pause": false,
- "queueLength": {
- "queueTicketLength": 3,
- "queuePeopleLength": 5,
- "byAppointmentType": {
- "appointmentTypeId1": {
- "queueTicketLength": 0,
- "queuePeopleLength": 0
}, - "appointmentTypeId2": {
- "queueTicketLength": 0,
- "queuePeopleLength": 0
}
}
}, - "allFirstAvailabilities": {
- "appointmentTypeId1": {
- "1": "2022-01-01T12:00:00.000Z",
- "2": "2022-01-01T12:00:00.000Z"
}, - "appointmentTypeId2": {
- "1": "2022-01-01T12:00:00.000Z",
- "2": "2022-01-01T12:00:00.000Z"
}
}, - "dayQueueTimeslot": [
- {
- "startTime": "2022-01-01T12:00:00.000Z",
- "endTime": "2022-01-01T12:00:05.000Z"
}, - {
- "startTime": "2022-01-01T12:00:00.000Z",
- "endTime": "2022-01-01T12:00:05.000Z"
}, - {
- "startTime": "2022-01-01T12:00:00.000Z",
- "endTime": "2022-01-01T12:00:05.000Z"
}
], - "nextQueueTimeslot": {
- "startTime": "2022-01-01T12:00:00.000Z",
- "endTime": "2022-01-01T12:00:05.000Z"
}
}, - "queueId2": {
- "queueId": "queueId2",
- "bookingIsOpened": true,
- "queueIsOpened": true,
- "queueIsFull": false,
- "queueIsFullForTheDay": true,
- "queueIsFullForFifo": false,
- "queueIsFullForAppointment": false,
- "pause": false,
- "queueLength": {
- "queueTicketLength": 0,
- "queuePeopleLength": 0,
- "byAppointmentType": {
- "appointmentTypeId3": {
- "queueTicketLength": 0,
- "queuePeopleLength": 0
}, - "appointmentTypeId4": {
- "queueTicketLength": 0,
- "queuePeopleLength": 0
}
}
}, - "allFirstAvailabilities": {
- "appointmentTypeId3": {
- "1": "2022-01-01T12:00:00.000Z",
- "2": "2022-01-01T12:00:00.000Z"
}, - "appointmentTypeId4": {
- "1": "2022-01-01T12:00:00.000Z",
- "2": "2022-01-01T12:00:00.000Z"
}
}, - "dayQueueTimeslot": [
- {
- "startTime": "2022-01-01T12:00:00.000Z",
- "endTime": "2022-01-01T12:00:05.000Z"
}, - {
- "startTime": "2022-01-01T12:00:00.000Z",
- "endTime": "2022-01-01T12:00:05.000Z"
}, - {
- "startTime": "2022-01-01T12:00:00.000Z",
- "endTime": "2022-01-01T12:00:05.000Z"
}
], - "nextQueueTimeslot": {
- "startTime": "2022-01-01T12:00:00.000Z",
- "endTime": "2022-01-01T12:00:05.000Z"
}
}
}Use this route to get real-time information on the current state of the queues (whether opened or closed, full, etc.) each time an event occurs.
| key required | |
| queuesId required | Array of strings An array of queue IDs. |
curl -X GET \ -H "Content-Type: application/json" \ https://api-booking.lineberty.net/v2/queues/state/sse?key=YOUR_API_KEY
Use this route to get the current state of the queues and their eligibility in one request.
| key required |
| Authorization | string Example: Bearer <USER_TOKEN> Adding the user's JWT token allows you to get a more specific response. You get the user's JWT token from /createUser. |
All the data needed to get information on the eligibility.
| queuesId required | Array of strings An array of queue IDs. |
object (GpsPosition) Position |
{- "queuesId": [
- "queueId1",
- "queueId2",
- "queueId3"
], - "position": {
- "lat": -37,
- "lng": 164
}
}{- "queueId1": {
- "queueId": "queueId1",
- "eligibility": {
- "queueId": "queueId1",
- "eligibility": false,
- "details": {
- "gpsRequiredButNotSend": false,
- "gpsEligibility": false,
- "maximumTicketInCategory": true,
- "ticketOnTheSameQueue": false,
- "queueIsFull": false,
- "queueIsClose": false,
- "queueIsOnPause": false
}
}, - "state": {
- "queueId": "queueId1",
- "bookingIsOpened": true,
- "queueIsOpened": true,
- "queueIsFull": false,
- "queueIsFullForTheDay": false,
- "queueIsFullForFifo": false,
- "queueIsFullForAppointment": false,
- "pause": false,
- "queueLength": {
- "queueTicketLength": 3,
- "queuePeopleLength": 5,
- "byAppointmentType": {
- "appointmentTypeId1": {
- "queueTicketLength": 0,
- "queuePeopleLength": 0
}, - "appointmentTypeId2": {
- "queueTicketLength": 0,
- "queuePeopleLength": 0
}
}
}, - "allFirstAvailabilities": {
- "appointmentTypeId1": {
- "1": "2022-01-01T12:00:00.000Z",
- "2": "2022-01-01T12:00:00.000Z"
}, - "appointmentTypeId2": {
- "1": "2022-01-01T12:00:00.000Z",
- "2": "2022-01-01T12:00:00.000Z"
}
}, - "dayQueueTimeslot": [
- {
- "startTime": "2022-01-01T12:00:00.000Z",
- "endTime": "2022-01-01T12:00:05.000Z"
}, - {
- "startTime": "2022-01-01T12:00:00.000Z",
- "endTime": "2022-01-01T12:00:05.000Z"
}, - {
- "startTime": "2022-01-01T12:00:00.000Z",
- "endTime": "2022-01-01T12:00:05.000Z"
}
], - "nextQueueTimeslot": {
- "startTime": "2022-01-01T12:00:00.000Z",
- "endTime": "2022-01-01T12:00:05.000Z"
}
}
}, - "queueId2": {
- "queueId": "queueId2",
- "eligibility": {
- "queueId": "queueId2",
- "eligibility": false,
- "details": {
- "gpsRequiredButNotSend": false,
- "gpsEligibility": false,
- "maximumTicketInCategory": true,
- "ticketOnTheSameQueue": false,
- "queueIsFull": false,
- "queueIsClose": false,
- "queueIsOnPause": false
}
}, - "state": {
- "queueId": "queueId2",
- "bookingIsOpened": true,
- "queueIsOpened": true,
- "queueIsFull": false,
- "queueIsFullForTheDay": true,
- "queueIsFullForFifo": false,
- "queueIsFullForAppointment": false,
- "pause": false,
- "queueLength": {
- "queueTicketLength": 0,
- "queuePeopleLength": 0,
- "byAppointmentType": {
- "appointmentTypeId3": {
- "queueTicketLength": 0,
- "queuePeopleLength": 0
}, - "appointmentTypeId4": {
- "queueTicketLength": 0,
- "queuePeopleLength": 0
}
}
}, - "allFirstAvailabilities": {
- "appointmentTypeId3": {
- "1": "2022-01-01T12:00:00.000Z",
- "2": "2022-01-01T12:00:00.000Z"
}, - "appointmentTypeId4": {
- "1": "2022-01-01T12:00:00.000Z",
- "2": "2022-01-01T12:00:00.000Z"
}
}, - "dayQueueTimeslot": [
- {
- "startTime": "2022-01-01T12:00:00.000Z",
- "endTime": "2022-01-01T12:00:05.000Z"
}, - {
- "startTime": "2022-01-01T12:00:00.000Z",
- "endTime": "2022-01-01T12:00:05.000Z"
}, - {
- "startTime": "2022-01-01T12:00:00.000Z",
- "endTime": "2022-01-01T12:00:05.000Z"
}
], - "nextQueueTimeslot": {
- "startTime": "2022-01-01T12:00:00.000Z",
- "endTime": "2022-01-01T12:00:05.000Z"
}
}
}
}Use this route to get real-time information on the current state of the queues (whether opened or closed, full, etc.) each time an event occurs.
| placeId required | string The ID of the place. |
| key required |
curl -X GET \ -H "Content-Type: application/json" \ https://api-booking.lineberty.net/v2/places/{placeId}/queuesStates/sse?key=YOUR_API_KEY
Use this route to book a ticket for a distant day by getting the list of days having availabilities. It lists all the days inside a time range that have at least one availability, for a given queue.
| queueId required | string The ID of the queue. |
| key required | |
| start | string Example: start=2022-01-01T12:00:00.000Z The start date of the period (ISO-8601) to filter. Leave empty to not restrict the period. |
| end | string Example: end=2022-01-02T12:00:00.000Z The end date of the period (ISO-8601) to filter. Leave empty to restrict the period or to use the latest available date. |
curl -X GET \ -H "Content-Type: application/json" \ https://api-booking.lineberty.net/v2/queues/{queueId}/daysWithAvailabilities?key=YOUR_API_KEY&start=2022-01-01T12:00:00.000Z&end=2022-01-02T12:00:00.000Z
{- "2022/01/22": {
- "hasFifo": true,
- "hasAppointment": true,
- "queueLength": {
- "queueTicketLength": 0,
- "queuePeopleLength": 0,
- "byAppointmentType": {
- "appointmentTypeId1": {
- "queueTicketLength": 0,
- "queuePeopleLength": 0
}, - "appointmentTypeId2": {
- "queueTicketLength": 0,
- "queuePeopleLength": 0
}
}
}
}, - "2022/01/23": {
- "hasFifo": false,
- "hasAppointment": true,
- "queueLength": {
- "queueTicketLength": 0,
- "queuePeopleLength": 0,
- "byAppointmentType": {
- "appointmentTypeId1": {
- "queueTicketLength": 0,
- "queuePeopleLength": 0
}, - "appointmentTypeId2": {
- "queueTicketLength": 0,
- "queuePeopleLength": 0
}
}
}
}
}Use this route to get the availabilities for a queue.
| queueId required | string The ID of the queue. |
| key required | |
| start | string Example: start=2022-01-01T12:00:00.000Z The start date of the period (ISO-8601) to filter. Leave empty to not restrict the period. |
| end | string Example: end=2022-01-02T12:00:00.000Z The end date of the period (ISO-8601) to filter. Leave empty to restrict the period or to use the latest available date. |
curl -X GET \ -H "Content-Type: application/json" \ https://api-booking.lineberty.net/v2/queues/{queueId}/availabilities?key=YOUR_API_KEY&start=2022-01-01T12:00:00.000Z&end=2022-01-02T12:00:00.000Z
{- "fifo": [
- "2022-01-01T12:00:00.000Z"
], - "appointment": [
- "2022-01-01T12:00:00.000Z",
- "2022-01-01T12:00:10.000Z"
]
}Use this route to get real-time information on the availabilities of a queue, each time an event occurs.
| queueId required | string The ID of the queue. |
| key required | |
| start | string Example: start=2022-01-01T12:00:00.000Z The start date of the period (ISO-8601) to filter. Leave empty to not restrict the period. |
| end | string Example: end=2022-01-02T12:00:00.000Z The end date of the period (ISO-8601) to filter. Leave empty to restrict the period or to use the latest available date. |
curl -X GET \ -H "Content-Type: application/json" \ https://api-booking.lineberty.net/v2/queues/{queueId}/availabilities/sse?key=YOUR_API_KEY&start=2022-01-01T12:00:00.000Z&end=2022-01-02T12:00:00.000Z
Use these routes to get the list of the counters, and to increment or decrement the value of the counter.
Use this route to get all the counters that are associated with the API key.
| key required | |
| langs | Array of strings Items Enum: "fr_FR" "en_US" "es_ES" "de_DE" "zh_CN" "zh_TW" "ja_JP" "ko_KR" "th_TH" Example: langs=fr_FR,en_US An array of locales, used to get the translated names of the data. |
| countersId | Array of strings An array of counter IDs (actually, queue IDs) that will be used to filter the result. |
curl -X GET \ -H "Content-Type: application/json" \ https://api-booking.lineberty.net/v2/counters?key=YOUR_API_KEY&langs=fr_FR,en_US
{- "counterId1": {
- "counterId": "counterId1",
- "placeId": "placeId1",
- "companyId": "companyId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "timezone": "Europe/Paris",
- "infos": {
- "value": 2,
- "nextRestart": "2022-01-01T12:00:00.000Z"
}
}, - "counterId2": {
- "counterId": "counterId2",
- "placeId": "placeId1",
- "companyId": "companyId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "timezone": "Europe/Paris",
- "infos": {
- "value": 3,
- "nextRestart": "2022-01-01T12:00:00.000Z"
}
}
}Use this route to get all the counters that are incremented/decremented each time a new ticket is booked, done or canceled.
| key required | |
| countersId required | Array of strings An array of counter IDs (which are queue IDs) is required. |
| langs | Array of strings Items Enum: "fr_FR" "en_US" "es_ES" "de_DE" "zh_CN" "zh_TW" "ja_JP" "ko_KR" "th_TH" Example: langs=fr_FR,en_US An array of locales, used to get the translated names of the data. |
curl -X GET \ -H "Content-Type: application/json" \ https://api-booking.lineberty.net/v2/counters/sse?key=YOUR_API_KEY&langs=fr_FR,en_US
Use this route to get a counter in particular, using its counter ID.
| counterId required | string The ID of the counter. |
| key required | |
| langs | Array of strings Items Enum: "fr_FR" "en_US" "es_ES" "de_DE" "zh_CN" "zh_TW" "ja_JP" "ko_KR" "th_TH" Example: langs=fr_FR,en_US An array of locales, used to get the translated names of the data. |
curl -X GET \ -H "Content-Type: application/json" \ https://api-booking.lineberty.net/v2/counters/{counterId}?key=YOUR_API_KEY&langs=fr_FR,en_US
{- "counterId": "counterId1",
- "placeId": "placeId1",
- "companyId": "companyId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "timezone": "Europe/Paris",
- "infos": {
- "value": 2,
- "nextRestart": "2022-01-01T12:00:00.000Z"
}
}Use this route to increment the counter value, using its counter ID.
| counterId required | string The ID of the counter. |
| Authorization required |
The incremental value.
| incrementValue required | number The value to add to the counter. Must be a positive number. |
{- "incrementValue": 2
}{- "counterId": "counterId1",
- "placeId": "placeId1",
- "companyId": "companyId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "language": "en_US",
- "timezone": "Europe/Paris",
- "infos": {
- "value": 2,
- "nextRestart": "2022-01-01T12:00:00.000Z"
}
}Use this route to book a ticket for a user with her/his JWT token. See The User Documentation for detailed information on the booking process.
| queueId required | string The ID of the queue. |
| key required |
| Authorization required |
All the data needed to book a ticket.
| appointmentTypeId | string The ID of the appointmentType. This is optional if there is only one possible appointment type. |
| groupSize | number The number of people using the same ticket. This is optional if there is only one possible group size. |
| bookedFor | string (IsoDate) A date (ISO-8601). |
| lang | string The user's language in i18N code. |
object Additional user information such as email, phone, and notification options. | |
object (GpsPosition) Position | |
| source | string The type of device used to make the request, e.g. Android or IOS. Put any value you want to do statistical analyzes. |
{- "appointmentTypeId": "appointmentTypeId1",
- "groupSize": 1,
- "bookedFor": "2022-01-01T12:00:00.000Z",
- "lang": "en_US",
- "userData": {
- "sendClientMail": true,
- "sendClientPush": true,
- "sendClientSms": true,
- "phone": "1(800)123-4567",
- "mail": "contact@lineberty.com",
- "pushId": "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1"
}, - "position": {
- "lat": 48.858471,
- "lng": 2.294434
}, - "source": "MOBILE_ANDROID"
}{- "ticketId": "tiketId1",
- "label": "137",
- "queue": {
- "id": "queueId1",
- "name": "queue1"
}, - "place": {
- "id": "placeId1",
- "name": "place1"
}, - "userId": "userId1",
- "appointmentType": {
- "id": "appointmentTypeId1",
- "name": "appointmentType1"
}, - "state": 0,
- "isAnAppointment": false,
- "groupSize": 1,
- "duration": 600000,
- "ticketPosition": {
- "global": {
- "nbPeople": 0,
- "nbTickets": 0
}, - "endpoint": {
- "nbPeople": 0,
- "nbTickets": 0
}
}, - "recalledCount": 0,
- "lang": "en_US",
- "timeline": {
- "bookedAt": "2022-01-01T12:00:00.000Z",
- "inToConfirmAt": null,
- "initialBookedFor": "2022-01-01T12:00:05.000Z",
- "estimatedFor": "2022-01-01T12:00:05.000Z",
- "alertedAt": null,
- "calledAt": null,
- "inProgressAt": null,
- "estimatedDoneAt": "2022-01-01T12:00:06.000Z",
- "onHoldAt": null,
- "noShowAt": null,
- "cancelledAt": null,
- "doneAt": null
}, - "extraInfos": {
- "rate": {
- "score": 0,
- "comment": "",
- "ratedAt": null
}, - "queueDistance": 2133,
- "sendClientPush": true,
- "sendClientSms": true,
- "sendClientMail": true
}, - "endpoint": {
- "id": null,
- "name": ""
}, - "extendedAttributes": {
- "mail": "contact@lineberty.com",
- "phone": "12025550112",
- "userPosition": {
- "lat": 48.858471,
- "lng": 2.294434
}
}
}Use this route to book a ticket using the user's JWT token and get real-time information on her/his progress in the booking process. See The User Documentation for detailed information on the booking process.
| queueId required | string The ID of the queue. |
| key required | |
| appointmentTypeId | string The ID of appointmentType. |
| groupSize | number The number of people using the same ticket. |
| bookedFor | string The date of the appointment (ISO-8601). Leave empty to use the next time. slot. |
| lang | string The user's language (code I18N). |
| userData_phone | string The user's phone number. |
| userData_mail | string The user's email address. |
| userData_pushId | string A push ID that is required to send push notifications to the user. |
| userData_sendClientPush | string If 'true', then indicates that Lineberty must notify the user by push, using the pushID. |
| userData_sendClientMail | string If 'true', then indicates that Lineberty must send an email to the user. |
| userData_sendClientSms | string If 'true', then indicates that Lineberty must send an SMS to the user. |
| position_lat | string The latitude of the GPS position of the user. |
| position_lng | string The longitude of the GPS position of the user. |
| source | string The type of device used to make the request, e.g. Android or IOS. Put any value you want to do statistical analyzes. |
| ticketType | string The type of ticket booked in the request, e.g. SMS, email, or other. Put any value you want to do statistical analyzes. |
| Authorization required |
curl -X GET \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <USER_TOKEN>" \ https://api-booking.lineberty.net/v2/queues/{queueId}/ticket/sse?key=YOUR_API_KEY
Use this route to get all the tickets of the current user, since the user's creation date. Thus, this includes both the current and the old tickets.
| key required | |
| page | number >= 1 Default: 1 Example: page=1 The page number needed. 1 by default because there is at least one page. |
| pageSize | number [ 1 .. 50 ] Default: 20 Example: pageSize=20 The number of items to return for each page. By default, a page contains 20 items, at least 1 and up to 50. |
| Authorization required |
curl -X GET \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <USER_TOKEN>" \ https://api-booking.lineberty.net/v2/user/tickets?key=YOUR_API_KEY&page=1&pageSize=20
{- "totalCount": 2,
- "page": 1,
- "pageSize": 20,
- "tickets": [
- {
- "ticketId": "tiketId1",
- "label": "137",
- "queue": {
- "id": "queueId1",
- "name": "queue1"
}, - "place": {
- "id": "placeId1",
- "name": "place1"
}, - "userId": "userId1",
- "appointmentType": {
- "id": "appointmentTypeId1",
- "name": "appointmentType1"
}, - "state": 0,
- "isAnAppointment": false,
- "groupSize": 1,
- "duration": 600000,
- "ticketPosition": {
- "global": {
- "nbPeople": 0,
- "nbTickets": 0
}, - "endpoint": {
- "nbPeople": 0,
- "nbTickets": 0
}
}, - "recalledCount": 0,
- "lang": "en_US",
- "timeline": {
- "bookedAt": "2022-01-01T12:00:00.000Z",
- "inToConfirmAt": null,
- "initialBookedFor": "2022-01-01T12:00:05.000Z",
- "estimatedFor": "2022-01-01T12:00:05.000Z",
- "alertedAt": null,
- "calledAt": null,
- "inProgressAt": null,
- "estimatedDoneAt": "2022-01-01T12:00:06.000Z",
- "onHoldAt": null,
- "noShowAt": null,
- "cancelledAt": null,
- "doneAt": null
}, - "extraInfos": {
- "rate": {
- "score": 5,
- "comment": "It was great!",
- "ratedAt": null
}, - "queueDistance": 2133,
- "sendClientPush": true,
- "sendClientSms": true,
- "sendClientMail": true
}, - "endpoint": {
- "id": null,
- "name": ""
}, - "extendedAttributes": {
- "mail": "contact@lineberty.com",
- "phone": "12025550112",
- "userPosition": {
- "lat": 48.858471,
- "lng": 2.294434
}
}
}, - {
- "ticketId": "tiketId2",
- "label": "29",
- "queue": {
- "id": "queueId2",
- "name": "queue2"
}, - "place": {
- "id": "placeId2",
- "name": "place2"
}, - "userId": "userId1",
- "appointmentType": {
- "id": "appointmentTypeId2",
- "name": "appointmentType2"
}, - "state": 0,
- "isAnAppointment": true,
- "groupSize": 3,
- "duration": 600000,
- "ticketPosition": {
- "global": {
- "nbPeople": 0,
- "nbTickets": 0
}, - "endpoint": {
- "nbPeople": 0,
- "nbTickets": 0
}
}, - "recalledCount": 0,
- "lang": "en_US",
- "timeline": {
- "bookedAt": "2022-01-01T12:00:00.000Z",
- "inToConfirmAt": null,
- "initialBookedFor": "2022-01-01T12:00:05.000Z",
- "estimatedFor": "2022-01-01T12:00:05.000Z",
- "alertedAt": null,
- "calledAt": null,
- "inProgressAt": null,
- "estimatedDoneAt": "2022-01-01T12:00:06.000Z",
- "onHoldAt": null,
- "noShowAt": null,
- "cancelledAt": null,
- "doneAt": null
}, - "extraInfos": {
- "rate": {
- "score": 5,
- "comment": "Very nice moment!",
- "ratedAt": null
}, - "queueDistance": 2133,
- "sendClientPush": true,
- "sendClientSms": true,
- "sendClientMail": true
}, - "endpoint": {
- "id": null,
- "name": ""
}, - "extendedAttributes": {
- "mail": "contact@lineberty.com",
- "phone": "12025550112",
- "userPosition": {
- "lat": 48.858471,
- "lng": 2.294434
}
}
}
]
}Use this route to get the ticket associated to code pass in params
| key required | |
| code required | string The unique code to the ticket |
| Authorization required |
curl -X GET \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <USER_TOKEN>" \ https://api-booking.lineberty.net/v2/user/tickets/byCode?key=YOUR_API_KEY
{- "ticketId": "tiketId1",
- "label": "137",
- "queue": {
- "id": "queueId1",
- "name": "queue1"
}, - "place": {
- "id": "placeId1",
- "name": "place1"
}, - "userId": "userId1",
- "appointmentType": {
- "id": "appointmentTypeId1",
- "name": "appointmentType1"
}, - "state": 0,
- "isAnAppointment": false,
- "groupSize": 1,
- "duration": 600000,
- "ticketPosition": {
- "global": {
- "nbPeople": 0,
- "nbTickets": 0
}, - "endpoint": {
- "nbPeople": 0,
- "nbTickets": 0
}
}, - "recalledCount": 0,
- "lang": "en_US",
- "timeline": {
- "bookedAt": "2022-01-01T12:00:00.000Z",
- "inToConfirmAt": null,
- "initialBookedFor": "2022-01-01T12:00:05.000Z",
- "estimatedFor": "2022-01-01T12:00:05.000Z",
- "alertedAt": null,
- "calledAt": null,
- "inProgressAt": null,
- "estimatedDoneAt": "2022-01-01T12:00:06.000Z",
- "onHoldAt": null,
- "noShowAt": null,
- "cancelledAt": null,
- "doneAt": null
}, - "extraInfos": {
- "rate": {
- "score": 0,
- "comment": "",
- "ratedAt": null
}, - "queueDistance": 2133,
- "sendClientPush": true,
- "sendClientSms": true,
- "sendClientMail": true
}, - "endpoint": {
- "id": null,
- "name": ""
}, - "extendedAttributes": {
- "mail": "contact@lineberty.com",
- "phone": "12025550112",
- "userPosition": {
- "lat": 48.858471,
- "lng": 2.294434
}
}
}Use this route to get real-time information on all the tickets of the current user each time an event occurs. All the tickets since the user's creation date are taken into account, including the current and the old tickets. tickets.
| key required | |
| page | number >= 1 Default: 1 Example: page=1 The page number needed. 1 by default because there is at least one page. |
| pageSize | number [ 1 .. 50 ] Default: 20 Example: pageSize=20 The number of items to return for each page. By default, a page contains 20 items, at least 1 and up to 50. |
| Authorization required |
curl -X GET \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <USER_TOKEN>" \ https://api-booking.lineberty.net/v2/user/tickets/sse?key=YOUR_API_KEY&page=1&pageSize=20
Use this route to get all the current tickets of the user, that are not done or canceled.
| key required |
| Authorization required |
curl -X GET \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <USER_TOKEN>" \ https://api-booking.lineberty.net/v2/user/tickets/currents?key=YOUR_API_KEY
[- {
- "ticketId": "tiketId1",
- "label": "137",
- "queue": {
- "id": "queueId1",
- "name": "queue1"
}, - "place": {
- "id": "placeId1",
- "name": "place1"
}, - "userId": "userId1",
- "appointmentType": {
- "id": "appointmentTypeId1",
- "name": "appointmentType1"
}, - "state": 0,
- "isAnAppointment": false,
- "groupSize": 1,
- "duration": 600000,
- "ticketPosition": {
- "global": {
- "nbPeople": 0,
- "nbTickets": 0
}, - "endpoint": {
- "nbPeople": 0,
- "nbTickets": 0
}
}, - "recalledCount": 0,
- "lang": "en_US",
- "timeline": {
- "bookedAt": "2022-01-01T12:00:00.000Z",
- "inToConfirmAt": null,
- "initialBookedFor": "2022-01-01T12:00:05.000Z",
- "estimatedFor": "2022-01-01T12:00:05.000Z",
- "alertedAt": null,
- "calledAt": null,
- "inProgressAt": null,
- "estimatedDoneAt": "2022-01-01T12:00:06.000Z",
- "onHoldAt": null,
- "noShowAt": null,
- "cancelledAt": null,
- "doneAt": null
}, - "extraInfos": {
- "rate": {
- "score": 5,
- "comment": "It was great!",
- "ratedAt": null
}, - "queueDistance": 2133,
- "sendClientPush": true,
- "sendClientSms": true,
- "sendClientMail": true
}, - "endpoint": {
- "id": null,
- "name": ""
}, - "extendedAttributes": {
- "mail": "contact@lineberty.com",
- "phone": "12025550112",
- "userPosition": {
- "lat": 48.858471,
- "lng": 2.294434
}
}
}, - {
- "ticketId": "tiketId2",
- "label": "29",
- "queue": {
- "id": "queueId2",
- "name": "queue2"
}, - "place": {
- "id": "placeId2",
- "name": "place2"
}, - "userId": "userId1",
- "appointmentType": {
- "id": "appointmentTypeId2",
- "name": "appointmentType2"
}, - "state": 0,
- "isAnAppointment": true,
- "groupSize": 3,
- "duration": 600000,
- "ticketPosition": {
- "global": {
- "nbPeople": 0,
- "nbTickets": 0
}, - "endpoint": {
- "nbPeople": 0,
- "nbTickets": 0
}
}, - "recalledCount": 0,
- "lang": "en_US",
- "timeline": {
- "bookedAt": "2022-01-01T12:00:00.000Z",
- "inToConfirmAt": null,
- "initialBookedFor": "2022-01-01T12:00:05.000Z",
- "estimatedFor": "2022-01-01T12:00:05.000Z",
- "alertedAt": null,
- "calledAt": null,
- "inProgressAt": null,
- "estimatedDoneAt": "2022-01-01T12:00:06.000Z",
- "onHoldAt": null,
- "noShowAt": null,
- "cancelledAt": null,
- "doneAt": null
}, - "extraInfos": {
- "rate": {
- "score": 0,
- "comment": "",
- "ratedAt": null
}, - "queueDistance": 2133,
- "sendClientPush": true,
- "sendClientSms": true,
- "sendClientMail": true
}, - "endpoint": {
- "id": null,
- "name": ""
}, - "extendedAttributes": {
- "mail": "contact@lineberty.com",
- "phone": "12025550112",
- "userPosition": {
- "lat": 48.858471,
- "lng": 2.294434
}
}
}
]Use this route to get all the old tickets of the user, i.e. those that are done or canceled.
| key required | |
| page | number >= 1 Default: 1 Example: page=1 The page number needed. 1 by default because there is at least one page. |
| pageSize | number [ 1 .. 50 ] Default: 20 Example: pageSize=20 The number of items to return for each page. By default, a page contains 20 items, at least 1 and up to 50. |
| Authorization required |
curl -X GET \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <USER_TOKEN>" \ https://api-booking.lineberty.net/v2/user/tickets/history?key=YOUR_API_KEY&page=1&pageSize=20
{- "totalCount": 2,
- "page": 1,
- "pageSize": 20,
- "tickets": [
- {
- "ticketId": "tiketId1",
- "label": "137",
- "queue": {
- "id": "queueId1",
- "name": "queue1"
}, - "place": {
- "id": "placeId1",
- "name": "place1"
}, - "userId": "userId1",
- "appointmentType": {
- "id": "appointmentTypeId1",
- "name": "appointmentType1"
}, - "state": 0,
- "isAnAppointment": false,
- "groupSize": 1,
- "duration": 600000,
- "ticketPosition": {
- "global": {
- "nbPeople": 0,
- "nbTickets": 0
}, - "endpoint": {
- "nbPeople": 0,
- "nbTickets": 0
}
}, - "recalledCount": 0,
- "lang": "en_US",
- "timeline": {
- "bookedAt": "2022-01-01T12:00:00.000Z",
- "inToConfirmAt": null,
- "initialBookedFor": "2022-01-01T12:00:05.000Z",
- "estimatedFor": "2022-01-01T12:00:05.000Z",
- "alertedAt": null,
- "calledAt": null,
- "inProgressAt": null,
- "estimatedDoneAt": "2022-01-01T12:00:06.000Z",
- "onHoldAt": null,
- "noShowAt": null,
- "cancelledAt": null,
- "doneAt": null
}, - "extraInfos": {
- "rate": {
- "score": 5,
- "comment": "It was great!",
- "ratedAt": null
}, - "queueDistance": 2133,
- "sendClientPush": true,
- "sendClientSms": true,
- "sendClientMail": true
}, - "endpoint": {
- "id": null,
- "name": ""
}, - "extendedAttributes": {
- "mail": "contact@lineberty.com",
- "phone": "12025550112",
- "userPosition": {
- "lat": 48.858471,
- "lng": 2.294434
}
}
}, - {
- "ticketId": "tiketId2",
- "label": "29",
- "queue": {
- "id": "queueId2",
- "name": "queue2"
}, - "place": {
- "id": "placeId2",
- "name": "place2"
}, - "userId": "userId1",
- "appointmentType": {
- "id": "appointmentTypeId2",
- "name": "appointmentType2"
}, - "state": 0,
- "isAnAppointment": true,
- "groupSize": 3,
- "duration": 600000,
- "ticketPosition": {
- "global": {
- "nbPeople": 0,
- "nbTickets": 0
}, - "endpoint": {
- "nbPeople": 0,
- "nbTickets": 0
}
}, - "recalledCount": 0,
- "lang": "en_US",
- "timeline": {
- "bookedAt": "2022-01-01T12:00:00.000Z",
- "inToConfirmAt": null,
- "initialBookedFor": "2022-01-01T12:00:05.000Z",
- "estimatedFor": "2022-01-01T12:00:05.000Z",
- "alertedAt": null,
- "calledAt": null,
- "inProgressAt": null,
- "estimatedDoneAt": "2022-01-01T12:00:06.000Z",
- "onHoldAt": null,
- "noShowAt": null,
- "cancelledAt": null,
- "doneAt": null
}, - "extraInfos": {
- "rate": {
- "score": 5,
- "comment": "Very nice moment!",
- "ratedAt": null
}, - "queueDistance": 2133,
- "sendClientPush": true,
- "sendClientSms": true,
- "sendClientMail": true
}, - "endpoint": {
- "id": null,
- "name": ""
}, - "extendedAttributes": {
- "mail": "contact@lineberty.com",
- "phone": "12025550112",
- "userPosition": {
- "lat": 48.858471,
- "lng": 2.294434
}
}
}
]
}Use this route to cancel the ticket of the current user, using the ticket ID.
| ticketId required | string The ID of the ticket that you want to postpone. |
| key required |
| Authorization required |
curl -X PUT \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <USER_TOKEN>" \ https://api-booking.lineberty.net/v2/user/tickets/{ticketId}/cancel?key=YOUR_API_KEY
{- "ticketId": "tiketId1",
- "label": "137",
- "queue": {
- "id": "queueId1",
- "name": "queue1"
}, - "place": {
- "id": "placeId1",
- "name": "place1"
}, - "userId": "userId1",
- "appointmentType": {
- "id": "appointmentTypeId1",
- "name": "appointmentType1"
}, - "state": 0,
- "isAnAppointment": false,
- "groupSize": 1,
- "duration": 600000,
- "ticketPosition": {
- "global": {
- "nbPeople": 0,
- "nbTickets": 0
}, - "endpoint": {
- "nbPeople": 0,
- "nbTickets": 0
}
}, - "recalledCount": 0,
- "lang": "en_US",
- "timeline": {
- "bookedAt": "2022-01-01T12:00:00.000Z",
- "inToConfirmAt": null,
- "initialBookedFor": "2022-01-01T12:00:05.000Z",
- "estimatedFor": "2022-01-01T12:00:05.000Z",
- "alertedAt": null,
- "calledAt": null,
- "inProgressAt": null,
- "estimatedDoneAt": "2022-01-01T12:00:06.000Z",
- "onHoldAt": null,
- "noShowAt": null,
- "cancelledAt": null,
- "doneAt": null
}, - "extraInfos": {
- "rate": {
- "score": 0,
- "comment": "",
- "ratedAt": null
}, - "queueDistance": 2133,
- "sendClientPush": true,
- "sendClientSms": true,
- "sendClientMail": true
}, - "endpoint": {
- "id": null,
- "name": ""
}, - "extendedAttributes": {
- "mail": "contact@lineberty.com",
- "phone": "12025550112",
- "userPosition": {
- "lat": 48.858471,
- "lng": 2.294434
}
}
}Use this route to postpone the ticket of the current user, using the ticket ID.
| ticketId required | string The ID of the ticket that you want to postpone. |
| key required |
| Authorization required |
The timestamp expressed in milliseconds. If you do not want to set a timestamp, enter -1 to take the next available time slot. For FIFO queue the only available value is -1.
| postponeTo | string (IsoDate) A date (ISO-8601). |
{- "postponeTo": "2022-01-01T12:00:00.000Z"
}{- "ticketId": "tiketId1",
- "label": "137",
- "queue": {
- "id": "queueId1",
- "name": "queue1"
}, - "place": {
- "id": "placeId1",
- "name": "place1"
}, - "userId": "userId1",
- "appointmentType": {
- "id": "appointmentTypeId1",
- "name": "appointmentType1"
}, - "state": 0,
- "isAnAppointment": false,
- "groupSize": 1,
- "duration": 600000,
- "ticketPosition": {
- "global": {
- "nbPeople": 0,
- "nbTickets": 0
}, - "endpoint": {
- "nbPeople": 0,
- "nbTickets": 0
}
}, - "recalledCount": 0,
- "lang": "en_US",
- "timeline": {
- "bookedAt": "2022-01-01T12:00:00.000Z",
- "inToConfirmAt": null,
- "initialBookedFor": "2022-01-01T12:00:05.000Z",
- "estimatedFor": "2022-01-01T12:00:05.000Z",
- "alertedAt": null,
- "calledAt": null,
- "inProgressAt": null,
- "estimatedDoneAt": "2022-01-01T12:00:06.000Z",
- "onHoldAt": null,
- "noShowAt": null,
- "cancelledAt": null,
- "doneAt": null
}, - "extraInfos": {
- "rate": {
- "score": 0,
- "comment": "",
- "ratedAt": null
}, - "queueDistance": 2133,
- "sendClientPush": true,
- "sendClientSms": true,
- "sendClientMail": true
}, - "endpoint": {
- "id": null,
- "name": ""
}, - "extendedAttributes": {
- "mail": "contact@lineberty.com",
- "phone": "12025550112",
- "userPosition": {
- "lat": 48.858471,
- "lng": 2.294434
}
}
}Use this route to postpone the ticket of the current user in real-time, using the ticket ID.
| ticketId required | string The ID of the ticket that you want to postpone. |
| key required |
| Authorization required |
The timestamp expressed in milliseconds. If you do not want to set a timestamp, enter -1 to take the next available time slot. For FIFO queue the only available value is -1.
| postponeTo | string (IsoDate) A date (ISO-8601). |
{- "postponeTo": "2022-01-01T12:00:00.000Z"
}Use this route to allow the current user to rate her/his visit by putting a comment (up to 1000 characters) and a score up to 5 on her/his ticket.
| ticketId required | string The ID of the ticket that you want to postpone. |
| key required |
| Authorization required |
All the data required to rate the visit.
| comment | string The text of the comment left by the user up to 1000 caracters. Can be empty. |
| score | number [ 0 .. 5 ] The rate between 0 (included) and 5 (included). 0 is the value if the user does not want to give a score. In this case, the value will not be used to calculate the average. |
{- "comment": "It was a great moment!",
- "score": 5
}{- "ticketId": "tiketId1",
- "label": "137",
- "queue": {
- "id": "queueId1",
- "name": "queue1"
}, - "place": {
- "id": "placeId1",
- "name": "place1"
}, - "userId": "userId1",
- "appointmentType": {
- "id": "appointmentTypeId1",
- "name": "appointmentType1"
}, - "state": 0,
- "isAnAppointment": false,
- "groupSize": 1,
- "duration": 600000,
- "ticketPosition": {
- "global": {
- "nbPeople": 0,
- "nbTickets": 0
}, - "endpoint": {
- "nbPeople": 0,
- "nbTickets": 0
}
}, - "recalledCount": 0,
- "lang": "en_US",
- "timeline": {
- "bookedAt": "2022-01-01T12:00:00.000Z",
- "inToConfirmAt": null,
- "initialBookedFor": "2022-01-01T12:00:05.000Z",
- "estimatedFor": "2022-01-01T12:00:05.000Z",
- "alertedAt": null,
- "calledAt": null,
- "inProgressAt": null,
- "estimatedDoneAt": "2022-01-01T12:00:06.000Z",
- "onHoldAt": null,
- "noShowAt": null,
- "cancelledAt": null,
- "doneAt": null
}, - "extraInfos": {
- "rate": {
- "score": 0,
- "comment": "",
- "ratedAt": null
}, - "queueDistance": 2133,
- "sendClientPush": true,
- "sendClientSms": true,
- "sendClientMail": true
}, - "endpoint": {
- "id": null,
- "name": ""
}, - "extendedAttributes": {
- "mail": "contact@lineberty.com",
- "phone": "12025550112",
- "userPosition": {
- "lat": 48.858471,
- "lng": 2.294434
}
}
}Use this route to get the list of all the endpoints of the queue.
| queueId required | string The ID of the queue. |
| key required |
curl -X GET \ -H "Content-Type: application/json" \ https://api-booking.lineberty.net/v2/queues/{queueId}/endpoints?key=YOUR_API_KEY
{- "endpointId1": {
- "endpointId": "endpointId1",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "state": 0
}, - "endpointId2": {
- "endpointId": "endpointId2",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "state": 200
}, - "endpointId3": {
- "endpointId": "endpointId3",
- "name": {
- "en_US": "name_EN",
- "fr_FR": "name_FR"
}, - "state": 200
}
}Use this route to subscribe to the Lineberty notification service and receive notifications about ticket updates.
| key required |
| Authorization required |
All the data required to subscribe.
| pushId required | string The push ID required to notify the user by push. |
{- "pushId": "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1"
}Use this route to unsubscribe from the Lineberty notification service. You will no longer receive notifications about ticket updates.
| key required |
| Authorization required |
All the data required to unsubscribe.
| pushId required | string The push ID required to notify the user by push. |
{- "pushId": "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1"
}{- "error": "USER_ID_NOT_FOUND",
- "error_description": "string",
- "error_uri": "string"
}