UNPKG

@bookla-app/react-client-sdk

Version:
271 lines (270 loc) 6.44 kB
export type ServiceType = "fixed" | "flexible" | "group" | "ticket" | "days"; export type BookingStatus = "confirmed" | "pending" | "cancelled" | "finished" | "no_show" | "rejected"; export interface ServiceResponse { id: string; companyID: string; name: string; type: ServiceType; color: string; createdAt: string; updatedAt: string; timeZone?: string; settings?: ServiceSettings; resources?: ResourceResponse[]; tickets?: TicketResponse[]; } export interface ServiceSettings { currency?: string; bookingPolicy?: string; duration?: string; timeInterval?: string; bufferBefore?: string; bufferAfter?: string; tax?: { rate: number; inclusive: boolean; }; } export interface ResourceResponse { id: string; companyID: string; name: string; color: string; createdAt: string; updatedAt: string; services?: ServiceResponse[]; } export interface TicketResponse { id: string; name: string; } export interface TimesResponse { times: { [resourceId: string]: TimeSlot[]; }; } export interface DatesResponse { dates: { [resourceId: string]: string[]; }; timeZone: string; } export interface TimeSlot { startTime: string; duration: string; price: { amount: number; comparedAmount: number; currency: string; }; } export interface BookingListResponse { bookings: BookingResponse[]; limit: number; offset: number; total: number; } export interface BookingResponse { id: string; companyID: string; resourceID: string; serviceID: string; startTime: string; endTime: string; duration: string; spots: number; price?: number; currency?: string; type: ServiceType; status: BookingStatus; paymentURL?: string; tickets?: { [ticketID: string]: { spots: number; price: number; comparedPrice?: number; }; }; metaData?: { [key: string]: any; }; createdAt: string; } export interface SubscriptionContract { id: string; clientID: string; subscriptionID: string; status: string; activeFrom: string; duration: string; limitations: { bookingsCount?: number; daysOfWeek?: number; maxDuration?: string; maxSpotsPerBooking?: number; maxTicketsPerBooking?: Record<string, number>; times?: Array<{ startTime: string; endTime: string; }>; }; metaData?: Record<string, any>; } export interface SubscriptionCartResponse { expiresAt: string; items: SubscriptionContract[]; } export interface PurchaseSubscriptionsResponse { items: SubscriptionContract[]; price: number; currency: string; tax: number; taxRate: number; taxInclusive: boolean; expiresAt: string; paymentURL?: string; } export interface CompanySubscription { id: string; title: string; price: number; comparedPrice?: number; currency: string; duration: string; availableFrom: string; availableTo: string; rRule?: string; resourceIDs: string[]; serviceIDs: string[]; limitations: { bookingsCount?: number; daysOfWeek?: number; maxDuration?: string; maxSpotsPerBooking?: number; maxTicketsPerBooking?: Record<string, number>; times?: Array<{ startTime: string; endTime: string; }>; }; metaData?: Record<string, any>; } export interface CodeValidateResponse { canApply: boolean; clientID: string; clientEmail: string; price: number; pluginNameSpace: string; pluginResponse?: Record<string, any>; } export interface ClientAuthResponse { accessToken: string; refreshToken: string; expiresAt: string; } export interface CompanyGiftCard { id: string; title: string; amount: number; currency: string; taxRate: number; taxInclusive: boolean; availableFrom: string; availableTo?: string; validityDuration: string; metaData?: Record<string, any>; } export interface PurchaseGiftCardResponse { item: GiftCardContract; expiresAt: string; price: number; currency: string; tax: number; taxRate: number; taxInclusive: boolean; paymentURL: string; } export interface GiftCardUsage { id: string; createdAt: string; companyID: string; purchaseID: string; giftCardID: string; clientID: string; status: string; amount: number; currency: string; reservationID?: string; metaData?: Record<string, any>; } export interface GiftCardContract { id: string; createdAt: string; companyID: string; giftCardID: string; giftCardName: string; clientID: string; code: string; amount: number; currency: string; validUntil?: string; status: string; usages?: GiftCardUsage[]; metaData?: Record<string, any>; } export interface ClientAddonResponse { id: string; name: string; description: string; priceCents: number; currency: string; taxPercent: number; taxInclusive: boolean; minQuantity: number; maxQuantity: number; sortOrder: number; isRequired: boolean; durationMultiplierEnabled?: boolean; durationMultiplierUnit?: string; durationMultiplierRounding?: "up" | "down" | "nearest"; metadata?: Record<string, any>; } export interface ClientAddonGroupResponse { id: string; name: string; description: string; sortOrder: number; isRequired: boolean; members: ClientAddonResponse[]; } export interface ClientServiceAddonItem { type: "addon" | "group"; serviceAddonId: string; isRequired: boolean; sortOrder: number; addon?: ClientAddonResponse; group?: ClientAddonGroupResponse; } export interface DiscoverAddonsResponse { items: ClientServiceAddonItem[]; } export interface ValidatedAddonItem { addonId: string; addonName: string; quantity: number; unitPrice: number; subtotal: number; tax: number; total: number; taxPercent: number; taxInclusive: boolean; } export interface ValidateAddonsResponse { valid: boolean; errors?: string[]; subtotal: number; tax: number; total: number; currency: string; items: ValidatedAddonItem[]; }