Trendsic Platform Service

<back to all web services

EquipmentDvirSignOffRequest

Requires Authentication
The following routes are available for this service:
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

HTTP + 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"}}}