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 Foundation
import ServiceStack

public class EquipmentDvirSignOffRequest : Codable
{
    public var equipmentID:Int
    public var defects:[DvirSignOffItem] = []
    public var mechanicName:String
    public var signaturePng:String

    required public init(){}
}

public class DvirSignOffItem : Codable
{
    public var dvirDefectID:Int
    public var outcome:String
    public var note:String
    public var scheduledFor:String

    required public init(){}
}

public class EquipmentDvirSignOffResponse : Codable
{
    public var vehicle:DvirVehicleDetail
    public var returned:Bool
    public var responseStatus:ResponseStatus

    required public init(){}
}

public class DvirVehicleDetail : DvirVehicleView
{
    public var plate:String
    public var vin:String
    public var gvwrLbs:Int?
    public var branchName:String
    public var inspectionDue:Date?
    public var insuranceExpires:Date?
    public var recentlyFixed:[DvirDefectView] = []
    public var reviewReports:[DvirReportView] = []
    public var history:[DvirReportView] = []

    required public init(){ super.init() }

    private enum CodingKeys : String, CodingKey {
        case plate
        case vin
        case gvwrLbs
        case branchName
        case inspectionDue
        case insuranceExpires
        case recentlyFixed
        case reviewReports
        case history
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        plate = try container.decodeIfPresent(String.self, forKey: .plate)
        vin = try container.decodeIfPresent(String.self, forKey: .vin)
        gvwrLbs = try container.decodeIfPresent(Int.self, forKey: .gvwrLbs)
        branchName = try container.decodeIfPresent(String.self, forKey: .branchName)
        inspectionDue = try container.decodeIfPresent(Date.self, forKey: .inspectionDue)
        insuranceExpires = try container.decodeIfPresent(Date.self, forKey: .insuranceExpires)
        recentlyFixed = try container.decodeIfPresent([DvirDefectView].self, forKey: .recentlyFixed) ?? []
        reviewReports = try container.decodeIfPresent([DvirReportView].self, forKey: .reviewReports) ?? []
        history = try container.decodeIfPresent([DvirReportView].self, forKey: .history) ?? []
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if plate != nil { try container.encode(plate, forKey: .plate) }
        if vin != nil { try container.encode(vin, forKey: .vin) }
        if gvwrLbs != nil { try container.encode(gvwrLbs, forKey: .gvwrLbs) }
        if branchName != nil { try container.encode(branchName, forKey: .branchName) }
        if inspectionDue != nil { try container.encode(inspectionDue, forKey: .inspectionDue) }
        if insuranceExpires != nil { try container.encode(insuranceExpires, forKey: .insuranceExpires) }
        if recentlyFixed.count > 0 { try container.encode(recentlyFixed, forKey: .recentlyFixed) }
        if reviewReports.count > 0 { try container.encode(reviewReports, forKey: .reviewReports) }
        if history.count > 0 { try container.encode(history, forKey: .history) }
    }
}

public class DvirVehicleView : Codable
{
    public var equipmentID:Int
    public var unit:String
    public var name:String
    public var vehicleType:String
    public var isTrailer:Bool
    public var vehicleStatus:String
    public var status:String
    public var statusText:String
    public var line:String
    public var firstUnsafeReport:String
    public var openCount:Int
    public var localToday:String
    public var needsPreTrip:Bool
    public var needsReview:Bool
    public var reviewReportIds:[Int] = []
    public var trailers:[DvirUnitRef] = []
    public var lastOdometer:Int?
    public var inUseBy:String
    public var drivingNow:Bool
    public var todayPreTripId:Int?
    public var todayPostTripId:Int?
    public var openDefects:[DvirDefectView] = []

    required public init(){}
}

public class DvirUnitRef : Codable
{
    public var equipmentID:Int
    public var unit:String

    required public init(){}
}

public class DvirDefectView : Codable
{
    public var dvirDefectID:Int
    public var clientKey:String
    public var dvirReportID:Int?
    public var reportNumber:String
    public var equipmentID:Int
    public var unit:String
    public var itemKey:String
    public var label:String
    public var formLine:String
    public var isCustom:Bool
    public var severity:String
    public var severityText:String
    public var note:String
    public var source:String
    public var reportedByName:String
    public var reportedAtUtc:Date?
    public var equipmentMaintenanceID:Int?
    public var outcome:String
    public var outcomeText:String
    public var outcomeNote:String
    public var scheduledFor:String
    public var signedOffByName:String
    public var signedOffAtUtc:Date?
    public var isOpen:Bool
    public var withdrawn:Bool
    public var photoCount:Int
    public var photos:[DvirPhotoView] = []

    required public init(){}
}

public class DvirPhotoView : Codable
{
    public var workPhotoID:Int
    public var defectKey:String
    public var url:String
    public var markedUrl:String
    public var capturedAtUtc:Date?
    public var lat:Double?
    public var lng:Double?

    required public init(){}
}

public class DvirReportView : Codable
{
    public var dvirReportID:Int
    public var number:String
    public var kind:String
    public var kindText:String
    public var equipmentID:Int
    public var unit:String
    public var trailers:[DvirUnitRef] = []
    public var contactID:Int
    public var driverName:String
    public var board:String
    public var forDate:String
    public var filedAtUtc:Date
    public var savedAtUtc:Date?
    public var isLate:Bool
    public var isAway:Bool
    public var isSatisfactory:Bool
    public var odometer:Int?
    public var locationText:String
    public var remarks:String
    public var reviewedByName:String
    public var reviewedAtUtc:Date?
    public var chip:String
    public var defects:[DvirDefectView] = []
    public var signatures:[DvirSignatureView] = []

    required public init(){}
}

public class DvirSignatureView : Codable
{
    public var signatureRecordID:Int
    public var role:String
    public var signerName:String
    public var signedAt:Date?
    public var imageUrl:String

    required public init(){}
}


Swift EquipmentDvirSignOffRequest DTOs

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

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