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