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
<?php namespace dtos;

use DateTime;
use Exception;
use DateInterval;
use JsonSerializable;
use ServiceStack\{IReturn,IReturnVoid,IGet,IPost,IPut,IDelete,IPatch,IMeta,IHasSessionId,IHasBearerToken,IHasVersion};
use ServiceStack\{ICrud,ICreateDb,IUpdateDb,IPatchDb,IDeleteDb,ISaveDb,AuditBase,QueryDb,QueryDb2,QueryData,QueryData2,QueryResponse};
use ServiceStack\{ResponseStatus,ResponseError,EmptyResponse,IdResponse,ArrayList,KeyValuePair2,StringResponse,StringsResponse,Tuple2,Tuple3,ByteArray};
use ServiceStack\{JsonConverters,Returns,TypeContext};


class DvirUnitRef implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $EquipmentID=0,
        /** @var string|null */
        public ?string $Unit=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['EquipmentID'])) $this->EquipmentID = $o['EquipmentID'];
        if (isset($o['Unit'])) $this->Unit = $o['Unit'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->EquipmentID)) $o['EquipmentID'] = $this->EquipmentID;
        if (isset($this->Unit)) $o['Unit'] = $this->Unit;
        return empty($o) ? new class(){} : $o;
    }
}

class DvirPhotoView implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $WorkPhotoID=0,
        /** @var string|null */
        public ?string $DefectKey=null,
        /** @var string|null */
        public ?string $Url=null,
        /** @var string|null */
        public ?string $MarkedUrl=null,
        /** @var DateTime|null */
        public ?DateTime $CapturedAtUtc=null,
        /** @var float|null */
        public ?float $Lat=null,
        /** @var float|null */
        public ?float $Lng=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['WorkPhotoID'])) $this->WorkPhotoID = $o['WorkPhotoID'];
        if (isset($o['DefectKey'])) $this->DefectKey = $o['DefectKey'];
        if (isset($o['Url'])) $this->Url = $o['Url'];
        if (isset($o['MarkedUrl'])) $this->MarkedUrl = $o['MarkedUrl'];
        if (isset($o['CapturedAtUtc'])) $this->CapturedAtUtc = JsonConverters::from('DateTime', $o['CapturedAtUtc']);
        if (isset($o['Lat'])) $this->Lat = $o['Lat'];
        if (isset($o['Lng'])) $this->Lng = $o['Lng'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->WorkPhotoID)) $o['WorkPhotoID'] = $this->WorkPhotoID;
        if (isset($this->DefectKey)) $o['DefectKey'] = $this->DefectKey;
        if (isset($this->Url)) $o['Url'] = $this->Url;
        if (isset($this->MarkedUrl)) $o['MarkedUrl'] = $this->MarkedUrl;
        if (isset($this->CapturedAtUtc)) $o['CapturedAtUtc'] = JsonConverters::to('DateTime', $this->CapturedAtUtc);
        if (isset($this->Lat)) $o['Lat'] = $this->Lat;
        if (isset($this->Lng)) $o['Lng'] = $this->Lng;
        return empty($o) ? new class(){} : $o;
    }
}

