/* Options: Date: 2026-06-22 20:30:33 SwiftVersion: 6.0 Version: 8.80 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://api.dev.dynamics.trendsic.com //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True //MakePropertiesOptional: True IncludeTypes: PmProjectDetailRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/v1/pm/project/{Uid}", "GET,OPTIONS") public class PmProjectDetailRequest : IReturn, Codable { public typealias Return = PmProjectDetail public var uid:String? required public init(){} } public class PmProjectDetail : Codable { public var projectID:Int? public var projectUID:String? public var name:String? public var client:String? public var projectType:String? public var status:String? public var branch:String? public var startDate:String? public var endDate:String? public var Description:String? public var finance:PmFinance? public var readiness:PmReadiness? public var jobs:[PmJob] = [] public var equipment:[PmEquipmentRow] = [] public var materials:[PmMaterialRow] = [] public var calendar:[PmCalendarBar] = [] public var projectStatuses:[PmCatalogItem] = [] public var responseStatus:ResponseStatus? required public init(){} } public class PmFinance : Codable { public var budget:Double? public var spent:Double? public var estimatedCost:Double? public var crewCost:Double? public var equipCost:Double? public var matCost:Double? public var variance:Double? public var healthPct:Int? public var spentPct:Int? public var progressPct:Int? required public init(){} } public class PmReadiness : Codable { public var jobsNoCrew:Int? public var openRoles:Int? public var equipmentConflicts:Int? public var materialGaps:Int? public var totalGaps:Int? public var readyPct:Int? required public init(){} } public class PmJob : Codable { public var jobID:Int? public var name:String? public var Description:String? public var status:String? public var startDate:String? public var endDate:String? public var crewCount:Int? public var budgetedHours:Double? public var equipmentCount:Int? public var materialCount:Int? public var crewCost:Double? public var equipCost:Double? public var matCost:Double? public var cost:Double? public var noCrew:Bool? public var equipConflict:Bool? public var materialGap:Bool? public var readyPct:Int? public var crew:[PmJobCrew] = [] public var equipment:[PmJobResource] = [] public var materials:[PmJobResource] = [] required public init(){} } public class PmEquipmentRow : Codable { public var equipmentID:Int? public var name:String? public var equipmentType:String? public var serialNumber:String? public var usedByJobs:String? public var available:Bool? public var conflicts:[PmConflict] = [] public var maintenanceIntervalDays:Int? public var lastServiceDate:String? public var nextServiceDate:String? public var maintenanceState:String? required public init(){} } public class PmMaterialRow : Codable { public var materialID:Int? public var name:String? public var materialType:String? public var onHand:Int? public var neededByJobs:Int? public var qtyNeeded:Int? public var toOrder:Int? public var unitCost:Double? public var lineCost:Double? public var projectMaterialID:Int? public var statusID:Int? public var status:String? public var supplier:String? public var orderDate:String? public var deliveryDate:String? public var shortfall:Bool? required public init(){} } public class PmCalendarBar : Codable { public var jobID:Int? public var name:String? public var startDate:String? public var endDate:String? public var status:String? required public init(){} } public class PmCatalogItem : Codable { public var id:Int? public var name:String? public var amount:Double? required public init(){} } public class PmJobCrew : Codable { public var contactID:Int? public var name:String? public var rate:Double? public var budgetedHours:Double? public var isOpen:Bool? required public init(){} } public class PmJobResource : Codable { public var id:Int? public var name:String? public var amount:Double? public var qty:Int? required public init(){} } public class PmConflict : Codable { public var projectName:String? public var jobName:String? public var startDate:String? public var endDate:String? required public init(){} }