@foxscheduling/shared 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -0
- package/dist/cjs/constants/emailUnsubscribeReasons.cjs +13 -0
- package/dist/cjs/constants/emailUnsubscribeReasons.d.ts +4 -0
- package/dist/cjs/constants/emailUnsubscribeReasons.d.ts.map +1 -0
- package/dist/cjs/index.cjs +24 -0
- package/dist/cjs/index.d.ts +9 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/types/db.availability.cjs +12 -0
- package/dist/cjs/types/db.availability.d.ts +33 -0
- package/dist/cjs/types/db.availability.d.ts.map +1 -0
- package/dist/cjs/types/db.booking.cjs +2 -0
- package/dist/cjs/types/db.booking.d.ts +101 -0
- package/dist/cjs/types/db.booking.d.ts.map +1 -0
- package/dist/cjs/types/db.cjs +2 -0
- package/dist/cjs/types/db.customers.cjs +2 -0
- package/dist/cjs/types/db.customers.d.ts +14 -0
- package/dist/cjs/types/db.customers.d.ts.map +1 -0
- package/dist/cjs/types/db.d.ts +11 -0
- package/dist/cjs/types/db.d.ts.map +1 -0
- package/dist/cjs/types/db.directory.cjs +2 -0
- package/dist/cjs/types/db.directory.d.ts +38 -0
- package/dist/cjs/types/db.directory.d.ts.map +1 -0
- package/dist/cjs/types/db.emailFlow.cjs +2 -0
- package/dist/cjs/types/db.emailFlow.d.ts +29 -0
- package/dist/cjs/types/db.emailFlow.d.ts.map +1 -0
- package/dist/cjs/types/db.mcpUserContext.cjs +2 -0
- package/dist/cjs/types/db.mcpUserContext.d.ts +29 -0
- package/dist/cjs/types/db.mcpUserContext.d.ts.map +1 -0
- package/dist/cjs/types/db.notification.cjs +2 -0
- package/dist/cjs/types/db.notification.d.ts +27 -0
- package/dist/cjs/types/db.notification.d.ts.map +1 -0
- package/dist/cjs/types/db.oauth.cjs +2 -0
- package/dist/cjs/types/db.oauth.d.ts +55 -0
- package/dist/cjs/types/db.oauth.d.ts.map +1 -0
- package/dist/cjs/types/db.partnerApiKey.cjs +2 -0
- package/dist/cjs/types/db.partnerApiKey.d.ts +15 -0
- package/dist/cjs/types/db.partnerApiKey.d.ts.map +1 -0
- package/dist/cjs/types/db.paymentPending.cjs +2 -0
- package/dist/cjs/types/db.paymentPending.d.ts +16 -0
- package/dist/cjs/types/db.paymentPending.d.ts.map +1 -0
- package/dist/cjs/types/db.service.cjs +15 -0
- package/dist/cjs/types/db.service.d.ts +145 -0
- package/dist/cjs/types/db.service.d.ts.map +1 -0
- package/dist/cjs/types/db.tax.cjs +2 -0
- package/dist/cjs/types/db.tax.d.ts.map +1 -0
- package/dist/cjs/types/db.tenant.cjs +2 -0
- package/dist/cjs/types/db.tenant.d.ts +118 -0
- package/dist/cjs/types/db.tenant.d.ts.map +1 -0
- package/dist/cjs/types/db.tenantGroupedStat.cjs +2 -0
- package/dist/cjs/types/db.tenantGroupedStat.d.ts +13 -0
- package/dist/cjs/types/db.tenantGroupedStat.d.ts.map +1 -0
- package/dist/cjs/types/db.user.cjs +7 -0
- package/dist/cjs/types/db.user.d.ts +81 -0
- package/dist/cjs/types/db.user.d.ts.map +1 -0
- package/dist/cjs/types/db.userConfirmation.cjs +2 -0
- package/dist/cjs/types/db.userConfirmation.d.ts +17 -0
- package/dist/cjs/types/db.userConfirmation.d.ts.map +1 -0
- package/dist/cjs/types/db.userLoginSession.cjs +2 -0
- package/dist/cjs/types/db.userLoginSession.d.ts +28 -0
- package/dist/cjs/types/db.userLoginSession.d.ts.map +1 -0
- package/dist/cjs/types/db.webhook.cjs +10 -0
- package/dist/cjs/types/db.webhook.d.ts +16 -0
- package/dist/cjs/types/db.webhook.d.ts.map +1 -0
- package/dist/cjs/types/discover.cjs +2 -0
- package/dist/cjs/types/discover.d.ts +45 -0
- package/dist/cjs/types/discover.d.ts.map +1 -0
- package/dist/cjs/types/errorCodes.cjs +150 -0
- package/dist/cjs/types/errorCodes.d.ts +147 -0
- package/dist/cjs/types/errorCodes.d.ts.map +1 -0
- package/dist/cjs/types/index.cjs +44 -0
- package/dist/cjs/types/index.d.ts +84 -0
- package/dist/cjs/types/index.d.ts.map +1 -0
- package/dist/cjs/types/oauthScopes.cjs +33 -0
- package/dist/cjs/types/oauthScopes.d.ts +7 -0
- package/dist/cjs/types/oauthScopes.d.ts.map +1 -0
- package/dist/cjs/types/partnerDto.cjs +2 -0
- package/dist/cjs/types/partnerDto.d.ts +69 -0
- package/dist/cjs/types/partnerDto.d.ts.map +1 -0
- package/dist/cjs/types/pricing.cjs +2 -0
- package/dist/cjs/types/pricing.d.ts +31 -0
- package/dist/cjs/types/pricing.d.ts.map +1 -0
- package/dist/cjs/types/requestResponse.cjs +2 -0
- package/dist/cjs/types/requestResponse.d.ts +93 -0
- package/dist/cjs/types/requestResponse.d.ts.map +1 -0
- package/dist/cjs/types/subscription.cjs +2 -0
- package/dist/cjs/types/subscription.d.ts +50 -0
- package/dist/cjs/types/subscription.d.ts.map +1 -0
- package/dist/cjs/utils/bookingEmbed.cjs +178 -0
- package/dist/cjs/utils/bookingEmbed.d.ts +61 -0
- package/dist/cjs/utils/bookingEmbed.d.ts.map +1 -0
- package/dist/cjs/utils/bookingPageIcons.cjs +218 -0
- package/dist/cjs/utils/bookingPageIcons.d.ts +160 -0
- package/dist/cjs/utils/bookingPageIcons.d.ts.map +1 -0
- package/dist/cjs/utils/bookingProviders.cjs +27 -0
- package/dist/cjs/utils/bookingProviders.d.ts +25 -0
- package/dist/cjs/utils/bookingProviders.d.ts.map +1 -0
- package/dist/cjs/utils/currencies.cjs +148 -0
- package/dist/cjs/utils/currencies.d.ts +6 -0
- package/dist/cjs/utils/currencies.d.ts.map +1 -0
- package/dist/cjs/utils/dateTime.cjs +192 -0
- package/dist/cjs/utils/dateTime.d.ts +57 -0
- package/dist/cjs/utils/dateTime.d.ts.map +1 -0
- package/dist/cjs/utils/embedFrameLoader.cjs +76 -0
- package/dist/cjs/utils/embedFrameLoader.d.ts +15 -0
- package/dist/cjs/utils/embedFrameLoader.d.ts.map +1 -0
- package/dist/cjs/utils/extensionToContentType.cjs +24 -0
- package/dist/cjs/utils/extensionToContentType.d.ts +21 -0
- package/dist/cjs/utils/extensionToContentType.d.ts.map +1 -0
- package/dist/cjs/utils/generateUsername.cjs +7 -0
- package/dist/cjs/utils/generateUsername.d.ts.map +1 -0
- package/dist/cjs/utils/index.cjs +65 -0
- package/dist/cjs/utils/index.d.ts +26 -0
- package/dist/cjs/utils/index.d.ts.map +1 -0
- package/dist/cjs/utils/random.cjs +13 -0
- package/dist/cjs/utils/random.d.ts +3 -0
- package/dist/cjs/utils/random.d.ts.map +1 -0
- package/dist/cjs/utils/serviceReminderLabels.cjs +22 -0
- package/dist/cjs/utils/serviceReminderLabels.d.ts +5 -0
- package/dist/cjs/utils/serviceReminderLabels.d.ts.map +1 -0
- package/dist/cjs/utils/tenantSlug.cjs +299 -0
- package/dist/cjs/utils/tenantSlug.d.ts +7 -0
- package/dist/cjs/utils/tenantSlug.d.ts.map +1 -0
- package/dist/cjs/utils/textSlug.cjs +14 -0
- package/dist/cjs/utils/textSlug.d.ts +3 -0
- package/dist/cjs/utils/textSlug.d.ts.map +1 -0
- package/dist/cjs/utils/timezone.cjs +96 -0
- package/dist/cjs/utils/timezone.d.ts +2 -0
- package/dist/cjs/utils/timezone.d.ts.map +1 -0
- package/dist/cjs/utils/ucfirst.cjs +9 -0
- package/dist/cjs/utils/ucfirst.d.ts +2 -0
- package/dist/cjs/utils/ucfirst.d.ts.map +1 -0
- package/dist/constants/emailUnsubscribeReasons.d.ts +4 -0
- package/dist/constants/emailUnsubscribeReasons.d.ts.map +1 -0
- package/dist/constants/emailUnsubscribeReasons.js +10 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/types/db.availability.d.ts +33 -0
- package/dist/types/db.availability.d.ts.map +1 -0
- package/dist/types/db.availability.js +9 -0
- package/dist/types/db.booking.d.ts +101 -0
- package/dist/types/db.booking.d.ts.map +1 -0
- package/dist/types/db.booking.js +1 -0
- package/dist/types/db.customers.d.ts +14 -0
- package/dist/types/db.customers.d.ts.map +1 -0
- package/dist/types/db.customers.js +1 -0
- package/dist/types/db.d.ts +11 -0
- package/dist/types/db.d.ts.map +1 -0
- package/dist/types/db.directory.d.ts +38 -0
- package/dist/types/db.directory.d.ts.map +1 -0
- package/dist/types/db.directory.js +1 -0
- package/dist/types/db.emailFlow.d.ts +29 -0
- package/dist/types/db.emailFlow.d.ts.map +1 -0
- package/dist/types/db.emailFlow.js +1 -0
- package/dist/types/db.js +1 -0
- package/dist/types/db.mcpUserContext.d.ts +29 -0
- package/dist/types/db.mcpUserContext.d.ts.map +1 -0
- package/dist/types/db.mcpUserContext.js +1 -0
- package/dist/types/db.notification.d.ts +27 -0
- package/dist/types/db.notification.d.ts.map +1 -0
- package/dist/types/db.notification.js +1 -0
- package/dist/types/db.oauth.d.ts +55 -0
- package/dist/types/db.oauth.d.ts.map +1 -0
- package/dist/types/db.oauth.js +1 -0
- package/dist/types/db.partnerApiKey.d.ts +15 -0
- package/dist/types/db.partnerApiKey.d.ts.map +1 -0
- package/dist/types/db.partnerApiKey.js +1 -0
- package/dist/types/db.paymentPending.d.ts +16 -0
- package/dist/types/db.paymentPending.d.ts.map +1 -0
- package/dist/types/db.paymentPending.js +1 -0
- package/dist/types/db.service.d.ts +145 -0
- package/dist/types/db.service.d.ts.map +1 -0
- package/dist/types/db.service.js +12 -0
- package/dist/types/db.tax.d.ts.map +1 -0
- package/dist/types/db.tenant.d.ts +118 -0
- package/dist/types/db.tenant.d.ts.map +1 -0
- package/dist/types/db.tenant.js +1 -0
- package/dist/types/db.tenantGroupedStat.d.ts +13 -0
- package/dist/types/db.tenantGroupedStat.d.ts.map +1 -0
- package/dist/types/db.tenantGroupedStat.js +1 -0
- package/dist/types/db.user.d.ts +81 -0
- package/dist/types/db.user.d.ts.map +1 -0
- package/dist/types/db.user.js +4 -0
- package/dist/types/db.userConfirmation.d.ts +17 -0
- package/dist/types/db.userConfirmation.d.ts.map +1 -0
- package/dist/types/db.userConfirmation.js +1 -0
- package/dist/types/db.userLoginSession.d.ts +28 -0
- package/dist/types/db.userLoginSession.d.ts.map +1 -0
- package/dist/types/db.userLoginSession.js +1 -0
- package/dist/types/db.webhook.d.ts +16 -0
- package/dist/types/db.webhook.d.ts.map +1 -0
- package/dist/types/db.webhook.js +7 -0
- package/dist/types/discover.d.ts +45 -0
- package/dist/types/discover.d.ts.map +1 -0
- package/dist/types/discover.js +1 -0
- package/dist/types/errorCodes.d.ts +147 -0
- package/dist/types/errorCodes.d.ts.map +1 -0
- package/dist/types/errorCodes.js +147 -0
- package/dist/types/index.d.ts +84 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +28 -0
- package/dist/types/oauthScopes.d.ts +7 -0
- package/dist/types/oauthScopes.d.ts.map +1 -0
- package/dist/types/oauthScopes.js +28 -0
- package/dist/types/partnerDto.d.ts +69 -0
- package/dist/types/partnerDto.d.ts.map +1 -0
- package/dist/types/partnerDto.js +1 -0
- package/dist/types/pricing.d.ts +31 -0
- package/dist/types/pricing.d.ts.map +1 -0
- package/dist/types/pricing.js +1 -0
- package/dist/types/requestResponse.d.ts +93 -0
- package/dist/types/requestResponse.d.ts.map +1 -0
- package/dist/types/requestResponse.js +1 -0
- package/dist/types/subscription.d.ts +50 -0
- package/dist/types/subscription.d.ts.map +1 -0
- package/dist/types/subscription.js +1 -0
- package/dist/utils/bookingEmbed.d.ts +61 -0
- package/dist/utils/bookingEmbed.d.ts.map +1 -0
- package/dist/utils/bookingEmbed.js +161 -0
- package/dist/utils/bookingPageIcons.d.ts +160 -0
- package/dist/utils/bookingPageIcons.d.ts.map +1 -0
- package/dist/utils/bookingPageIcons.js +214 -0
- package/dist/utils/bookingProviders.d.ts +25 -0
- package/dist/utils/bookingProviders.d.ts.map +1 -0
- package/dist/utils/bookingProviders.js +23 -0
- package/dist/utils/currencies.d.ts +6 -0
- package/dist/utils/currencies.d.ts.map +1 -0
- package/dist/utils/currencies.js +145 -0
- package/dist/utils/dateTime.d.ts +57 -0
- package/dist/utils/dateTime.d.ts.map +1 -0
- package/dist/utils/dateTime.js +150 -0
- package/dist/utils/embedFrameLoader.d.ts +15 -0
- package/dist/utils/embedFrameLoader.d.ts.map +1 -0
- package/dist/utils/embedFrameLoader.js +70 -0
- package/dist/utils/extensionToContentType.d.ts +21 -0
- package/dist/utils/extensionToContentType.d.ts.map +1 -0
- package/dist/utils/extensionToContentType.js +20 -0
- package/dist/utils/generateUsername.d.ts.map +1 -0
- package/dist/utils/index.d.ts +26 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +45 -0
- package/dist/utils/random.d.ts +3 -0
- package/dist/utils/random.d.ts.map +1 -0
- package/dist/utils/random.js +8 -0
- package/dist/utils/serviceReminderLabels.d.ts +5 -0
- package/dist/utils/serviceReminderLabels.d.ts.map +1 -0
- package/dist/utils/serviceReminderLabels.js +18 -0
- package/dist/utils/tenantSlug.d.ts +7 -0
- package/dist/utils/tenantSlug.d.ts.map +1 -0
- package/dist/utils/tenantSlug.js +293 -0
- package/dist/utils/textSlug.d.ts +3 -0
- package/dist/utils/textSlug.d.ts.map +1 -0
- package/dist/utils/textSlug.js +10 -0
- package/dist/utils/timezone.d.ts +2 -0
- package/dist/utils/timezone.d.ts.map +1 -0
- package/dist/utils/timezone.js +93 -0
- package/dist/utils/ucfirst.d.ts +2 -0
- package/dist/utils/ucfirst.d.ts.map +1 -0
- package/dist/utils/ucfirst.js +5 -0
- package/package.json +46 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { DBRecord } from "./db.js";
|
|
2
|
+
import type { Booking } from "./db.booking.js";
|
|
3
|
+
/** Short-lived lookup for payment provider return URLs (Paystack reference, Stripe payment_intent). */
|
|
4
|
+
export interface PaymentPending extends DBRecord {
|
|
5
|
+
recordType: "PAYMENT_PENDING";
|
|
6
|
+
tenantId: string;
|
|
7
|
+
bookingId: string;
|
|
8
|
+
serviceId: string;
|
|
9
|
+
customerId: string;
|
|
10
|
+
type: keyof Booking["payments"];
|
|
11
|
+
provider: string;
|
|
12
|
+
/** Primary payment attempt id (Paystack reference / JASDK attempt id). */
|
|
13
|
+
paymentAttemptId: string;
|
|
14
|
+
returnUrl: string;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=db.paymentPending.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.paymentPending.d.ts","sourceRoot":"","sources":["../../src/types/db.paymentPending.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C,uGAAuG;AACvG,MAAM,WAAW,cAAe,SAAQ,QAAQ;IAC5C,UAAU,EAAE,iBAAiB,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { DBRecord } from "./db.js";
|
|
2
|
+
import { BOOKING_PAGE_ICONS } from "../utils/bookingPageIcons.js";
|
|
3
|
+
/** Recurring/pack: e.g. "5 sessions for $200" */
|
|
4
|
+
export interface ServicePackSettings {
|
|
5
|
+
enabled: boolean;
|
|
6
|
+
/** Number of sessions in the pack */
|
|
7
|
+
sessions: number;
|
|
8
|
+
/** Pack price (optional; if omitted, uses sessions × single price) */
|
|
9
|
+
packPrice?: number;
|
|
10
|
+
}
|
|
11
|
+
/** Service location type */
|
|
12
|
+
export type ServiceLocationType = "none" | "google_meet" | "microsoft_teams" | "zoom" | "discord" | "slack" | "other" | "in_person";
|
|
13
|
+
/** Service location config */
|
|
14
|
+
export interface ServiceLocation {
|
|
15
|
+
type: ServiceLocationType;
|
|
16
|
+
/** For "other": custom URL */
|
|
17
|
+
customUrl?: string;
|
|
18
|
+
/** For "in_person": location ID or address */
|
|
19
|
+
inPersonLocationId?: string;
|
|
20
|
+
}
|
|
21
|
+
/** Notice period unit */
|
|
22
|
+
export type NoticePeriodUnit = "minutes" | "hours" | "days";
|
|
23
|
+
/** Notice period before booking */
|
|
24
|
+
export interface ServiceNoticePeriod {
|
|
25
|
+
value: number;
|
|
26
|
+
unit: NoticePeriodUnit;
|
|
27
|
+
}
|
|
28
|
+
/** Limits on how many times this service can be booked */
|
|
29
|
+
export interface ServiceLimitBookings {
|
|
30
|
+
/** Max bookings per day (0 = unlimited) */
|
|
31
|
+
maxPerDay?: number;
|
|
32
|
+
/** Max time in advance customers can book (replaces max days + notice period) */
|
|
33
|
+
maxTimeInAdvance?: ServiceNoticePeriod;
|
|
34
|
+
/** Min time in advance – customers must book at least this far ahead */
|
|
35
|
+
minTimeInAdvance?: ServiceNoticePeriod;
|
|
36
|
+
/** Manual approval required for bookings */
|
|
37
|
+
manualApprovalRequired?: boolean;
|
|
38
|
+
/** Allow multiple bookings per user for same service */
|
|
39
|
+
allowMultiplePerUser?: boolean;
|
|
40
|
+
}
|
|
41
|
+
/** Group booking settings */
|
|
42
|
+
export interface ServiceGroupBooking {
|
|
43
|
+
enabled: boolean;
|
|
44
|
+
maxParticipants: number;
|
|
45
|
+
showRemainingSeats: boolean;
|
|
46
|
+
}
|
|
47
|
+
/** Question answer type */
|
|
48
|
+
export type ServiceQuestionType = "text" | "number" | "date" | "time" | "select" | "multi_select" | "yes_no" | "rating" | "comment";
|
|
49
|
+
/** Service question for customization */
|
|
50
|
+
export interface ServiceQuestion {
|
|
51
|
+
id: string;
|
|
52
|
+
label: string;
|
|
53
|
+
type: ServiceQuestionType;
|
|
54
|
+
required: boolean;
|
|
55
|
+
/** For select/multi_select: options */
|
|
56
|
+
options?: string[];
|
|
57
|
+
/** For rating: max value (e.g. 5) */
|
|
58
|
+
ratingMax?: number;
|
|
59
|
+
order: number;
|
|
60
|
+
}
|
|
61
|
+
/** Questions section */
|
|
62
|
+
export interface ServiceQuestions {
|
|
63
|
+
questions: ServiceQuestion[];
|
|
64
|
+
showToBooker: boolean;
|
|
65
|
+
}
|
|
66
|
+
/** All valid reminder lead times before the appointment (relative to start) */
|
|
67
|
+
export declare const SERVICE_REMINDER_OFFSETS: readonly ["15_minutes", "30_minutes", "1_hour", "3_hours", "6_hours", "12_hours", "1_day", "1_week", "1_month"];
|
|
68
|
+
export type ServiceReminderOffset = (typeof SERVICE_REMINDER_OFFSETS)[number];
|
|
69
|
+
/** Duration unit for custom duration */
|
|
70
|
+
export type DurationUnit = "minutes" | "hours" | "days";
|
|
71
|
+
export interface Service extends DBRecord {
|
|
72
|
+
name: string;
|
|
73
|
+
recordType: "SERVICE";
|
|
74
|
+
/** HTML string when rich text is used */
|
|
75
|
+
description: string;
|
|
76
|
+
duration: number;
|
|
77
|
+
tenantId: string;
|
|
78
|
+
slug: string;
|
|
79
|
+
availabilityId: string;
|
|
80
|
+
category: ServiceCategory;
|
|
81
|
+
/** Unit for custom duration display */
|
|
82
|
+
durationUnit: DurationUnit;
|
|
83
|
+
price: number;
|
|
84
|
+
currency: string;
|
|
85
|
+
slugHistory: string[];
|
|
86
|
+
/** Draft services are not published */
|
|
87
|
+
isDraft?: boolean;
|
|
88
|
+
status?: "active" | "inactive" | "draft";
|
|
89
|
+
/** Icon ID for service display (Lucide icon name, e.g. "Tag") */
|
|
90
|
+
iconId?: keyof typeof BOOKING_PAGE_ICONS;
|
|
91
|
+
/** Whether to show this service on the public booking page */
|
|
92
|
+
displayOnBookingPage: boolean;
|
|
93
|
+
displayInDirectories: boolean;
|
|
94
|
+
reservedDuration: number;
|
|
95
|
+
reservedDurationUnit: DurationUnit;
|
|
96
|
+
/** Deposit required before booking */
|
|
97
|
+
depositEnabled: boolean;
|
|
98
|
+
depositAmount?: number;
|
|
99
|
+
/** Recurring/pack settings (e.g. "5 sessions for $200") */
|
|
100
|
+
pack?: ServicePackSettings;
|
|
101
|
+
/** Staff IDs who can provide this service */
|
|
102
|
+
providerIds: string[];
|
|
103
|
+
/** When false, system auto-assigns a provider; when true, bookers can select */
|
|
104
|
+
allowBookerToSelectProvider?: boolean;
|
|
105
|
+
/** Booking limits */
|
|
106
|
+
limitBookings?: ServiceLimitBookings;
|
|
107
|
+
/** Where the service is provided */
|
|
108
|
+
location?: ServiceLocation;
|
|
109
|
+
/** Enable charging for this service */
|
|
110
|
+
chargeEnabled?: boolean;
|
|
111
|
+
/** Whether this service is taxable */
|
|
112
|
+
taxable?: boolean;
|
|
113
|
+
/** Tax ID when taxable (references a tenant tax) */
|
|
114
|
+
taxId?: string;
|
|
115
|
+
/** Group booking settings */
|
|
116
|
+
groupBooking?: ServiceGroupBooking;
|
|
117
|
+
/** Custom questions for the service */
|
|
118
|
+
questions?: ServiceQuestions;
|
|
119
|
+
/** Timezone override (if different from business) */
|
|
120
|
+
timezone?: string;
|
|
121
|
+
/** Reminder lead times before the appointment (e.g. email/SMS when implemented) */
|
|
122
|
+
reminderOffsets?: ServiceReminderOffset[];
|
|
123
|
+
/**
|
|
124
|
+
* Product ID on JASDK
|
|
125
|
+
*/
|
|
126
|
+
productId?: string;
|
|
127
|
+
prices: Array<{
|
|
128
|
+
id: string;
|
|
129
|
+
price: number;
|
|
130
|
+
currency: string;
|
|
131
|
+
taxIds: Array<string>;
|
|
132
|
+
}>;
|
|
133
|
+
/** Aggregate of `customerRating` on completed bookings for this service */
|
|
134
|
+
ratingSummary?: ServiceRatingSummary;
|
|
135
|
+
}
|
|
136
|
+
export interface ServiceRatingSummary {
|
|
137
|
+
average: number;
|
|
138
|
+
count: number;
|
|
139
|
+
}
|
|
140
|
+
export interface ServiceSlot {
|
|
141
|
+
start: string;
|
|
142
|
+
end: string;
|
|
143
|
+
}
|
|
144
|
+
export type ServiceCategory = "animals" | "business" | "education" | "entertainment" | "faith" | "fashion" | "fitness" | "food" | "health" | "music" | "politics" | "science" | "sports" | "technology" | "travel" | "other";
|
|
145
|
+
//# sourceMappingURL=db.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.service.d.ts","sourceRoot":"","sources":["../../src/types/db.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.tax.d.ts","sourceRoot":"","sources":["../../src/types/db.tax.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,WAAW,GAAI,SAAQ,QAAQ;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,KAAK,CAAC;CACrB"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { DBRecord } from "./db.js";
|
|
2
|
+
import { User, UserTenant } from "./db.user.js";
|
|
3
|
+
export interface Tenant extends DBRecord {
|
|
4
|
+
name: string;
|
|
5
|
+
slug: string;
|
|
6
|
+
email: string;
|
|
7
|
+
ownerId: string;
|
|
8
|
+
logoUrl: string;
|
|
9
|
+
currency: string;
|
|
10
|
+
timezone: string;
|
|
11
|
+
phoneNumber: string;
|
|
12
|
+
users: UserTenant[];
|
|
13
|
+
description: string;
|
|
14
|
+
recordType: "TENANT";
|
|
15
|
+
timeFormat: "12h" | "24h";
|
|
16
|
+
dateFormat: "DD/MM/YYYY" | "MM/DD/YYYY";
|
|
17
|
+
address: {
|
|
18
|
+
city: string;
|
|
19
|
+
state: string;
|
|
20
|
+
line1: string;
|
|
21
|
+
line2: string;
|
|
22
|
+
country: string;
|
|
23
|
+
postalCode: string;
|
|
24
|
+
};
|
|
25
|
+
limitTracker: {
|
|
26
|
+
events: number;
|
|
27
|
+
services: number;
|
|
28
|
+
bookings: number;
|
|
29
|
+
calendars: number;
|
|
30
|
+
integrations: number;
|
|
31
|
+
};
|
|
32
|
+
notifications: {
|
|
33
|
+
reminders: boolean;
|
|
34
|
+
statusChange: boolean;
|
|
35
|
+
bookingConfirmation: boolean;
|
|
36
|
+
};
|
|
37
|
+
bookingPage: {
|
|
38
|
+
url: string;
|
|
39
|
+
title: string;
|
|
40
|
+
accentColor: string;
|
|
41
|
+
customColor?: string;
|
|
42
|
+
description: string;
|
|
43
|
+
layout: "list" | "grid";
|
|
44
|
+
};
|
|
45
|
+
stripePayment?: {
|
|
46
|
+
enabled: boolean;
|
|
47
|
+
publishableKey: string;
|
|
48
|
+
secretKey: string;
|
|
49
|
+
};
|
|
50
|
+
paypalPayment?: {
|
|
51
|
+
enabled: boolean;
|
|
52
|
+
clientId: string;
|
|
53
|
+
clientSecret: string;
|
|
54
|
+
};
|
|
55
|
+
paystackPayment?: {
|
|
56
|
+
enabled: boolean;
|
|
57
|
+
publicKey: string;
|
|
58
|
+
secretKey: string;
|
|
59
|
+
};
|
|
60
|
+
voucherPayment?: {
|
|
61
|
+
enabled: boolean;
|
|
62
|
+
discountCodes?: Array<{
|
|
63
|
+
id?: string;
|
|
64
|
+
code: string;
|
|
65
|
+
title: string;
|
|
66
|
+
percentage: number;
|
|
67
|
+
startDate: string;
|
|
68
|
+
endDate: string;
|
|
69
|
+
}>;
|
|
70
|
+
};
|
|
71
|
+
flutterwavePayment?: {
|
|
72
|
+
enabled: boolean;
|
|
73
|
+
publicKey: string;
|
|
74
|
+
secretKey: string;
|
|
75
|
+
};
|
|
76
|
+
bankAccount?: {
|
|
77
|
+
enabled?: boolean;
|
|
78
|
+
accountNumber?: string;
|
|
79
|
+
accountName?: string;
|
|
80
|
+
bankName?: string;
|
|
81
|
+
bankCode?: string;
|
|
82
|
+
bankAddress?: string;
|
|
83
|
+
bankCity?: string;
|
|
84
|
+
bankState?: string;
|
|
85
|
+
};
|
|
86
|
+
stripeConnect?: {
|
|
87
|
+
connected: boolean;
|
|
88
|
+
accessToken: string;
|
|
89
|
+
refreshToken: string;
|
|
90
|
+
expiresAt: string;
|
|
91
|
+
};
|
|
92
|
+
subscription: User["subscription"];
|
|
93
|
+
jaySDK?: {
|
|
94
|
+
clientId: string;
|
|
95
|
+
clientSecret: string;
|
|
96
|
+
};
|
|
97
|
+
/** Google OAuth tokens for Calendar/Meet integration */
|
|
98
|
+
googleIntegration?: TenantIntegration;
|
|
99
|
+
/** Microsoft 365 OAuth (Outlook calendar + Teams meetings) */
|
|
100
|
+
microsoftIntegration?: TenantIntegration;
|
|
101
|
+
/** Zoom OAuth for creating meeting links */
|
|
102
|
+
zoomIntegration?: TenantIntegration;
|
|
103
|
+
}
|
|
104
|
+
export type TenantIntegration = {
|
|
105
|
+
connected: boolean;
|
|
106
|
+
accessToken: string;
|
|
107
|
+
refreshToken: string;
|
|
108
|
+
expiresAt: string;
|
|
109
|
+
};
|
|
110
|
+
export interface DashboardAnalytics {
|
|
111
|
+
teamMembers: number;
|
|
112
|
+
appointments: {
|
|
113
|
+
total: number;
|
|
114
|
+
today: number;
|
|
115
|
+
thisWeek: number;
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=db.tenant.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.tenant.d.ts","sourceRoot":"","sources":["../../src/types/db.tenant.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DBRecord } from "./db.js";
|
|
2
|
+
export type TenantGroupedStatType = "aiCalls" | "bookings";
|
|
3
|
+
export interface TenantGroupedStat extends DBRecord {
|
|
4
|
+
tenantId: string;
|
|
5
|
+
userId: string;
|
|
6
|
+
group: string;
|
|
7
|
+
ids: string[];
|
|
8
|
+
totals: number[];
|
|
9
|
+
currency?: string;
|
|
10
|
+
type: TenantGroupedStatType;
|
|
11
|
+
recordType: "TENANT_GROUPED_STAT";
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=db.tenantGroupedStat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.tenantGroupedStat.d.ts","sourceRoot":"","sources":["../../src/types/db.tenantGroupedStat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,UAAU,CAAC;AAC3D,MAAM,WAAW,iBAAkB,SAAQ,QAAQ;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,qBAAqB,CAAC;IAC5B,UAAU,EAAE,qBAAqB,CAAC;CACrC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { DBRecord } from "./db.js";
|
|
2
|
+
import { Subscription } from "./subscription.js";
|
|
3
|
+
export type UserLanguageType = "en" | "es" | "fr";
|
|
4
|
+
export type UserStatus = "active" | "inactive" | "blocked";
|
|
5
|
+
export type UserRoleType = "super_admin" | "owner" | "service_provider" | "customer";
|
|
6
|
+
export type SubscriptionFrequency = "monthly" | "yearly";
|
|
7
|
+
export interface UserTenant {
|
|
8
|
+
/** The ID of the tenant or user id */
|
|
9
|
+
id: string;
|
|
10
|
+
ownerId: string;
|
|
11
|
+
addedOn: string;
|
|
12
|
+
role: UserRoleType;
|
|
13
|
+
}
|
|
14
|
+
export interface User extends DBRecord {
|
|
15
|
+
email: string;
|
|
16
|
+
recordType: "USER";
|
|
17
|
+
lastLoginOn?: string;
|
|
18
|
+
tenants: UserTenant[];
|
|
19
|
+
/**
|
|
20
|
+
* Customer ID for JAY SDK
|
|
21
|
+
*/
|
|
22
|
+
customerId?: string;
|
|
23
|
+
subscription: {
|
|
24
|
+
id: string;
|
|
25
|
+
amount: number;
|
|
26
|
+
currency: string;
|
|
27
|
+
startDate: string;
|
|
28
|
+
endDate?: string;
|
|
29
|
+
autorenew: boolean;
|
|
30
|
+
productId?: string;
|
|
31
|
+
details: Subscription;
|
|
32
|
+
invoiceNumber?: string;
|
|
33
|
+
productPriceId?: string;
|
|
34
|
+
nextBillingDate?: string;
|
|
35
|
+
productGroup: "subscription";
|
|
36
|
+
frequency: SubscriptionFrequency;
|
|
37
|
+
provider?: "flutterwave" | "stripe" | "paypal" | "paystack" | "voucher";
|
|
38
|
+
};
|
|
39
|
+
cognitoRecord: CognitoUserSchema;
|
|
40
|
+
/**
|
|
41
|
+
* Server-only Cognito password for Google sign-in (auto-generated).
|
|
42
|
+
* Never expose to clients.
|
|
43
|
+
*/
|
|
44
|
+
cognitoBootstrapPassword?: string;
|
|
45
|
+
}
|
|
46
|
+
export interface CognitoUserSchema {
|
|
47
|
+
sub: string;
|
|
48
|
+
dob: string;
|
|
49
|
+
email: string;
|
|
50
|
+
mobile: string;
|
|
51
|
+
picture: string;
|
|
52
|
+
address: string;
|
|
53
|
+
website: string;
|
|
54
|
+
username: string;
|
|
55
|
+
fullName: string;
|
|
56
|
+
nickName: string;
|
|
57
|
+
lastName: string;
|
|
58
|
+
firstName: string;
|
|
59
|
+
verified: boolean;
|
|
60
|
+
locale: UserLanguageType;
|
|
61
|
+
details: {
|
|
62
|
+
timezone: string;
|
|
63
|
+
status: UserStatus;
|
|
64
|
+
mfaEnabled: boolean;
|
|
65
|
+
/** False when Cognito password was auto-generated (e.g. Google-only signup). */
|
|
66
|
+
passwordSetByUser?: boolean;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/** True only when the user chose their Cognito password (email signup or after set-password). */
|
|
70
|
+
export declare function isPasswordSetByUser(user: Pick<User, "cognitoRecord">): boolean;
|
|
71
|
+
export interface Staff {
|
|
72
|
+
id: string;
|
|
73
|
+
name: string;
|
|
74
|
+
email: string;
|
|
75
|
+
phone: string;
|
|
76
|
+
picture: string;
|
|
77
|
+
/** Date the staff member was added to the tenant profile */
|
|
78
|
+
addedOn: string;
|
|
79
|
+
role: UserRoleType;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=db.user.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.user.d.ts","sourceRoot":"","sources":["../../src/types/db.user.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { DBRecord } from "./db.js";
|
|
2
|
+
export interface UserConfirmation extends DBRecord {
|
|
3
|
+
code: string;
|
|
4
|
+
email: string;
|
|
5
|
+
sentOn: string;
|
|
6
|
+
expiresOn: string;
|
|
7
|
+
durationInMinutes: number;
|
|
8
|
+
recordType: "USER_CONFIRMATION";
|
|
9
|
+
reason: "RESET_PASSWORD" | "VERIFY_EMAIL" | "DELETE_ACCOUNT" | "DELETE_TENANT" | "CANCEL_BOOKING";
|
|
10
|
+
/** Required when reason is CANCEL_BOOKING */
|
|
11
|
+
bookingId?: string;
|
|
12
|
+
/** Required when reason is DELETE_TENANT (business profile deletion) */
|
|
13
|
+
tenantId?: string;
|
|
14
|
+
/** Required when reason is CANCEL_BOOKING */
|
|
15
|
+
link?: string;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=db.userConfirmation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.userConfirmation.d.ts","sourceRoot":"","sources":["../../src/types/db.userConfirmation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,MAAM,WAAW,gBAAiB,SAAQ,QAAQ;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,mBAAmB,CAAC;IAChC,MAAM,EAAE,gBAAgB,GAAG,cAAc,GAAG,gBAAgB,GAAG,eAAe,GAAG,gBAAgB,CAAC;IAClG,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { DBRecord } from "./db.js";
|
|
2
|
+
import { Tenant } from "./db.tenant.js";
|
|
3
|
+
import { User, UserStatus } from "./db.user.js";
|
|
4
|
+
export interface UserLoginSession extends DBRecord {
|
|
5
|
+
ip: string;
|
|
6
|
+
recordType: "USER_LOGIN_SESSION";
|
|
7
|
+
tokens: {
|
|
8
|
+
idToken: string;
|
|
9
|
+
accessToken: string;
|
|
10
|
+
refreshToken: string;
|
|
11
|
+
};
|
|
12
|
+
isFirstLogin: boolean;
|
|
13
|
+
userId: string;
|
|
14
|
+
browserId: string;
|
|
15
|
+
browser: string;
|
|
16
|
+
device: string;
|
|
17
|
+
endDate?: string;
|
|
18
|
+
startDate: string;
|
|
19
|
+
username: string;
|
|
20
|
+
status: UserStatus;
|
|
21
|
+
}
|
|
22
|
+
export interface ThisSession {
|
|
23
|
+
user: User;
|
|
24
|
+
tenants: Tenant[];
|
|
25
|
+
browserId: string;
|
|
26
|
+
session: UserLoginSession;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=db.userLoginSession.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.userLoginSession.d.ts","sourceRoot":"","sources":["../../src/types/db.userLoginSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,WAAW,gBAAiB,SAAQ,QAAQ;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,oBAAoB,CAAC;IACjC,MAAM,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,gBAAgB,CAAC;CAC7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { DBRecord } from "./db.js";
|
|
2
|
+
export declare const PARTNER_WEBHOOK_EVENTS: readonly ["booking.created", "booking.updated", "booking.cancelled", "customer.created", "customer.updated"];
|
|
3
|
+
export type PartnerWebhookEvent = (typeof PARTNER_WEBHOOK_EVENTS)[number];
|
|
4
|
+
export interface WebhookSubscription extends DBRecord {
|
|
5
|
+
recordType: "WEBHOOK_SUBSCRIPTION";
|
|
6
|
+
id: string;
|
|
7
|
+
tenantId: string;
|
|
8
|
+
clientId: string;
|
|
9
|
+
userId: string;
|
|
10
|
+
url: string;
|
|
11
|
+
events: PartnerWebhookEvent[];
|
|
12
|
+
secret: string;
|
|
13
|
+
enabled: boolean;
|
|
14
|
+
failureCount: number;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=db.webhook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.webhook.d.ts","sourceRoot":"","sources":["../../src/types/db.webhook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,eAAO,MAAM,sBAAsB,8GAMzB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,MAAM,WAAW,mBAAoB,SAAQ,QAAQ;IACnD,UAAU,EAAE,sBAAsB,CAAC;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { DurationUnit, ServiceCategory, ServiceLocationType, ServiceRatingSummary } from "./db.service.js";
|
|
2
|
+
export type DiscoverSort = "relevance" | "rating" | "price_asc" | "price_desc" | "newest";
|
|
3
|
+
export type DiscoverLocationFilter = "in_person" | "online" | "any";
|
|
4
|
+
export interface DiscoverBusinessAddress {
|
|
5
|
+
city: string;
|
|
6
|
+
state: string;
|
|
7
|
+
country: string;
|
|
8
|
+
line1?: string;
|
|
9
|
+
lat?: number;
|
|
10
|
+
lng?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface DiscoverItem {
|
|
13
|
+
tenantId: string;
|
|
14
|
+
serviceId: string;
|
|
15
|
+
title: string;
|
|
16
|
+
description: string;
|
|
17
|
+
url: string;
|
|
18
|
+
category?: ServiceCategory;
|
|
19
|
+
locationType: ServiceLocationType;
|
|
20
|
+
timezone: string;
|
|
21
|
+
duration: {
|
|
22
|
+
value: number;
|
|
23
|
+
unit: DurationUnit;
|
|
24
|
+
};
|
|
25
|
+
price: {
|
|
26
|
+
value: number;
|
|
27
|
+
currency: string;
|
|
28
|
+
};
|
|
29
|
+
business: {
|
|
30
|
+
name: string;
|
|
31
|
+
logoUrl: string;
|
|
32
|
+
slug?: string;
|
|
33
|
+
};
|
|
34
|
+
address?: DiscoverBusinessAddress;
|
|
35
|
+
rating?: ServiceRatingSummary;
|
|
36
|
+
distanceKm?: number;
|
|
37
|
+
boosted?: boolean;
|
|
38
|
+
}
|
|
39
|
+
export interface DiscoverResponse {
|
|
40
|
+
page: number;
|
|
41
|
+
pageSize: number;
|
|
42
|
+
total: number;
|
|
43
|
+
items: DiscoverItem[];
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=discover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/types/discover.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEhH,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,QAAQ,CAAC;AAC1F,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEpE,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,YAAY,EAAE,mBAAmB,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,YAAY,CAAA;KAAE,CAAC;IAChD,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,QAAQ,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,EAAE,CAAC;CACzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|