""" Options: Date: 2026-10-23 09:32:34 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: EquipmentDvirSignOffRequest.* #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 DvirSignOffItem: dvir_defect_i_d: int = 0 outcome: Optional[str] = None note: Optional[str] = None scheduled_for: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class DvirUnitRef: equipment_i_d: int = 0 unit: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class DvirPhotoView: work_photo_i_d: int = 0 defect_key: Optional[str] = None url: Optional[str] = None marked_url: Optional[str] = None captured_at_utc: Optional[datetime.datetime] = None lat: Optional[Decimal] = None lng: Optional[Decimal] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class DvirDefectView: dvir_defect_i_d: int = 0 client_key: Optional[str] = None dvir_report_i_d: Optional[int] = None report_number: Optional[str] = None equipment_i_d: int = 0 unit: Optional[str] = None item_key: Optional[str] = None label: Optional[str] = None form_line: Optional[str] = None is_custom: bool = False severity: Optional[str] = None severity_text: Optional[str] = None note: Optional[str] = None source: Optional[str] = None reported_by_name: Optional[str] = None reported_at_utc: Optional[datetime.datetime] = None equipment_maintenance_i_d: Optional[int] = None outcome: Optional[str] = None outcome_text: Optional[str] = None outcome_note: Optional[str] = None scheduled_for: Optional[str] = None signed_off_by_name: Optional[str] = None signed_off_at_utc: Optional[datetime.datetime] = None is_open: bool = False withdrawn: bool = False photo_count: int = 0 photos: List[DvirPhotoView] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class DvirVehicleView: equipment_i_d: int = 0 unit: Optional[str] = None name: Optional[str] = None vehicle_type: Optional[str] = None is_trailer: bool = False vehicle_status: Optional[str] = None status: Optional[str] = None status_text: Optional[str] = None line: Optional[str] = None first_unsafe_report: Optional[str] = None open_count: int = 0 local_today: Optional[str] = None needs_pre_trip: bool = False needs_review: bool = False review_report_ids: List[int] = field(default_factory=list) trailers: List[DvirUnitRef] = field(default_factory=list) last_odometer: Optional[int] = None in_use_by: Optional[str] = None driving_now: bool = False today_pre_trip_id: Optional[int] = None today_post_trip_id: Optional[int] = None open_defects: List[DvirDefectView] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class DvirSignatureView: signature_record_i_d: int = 0 role: Optional[str] = None signer_name: Optional[str] = None signed_at: Optional[datetime.datetime] = None image_url: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class DvirReportView: dvir_report_i_d: int = 0 number: Optional[str] = None kind: Optional[str] = None kind_text: Optional[str] = None equipment_i_d: int = 0 unit: Optional[str] = None trailers: List[DvirUnitRef] = field(default_factory=list) contact_i_d: int = 0 driver_name: Optional[str] = None board: Optional[str] = None for_date: Optional[str] = None filed_at_utc: datetime.datetime = datetime.datetime(1, 1, 1) saved_at_utc: Optional[datetime.datetime] = None is_late: bool = False is_away: bool = False is_satisfactory: bool = False odometer: Optional[int] = None location_text: Optional[str] = None remarks: Optional[str] = None reviewed_by_name: Optional[str] = None reviewed_at_utc: Optional[datetime.datetime] = None chip: Optional[str] = None defects: List[DvirDefectView] = field(default_factory=list) signatures: List[DvirSignatureView] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class DvirVehicleDetail(DvirVehicleView): plate: Optional[str] = None vin: Optional[str] = None gvwr_lbs: Optional[int] = None branch_name: Optional[str] = None inspection_due: Optional[datetime.datetime] = None insurance_expires: Optional[datetime.datetime] = None recently_fixed: List[DvirDefectView] = field(default_factory=list) review_reports: List[DvirReportView] = field(default_factory=list) history: List[DvirReportView] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class EquipmentDvirSignOffResponse: vehicle: Optional[DvirVehicleDetail] = None returned: bool = False response_status: Optional[ResponseStatus] = None # @Route("/v1/Equipment/{EquipmentID}/dvir/signoff", "POST,OPTIONS") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class EquipmentDvirSignOffRequest(IReturn[EquipmentDvirSignOffResponse]): equipment_i_d: int = 0 defects: List[DvirSignOffItem] = field(default_factory=list) mechanic_name: Optional[str] = None signature_png: Optional[str] = None