-
Notifications
You must be signed in to change notification settings - Fork 10.4k
Description
UPDATE: This issue grew into multiple related issues.
- Parameter name mismatch (usernameList[] vs usernames[])
- Event type API returning wrong data (id: 0, slug: "dynamic")
- Frontend forcing dynamic override even with valid event slugs
- Availability API not being called due to enabled condition
Issue Summary
Booker atom does not load availability for dynamic bookings (multi-host via username
joined with +
).
When username="userA+userB"
, the calendar renders but no days/times become selectable because the GET /v2/slots/available
request is not sent at all. With a single username, the request is sent and times render.
Steps to Reproduce
- Render the Booker atom with a combined username and valid event slug:
<Booker eventSlug="thirty-minutes-video" username="campos-...-umbrage-com+aivory.lagto-...-umbrage-com" />
- Observe that the calendar shows but no dates are selectable.
- Change to a single username:
<Booker eventSlug="thirty-minutes-video" username="campos-...-umbrage-com" />
- Dates and times are selectable.
Any other relevant information: Booker should behave the same for single and multi-host bookings; the missing availability call prevents the UI from populating time slots.
Actual Results
-
Dynamic (two people): Calendar renders, no availability loads.
Calls observed:GET /v2/provider/<clientId>
GET /v2/atoms/event-types/thirty-minutes-video/public?username=<combined>
GET /v2/timezones
GET /v2/atoms/verification/email/check?...
- Missing:
GET /v2/slots/available?...
-
Single person: Calendar renders with availability.
Calls observed:-
GET /v2/provider/<clientId>
-
GET /v2/atoms/event-types/thirty-minutes-video/public?username=<single>
-
GET /v2/timezones
-
GET /v2/atoms/verification/email/check?...
-
Present:
GET /v2/slots/available ?usernameList[]=campos-...-umbrage-com &eventTypeId=2972117 &startTime=2025-09-01T04:00:00.000Z &endTime=2025-10-01T03:59:59.999Z &timeZone=America/New_York &eventTypeSlug=thirty-minutes-video &_silentCalendarFailures=false
-
Expected Results
-
For dynamic bookings, Booker should send:
GET /v2/slots/available ?usernameList[]=userA &usernameList[]=userB &eventTypeId=<resolved> &startTime=... &endTime=... &timeZone=... &eventTypeSlug=<slug> &_silentCalendarFailures=false
and render selectable dates/times.
Technical details
- Browser: Brave 1.81.137 (Official Build) (64-bit) — Chromium 139.0.7258.158
- Node.js: v22.16.0
- Component:
@calcom/atoms
→Booker
Evidence
- Reproduced by rendering Booker with a combined username vs a single username as shown in Steps to Reproduce.
- The only functional difference observed is the absence of the
GET /v2/slots/available
call in the dynamic (two-person) case.