""" Options: Date: 2026-03-30 11:49:51 Version: 8.80 Tip: To override a DTO option, remove "#" prefix before updating BaseUrl: https://api.dev.dynamics.trendsic.com #GlobalNamespace: #AddServiceStackTypes: True #AddResponseStatus: False #AddImplicitVersion: #AddDescriptionAsComments: True IncludeTypes: SchedulerRequest.* #ExcludeTypes: #DefaultImports: datetime,decimal,marshmallow.fields:*,servicestack:*,typing:*,dataclasses:dataclass/field,dataclasses_json:dataclass_json/LetterCase/Undefined/config,enum:Enum/IntEnum #DataClass: #DataClassJson: """ import datetime import decimal from marshmallow.fields import * from servicestack import * from typing import * from dataclasses import dataclass, field from dataclasses_json import dataclass_json, LetterCase, Undefined, config from enum import Enum, IntEnum @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class LineImage: image_id: Optional[str] = None line_id: Optional[str] = None image_title: Optional[str] = None upload_date: datetime.datetime = datetime.datetime(1, 1, 1) mime_type: Optional[str] = None file_name: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Line: id: Optional[str] = None location_id: Optional[str] = None location_name: Optional[str] = None name: Optional[str] = None description: Optional[str] = None service_duration_minutes: int = 0 wait_time: int = 0 cost: Decimal = decimal.Decimal(0) upper_threshold: Optional[int] = None lower_threshold: Optional[int] = None active: bool = False ent_date: Optional[datetime.datetime] = None mod_date: Optional[datetime.datetime] = None send_questionnaire: bool = False require_upload: bool = False upload_message: Optional[str] = None line_images: List[LineImage] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Location: id: Optional[str] = None client_id: Optional[str] = None name: Optional[str] = None address1: Optional[str] = None address2: Optional[str] = None city: Optional[str] = None state: Optional[str] = None zip: Optional[str] = None phone: Optional[str] = None fax: Optional[str] = None url: Optional[str] = None email: Optional[str] = None time_zone: Optional[str] = None active: bool = False ent_date: datetime.datetime = datetime.datetime(1, 1, 1) mod_date: datetime.datetime = datetime.datetime(1, 1, 1) location_image: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Contact: contact_id: int = 0 contact_type: int = 0 first_name: Optional[str] = None last_name: Optional[str] = None name: Optional[str] = None role: Optional[str] = None title: Optional[str] = None email_work: Optional[str] = None email_personal: Optional[str] = None district: Optional[str] = None district_i_d: int = 0 school: Optional[str] = None school_i_d: int = 0 state: Optional[str] = None state_name: Optional[str] = None state_i_d: int = 0 county_i_d: int = 0 county: Optional[str] = None phone: Optional[str] = None department: Optional[str] = None flow: Optional[str] = None last_contact: datetime.datetime = datetime.datetime(1, 1, 1) do_not_contact: bool = False active: bool = False agent_id: int = 0 phone_alt: Optional[str] = None pera_contact_id: int = 0 room_number: Optional[str] = None source_type_id: int = 0 source_type_desc: Optional[str] = None source_note: Optional[str] = None contact_status_id: int = 0 contact_status_desc: Optional[str] = None ssn: Optional[str] = None date_of_birth: datetime.datetime = datetime.datetime(1, 1, 1) deleted: bool = False is_shared: bool = False address_line1: Optional[str] = None address_city: Optional[str] = None address_state: Optional[str] = None address_zip: Optional[str] = None deleted_by: Optional[str] = None deleted_date_time_utc: Optional[datetime.datetime] = None has_n_b_c: bool = False has_fact_finder_sheet: bool = False middle_initial: Optional[str] = None tags: Optional[str] = None date_created: datetime.datetime = datetime.datetime(1, 1, 1) phone_label: Optional[str] = None alt_phone_label: Optional[str] = None carriers: Optional[str] = None contact_image: Optional[str] = None company_affiliation: Optional[str] = None additional_information: Optional[str] = None has_gift_card: bool = False contact_category: int = 0 writing_agent_id: int = 0 writing_agent_name: Optional[str] = None marital_status: Optional[str] = None total_debt_amount: Decimal = decimal.Decimal(0) number_of_debt_accounts: int = 0 fact_finder_code_id: int = 0 business_name: Optional[str] = None dba: Optional[str] = None contact_g_u_i_d: Optional[str] = None project_end_date: datetime.datetime = datetime.datetime(1, 1, 1) rate: int = 0 job_i_d: int = 0 job_name: Optional[str] = None job_count: int = 0 locked: bool = False locked_by_agent_id: int = 0 locked_timestamp: datetime.datetime = datetime.datetime(1, 1, 1) initials: Optional[str] = None contact_category_name: Optional[str] = None sms_opt_in: bool = False @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class SchedulerTimeslot: day: datetime.datetime = datetime.datetime(1, 1, 1) time: datetime.timedelta = datetime.timedelta() duration: int = 0 start_date_time: datetime.datetime = datetime.datetime(1, 1, 1) end_date_time: datetime.datetime = datetime.datetime(1, 1, 1) time_friendly: Optional[str] = None contact: Optional[Contact] = None service_ids: List[str] = field(default_factory=list) location_id: Optional[str] = None unavailable: bool = False booked_ids: List[int] = field(default_factory=list) calendar_id: Optional[str] = None scheduler_url: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class QueueDefault: location_id: Optional[str] = None services: List[str] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Agent: agent_id: int = 0 company: Optional[str] = None agent_name: Optional[str] = None first_name: Optional[str] = None last_name: Optional[str] = None middle_initial: Optional[str] = None address1: Optional[str] = None address2: Optional[str] = None city: Optional[str] = None state: Optional[str] = None zip: Optional[str] = None country: Optional[str] = None email: Optional[str] = None email_signature: Optional[str] = None home_phone: Optional[str] = None cell_phone: Optional[str] = None work_phone: Optional[str] = None ins_licensed: bool = False agree_to_disclosures: bool = False agree_to_date: Optional[datetime.datetime] = None paid_date: Optional[datetime.datetime] = None agent_number: Optional[str] = None referring_agent: Optional[str] = None placement_agent: Optional[str] = None created_date: Optional[datetime.datetime] = None user_id: Optional[str] = None is_agent: bool = False package: Optional[str] = None store_name: Optional[str] = None notes: Optional[str] = None upline1: Optional[int] = None upline2: Optional[int] = None upline3: Optional[int] = None upline4: Optional[int] = None mvpid: Optional[int] = None avpid: Optional[int] = None rvpid: Optional[int] = None agent_level: Optional[Decimal] = None is_m_v_p: bool = False is_r_v_p: bool = False is_a_v_p: bool = False is_admin: bool = False is_business_card_admin: bool = False team_name: Optional[str] = None location_id: Optional[str] = None calendar_id: Optional[str] = None rank: Optional[str] = None nbc: bool = False upline1_percent: Optional[Decimal] = None upline2_percent: Optional[Decimal] = None upline3_percent: Optional[Decimal] = None upline4_percent: Optional[Decimal] = None agent_status: Optional[str] = None office: Optional[str] = None dob: Optional[datetime.datetime] = None ssn: Optional[str] = None fax: Optional[str] = None business_email: Optional[str] = None modified_date: Optional[datetime.datetime] = None modified_by: Optional[str] = None time_zone: Optional[str] = None leader_locked: bool = False last_submitted_business_date: datetime.datetime = datetime.datetime(1, 1, 1) grace_period_date: datetime.datetime = datetime.datetime(1, 1, 1) vested: bool = False direct_pay: datetime.datetime = datetime.datetime(1, 1, 1) direct_pay_appr_by: Optional[str] = None fact_finder_billing: Optional[Decimal] = None full_name: Optional[str] = None by_last_name: Optional[str] = None is_security_licensed: bool = False is_encompass_admin: bool = False api_key: Optional[str] = None last_session_id: Optional[str] = None last_login: Optional[datetime.datetime] = None mfa_active: bool = False require_m_f_a: bool = False sms_phone_number: Optional[str] = None verified_email_status: bool = False verified_cell_phone_status: bool = False scheduler_url: Optional[str] = None queue_defaults: Optional[QueueDefault] = None roles: List[str] = field(default_factory=list) password_updated: bool = False restrict_to_single_session: bool = False agent_image: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class SchedulerConfiguration: config_id: int = 0 scheduler_url: Optional[str] = None scheduler_name: Optional[str] = None default_location: Optional[str] = None default_summary: Optional[str] = None default_description: Optional[str] = None day_start: datetime.timedelta = datetime.timedelta() day_start_friendly: Optional[str] = None day_end: datetime.timedelta = datetime.timedelta() day_end_friendly: Optional[str] = None timeslot_duration: int = 0 number_of_slots: Optional[int] = None location_id: Optional[str] = None calendar_id: Optional[str] = None agent_id: int = 0 time_zone: Optional[str] = None available_date_times: List[ScheduleConfigDay] = field(default_factory=list) available_services: List[str] = field(default_factory=list) all_services: List[Line] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class SchedulerDay: day: datetime.datetime = datetime.datetime(1, 1, 1) month_number: int = 0 day_number: int = 0 day_of_week: Optional[str] = None timeslots: List[SchedulerTimeslot] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class SchedulerWeek: settings: Optional[SchedulerConfiguration] = None days: List[SchedulerDay] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class SchedulerResponse: location: Optional[Location] = None agent: Optional[Agent] = None response_status: Optional[ResponseStatus] = None week: Optional[SchedulerWeek] = None services: List[Line] = field(default_factory=list) # @Route("/v1/Scheduler/{SchedulerUrl}", "GET,OPTIONS") # @Route("/v1/Scheduler/{SchedulerUrl}/{StartDate}", "GET,OPTIONS") # @Route("/v1/Scheduler/{SchedulerUrl}/{StartDate}/{LocalDate}", "GET,OPTIONS") # @Route("/v1/SchedulerServices/{SchedulerUrl}/{StartDate}/{ServiceIdsList}", "GET,OPTIONS") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class SchedulerRequest(IReturn[SchedulerResponse]): scheduler_url: Optional[str] = None start_date: datetime.datetime = datetime.datetime(1, 1, 1) session: List[str] = field(default_factory=list) service_ids_list: Optional[str] = None