class DvirDefectView implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $DvirDefectID=0,
        /** @var string|null */
        public ?string $ClientKey=null,
        /** @var int|null */
        public ?int $DvirReportID=null,
        /** @var string|null */
        public ?string $ReportNumber=null,
        /** @var int */
        public int $EquipmentID=0,
        /** @var string|null */
        public ?string $Unit=null,
        /** @var string|null */
        public ?string $ItemKey=null,
        /** @var string|null */
        public ?string $Label=null,
        /** @var string|null */
        public ?string $FormLine=null,
        /** @var bool|null */
        public ?bool $IsCustom=null,
        /** @var string|null */
        public ?string $Severity=null,
        /** @var string|null */
        public ?string $SeverityText=null,
        /** @var string|null */
        public ?string $Note=null,
        /** @var string|null */
        public ?string $Source=null,
        /** @var string|null */
        public ?string $ReportedByName=null,
        /** @var DateTime|null */
        public ?DateTime $ReportedAtUtc=null,
        /** @var int|null */
        public ?int $EquipmentMaintenanceID=null,
        /** @var string|null */
        public ?string $Outcome=null,
        /** @var string|null */
        public ?string $OutcomeText=null,
        /** @var string|null */
        public ?string $OutcomeNote=null,
        /** @var string|null */
        public ?string $ScheduledFor=null,
        /** @var string|null */
        public ?string $SignedOffByName=null,
        /** @var DateTime|null */
        public ?DateTime $SignedOffAtUtc=null,
        /** @var bool|null */
        public ?bool $IsOpen=null,
        /** @var bool|null */
        public ?bool $Withdrawn=null,
        /** @var int */
        public int $PhotoCount=0,
        /** @var array<DvirPhotoView>|null */
        public ?array $Photos=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['DvirDefectID'])) $this->DvirDefectID = $o['DvirDefectID'];
        if (isset($o['ClientKey'])) $this->ClientKey = $o['ClientKey'];
        if (isset($o['DvirReportID'])) $this->DvirReportID = $o['DvirReportID'];
        if (isset($o['ReportNumber'])) $this->ReportNumber = $o['ReportNumber'];
        if (isset($o['EquipmentID'])) $this->EquipmentID = $o['EquipmentID'];
        if (isset($o['Unit'])) $this->Unit = $o['Unit'];
        if (isset($o['ItemKey'])) $this->ItemKey = $o['ItemKey'];
        if (isset($o['Label'])) $this->Label = $o['Label'];
        if (isset($o['FormLine'])) $this->FormLine = $o['FormLine'];
        if (isset($o['IsCustom'])) $this->IsCustom = $o['IsCustom'];
        if (isset($o['Severity'])) $this->Severity = $o['Severity'];
        if (isset($o['SeverityText'])) $this->SeverityText = $o['SeverityText'];
        if (isset($o['Note'])) $this->Note = $o['Note'];
        if (isset($o['Source'])) $this->Source = $o['Source'];
        if (isset($o['ReportedByName'])) $this->ReportedByName = $o['ReportedByName'];
        if (isset($o['ReportedAtUtc'])) $this->ReportedAtUtc = JsonConverters::from('DateTime', $o['ReportedAtUtc']);
        if (isset($o['EquipmentMaintenanceID'])) $this->EquipmentMaintenanceID = $o['EquipmentMaintenanceID'];
        if (isset($o['Outcome'])) $this->Outcome = $o['Outcome'];
        if (isset($o['OutcomeText'])) $this->OutcomeText = $o['OutcomeText'];
        if (isset($o['OutcomeNote'])) $this->OutcomeNote = $o['OutcomeNote'];
        if (isset($o['ScheduledFor'])) $this->ScheduledFor = $o['ScheduledFor'];
        if (isset($o['SignedOffByName'])) $this->SignedOffByName = $o['SignedOffByName'];
        if (isset($o['SignedOffAtUtc'])) $this->SignedOffAtUtc = JsonConverters::from('DateTime', $o['SignedOffAtUtc']);
        if (isset($o['IsOpen'])) $this->IsOpen = $o['IsOpen'];
        if (isset($o['Withdrawn'])) $this->Withdrawn = $o['Withdrawn'];
        if (isset($o['PhotoCount'])) $this->PhotoCount = $o['PhotoCount'];
        if (isset($o['Photos'])) $this->Photos = JsonConverters::fromArray('DvirPhotoView', $o['Photos']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->DvirDefectID)) $o['DvirDefectID'] = $this->DvirDefectID;
        if (isset($this->ClientKey)) $o['ClientKey'] = $this->ClientKey;
        if (isset($this->DvirReportID)) $o['DvirReportID'] = $this->DvirReportID;
        if (isset($this->ReportNumber)) $o['ReportNumber'] = $this->ReportNumber;
        if (isset($this->EquipmentID)) $o['EquipmentID'] = $this->EquipmentID;
        if (isset($this->Unit)) $o['Unit'] = $this->Unit;
        if (isset($this->ItemKey)) $o['ItemKey'] = $this->ItemKey;
        if (isset($this->Label)) $o['Label'] = $this->Label;
        if (isset($this->FormLine)) $o['FormLine'] = $this->FormLine;
        if (isset($this->IsCustom)) $o['IsCustom'] = $this->IsCustom;
        if (isset($this->Severity)) $o['Severity'] = $this->Severity;
        if (isset($this->SeverityText)) $o['SeverityText'] = $this->SeverityText;
        if (isset($this->Note)) $o['Note'] = $this->Note;
        if (isset($this->Source)) $o['Source'] = $this->Source;
        if (isset($this->ReportedByName)) $o['ReportedByName'] = $this->ReportedByName;
        if (isset($this->ReportedAtUtc)) $o['ReportedAtUtc'] = JsonConverters::to('DateTime', $this->ReportedAtUtc);
        if (isset($this->EquipmentMaintenanceID)) $o['EquipmentMaintenanceID'] = $this->EquipmentMaintenanceID;
        if (isset($this->Outcome)) $o['Outcome'] = $this->Outcome;
        if (isset($this->OutcomeText)) $o['OutcomeText'] = $this->OutcomeText;
        if (isset($this->OutcomeNote)) $o['OutcomeNote'] = $this->OutcomeNote;
        if (isset($this->ScheduledFor)) $o['ScheduledFor'] = $this->ScheduledFor;
        if (isset($this->SignedOffByName)) $o['SignedOffByName'] = $this->SignedOffByName;
        if (isset($this->SignedOffAtUtc)) $o['SignedOffAtUtc'] = JsonConverters::to('DateTime', $this->SignedOffAtUtc);
        if (isset($this->IsOpen)) $o['IsOpen'] = $this->IsOpen;
        if (isset($this->Withdrawn)) $o['Withdrawn'] = $this->Withdrawn;
        if (isset($this->PhotoCount)) $o['PhotoCount'] = $this->PhotoCount;
        if (isset($this->Photos)) $o['Photos'] = JsonConverters::toArray('DvirPhotoView', $this->Photos);
        return empty($o) ? new class(){} : $o;
    }
}

