skedify-types
Version:
191 lines • 5.57 kB
TypeScript
import { BaseFields, Locale } from ".";
export interface SubjectCategory extends BaseFields {
color: string;
image: string | null;
languages: null | string;
name: string;
order: number;
updated_at: string;
}
export interface SubjectCategoryLanguage {
enterprise_id: number;
created_at: string;
updated_at: string;
locale: Locale;
translations?: {
id: string;
created_at: string;
updated_at: string;
subject_category_id: string;
name: string;
} | null;
}
export interface WithSubjectCategoryLanguageTranslations {
languages: {
[locale: string]: SubjectCategoryLanguage;
};
}
export interface Subject extends BaseFields {
completion_outcome_list_id: string | null;
customer_cancellation_outcome_list_id: string | null;
contact_cancellation_outcome_list_id: string | null;
category_id: string;
description: string | null;
instructions: string | null;
is_active: boolean;
is_default: boolean;
is_shortlist: boolean;
order: number;
timezone: string | null;
title: string;
}
export interface WithAppointmentSubject {
subject: Subject & WithCategory;
}
/**
* @deprecated
* Use the following composable interfaces:
* - WithCategory
*/
export interface SubjectWithCategory extends Subject {
subject_category: SubjectCategory | null;
}
export interface WithCategory {
subject_category: SubjectCategory | null;
}
/**
* No support for enum in d.ts files
* Use MeetingTypeEnum for mapped enum value
*/
export type MeetingType = "office" | "on_location" | "phone" | "video";
export declare enum MeetingTypeEnum {
OFFICE = "office",
ON_LOCATION = "on_location",
PHONE = "phone",
VIDEO = "video"
}
export type ReceiverType = "customer" | "contact";
export interface SubjectAvailabilitySettings {
auto_accept?: boolean | null;
created_at?: string;
estimated_duration?: number | null;
id?: string;
is_meeting_type_allowed?: boolean | null;
max_concurrent_appointments?: number | null;
meeting_type: MeetingType;
priority1_offset?: number | null;
priority2_offset?: number | null;
subject_id: string;
time_slot_earliest_possible?: number | null;
time_slot_granularity?: number | null;
time_slot_latest_possible?: number | null;
trailing_buffer_time?: number | null;
updated_at?: string;
}
export interface OfficeSubjectAvailabilitySettings extends SubjectAvailabilitySettings {
id: string;
office_id: string;
}
export interface SubjectTranslation {
id: string;
subject_id: string;
title: string;
description: string | null;
instructions: string | null;
created_at: string;
updated_at: string;
}
export interface SubjectLanguages {
[locale: string]: {
enterprise_id: string;
created_at: string;
updated_at: string;
translations?: SubjectTranslation | null;
};
}
export interface WithSubjectQuestionLanguages {
languages: {
[locale: string]: {
enterprise_id: string;
created_at: string;
updated_at: string;
translations: {
label?: string;
help_text?: string;
placeholder?: string;
} | null;
};
};
}
export interface WithSubjectOptionLanguages {
languages: {
[locale: string]: {
enterprise_id: string;
created_at: string;
updated_at: string;
translations: {
label?: string;
} | null;
};
};
}
export interface WithAvailabilitySettings {
availability_settings: SubjectAvailabilitySettings[];
}
export interface WithLanguages {
languages: SubjectLanguages;
}
export interface WithSubjectQuestions<T = unknown> {
questions: (SubjectQuestion & T)[];
}
export type SubjectQuestionDataType = "final_remarks" | "text" | "number" | "website";
export type SubjectQuestionInputType = "text_area" | "text_field" | "check_boxes" | "radio_buttons";
export type SubjectQuestionType = "long_text" | "short_text" | "select" | "number";
export declare const QuestionDataTypeEnum: {
readonly FINAL_REMARKS: "final_remarks";
readonly TEXT: "text";
readonly NUMBER: "number";
readonly WEBSITE: "website";
};
export declare const QuestionInputTypeEnum: {
readonly TEXT_AREA: "text_area";
readonly TEXT_FIELD: "text_field";
readonly CHECK_BOXES: "check_boxes";
readonly RADIO_BUTTONS: "radio_buttons";
};
export declare const QuestionTypeEnum: {
readonly LONG_TEXT: "long_text";
readonly SHORT_TEXT: "short_text";
readonly SELECT: "select";
readonly NUMBER: "number";
};
interface SubjectSettings {
label_visible: boolean;
help_text_visible: boolean;
required: boolean;
}
export interface SubjectOption extends Omit<BaseFields, "enterprise_id"> {
question_id: string;
label: string;
value: string;
is_open?: number;
updated_at: string;
}
export interface SubjectQuestion extends Omit<BaseFields, "enterprise_id"> {
subject_id: string;
label: string;
data_type: SubjectQuestionDataType;
input_type: SubjectQuestionInputType;
category: string;
order: number;
settings?: SubjectSettings | null;
visible: boolean;
help_text: string | null;
placeholder?: string | null;
is_conditional: boolean;
updated_at: string;
languages?: unknown;
options: SubjectOption[];
}
export {};
//# sourceMappingURL=subject.d.ts.map