Retrieve booking IDs
A booking ID is a unique identifier for a specific booking. The Availability endpoint for round-robin events and all Bookings endpoints require both a configuration ID and a booking ID. To use a single string to make the frontend code cleaner, Nylas Scheduler creates a booking reference by combining the associated configuration ID and the booking ID, along with a salt. You can find the booking reference in the URL of the email notification sent at the time of booking. For example, https://book.nylas.com/us/cancel/FMfcgzGxSlVHnZBcBwnfPWvtvjZjpqbZ.
In this tutorial, you’ll learn how to decode the corresponding booking reference to retrieve a booking ID.
UUID format
Configuration IDs and booking IDs are in UUID format. The standard UUID format is:
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxxxxxxxxxx: 8 hexadecimal digitsxxxx: 4 hexadecimal digitsMxxx: 4 hexadecimal digits, where the first digit (M) indicates the UUID version (1,2,3,4, or5)Nxxx: 4 hexadecimal digits, where the first digit (N) indicates the variant (most commonly8,9,A, orB)xxxxxxxxxxxx: 12 hexadecimal digits
Decode booking references
To decode a booking reference, follow these steps:
- Use a Base64 decoding function to convert the encoded string back into a byte array. This array contains the concatenated bytes of the two original UUIDs along with a salt.
- Extract the UUIDs. The decoded byte array should be 32 bytes long (16 bytes for each UUID).
- Extract the remainder as the salt.
- Insert hyphens to convert each 16-byte segment back into its original UUID format. The first string is the configuration ID, and the second string is the booking ID.
- Replace
+and/with-and_to convert the extracted salt to a URL-safe Base64 string.
The following code shows one way to decode a booking reference using Javascript.
export function compactStringToUUIDs(compactString) { // Decode the Base64 string to a buffer const buffer = Buffer.from(compactString, 'base64');
// Extract UUIDs (16 bytes each) const uuidBytes1 = buffer.slice(0, 16); const uuidBytes2 = buffer.slice(16, 32);
// Extract the remainder as the salt const salt = buffer.slice(32);
// Function to convert a buffer to UUID string format function bufferToUUID(buffer) { const hex = buffer.toString('hex'); return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`; } // Convert buffers to UUID strings const uuid1 = bufferToUUID(uuidBytes1); const uuid2 = bufferToUUID(uuidBytes2);
// Convert salt buffer to URL-safe base64 const b64EncodedSalt = salt.toString('base64').replace(/\+/g, '-').replace(/\//g, '_');
return [uuid1, uuid2, b64EncodedSalt];}Grab booking references from the Scheduling component
The Scheduling Component emits a bookingRefExtracted event when you pass one of the following properties:
rescheduleBookingRefcancelBookingReforganizerConfirmationBookingRef
You can listen to the bookingRefExtracted event to retrieve the booking ID.
schedulingComponent.addEventListener('bookingRefExtracted', (e) => { console.log(e.detail); // { configurationId: rescheduleConfigId, bookingId: rescheduleBookingId }});