class DvirVehicleView implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $EquipmentID=0,
        /** @var string|null */
        public ?string $Unit=null,
        /** @var string|null */
        public ?string $Name=null,
        /** @var string|null */
        public ?string $VehicleType=null,
        /** @var bool|null */
        public ?bool $IsTrailer=null,
        /** @var string|null */
        public ?string $VehicleStatus=null,
        /** @var string|null */
        public ?string $Status=null,
        /** @var string|null */
        public ?string $StatusText=null,
        /** @var string|null */
        public ?string $Line=null,
        /** @var string|null */
        public ?string $FirstUnsafeReport=null,
        /** @var int */
        public int $OpenCount=0,
        /** @var string|null */
        public ?string $LocalToday=null,
        /** @var bool|null */
        public ?bool $NeedsPreTrip=null,
        /** @var bool|null */
        public ?bool $NeedsReview=null,
        /** @var array<int>|null */
        public ?array $ReviewReportIds=null,
        /** @var array<DvirUnitRef>|null */
        public ?array $Trailers=null,
        /** @var int|null */
        public ?int $LastOdometer=null,
        /** @var string|null */
        public ?string $InUseBy=null,
        /** @var bool|null */
        public ?bool $DrivingNow=null,
        /** @var int|null */
        public ?int $TodayPreTripId=null,
        /** @var int|null */
        public ?int $TodayPostTripId=null,
        /** @var array<DvirDefectView>|null */
        public ?array $OpenDefects=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['EquipmentID'])) $this->EquipmentID = $o['EquipmentID'];
        if (isset($o['Unit'])) $this->Unit = $o['Unit'];
        if (isset($o['Name'])) $this->Name = $o['Name'];
        if (isset($o['VehicleType'])) $this->VehicleType = $o['VehicleType'];
        if (isset($o['IsTrailer'])) $this->IsTrailer = $o['IsTrailer'];
        if (isset($o['VehicleStatus'])) $this->VehicleStatus = $o['VehicleStatus'];
        if (isset($o['Status'])) $this->Status = $o['Status'];
        if (isset($o['StatusText'])) $this->StatusText = $o['StatusText'];
        if (isset($o['Line'])) $this->Line = $o['Line'];
        if (isset($o['FirstUnsafeReport'])) $this->FirstUnsafeReport = $o['FirstUnsafeReport'];
        if (isset($o['OpenCount'])) $this->OpenCount = $o['OpenCount'];
        if (isset($o['LocalToday'])) $this->LocalToday = $o['LocalToday'];
        if (isset($o['NeedsPreTrip'])) $this->NeedsPreTrip = $o['NeedsPreTrip'];
        if (isset($o['NeedsReview'])) $this->NeedsReview = $o['NeedsReview'];
        if (isset($o['ReviewReportIds'])) $this->ReviewReportIds = JsonConverters::fromArray('int', $o['ReviewReportIds']);
        if (isset($o['Trailers'])) $this->Trailers = JsonConverters::fromArray('DvirUnitRef', $o['Trailers']);
        if (isset($o['LastOdometer'])) $this->LastOdometer = $o['LastOdometer'];
        if (isset($o['InUseBy'])) $this->InUseBy = $o['InUseBy'];
        if (isset($o['DrivingNow'])) $this->DrivingNow = $o['DrivingNow'];
        if (isset($o['TodayPreTripId'])) $this->TodayPreTripId = $o['TodayPreTripId'];
        if (isset($o['TodayPostTripId'])) $this->TodayPostTripId = $o['TodayPostTripId'];
        if (isset($o['OpenDefects'])) $this->OpenDefects = JsonConverters::fromArray('DvirDefectView', $o['OpenDefects']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->EquipmentID)) $o['EquipmentID'] = $this->EquipmentID;
        if (isset($this->Unit)) $o['Unit'] = $this->Unit;
        if (isset($this->Name)) $o['Name'] = $this->Name;
        if (isset($this->VehicleType)) $o['VehicleType'] = $this->VehicleType;
        if (isset($this->IsTrailer)) $o['IsTrailer'] = $this->IsTrailer;
        if (isset($this->VehicleStatus)) $o['VehicleStatus'] = $this->VehicleStatus;
        if (isset($this->Status)) $o['Status'] = $this->Status;
        if (isset($this->StatusText)) $o['StatusText'] = $this->StatusText;
        if (isset($this->Line)) $o['Line'] = $this->Line;
        if (isset($this->FirstUnsafeReport)) $o['FirstUnsafeReport'] = $this->FirstUnsafeReport;
        if (isset($this->OpenCount)) $o['OpenCount'] = $this->OpenCount;
        if (isset($this->LocalToday)) $o['LocalToday'] = $this->LocalToday;
        if (isset($this->NeedsPreTrip)) $o['NeedsPreTrip'] = $this->NeedsPreTrip;
        if (isset($this->NeedsReview)) $o['NeedsReview'] = $this->NeedsReview;
        if (isset($this->ReviewReportIds)) $o['ReviewReportIds'] = JsonConverters::toArray('int', $this->ReviewReportIds);
        if (isset($this->Trailers)) $o['Trailers'] = JsonConverters::toArray('DvirUnitRef', $this->Trailers);
        if (isset($this->LastOdometer)) $o['LastOdometer'] = $this->LastOdometer;
        if (isset($this->InUseBy)) $o['InUseBy'] = $this->InUseBy;
        if (isset($this->DrivingNow)) $o['DrivingNow'] = $this->DrivingNow;
        if (isset($this->TodayPreTripId)) $o['TodayPreTripId'] = $this->TodayPreTripId;
        if (isset($this->TodayPostTripId)) $o['TodayPostTripId'] = $this->TodayPostTripId;
        if (isset($this->OpenDefects)) $o['OpenDefects'] = JsonConverters::toArray('DvirDefectView', $this->OpenDefects);
        return empty($o) ? new class(){} : $o;
    }
}

class DvirSignatureView implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $SignatureRecordID=0,
        /** @var string|null */
        public ?string $Role=null,
        /** @var string|null */
        public ?string $SignerName=null,
        /** @var DateTime|null */
        public ?DateTime $SignedAt=null,
        /** @var string|null */
        public ?string $ImageUrl=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['SignatureRecordID'])) $this->SignatureRecordID = $o['SignatureRecordID'];
        if (isset($o['Role'])) $this->Role = $o['Role'];
        if (isset($o['SignerName'])) $this->SignerName = $o['SignerName'];
        if (isset($o['SignedAt'])) $this->SignedAt = JsonConverters::from('DateTime', $o['SignedAt']);
        if (isset($o['ImageUrl'])) $this->ImageUrl = $o['ImageUrl'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->SignatureRecordID)) $o['SignatureRecordID'] = $this->SignatureRecordID;
        if (isset($this->Role)) $o['Role'] = $this->Role;
        if (isset($this->SignerName)) $o['SignerName'] = $this->SignerName;
        if (isset($this->SignedAt)) $o['SignedAt'] = JsonConverters::to('DateTime', $this->SignedAt);
        if (isset($this->ImageUrl)) $o['ImageUrl'] = $this->ImageUrl;
        return empty($o) ? new class(){} : $o;
    }
}

