* Revert "revert: "fix: Add new route to create team routing-form response (#22347)" (#22399)"
This reverts commit e6c36af3b4.
* Update the documentation
* Remove versioning
* fix: eliminate flaky E2E tests by adding proper test isolation
- Add targeted afterEach hooks to clean up bookings between cancel tests
- Modify cancel booking tests to create fresh data instead of relying on shared state
- Follow existing pattern from recurring-bookings.e2e-spec.ts for proper test isolation
- Fix recurring booking expectation from 4 to 3 bookings to match API behavior
- Fixes race conditions and data contamination issues in API V2 E2E suite
The specific 'should cancel recurring booking' test that was failing with 400 Bad Request
now passes consistently. Test suite improved from 34 passing to 66 passing tests.
Co-Authored-By: anik@cal.com <anik@cal.com>
* fix: replace strict host order assertion with order-agnostic matcher
- Replace exact array equality check with expect.arrayContaining()
- Fixes non-deterministic host ordering in 'should create a managed team event-type' test
- Prevents flaky failures when tests run together due to different host order
Co-Authored-By: anik@cal.com <anik@cal.com>
* fix: ensure roundRobinEventType is initialized before dependent test runs
- Add initialization check in 'should update round robin event type' test
- Creates roundRobinEventType if not already set by previous test
- Eliminates dependency on test execution order
- Fixes undefined variable errors when tests run together with other suites
Co-Authored-By: anik@cal.com <anik@cal.com>
* fix: add validation for roundRobinEventType and improve error handling in assign-all-team-members.e2e-spec.ts
- Add check to ensure roundRobinEventType is defined before dependent test runs
- Improve error handling in evaluateHost function with better error messages
- Prevents undefined variable errors when tests run together with other suites
Co-Authored-By: anik@cal.com <anik@cal.com>
* fix: remove hardcoded mandatory/priority values from evaluateHost calls
- Remove hardcoded mandatory: false, priority: 'medium' from all evaluateHost calls
- Update evaluateHost function to accept Partial<Host> for expected values
- Only validate userId field to prevent test failures when mandatory/priority are undefined
- Fixes user ID mismatch errors and mandatory field assertion failures
Co-Authored-By: anik@cal.com <anik@cal.com>
* refactor: extract managedEventType setup into reusable utility function
- Create ensureManagedEventType() utility function to eliminate code duplication
- Replace 5 instances of repetitive managedEventType setup code with utility function calls
- Maintain same functionality while reducing code duplication in teams-event-types.controller.e2e-spec.ts
- All tests continue to pass after refactoring
Co-Authored-By: anik@cal.com <anik@cal.com>
* fix: restore mandatory/priority props and exact equality assertions per review feedback
- Restore mandatory: false, priority: 'medium' props in evaluateHost calls in assign-all-team-members.e2e-spec.ts
- Change toBeGreaterThanOrEqual back to toEqual for exact count assertions in teams-event-types.controller.e2e-spec.ts
- Addresses review feedback from supalarry on PR #22488
Co-Authored-By: anik@cal.com <adhabal2002@gmail.com>
* Update Schedule.tsx
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: anik@cal.com <anik@cal.com>
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
Co-authored-by: anik@cal.com <adhabal2002@gmail.com>
* intro work
* update wixard form to have content callback to remove preset navigation
* more fixes to deployment
* fix calling static service
* fix save license key text
* ensure default steps work as expected
* fix conditional for rendering step
* skip step
* add on next step for free license
* refactor wizard form to use nuqs
* fix styles
* merge base param with step config
* fix next stepo text
* use deployment Signature token
* decrypt signature token
* fix: resolve type errors and test failures from wizard form refactor
- Fix signatureToken field name to signatureTokenEncrypted in deployment repository
- Add missing getSignatureToken method to verifyApiKey test mock
- Fix WizardForm import from default to named export in test file
- Add missing nextStep prop to Steps component in WizardForm
Resolves TypeScript type check errors and unit test failures without changing functionality.
Co-Authored-By: sean@cal.com <Sean@brydon.io>
* fix: add missing getDeploymentSignatureToken mock in LicenseKeyService test
Co-Authored-By: sean@cal.com <Sean@brydon.io>
* fix: add nuqs library mock for WizardForm test
Co-Authored-By: sean@cal.com <Sean@brydon.io>
* fix: add missing nav prop to AdminAppsList component with eslint disable
Co-Authored-By: sean@cal.com <Sean@brydon.io>
* Apply suggestions from code review
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
* Update apps/web/modules/auth/setup-view.tsx
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
* fix license schema changes
* revret schema generation
* fix eslint errors
* remove required nav type + add use client
* fix types
* Update packages/ui/components/form/wizard/useWizardState.ts
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
* fix controller issue
* add checks for deployment key being null - add more tests
* fix tests
* add deployment key tests
* fix: resolve crypto mock to handle empty encryption keys gracefully
- Updated symmetricDecrypt mock to return null instead of throwing 'Invalid key' error when encryption key is empty
- All getDeploymentKey tests now pass including the previously failing 'should return null when decryption fails due to missing encryption key' test
- Fixes mocking issues in PR 22102 self-hosted onboarding wizard form refactor
Co-Authored-By: sean@cal.com <Sean@brydon.io>
* fix label
* add i18n to error
* use enum for steps
* add as const
* fix test env issues
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
* refactor: replace Prisma.validator<Select>() with satisfies syntax
- Convert all Prisma.validator<Prisma.SomeSelect>()({...}) patterns to {...} satisfies Prisma.SomeSelect
- Update import { Prisma } to import type { Prisma } where only used for types
- Maintain existing functionality while modernizing TypeScript syntax
- Covers 89+ files across packages/prisma/selects, repository classes, tRPC handlers, and API modules
Co-Authored-By: alex@cal.com <me@alexvanandel.com>
* refactor: complete remaining Prisma.validator conversions
- Update test fixture files with satisfies syntax
- Apply lint-staged formatting fixes
- Complete refactoring of all remaining files
Co-Authored-By: alex@cal.com <me@alexvanandel.com>
* revert: remove unintended platform library update
- Revert yarn.lock changes that updated @calcom/platform-libraries from 0.0.236 to 0.0.239
- This was an unintended side effect of the refactoring process
- Keep only the intended Prisma.validator → satisfies syntax changes
Co-Authored-By: alex@cal.com <me@alexvanandel.com>
* fix: update ESLint plugin references to correct package name
- Change @calcom/eslint to @calcom/eslint-plugin-eslint in eslint-preset.js
- Resolves 'Failed to load plugin @calcom/eslint' error causing CI failures
Co-Authored-By: alex@cal.com <me@alexvanandel.com>
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: alex@cal.com <me@alexvanandel.com>
* feat: Add routing-forms record response endpoint with available slots
* fix: resolve TypeScript error in handleResponse.test.ts
- Fix type mismatch where mockResponse was passed as identifierKeyedResponse
- identifierKeyedResponse expects Record<string, string | string[]> structure
- Updated test to pass correct data structure for type compatibility
Co-Authored-By: hariom@cal.com <hariom@cal.com>
* fix: correct POST endpoint parameter handling and request body parsing in routing forms responses controller
- Change @Query() to @Body() decorator for POST request data in controller
- Update service method to accept parsed body data directly
- Remove incorrect URLSearchParams parsing of request.body object
- Fix getRoutingUrl method to use form response data parameter
This resolves API v2 test failures by following proper NestJS patterns for POST request handling.
Co-Authored-By: hariom@cal.com <hariom@cal.com>
* Pass teamMemberEmail as well
* Devin fixes reverted
* Keep all routing related props together in both endpoints
* Remove newly added slots props from Slots documentation as they are used through internal fn call only
* fix test
* Pass skipContactOwner
* Pass crmAppSlug and crmOwnerRecordGType and add more tests
* handle external redirect case and form not found case
* hide props
* chore: bump platform libs
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: hariom@cal.com <hariom@cal.com>
Co-authored-by: cal.com <morgan@cal.com>
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* docs: improve English naturalness in API v2 documentation
- Fix awkward API summary 'Find out when is an event type ready to be booked' to 'Get available time slots for an event type'
- Correct 'setup' vs 'set up' usage throughout documentation
- Fix OAuth capitalization consistency
- Improve 'api' to 'API' capitalization in v2 docs
- Enhance readability while preserving technical accuracy
Fixes unnatural English phrasing in titles, headers, descriptions, and summaries across API v2 documentation files.
Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>
* docs: add missing articles 'the' in API v2 documentation
- Fix 'How to Set Up API' to 'How to Set Up the API' in titles
- Add 'the' before 'API' in descriptions and summaries
- Fix grammar error 'all you need to is' to 'all you need to do is'
- Improve naturalness while maintaining technical accuracy
Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>
* docs: fix unnatural English in API v2 @ApiOperation summaries
- Fix grammatically incorrect 'conferencing apps oauths callback' to 'Conferencing app OAuth callback'
- Replace 'ooo' with 'out-of-office' in user-facing summaries for clarity
- Ensure consistent sentence case capitalization (only first letter capitalized)
- Remove trailing periods from summaries for consistency
- Fix awkward phrasing like 'Get by attribute id all of...' to more natural English
- Revert 'Introduction to the API v2' back to 'Introduction to API v2'
- Improve naturalness while maintaining technical accuracy
Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>
* Update apps/api/v2/src/modules/slots/slots-2024-09-04/controllers/slots.controller.ts
* Update docs/api-reference/v2/openapi.json
* docs: fix setup/set up usage - use 'backend setup' (noun) not 'backend set up' (verb)
Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>
* docs: fix setup/set up verb usage - use 'set up' (verb) not 'setup' (verb)
- Fix 'You have to setup' → 'You have to set up' in quickstart.mdx
- Fix 'Setup environment variables' → 'Set up environment variables'
- Fix 'Setup root of your app' → 'Set up root of your app'
- Fix 'prompted to setup' → 'prompted to set up' in setup.mdx
Co-Authored-By: keith@cal.com <keithwillcode@gmail.com>
* Ran v2 locally to regen the doc json files
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* feat: support updating cal video settings in API v2
* chore: update descriptio
* feat: support create event type
* test: add test for updating event type
* test: add test for create event type
* chore: undo openapi
* chore: bump libraries
* Revert "chore: bump libraries"
This reverts commit bdf36d09b021fc531497a7b7ea66ab9c52b7d136.
* chore: bump libraries
---------
Co-authored-by: Lauris Skraucis <lauris.skraucis@gmail.com>
Co-authored-by: supalarry <laurisskraucis@gmail.com>
* feat: split atoms endpoints and add public event type endpoint
* Update ConnectedDestinationCalendars import path across platform/atoms components
* refactor: update BookingResponse import path from platform-libraries to features/bookings
* Move AvailableSlotsType to util.ts and update imports to use GetAvailableSlotsResponse
* Refactor import path for RecurringBookingCreateBody type from libraries to types
* Fix import path for getBookingForReschedule type from platform-libraries to features
* Refactor PublicEventType export location and update import references
* Remove @calcom/platform-libraries dependency from atoms package.json
* chore(deps): update yarn.lock dependencies
* Remove console.log statements and fix indentation in event type hooks
* Migrate event type transformers from platform/libraries to api/v2 directory
* Remove console.log
* Update BookerPlatformWrapper.tsx
* Add script to populate empty team slugs with slugified team names
* Remove vitest imports
* reset platform libraries version
* Remove unused orgId comment from useAtomGetPublicEvent hook params
* Update useApiV2AvailableSlots.ts
* refactor: remove unused exports from lib package index file
* Undo: @SomayChauhan
Add script to populate empty team slugs with slugified team names
* Update booking.tsx
* chore: upgrade @calcom/platform-libraries from 0.0.202 to 0.0.205
* chore: bump @calcom/platform-libraries from 0.0.205 to 0.0.206
* chore: configure babel and jest for node module transpilation in api v2
* fix: type errors
* Revert "chore: configure babel and jest for node module transpilation in api v2"
This reverts commit b2cf172a84fe8953f9497bf6e43874f476fbc04b.
* Update calendars.service.ts
* chore: bump @calcom/platform-libraries from 0.0.208 to 0.0.209
* fix: add proper type definition for calendar busy times to resolve ts-expect-error
* refactor: deprecate v2 old availability endpoints (#21075)
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
* chore: publish platform librareis
* feat: add delegation credential fields to calendar service mock
* chore: update @calcom/platform-libraries from 0.0.211 to 0.0.213
* fix: skip failing calendar integration test
* chore: bump @calcom/platform-libraries from 0.0.213 to 0.0.214
* fix: api/v2 build error
* fix: e2e tests
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
Co-authored-by: supalarry <laurisskraucis@gmail.com>
Co-authored-by: Lauris Skraucis <lauris.skraucis@gmail.com>
* refactor: rename office365-video to msteams across API and platform code
* Revert "refactor: rename office365-video to msteams across API and platform code"
This reverts commit 7a823ab6aa7ecd739da941d3b315735220bd99de.
* Fix: inconsistency in default location values for create and update event-types
* feat: add `type` filter for booking references API endpointa
* Update openapi.json
* feat: add enum validation for booking reference types in filter input
* refactor: rename externalUid to eventUid and add destinationCalendarId in booking references
* refactor: replace enum with const array for BookingReferenceType
* fix: type safety for booking references where clause using Prisma types
* refactor: rename BookingReferenceType to BookingReferences
* feat: Add booking references API endpoints
* refactor: Implement booking-reference service and repositories
* Add description and reorder properties in BookingReference schema
* Refactor booking references service to separate output service
Found via `codespell -q 3 -S "*.svg,./apps/web/public/static/locales,./packages/app-store/stripepayment/lib/currencyOptions.ts,./packages/lib/freeEmailDomainCheck/freeEmailDomains.ts" -L afterall,atleast,datea,fo,incase,ist,nam,notin,optionel,perview,reccuring`
Closes#21104
* feat: add guards to stripe teams controller
* remove logs and comments
* fix return type status
* refactor: move PlatformSubscription to a dedicated module
* reroute to `organizations/stripe/save` for teams
* fix: type errors
* feat: fixed it for conferencing apps
* feat: Add error handling and fallback URL support in Stripe callback
* Refactor OAuth callback handling and move token validation to service layer
* Add documentation for OAuth callback proxying in conferencing and stripe controllers
* Move OAuthCallbackState type from organizations to stripe service module
* feat: allow teamSlug + eventTypeSlug + optional organizationSlug as input
* feat: return team event slots
* test: get slots using teamSlug + eventTypeSlug + optional organizationalSlug
* docs: how to get team event slots
* feat: routing form response slots
* fix
* test routing form slots
* chore: bump libraries
* docs
* docs
* chore: api docs from main to merge main
* chore: regenerate api docs
* feat: membership user return bio and metadata
* feat: input and output bio and metadata for users and manager users
* test: managed event type appears when fetching user event types
* test: managed event type appears when fetching user event types
* test: managed event type appears when fetching user event types
* test: managed event type appears when fetching non-org team user event types
* feat: organizations users bookings endpoint
* feat: book using eventSlug & username & organizationSlug
* chore: generate latest docs
* feat: get org bookings endpoint api-v2
* fix userId filter transform
* fix: update getBookings to take filter.userIds in account
* refactor: getBooking where clause
* fixup! refactor: getBooking where clause
* feat: enable org owners to see org member bookings as attendees
* update flaky e2e tests
* fixup! feat: enable org owners to see org member bookings as attendees
* fixup! fixup! feat: enable org owners to see org member bookings as attendees
* chore: differentiate between org/team owner/admin
* chore: throw error with invalid userIds filter
* chore: clearly ensure non team orgs when orgId is not specified
* bump libraries and add comments
* bump libraries
* chore: give main profile orgId to getAllUserBookings
---------
Co-authored-by: Eunjae Lee <hey@eunjae.dev>
* feat: added zoom, office365-video as valid event-type locations
* added docs
* Update stripe.service.ts
* enable conferencing apps for teams initial commit
* fix: make conferencing atom work with teams
* update team events in bulk update default location
* feat: Separate endpoints for team conferencing apps instead of query params
* Display all team events in 'Bulk update existing event types' modal when conferencing atom is enabled for Teams
* fix: bulk update default location for team events
* removed the organizations endpoints
* Refactor: Separate functions for team events to follow SRP
* undo extra changes
* undo extra changes
* fix: platform libraries build breaking
* feat: only allow integrations which are installed in create/update team/user event-type endpoints
* fix: merge conflicts
* remove redundant imports
* Update ConferencingAppsViewPlatformWrapper.tsx
* Update useBanners.ts
* fix: axios error response interceptor
* feat: update :app param docs in `organizations-conferencing.controller`
* Revert "fix: axios error response interceptor"
This reverts commit 729eac3eee9f81c19b5368bbae4b1666884221fd.
* Update useAtomsGetInstalledConferencingApps.ts
* upgrade platform libraries
* Update apps.ts
---------
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com>
Co-authored-by: Morgan Vernay <morgan@cal.com>
* fix: platform seed data
* fix: assignAllTeamMembers: true excludes team owners in platform
* refactor: platform plan guard explicit error message
* refactor: require either hosts or assignAllTeamMembers=true
* refactor: require either hosts or assignAllTeamMembers=true
* fix: before creating or updating team event type check if doesnt exist with that slug
* chore: regenerate docs
* test: can update round robin that had assign all team members true
* fix: platform guard spec test
* fix: seed platform membership role
* fix: test ts error