/* Options: Date: 2026-06-13 03:56:42 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: RfpApproveRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/v1/Rfp/{RfpDocumentUID}/Approve", "POST,OPTIONS") public class RfpApproveRequest : IReturn, Codable { public typealias Return = RfpApproveResponse public var rfpDocumentUID:String? public var proposal:ProjectProposal? required public init(){} } public class RfpApproveResponse : Codable { public var responseStatus:ResponseStatus? public var rfpDocumentID:Int? public var projectID:Int? public var projectUID:String? public var rfpApprovalID:Int? public var jobIDs:[Int] = [] public var openPositionCount:Int? public var diff:ProposalDiff? required public init(){} } public class ProjectProposal : Codable { public var rfpDocumentID:Int? public var projectName:String? public var clientName:String? public var projectType:String? public var projectLocation:String? public var scope:String? public var projectDescription:String? public var contractDurationDays:Int? public var bidDueDate:String? public var estimatedStartDate:Date? public var estimatedEndDate:Date? public var tasks:[ProposedTask] = [] required public init(){} } public class ProposalDiff : Codable { public var tasksAdded:[String] = [] public var tasksRemoved:[String] = [] public var tasks:[TaskDiff] = [] public var hasChanges:Bool? required public init(){} } public class ProposedTask : Codable { public var seq:Int? public var name:String? public var category:String? public var quantity:Double? public var unit:String? public var sourceItemNumber:String? public var sourceReference:String? public var notes:String? public var resourcing:TaskResourcing? public var durationDays:Double? public var dependsOn:[Int] = [] public var estimatedStartDate:Date? public var estimatedEndDate:Date? required public init(){} } public class TaskDiff : Codable { public var taskName:String? public var positionsAdded:[String] = [] public var positionsRemoved:[String] = [] public var positionsStaffed:[String] = [] public var equipmentAdded:[Int] = [] public var equipmentRemoved:[Int] = [] public var materialsAdded:[Int] = [] public var materialsRemoved:[Int] = [] public var hasChanges:Bool? required public init(){} } public class TaskResourcing : Codable { public var positions:[ResourcedPosition] = [] public var equipment:[ResourcedEquipment] = [] public var materials:[ResourcedMaterial] = [] required public init(){} } public class ResourcedPosition : Codable { public var positionTag:String? public var hours:Double? public var headcount:Int? public var sourceReference:String? public var notes:String? public var isInCatalog:Bool? public var contactID:Int? required public init(){} } public class ResourcedEquipment : Codable { public var equipmentID:Int? public var equipmentName:String? public var makeModel:String? public var quantity:Double? public var durationDays:Double? public var sourceReference:String? public var notes:String? public var isInCatalog:Bool? public var suggestedEquipmentID:Int? public var suggestedEquipmentName:String? required public init(){} } public class ResourcedMaterial : Codable { public var materialID:Int? public var materialName:String? public var makeModel:String? public var quantity:Double? public var unit:String? public var sourceReference:String? public var notes:String? public var isInCatalog:Bool? public var suggestedMaterialID:Int? public var suggestedMaterialName:String? required public init(){} }