class DvirReportView implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $DvirReportID=0,
        /** @var string|null */
        public ?string $Number=null,
        /** @var string|null */
        public ?string $Kind=null,
        /** @var string|null */
        public ?string $KindText=null,
        /** @var int */
        public int $EquipmentID=0,
        /** @var string|null */
        public ?string $Unit=null,
        /** @var array<DvirUnitRef>|null */
        public ?array $Trailers=null,
        /** @var int */
        public int $ContactID=0,
        /** @var string|null */
        public ?string $DriverName=null,
        /** @var string|null */
        public ?string $Board=null,
        /** @var string|null */
        public ?string $ForDate=null,
        /** @var DateTime */
        public DateTime $FiledAtUtc=new DateTime(),
        /** @var DateTime|null */
        public ?DateTime $SavedAtUtc=null,
        /** @var bool|null */
        public ?bool $IsLate=null,
        /** @var bool|null */
        public ?bool $IsAway=null,
        /** @var bool|null */
        public ?bool $IsSatisfactory=null,
        /** @var int|null */
        public ?int $Odometer=null,
        /** @var string|null */
        public ?string $LocationText=null,
        /** @var string|null */
        public ?string $Remarks=null,
        /** @var string|null */
        public ?string $ReviewedByName=null,
        /** @var DateTime|null */
        public ?DateTime $ReviewedAtUtc=null,
        /** @var string|null */
        public ?string $Chip=null,
        /** @var array<DvirDefectView>|null */
        public ?array $Defects=null,
        /** @var array<DvirSignatureView>|null */
        public ?array $Signatures=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['DvirReportID'])) $this->DvirReportID = $o['DvirReportID'];
        if (isset($o['Number'])) $this->Number = $o['Number'];
        if (isset($o['Kind'])) $this->Kind = $o['Kind'];
        if (isset($o['KindText'])) $this->KindText = $o['KindText'];
        if (isset($o['EquipmentID'])) $this->EquipmentID = $o['EquipmentID'];
        if (isset($o['Unit'])) $this->Unit = $o['Unit'];
        if (isset($o['Trailers'])) $this->Trailers = JsonConverters::fromArray('DvirUnitRef', $o['Trailers']);
        if (isset($o['ContactID'])) $this->ContactID = $o['ContactID'];
        if (isset($o['DriverName'])) $this->DriverName = $o['DriverName'];
        if (isset($o['Board'])) $this->Board = $o['Board'];
        if (isset($o['ForDate'])) $this->ForDate = $o['ForDate'];
        if (isset($o['FiledAtUtc'])) $this->FiledAtUtc = JsonConverters::from('DateTime', $o['FiledAtUtc']);
        if (isset($o['SavedAtUtc'])) $this->SavedAtUtc = JsonConverters::from('DateTime', $o['SavedAtUtc']);
        if (isset($o['IsLate'])) $this->IsLate = $o['IsLate'];
        if (isset($o['IsAway'])) $this->IsAway = $o['IsAway'];
        if (isset($o['IsSatisfactory'])) $this->IsSatisfactory = $o['IsSatisfactory'];
        if (isset($o['Odometer'])) $this->Odometer = $o['Odometer'];
        if (isset($o['LocationText'])) $this->LocationText = $o['LocationText'];
        if (isset($o['Remarks'])) $this->Remarks = $o['Remarks'];
        if (isset($o['ReviewedByName'])) $this->ReviewedByName = $o['ReviewedByName'];
        if (isset($o['ReviewedAtUtc'])) $this->ReviewedAtUtc = JsonConverters::from('DateTime', $o['ReviewedAtUtc']);
        if (isset($o['Chip'])) $this->Chip = $o['Chip'];
        if (isset($o['Defects'])) $this->Defects = JsonConverters::fromArray('DvirDefectView', $o['Defects']);
        if (isset($o['Signatures'])) $this->Signatures = JsonConverters::fromArray('DvirSignatureView', $o['Signatures']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->DvirReportID)) $o['DvirReportID'] = $this->DvirReportID;
        if (isset($this->Number)) $o['Number'] = $this->Number;
        if (isset($this->Kind)) $o['Kind'] = $this->Kind;
        if (isset($this->KindText)) $o['KindText'] = $this->KindText;
        if (isset($this->EquipmentID)) $o['EquipmentID'] = $this->EquipmentID;
        if (isset($this->Unit)) $o['Unit'] = $this->Unit;
        if (isset($this->Trailers)) $o['Trailers'] = JsonConverters::toArray('DvirUnitRef', $this->Trailers);
        if (isset($this->ContactID)) $o['ContactID'] = $this->ContactID;
        if (isset($this->DriverName)) $o['DriverName'] = $this->DriverName;
        if (isset($this->Board)) $o['Board'] = $this->Board;
        if (isset($this->ForDate)) $o['ForDate'] = $this->ForDate;
        if (isset($this->FiledAtUtc)) $o['FiledAtUtc'] = JsonConverters::to('DateTime', $this->FiledAtUtc);
        if (isset($this->SavedAtUtc)) $o['SavedAtUtc'] = JsonConverters::to('DateTime', $this->SavedAtUtc);
        if (isset($this->IsLate)) $o['IsLate'] = $this->IsLate;
        if (isset($this->IsAway)) $o['IsAway'] = $this->IsAway;
        if (isset($this->IsSatisfactory)) $o['IsSatisfactory'] = $this->IsSatisfactory;
        if (isset($this->Odometer)) $o['Odometer'] = $this->Odometer;
        if (isset($this->LocationText)) $o['LocationText'] = $this->LocationText;
        if (isset($this->Remarks)) $o['Remarks'] = $this->Remarks;
        if (isset($this->ReviewedByName)) $o['ReviewedByName'] = $this->ReviewedByName;
        if (isset($this->ReviewedAtUtc)) $o['ReviewedAtUtc'] = JsonConverters::to('DateTime', $this->ReviewedAtUtc);
        if (isset($this->Chip)) $o['Chip'] = $this->Chip;
        if (isset($this->Defects)) $o['Defects'] = JsonConverters::toArray('DvirDefectView', $this->Defects);
        if (isset($this->Signatures)) $o['Signatures'] = JsonConverters::toArray('DvirSignatureView', $this->Signatures);
        return empty($o) ? new class(){} : $o;
    }
}

