UNPKG

skedify-types

Version:
183 lines (160 loc) 5.49 kB
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; }