| POST,OPTIONS | /v1/Equipment/{EquipmentID}/dvir/signoff |
|---|
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 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
@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 EquipmentDvirSignOffRequest:
equipment_i_d: int = 0
defects: List[DvirSignOffItem] = field(default_factory=list)
mechanic_name: Optional[str] = None
signature_png: Optional[str] = None
Python EquipmentDvirSignOffRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /v1/Equipment/{EquipmentID}/dvir/signoff HTTP/1.1
Host: api.dev.dynamics.trendsic.com
Accept: text/csv
Content-Type: text/csv
Content-Length: length
{"EquipmentID":0,"Defects":[{"DvirDefectID":0,"Outcome":"String","Note":"String","ScheduledFor":"String"}],"MechanicName":"String","SignaturePng":"String"}
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length
{"Vehicle":{"Plate":"String","VIN":"String","GvwrLbs":0,"BranchName":"String","InspectionDue":"0001-01-01T00:00:00.0000000","InsuranceExpires":"0001-01-01T00:00:00.0000000","RecentlyFixed":[{"DvirDefectID":0,"ClientKey":"String","DvirReportID":0,"ReportNumber":"String","EquipmentID":0,"Unit":"String","ItemKey":"String","Label":"String","FormLine":"String","IsCustom":false,"Severity":"String","SeverityText":"String","Note":"String","Source":"String","ReportedByName":"String","ReportedAtUtc":"0001-01-01T00:00:00.0000000","EquipmentMaintenanceID":0,"Outcome":"String","OutcomeText":"String","OutcomeNote":"String","ScheduledFor":"String","SignedOffByName":"String","SignedOffAtUtc":"0001-01-01T00:00:00.0000000","IsOpen":false,"Withdrawn":false,"PhotoCount":0,"Photos":[{"WorkPhotoID":0,"DefectKey":"String","Url":"String","MarkedUrl":"String","CapturedAtUtc":"0001-01-01T00:00:00.0000000","Lat":0,"Lng":0}]}],"ReviewReports":[{"DvirReportID":0,"Number":"String","Kind":"String","KindText":"String","EquipmentID":0,"Unit":"String","Trailers":[{"EquipmentID":0,"Unit":"String"}],"ContactID":0,"DriverName":"String","Board":"String","ForDate":"String","FiledAtUtc":"0001-01-01T00:00:00.0000000","SavedAtUtc":"0001-01-01T00:00:00.0000000","IsLate":false,"IsAway":false,"IsSatisfactory":false,"Odometer":0,"LocationText":"String","Remarks":"String","ReviewedByName":"String","ReviewedAtUtc":"0001-01-01T00:00:00.0000000","Chip":"String","Defects":[{"DvirDefectID":0,"ClientKey":"String","DvirReportID":0,"ReportNumber":"String","EquipmentID":0,"Unit":"String","ItemKey":"String","Label":"String","FormLine":"String","IsCustom":false,"Severity":"String","SeverityText":"String","Note":"String","Source":"String","ReportedByName":"String","ReportedAtUtc":"0001-01-01T00:00:00.0000000","EquipmentMaintenanceID":0,"Outcome":"String","OutcomeText":"String","OutcomeNote":"String","ScheduledFor":"String","SignedOffByName":"String","SignedOffAtUtc":"0001-01-01T00:00:00.0000000","IsOpen":false,"Withdrawn":false,"PhotoCount":0,"Photos":[{"WorkPhotoID":0,"DefectKey":"String","Url":"String","MarkedUrl":"String","CapturedAtUtc":"0001-01-01T00:00:00.0000000","Lat":0,"Lng":0}]}],"Signatures":[{"SignatureRecordID":0,"Role":"String","SignerName":"String","SignedAt":"0001-01-01T00:00:00.0000000","ImageUrl":"String"}]}],"History":[{"DvirReportID":0,"Number":"String","Kind":"String","KindText":"String","EquipmentID":0,"Unit":"String","Trailers":[{"EquipmentID":0,"Unit":"String"}],"ContactID":0,"DriverName":"String","Board":"String","ForDate":"String","FiledAtUtc":"0001-01-01T00:00:00.0000000","SavedAtUtc":"0001-01-01T00:00:00.0000000","IsLate":false,"IsAway":false,"IsSatisfactory":false,"Odometer":0,"LocationText":"String","Remarks":"String","ReviewedByName":"String","ReviewedAtUtc":"0001-01-01T00:00:00.0000000","Chip":"String","Defects":[{"DvirDefectID":0,"ClientKey":"String","DvirReportID":0,"ReportNumber":"String","EquipmentID":0,"Unit":"String","ItemKey":"String","Label":"String","FormLine":"String","IsCustom":false,"Severity":"String","SeverityText":"String","Note":"String","Source":"String","ReportedByName":"String","ReportedAtUtc":"0001-01-01T00:00:00.0000000","EquipmentMaintenanceID":0,"Outcome":"String","OutcomeText":"String","OutcomeNote":"String","ScheduledFor":"String","SignedOffByName":"String","SignedOffAtUtc":"0001-01-01T00:00:00.0000000","IsOpen":false,"Withdrawn":false,"PhotoCount":0,"Photos":[{"WorkPhotoID":0,"DefectKey":"String","Url":"String","MarkedUrl":"String","CapturedAtUtc":"0001-01-01T00:00:00.0000000","Lat":0,"Lng":0}]}],"Signatures":[{"SignatureRecordID":0,"Role":"String","SignerName":"String","SignedAt":"0001-01-01T00:00:00.0000000","ImageUrl":"String"}]}],"EquipmentID":0,"Unit":"String","Name":"String","VehicleType":"String","IsTrailer":false,"VehicleStatus":"String","Status":"String","StatusText":"String","Line":"String","FirstUnsafeReport":"String","OpenCount":0,"LocalToday":"String","NeedsPreTrip":false,"NeedsReview":false,"ReviewReportIds":[0],"Trailers":[{"EquipmentID":0,"Unit":"String"}],"LastOdometer":0,"InUseBy":"String","DrivingNow":false,"TodayPreTripId":0,"TodayPostTripId":0,"OpenDefects":[{"DvirDefectID":0,"ClientKey":"String","DvirReportID":0,"ReportNumber":"String","EquipmentID":0,"Unit":"String","ItemKey":"String","Label":"String","FormLine":"String","IsCustom":false,"Severity":"String","SeverityText":"String","Note":"String","Source":"String","ReportedByName":"String","ReportedAtUtc":"0001-01-01T00:00:00.0000000","EquipmentMaintenanceID":0,"Outcome":"String","OutcomeText":"String","OutcomeNote":"String","ScheduledFor":"String","SignedOffByName":"String","SignedOffAtUtc":"0001-01-01T00:00:00.0000000","IsOpen":false,"Withdrawn":false,"PhotoCount":0,"Photos":[{"WorkPhotoID":0,"DefectKey":"String","Url":"String","MarkedUrl":"String","CapturedAtUtc":"0001-01-01T00:00:00.0000000","Lat":0,"Lng":0}]}]},"Returned":false,"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}}}