class DvirVehicleDetail extends DvirVehicleView implements JsonSerializable
{
    /**
     * @param int $EquipmentID
     * @param string|null $Unit
     * @param string|null $Name
     * @param string|null $VehicleType
     * @param bool|null $IsTrailer
     * @param string|null $VehicleStatus
     * @param string|null $Status
     * @param string|null $StatusText
     * @param string|null $Line
     * @param string|null $FirstUnsafeReport
     * @param int $OpenCount
     * @param string|null $LocalToday
     * @param bool|null $NeedsPreTrip
     * @param bool|null $NeedsReview
     * @param array<int>|null $ReviewReportIds
     * @param array<DvirUnitRef>|null $Trailers
     * @param int|null $LastOdometer
     * @param string|null $InUseBy
     * @param bool|null $DrivingNow
     * @param int|null $TodayPreTripId
     * @param int|null $TodayPostTripId
     * @param array<DvirDefectView>|null $OpenDefects
     */
    public function __construct(
        int $EquipmentID=0,
        ?string $Unit=null,
        ?string $Name=null,
        ?string $VehicleType=null,
        ?bool $IsTrailer=null,
        ?string $VehicleStatus=null,
        ?string $Status=null,
        ?string $StatusText=null,
        ?string $Line=null,
        ?string $FirstUnsafeReport=null,
        int $OpenCount=0,
        ?string $LocalToday=null,
        ?bool $NeedsPreTrip=null,
        ?bool $NeedsReview=null,
        ?array $ReviewReportIds=null,
        ?array $Trailers=null,
        ?int $LastOdometer=null,
        ?string $InUseBy=null,
        ?bool $DrivingNow=null,
        ?int $TodayPreTripId=null,
        ?int $TodayPostTripId=null,
        ?array $OpenDefects=null,
        /** @var string|null */
        public ?string $Plate=null,
        /** @var string|null */
        public ?string $VIN=null,
        /** @var int|null */
        public ?int $GvwrLbs=null,
        /** @var string|null */
        public ?string $BranchName=null,
        /** @var DateTime|null */
        public ?DateTime $InspectionDue=null,
        /** @var DateTime|null */
        public ?DateTime $InsuranceExpires=null,
        /** @var array<DvirDefectView>|null */
        public ?array $RecentlyFixed=null,
        /** @var array<DvirReportView>|null */
        public ?array $ReviewReports=null,
        /** @var array<DvirReportView>|null */
        public ?array $History=null
    ) {
        parent::__construct($EquipmentID,$Unit,$Name,$VehicleType,$IsTrailer,$VehicleStatus,$Status,$StatusText,$Line,$FirstUnsafeReport,$OpenCount,$LocalToday,$NeedsPreTrip,$NeedsReview,$ReviewReportIds,$Trailers,$LastOdometer,$InUseBy,$DrivingNow,$TodayPreTripId,$TodayPostTripId,$OpenDefects);
    }

    /** @throws Exception */
    public function fromMap($o): void {
        parent::fromMap($o);
        if (isset($o['Plate'])) $this->Plate = $o['Plate'];
        if (isset($o['VIN'])) $this->VIN = $o['VIN'];
        if (isset($o['GvwrLbs'])) $this->GvwrLbs = $o['GvwrLbs'];
        if (isset($o['BranchName'])) $this->BranchName = $o['BranchName'];
        if (isset($o['InspectionDue'])) $this->InspectionDue = JsonConverters::from('DateTime', $o['InspectionDue']);
        if (isset($o['InsuranceExpires'])) $this->InsuranceExpires = JsonConverters::from('DateTime', $o['InsuranceExpires']);
        if (isset($o['RecentlyFixed'])) $this->RecentlyFixed = JsonConverters::fromArray('DvirDefectView', $o['RecentlyFixed']);
        if (isset($o['ReviewReports'])) $this->ReviewReports = JsonConverters::fromArray('DvirReportView', $o['ReviewReports']);
        if (isset($o['History'])) $this->History = JsonConverters::fromArray('DvirReportView', $o['History']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = parent::jsonSerialize();
        if (isset($this->Plate)) $o['Plate'] = $this->Plate;
        if (isset($this->VIN)) $o['VIN'] = $this->VIN;
        if (isset($this->GvwrLbs)) $o['GvwrLbs'] = $this->GvwrLbs;
        if (isset($this->BranchName)) $o['BranchName'] = $this->BranchName;
        if (isset($this->InspectionDue)) $o['InspectionDue'] = JsonConverters::to('DateTime', $this->InspectionDue);
        if (isset($this->InsuranceExpires)) $o['InsuranceExpires'] = JsonConverters::to('DateTime', $this->InsuranceExpires);
        if (isset($this->RecentlyFixed)) $o['RecentlyFixed'] = JsonConverters::toArray('DvirDefectView', $this->RecentlyFixed);
        if (isset($this->ReviewReports)) $o['ReviewReports'] = JsonConverters::toArray('DvirReportView', $this->ReviewReports);
        if (isset($this->History)) $o['History'] = JsonConverters::toArray('DvirReportView', $this->History);
        return empty($o) ? new class(){} : $o;
    }
}

class EquipmentDvirSignOffResponse implements JsonSerializable
{
    public function __construct(
        /** @var DvirVehicleDetail|null */
        public ?DvirVehicleDetail $Vehicle=null,
        /** @var bool|null */
        public ?bool $Returned=null,
        /** @var ResponseStatus|null */
        public ?ResponseStatus $ResponseStatus=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Vehicle'])) $this->Vehicle = JsonConverters::from('DvirVehicleDetail', $o['Vehicle']);
        if (isset($o['Returned'])) $this->Returned = $o['Returned'];
        if (isset($o['ResponseStatus'])) $this->ResponseStatus = JsonConverters::from('ResponseStatus', $o['ResponseStatus']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Vehicle)) $o['Vehicle'] = JsonConverters::to('DvirVehicleDetail', $this->Vehicle);
        if (isset($this->Returned)) $o['Returned'] = $this->Returned;
        if (isset($this->ResponseStatus)) $o['ResponseStatus'] = JsonConverters::to('ResponseStatus', $this->ResponseStatus);
        return empty($o) ? new class(){} : $o;
    }
}

