/* Options: Date: 2026-06-23 00:05:03 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: PmProjectsRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/v1/pm/projects", "GET,OPTIONS") public class PmProjectsRequest : IReturn, Codable { public typealias Return = PmProjectsResponse public var search:String? required public init(){} } public class PmProjectsResponse : Codable { public var projects:[PmProjectRow] = [] public var totals:PmPortfolioTotals? public var responseStatus:ResponseStatus? required public init(){} } public class PmProjectRow : 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 budget:Double? public var spent:Double? public var estimatedCost:Double? public var healthPct:Int? public var jobCount:Int? public var openJobs:Int? public var gapCount:Int? public var overBudget:Bool? public var progressPct:Int? required public init(){} } public class PmPortfolioTotals : Codable { public var projects:Int? public var budget:Double? public var spent:Double? public var overBudget:Int? public var withGaps:Int? required public init(){} }