skedify-types
Version:
183 lines (160 loc) • 5.49 kB
text/typescript
import { Locale } from ".";
export type ReminderTypes = "textMessage" | "email";
export type NotificationSettings = Record<ReminderTypes, boolean>;
/**
* No enum support in d.ts files,
* Use NotificationKeysEnum for mapped enum value
* corresponds with:
* - acceptedByContact = 0,
* - assignedByContact= 1,
* - completedByContact = 2,
* - invitedByContact = 3,
* - cancelledByContact = 4,
* - cancelledByCustomer = 5,
* - dateCreatedByContact = 6,
* - dateCreatedByCustomer =7,
* - dateChangedByContact = 8,
* - dateChangedByCustomer = 9,
* - possibilitiesCreatedByCustomer = 10,
* - possibilitiesChangedByCustomer = 11,
* - possibilitiesRequestedByContact = 12,
*/
export type NotificationKeys = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
export type Notifications = {
[k in NotificationKeys]: NotificationSettings;
};
export interface ReminderInterval {
time: number;
}
export type ReminderSettings = Record<ReminderTypes, ReminderInterval[]>;
export interface DefaultEnterpriseSettings {
allow_office_365_login: boolean;
allowed_sync_providers: string[];
appointment_block_suggestions: string;
appointment_completion_max_future_days: number;
appointment_contact_select: string;
appointment_max_suggestions: number;
appointment_min_preparation_time: number;
appointment_min_suggestions: number;
appointment_travel_buffer_time: number;
availability_max_future_days_to_sync: number;
contact_notifications: Notifications;
default_language: Locale;
enterprise_id: number;
first_time_customer_fields: FirstTimeCustomerFields;
id: string;
internal_customer_fields: InternalCustomerFields;
notifications_window?: unknown;
notifications: Notifications;
reminders: ReminderSettings;
returning_customer_fields: ReturningCustomerFields;
sender_email_addresses?: null | {
[locale: string]: string | undefined | null;
};
show_qr_code_in_customer_email: boolean;
video_provider_test_url: string;
web_app_is_reassign_search_enabled: boolean;
}
export enum WebAppCustomerBehaviour {
ENABLED = "enabled",
DISABLED = "disabled",
}
export interface EnterpriseTeamSettings {
allow_team_appointments: boolean;
allow_team_insights: boolean;
allow_team_team: boolean;
allow_team_office: boolean;
allow_team_scheduling_assignments: boolean;
allow_team_scheduling_planning_rules: boolean;
allow_team_scheduling_coverage_regions: boolean;
allow_team_team_unlink: boolean;
allow_team_team_profile: boolean;
allow_team_team_availability: boolean;
allow_team_team_expertise: boolean;
allow_team_team_calendar_sync: boolean;
}
export interface EnterprisePersonalSettings {
allow_personal_account: boolean;
allow_personal_availability: boolean;
allow_personal_calendar_sync: boolean;
allow_personal_application_settings: boolean;
}
export interface EnterpriseAppointmentsSettings {
allow_personal_appointments: boolean;
}
export interface EnterpriseCustomerSettings {
appointment_create_allow_change_customer: boolean;
appointment_create_allow_create_customer: boolean;
appointment_create_allow_customer_instigator: boolean;
appointment_create_allow_invite_customer: boolean;
web_app_customers_behaviour: WebAppCustomerBehaviour;
}
export interface EnterpriseSubjectSettings {
appointment_create_allow_set_subject: boolean;
default_subject_id?: string | null;
}
export interface EnterpriseAvailabilitySettings {
appointment_default_duration: number;
appointment_earliest_possible: number;
appointment_latest_possible: number;
time_slot_granularity: number;
}
export interface EnterprisePluginSettings {
redirect_url: string;
localized_redirect_urls: [] | { [lang: string]: string };
terms_conditions_url: string;
}
export interface EnterpriseUserCommunicationSettings {
send_notification_emails?: boolean;
send_notification_sms?: boolean;
}
export type EnterpriseSettings = DefaultEnterpriseSettings &
EnterpriseCustomerSettings &
EnterprisePersonalSettings &
EnterpriseTeamSettings &
EnterpriseAppointmentsSettings &
EnterpriseSubjectSettings &
EnterpriseAvailabilitySettings &
EnterprisePluginSettings &
EnterpriseUserCommunicationSettings;
export interface CustomerFieldSetting {
ask: boolean;
required: boolean;
order: number;
}
export interface FirstTimeCustomerFields {
// address: CustomerFieldSetting;
cell_phone_number: CustomerFieldSetting;
company: CustomerFieldSetting;
// credit_card_number: CustomerFieldSetting;
customer_number: CustomerFieldSetting;
// debit_card_number: CustomerFieldSetting;
// dob: CustomerFieldSetting;
/** Mandatory */
email: CustomerFieldSetting;
// home_phone_number: CustomerFieldSetting;
is_existing: CustomerFieldSetting;
/** Mandatory */
name: CustomerFieldSetting;
// title: CustomerFieldSetting;
location: CustomerFieldSetting;
}
export interface ReturningCustomerFields extends FirstTimeCustomerFields {
/** Mandatory*/
external_customer_id: CustomerFieldSetting;
}
interface InternalCustomerFieldSetting {
ask: boolean;
required: boolean;
order: number;
private: boolean;
}
export interface InternalCustomerFields {
customer_number: InternalCustomerFieldSetting;
external_id: InternalCustomerFieldSetting;
first_name: InternalCustomerFieldSetting;
last_name: InternalCustomerFieldSetting;
email: InternalCustomerFieldSetting;
phone_number: InternalCustomerFieldSetting;
language: InternalCustomerFieldSetting;
}