class DvirSignOffItem implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $DvirDefectID=0,
        /** @var string|null */
        public ?string $Outcome=null,
        /** @var string|null */
        public ?string $Note=null,
        /** @var string|null */
        public ?string $ScheduledFor=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['DvirDefectID'])) $this->DvirDefectID = $o['DvirDefectID'];
        if (isset($o['Outcome'])) $this->Outcome = $o['Outcome'];
        if (isset($o['Note'])) $this->Note = $o['Note'];
        if (isset($o['ScheduledFor'])) $this->ScheduledFor = $o['ScheduledFor'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->DvirDefectID)) $o['DvirDefectID'] = $this->DvirDefectID;
        if (isset($this->Outcome)) $o['Outcome'] = $this->Outcome;
        if (isset($this->Note)) $o['Note'] = $this->Note;
        if (isset($this->ScheduledFor)) $o['ScheduledFor'] = $this->ScheduledFor;
        return empty($o) ? new class(){} : $o;
    }
}

class EquipmentDvirSignOffRequest implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $EquipmentID=0,
        /** @var array<DvirSignOffItem>|null */
        public ?array $Defects=null,
        /** @var string|null */
        public ?string $MechanicName=null,
        /** @var string|null */
        public ?string $SignaturePng=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['EquipmentID'])) $this->EquipmentID = $o['EquipmentID'];
        if (isset($o['Defects'])) $this->Defects = JsonConverters::fromArray('DvirSignOffItem', $o['Defects']);
        if (isset($o['MechanicName'])) $this->MechanicName = $o['MechanicName'];
        if (isset($o['SignaturePng'])) $this->SignaturePng = $o['SignaturePng'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->EquipmentID)) $o['EquipmentID'] = $this->EquipmentID;
        if (isset($this->Defects)) $o['Defects'] = JsonConverters::toArray('DvirSignOffItem', $this->Defects);
        if (isset($this->MechanicName)) $o['MechanicName'] = $this->MechanicName;
        if (isset($this->SignaturePng)) $o['SignaturePng'] = $this->SignaturePng;
        return empty($o) ? new class(){} : $o;
    }
}

PHP EquipmentDvirSignOffRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml

HTTP + XML

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: application/xml
Content-Type: application/xml
Content-Length: length

<EquipmentDvirSignOffRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/CRM.AgencyPlatform.API.Internal">
  <Defects>
    <DvirSignOffItem>
      <DvirDefectID>0</DvirDefectID>
      <Note>String</Note>
      <Outcome>String</Outcome>
      <ScheduledFor>String</ScheduledFor>
    </DvirSignOffItem>
  </Defects>
  <EquipmentID>0</EquipmentID>
  <MechanicName>String</MechanicName>
  <SignaturePng>String</SignaturePng>
