Files
MorganGitHubDevin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
6eafb4b4bc feat: skip platform billing for non-platform-managed users (#27521)
* feat: skip platform billing for non-platform-managed users

- Add isPlatformManaged to user select in saveBooking and findBookingQuery
- Update 2024-04-15 booking controller to check isPlatformManaged before billing
- Update 2024-08-13 bookings service billBooking methods to check isPlatformManaged
- Update buildDryRunBooking to include isPlatformManaged in user object

Co-Authored-By: [email protected] <[email protected]>

* test: update buildDryRunBooking test to include uuid and isPlatformManaged fields

Co-Authored-By: [email protected] <[email protected]>

* refactor: simplify to only check isPlatformManaged in normal booking flow

Co-Authored-By: [email protected] <[email protected]>

* test: add E2E tests for billing behavior based on isPlatformManaged flag

Co-Authored-By: [email protected] <[email protected]>

* chore: only trigger platform billing for platform user bookingd

* test: add E2E tests for cancel and recurring booking billing behavior

Co-Authored-By: [email protected] <[email protected]>

* fix: correct expected status code for cancel booking endpoint (201 instead of 200)

Co-Authored-By: [email protected] <[email protected]>

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-02-03 12:51:29 +02:00

37 lines
985 B
TypeScript

/**
* Domain types for Booking Cancellation Service
* These types are framework-agnostic and contain only the data required for booking cancellation operations
*/
import type { z } from "zod";
import type { bookingCancelInput } from "@calcom/prisma/zod-utils";
/**
* The booking data required for cancellation
*/
export type CancelRegularBookingData = z.infer<typeof bookingCancelInput>;
/**
* Additional metadata for booking cancellation, typically used for platform integrations
*/
export type CancelBookingMeta = {
userId?: number;
platformClientId?: string;
platformRescheduleUrl?: string;
platformCancelUrl?: string;
platformBookingUrl?: string;
arePlatformEmailsEnabled?: boolean;
};
/**
* The response returned after attempting to cancel a booking
*/
export type HandleCancelBookingResponse = {
success: boolean;
message: string;
onlyRemovedAttendee: boolean;
bookingId: number;
bookingUid: string;
isPlatformManagedUserBooking: boolean;
};