""" Options: Date: 2026-10-12 00:12:32 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: CourierProfileCreateRequest.* #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 CourierPay: worker_class: Optional[str] = None per_pickup: Decimal = decimal.Decimal(0) per_stop: Decimal = decimal.Decimal(0) per_missed: Decimal = decimal.Decimal(0) per_cancel: Decimal = decimal.Decimal(0) wait_after_min: int = 0 wait_per_min: Decimal = decimal.Decimal(0) mileage_on: bool = False per_mile: Decimal = decimal.Decimal(0) min_per_job: Decimal = decimal.Decimal(0) tips_pct: Decimal = decimal.Decimal(0) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CourierDispatch: ping_secs: int = 0 radius_mi: Decimal = decimal.Decimal(0) decline_penalty: bool = False next_rule: Optional[str] = None go_min: int = 0 last_min: int = 0 near_full: int = 0 margin_min: int = 0 traffic_source: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CourierMissed: wait_min: int = 0 fee: Decimal = decimal.Decimal(0) cancel_fee: Decimal = decimal.Decimal(0) auto_rebook: bool = False require_contact: bool = False require_photo: bool = False @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CourierPrivacy: thread_hrs: int = 0 photo_days: int = 0 lock_names: Optional[str] = None hide_addr: bool = False live_eta: bool = False tipping: bool = False @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CourierPricing: base: Decimal = decimal.Decimal(0) per_unit: Decimal = decimal.Decimal(0) per_mile: Decimal = decimal.Decimal(0) min_order: Decimal = decimal.Decimal(0) tax_pct: Decimal = decimal.Decimal(0) final_after_count: bool = False service_area: List[str] = field(default_factory=list) window_min: int = 0 surcharges: Dict[str, Decimal] = field(default_factory=dict) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CourierBooking: on: bool = False slug: Optional[str] = None asap: bool = False min_lead_min: int = 0 open: Optional[str] = None close: Optional[str] = None drive_buffer_min: int = 0 zips: List[str] = field(default_factory=list) recurring: bool = False pay_timing: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CourierLevelView: code: Optional[str] = None name: Optional[str] = None in_by: Optional[str] = None within_min: int = 0 ready: Optional[str] = None days: List[int] = field(default_factory=list) is_on: bool = False @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CourierFacilityView: code: Optional[str] = None name: Optional[str] = None address: Optional[str] = None intake_min: int = 0 levels: List[CourierLevelView] = field(default_factory=list) holidays: List[str] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CourierVehicleView: equipment_i_d: int = 0 unit_number: Optional[str] = None name: Optional[str] = None unit: Optional[str] = None cap: Decimal = decimal.Decimal(0) cold: bool = False @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CourierProfileContext: drivers: int = 0 profile_count: int = 0 pay_plan_id: Optional[int] = None zone_mode: Optional[str] = None zone_name: Optional[str] = None zone_count: int = 0 has_booking_page: bool = False has_rate_config: bool = False vehicle_facts: Dict[str, str] = field(default_factory=dict) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CourierProfileView: courier_profile_i_d: int = 0 code: Optional[str] = None name: Optional[str] = None business_name: Optional[str] = None route_shape: Optional[str] = None enabled: bool = False template_from: Optional[str] = None unit_one: Optional[str] = None unit_many: Optional[str] = None facility_noun: Optional[str] = None unit_one_es: Optional[str] = None unit_many_es: Optional[str] = None facility_noun_es: Optional[str] = None tag_mode: Optional[str] = None tag_formats: List[str] = field(default_factory=list) pay: Optional[CourierPay] = None dispatch: Optional[CourierDispatch] = None missed: Optional[CourierMissed] = None privacy: Optional[CourierPrivacy] = None pricing: Optional[CourierPricing] = None booking: Optional[CourierBooking] = None facilities: List[CourierFacilityView] = field(default_factory=list) vehicles: List[CourierVehicleView] = field(default_factory=list) proof: Dict[str, Dict[str, str]] = field(default_factory=dict) context: Optional[CourierProfileContext] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CourierProfileSummary: courier_profile_i_d: int = 0 code: Optional[str] = None name: Optional[str] = None business_name: Optional[str] = None route_shape: Optional[str] = None enabled: bool = False template_from: Optional[str] = None drivers: int = 0 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CourierTemplateOption: key: Optional[str] = None label: Optional[str] = None detail: Optional[str] = None route_shape: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CourierIssue: key: Optional[str] = None section: Optional[str] = None message: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CourierChange: key: Optional[str] = None section: Optional[str] = None label: Optional[str] = None from_: Optional[str] = field(metadata=config(field_name='from'), default=None) to: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CourierPreviewLine: k: Optional[str] = None v: Optional[str] = None dot: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CourierPreview: deadline_title: Optional[str] = None deadline_lead: Optional[str] = None room_w: Optional[str] = None last_w: Optional[str] = None go_w: Optional[str] = None zones: List[CourierPreviewLine] = field(default_factory=list) pay_sub: Optional[str] = None pay_rows: List[CourierPreviewLine] = field(default_factory=list) pay_total: Optional[str] = None proof_rows: List[CourierPreviewLine] = field(default_factory=list) ping: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CourierFleetVehicle: equipment_i_d: int = 0 unit_number: Optional[str] = None name: Optional[str] = None vehicle_type: Optional[str] = None unit: Optional[str] = None cap: Optional[Decimal] = None cold: bool = False status: Optional[str] = None assigned: bool = False @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CourierResponse: profiles: List[CourierProfileSummary] = field(default_factory=list) templates: List[CourierTemplateOption] = field(default_factory=list) profile: Optional[CourierProfileView] = None issues: List[CourierIssue] = field(default_factory=list) changes: List[CourierChange] = field(default_factory=list) preview: Optional[CourierPreview] = None fleet: List[CourierFleetVehicle] = field(default_factory=list) response_status: Optional[ResponseStatus] = None # @Route("/v1/dispatch/courier/profiles", "POST,OPTIONS") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CourierProfileCreateRequest(IReturn[CourierResponse]): name: Optional[str] = None template_key: Optional[str] = None