</EquipmentDvirSignOffRequest>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<EquipmentDvirSignOffResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/CRM.AgencyPlatform.API.Internal">
  <ResponseStatus xmlns:d2p1="http://schemas.servicestack.net/types">
    <d2p1:ErrorCode>String</d2p1:ErrorCode>
    <d2p1:Message>String</d2p1:Message>
    <d2p1:StackTrace>String</d2p1:StackTrace>
    <d2p1:Errors>
      <d2p1:ResponseError>
        <d2p1:ErrorCode>String</d2p1:ErrorCode>
        <d2p1:FieldName>String</d2p1:FieldName>
        <d2p1:Message>String</d2p1:Message>
        <d2p1:Meta xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
          <d5p1:KeyValueOfstringstring>
            <d5p1:Key>String</d5p1:Key>
            <d5p1:Value>String</d5p1:Value>
          </d5p1:KeyValueOfstringstring>
        </d2p1:Meta>
      </d2p1:ResponseError>
    </d2p1:Errors>
    <d2p1:Meta xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
      <d3p1:KeyValueOfstringstring>
        <d3p1:Key>String</d3p1:Key>
        <d3p1:Value>String</d3p1:Value>
      </d3p1:KeyValueOfstringstring>
    </d2p1:Meta>
  </ResponseStatus>
  <Returned>false</Returned>
  <Vehicle>
    <DrivingNow>false</DrivingNow>
    <EquipmentID>0</EquipmentID>
    <FirstUnsafeReport>String</FirstUnsafeReport>
    <InUseBy>String</InUseBy>
    <IsTrailer>false</IsTrailer>
    <LastOdometer>0</LastOdometer>
    <Line>String</Line>
    <LocalToday>String</LocalToday>
    <Name>String</Name>
    <NeedsPreTrip>false</NeedsPreTrip>
    <NeedsReview>false</NeedsReview>
    <OpenCount>0</OpenCount>
    <OpenDefects>
      <DvirDefectView>
        <ClientKey>String</ClientKey>
        <DvirDefectID>0</DvirDefectID>
        <DvirReportID>0</DvirReportID>
        <EquipmentID>0</EquipmentID>
        <EquipmentMaintenanceID>0</EquipmentMaintenanceID>
        <FormLine>String</FormLine>
        <IsCustom>false</IsCustom>
        <IsOpen>false</IsOpen>
        <ItemKey>String</ItemKey>
        <Label>String</Label>
        <Note>String</Note>
        <Outcome>String</Outcome>
        <OutcomeNote>String</OutcomeNote>
        <OutcomeText>String</OutcomeText>
        <PhotoCount>0</PhotoCount>
        <Photos>
          <DvirPhotoView>
            <CapturedAtUtc>0001-01-01T00:00:00</CapturedAtUtc>
            <DefectKey>String</DefectKey>
            <Lat>0</Lat>
            <Lng>0</Lng>
            <MarkedUrl>String</MarkedUrl>
            <Url>String</Url>
            <WorkPhotoID>0</WorkPhotoID>
          </DvirPhotoView>
        </Photos>
        <ReportNumber>String</ReportNumber>
        <ReportedAtUtc>0001-01-01T00:00:00</ReportedAtUtc>
        <ReportedByName>String</ReportedByName>
        <ScheduledFor>String</ScheduledFor>
        <Severity>String</Severity>
        <SeverityText>String</SeverityText>
        <SignedOffAtUtc>0001-01-01T00:00:00</SignedOffAtUtc>
        <SignedOffByName>String</SignedOffByName>
        <Source>String</Source>
        <Unit>String</Unit>
        <Withdrawn>false</Withdrawn>
      </DvirDefectView>
    </OpenDefects>
    <ReviewReportIds xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
      <d3p1:int>0</d3p1:int>
    </ReviewReportIds>
    <Status>String</Status>
    <StatusText>String</StatusText>
    <TodayPostTripId>0</TodayPostTripId>
    <TodayPreTripId>0</TodayPreTripId>
    <Trailers>
      <DvirUnitRef>
        <EquipmentID>0</EquipmentID>
        <Unit>String</Unit>
      </DvirUnitRef>
    </Trailers>
    <Unit>String</Unit>
    <VehicleStatus>String</VehicleStatus>
    <VehicleType>String</VehicleType>
    <BranchName>String</BranchName>
    <GvwrLbs>0</GvwrLbs>
    <History>
      <DvirReportView>
        <Board>String</Board>
        <Chip>String</Chip>
        <ContactID>0</ContactID>
        <Defects>
          <DvirDefectView>
            <ClientKey>String</ClientKey>
            <DvirDefectID>0</DvirDefectID>
            <DvirReportID>0</DvirReportID>
            <EquipmentID>0</EquipmentID>
            <EquipmentMaintenanceID>0</EquipmentMaintenanceID>
            <FormLine>String</FormLine>
            <IsCustom>false</IsCustom>
            <IsOpen>false</IsOpen>
            <ItemKey>String</ItemKey>
            <Label>String</Label>
            <Note>String</Note>
            <Outcome>String</Outcome>
            <OutcomeNote>String</OutcomeNote>
            <OutcomeText>String</OutcomeText>
            <PhotoCount>0</PhotoCount>
            <Photos>
              <DvirPhotoView>
                <CapturedAtUtc>0001-01-01T00:00:00</CapturedAtUtc>
                <DefectKey>String</DefectKey>
                <Lat>0</Lat>
                <Lng>0</Lng>
                <MarkedUrl>String</MarkedUrl>
                <Url>String</Url>
                <WorkPhotoID>0</WorkPhotoID>
              </DvirPhotoView>
            </Photos>
            <ReportNumber>String</ReportNumber>
            <ReportedAtUtc>0001-01-01T00:00:00</ReportedAtUtc>
            <ReportedByName>String</ReportedByName>
            <ScheduledFor>String</ScheduledFor>
            <Severity>String</Severity>
            <SeverityText>String</SeverityText>
            <SignedOffAtUtc>0001-01-01T00:00:00</SignedOffAtUtc>
            <SignedOffByName>String</SignedOffByName>
            <Source>String</Source>
            <Unit>String</Unit>
            <Withdrawn>false</Withdrawn>
          </DvirDefectView>
        </Defects>
        <DriverName>String</DriverName>
        <DvirReportID>0</DvirReportID>
        <EquipmentID>0</EquipmentID>
        <FiledAtUtc>0001-01-01T00:00:00</FiledAtUtc>
        <ForDate>String</ForDate>
        <IsAway>false</IsAway>
        <IsLate>false</IsLate>
        <IsSatisfactory>false</IsSatisfactory>
        <Kind>String</Kind>
        <KindText>String</KindText>
        <LocationText>String</LocationText>
        <Number>String</Number>
        <Odometer>0</Odometer>
        <Remarks>String</Remarks>
        <ReviewedAtUtc>0001-01-01T00:00:00</ReviewedAtUtc>
        <ReviewedByName>String</ReviewedByName>
        <SavedAtUtc>0001-01-01T00:00:00</SavedAtUtc>
        <Signatures>
          <DvirSignatureView>
            <ImageUrl>String</ImageUrl>
            <Role>String</Role>
            <SignatureRecordID>0</SignatureRecordID>
            <SignedAt>0001-01-01T00:00:00</SignedAt>
            <SignerName>String</SignerName>
          </DvirSignatureView>
        </Signatures>
        <Trailers>
          <DvirUnitRef>
            <EquipmentID>0</EquipmentID>
            <Unit>String</Unit>
          </DvirUnitRef>
        </Trailers>
        <Unit>String</Unit>
      </DvirReportView>
    </History>
    <InspectionDue>0001-01-01T00:00:00</InspectionDue>
    <InsuranceExpires>0001-01-01T00:00:00</InsuranceExpires>
    <Plate>String</Plate>
    <RecentlyFixed>
      <DvirDefectView>
        <ClientKey>String</ClientKey>
        <DvirDefectID>0</DvirDefectID>
        <DvirReportID>0</DvirReportID>
        <EquipmentID>0</EquipmentID>
        <EquipmentMaintenanceID>0</EquipmentMaintenanceID>
        <FormLine>String</FormLine>
        <IsCustom>false</IsCustom>
        <IsOpen>false</IsOpen>
        <ItemKey>String</ItemKey>
        <Label>String</Label>
        <Note>String</Note>
        <Outcome>String</Outcome>
        <OutcomeNote>String</OutcomeNote>
        <OutcomeText>String</OutcomeText>
        <PhotoCount>0</PhotoCount>
        <Photos>
          <DvirPhotoView>
            <CapturedAtUtc>0001-01-01T00:00:00</CapturedAtUtc>
            <DefectKey>String</DefectKey>
            <Lat>0</Lat>
            <Lng>0</Lng>
            <MarkedUrl>String</MarkedUrl>
            <Url>String</Url>
            <WorkPhotoID>0</WorkPhotoID>
          </DvirPhotoView>
        </Photos>
        <ReportNumber>String</ReportNumber>
        <ReportedAtUtc>0001-01-01T00:00:00</ReportedAtUtc>
        <ReportedByName>String</ReportedByName>
        <ScheduledFor>String</ScheduledFor>
        <Severity>String</Severity>
        <SeverityText>String</SeverityText>
        <SignedOffAtUtc>0001-01-01T00:00:00</SignedOffAtUtc>
        <SignedOffByName>String</SignedOffByName>
        <Source>String</Source>
        <Unit>String</Unit>
        <Withdrawn>false</Withdrawn>
      </DvirDefectView>
    </RecentlyFixed>
    <ReviewReports>
      <DvirReportView>
        <Board>String</Board>
        <Chip>String</Chip>
        <ContactID>0</ContactID>
        <Defects>
          <DvirDefectView>
            <ClientKey>String</ClientKey>
            <DvirDefectID>0</DvirDefectID>
            <DvirReportID>0</DvirReportID>
            <EquipmentID>0</EquipmentID>
            <EquipmentMaintenanceID>0</EquipmentMaintenanceID>
            <FormLine>String</FormLine>
            <IsCustom>false</IsCustom>
            <IsOpen>false</IsOpen>
            <ItemKey>String</ItemKey>
            <Label>String</Label>
            <Note>String</Note>
            <Outcome>String</Outcome>
            <OutcomeNote>String</OutcomeNote>
            <OutcomeText>String</OutcomeText>
            <PhotoCount>0</PhotoCount>
            <Photos>
              <DvirPhotoView>
                <CapturedAtUtc>0001-01-01T00:00:00</CapturedAtUtc>
                <DefectKey>String</DefectKey>
                <Lat>0</Lat>
                <Lng>0</Lng>
                <MarkedUrl>String</MarkedUrl>
                <Url>String</Url>
                <WorkPhotoID>0</WorkPhotoID>
              </DvirPhotoView>
            </Photos>
            <ReportNumber>String</ReportNumber>
            <ReportedAtUtc>0001-01-01T00:00:00</ReportedAtUtc>
            <ReportedByName>String</ReportedByName>
            <ScheduledFor>String</ScheduledFor>
            <Severity>String</Severity>
            <SeverityText>String</SeverityText>
            <SignedOffAtUtc>0001-01-01T00:00:00</SignedOffAtUtc>
            <SignedOffByName>String</SignedOffByName>
            <Source>String</Source>
            <Unit>String</Unit>
            <Withdrawn>false</Withdrawn>
          </DvirDefectView>
        </Defects>
        <DriverName>String</DriverName>
        <DvirReportID>0</DvirReportID>
        <EquipmentID>0</EquipmentID>
        <FiledAtUtc>0001-01-01T00:00:00</FiledAtUtc>
        <ForDate>String</ForDate>
        <IsAway>false</IsAway>
        <IsLate>false</IsLate>
        <IsSatisfactory>false</IsSatisfactory>
        <Kind>String</Kind>
        <KindText>String</KindText>
        <LocationText>String</LocationText>
        <Number>String</Number>
        <Odometer>0</Odometer>
        <Remarks>String</Remarks>
        <ReviewedAtUtc>0001-01-01T00:00:00</ReviewedAtUtc>
        <ReviewedByName>String</ReviewedByName>
        <SavedAtUtc>0001-01-01T00:00:00</SavedAtUtc>
        <Signatures>
          <DvirSignatureView>
            <ImageUrl>String</ImageUrl>
            <Role>String</Role>
            <SignatureRecordID>0</SignatureRecordID>
            <SignedAt>0001-01-01T00:00:00</SignedAt>
            <SignerName>String</SignerName>
          </DvirSignatureView>
        </Signatures>
        <Trailers>
          <DvirUnitRef>
            <EquipmentID>0</EquipmentID>
            <Unit>String</Unit>
          </DvirUnitRef>
        </Trailers>
        <Unit>String</Unit>
      </DvirReportView>
    </ReviewReports>
    <VIN>String</VIN>
  </Vehicle>
</EquipmentDvirSignOffResponse>