| 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 .jsv suffix or ?format=jsv
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/jsv
Content-Type: text/jsv
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/jsv
Content-Length: length
{
Vehicle:
{
Plate: String,
VIN: String,
GvwrLbs: 0,
BranchName: String,
InspectionDue: 0001-01-01,
InsuranceExpires: 0001-01-01,
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-01,
EquipmentMaintenanceID: 0,
Outcome: String,
OutcomeText: String,
OutcomeNote: String,
ScheduledFor: String,
SignedOffByName: String,
SignedOffAtUtc: 0001-01-01,
IsOpen: False,
Withdrawn: False,
PhotoCount: 0,
Photos:
[
{
WorkPhotoID: 0,
DefectKey: String,
Url: String,
MarkedUrl: String,
CapturedAtUtc: 0001-01-01,
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-01,
SavedAtUtc: 0001-01-01,
IsLate: False,
IsAway: False,
IsSatisfactory: False,
Odometer: 0,
LocationText: String,
Remarks: String,
ReviewedByName: String,
ReviewedAtUtc: 0001-01-01,
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-01,
EquipmentMaintenanceID: 0,
Outcome: String,
OutcomeText: String,
OutcomeNote: String,
ScheduledFor: String,
SignedOffByName: String,
SignedOffAtUtc: 0001-01-01,
IsOpen: False,
Withdrawn: False,
PhotoCount: 0,
Photos:
[
{
WorkPhotoID: 0,
DefectKey: String,
Url: String,
MarkedUrl: String,
CapturedAtUtc: 0001-01-01,
Lat: 0,
Lng: 0
}
]
}
],
Signatures:
[
{
SignatureRecordID: 0,
Role: String,
SignerName: String,
SignedAt: 0001-01-01,
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-01,
SavedAtUtc: 0001-01-01,
IsLate: False,
IsAway: False,
IsSatisfactory: False,
Odometer: 0,
LocationText: String,
Remarks: String,
ReviewedByName: String,
ReviewedAtUtc: 0001-01-01,
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-01,
EquipmentMaintenanceID: 0,
Outcome: String,
OutcomeText: String,
OutcomeNote: String,
ScheduledFor: String,
SignedOffByName: String,
SignedOffAtUtc: 0001-01-01,
IsOpen: False,
Withdrawn: False,
PhotoCount: 0,
Photos:
[
{
WorkPhotoID: 0,
DefectKey: String,
Url: String,
MarkedUrl: String,
CapturedAtUtc: 0001-01-01,
Lat: 0,
Lng: 0
}
]
}
],
Signatures:
[
{
SignatureRecordID: 0,
Role: String,
SignerName: String,
SignedAt: 0001-01-01,
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-01,
EquipmentMaintenanceID: 0,
Outcome: String,
OutcomeText: String,
OutcomeNote: String,
ScheduledFor: String,
SignedOffByName: String,
SignedOffAtUtc: 0001-01-01,
IsOpen: False,
Withdrawn: False,
PhotoCount: 0,
Photos:
[
{
WorkPhotoID: 0,
DefectKey: String,
Url: String,
MarkedUrl: String,
CapturedAtUtc: 0001-01-01,
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
}
}
}