| GET,OPTIONS | /v1/pm/project/{Uid} |
|---|
import Foundation
import ServiceStack
public class PmProjectDetailRequest : Codable
{
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 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 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 PmConflict : Codable
{
public var projectName:String
public var jobName:String
public var startDate:String
public var endDate: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(){}
}
Swift PmProjectDetailRequest 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.
GET /v1/pm/project/{Uid} HTTP/1.1
Host: api.dev.dynamics.trendsic.com
Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
ProjectID: 0,
ProjectUID: String,
Name: String,
Client: String,
ProjectType: String,
Status: String,
Branch: String,
StartDate: String,
EndDate: String,
Description: String,
Finance:
{
Budget: 0,
Spent: 0,
EstimatedCost: 0,
CrewCost: 0,
EquipCost: 0,
MatCost: 0,
Variance: 0,
HealthPct: 0,
SpentPct: 0,
ProgressPct: 0
},
Readiness:
{
JobsNoCrew: 0,
OpenRoles: 0,
EquipmentConflicts: 0,
MaterialGaps: 0,
TotalGaps: 0,
ReadyPct: 0
},
Jobs:
[
{
JobID: 0,
Name: String,
Description: String,
Status: String,
StartDate: String,
EndDate: String,
CrewCount: 0,
BudgetedHours: 0,
EquipmentCount: 0,
MaterialCount: 0,
CrewCost: 0,
EquipCost: 0,
MatCost: 0,
Cost: 0,
NoCrew: False,
EquipConflict: False,
MaterialGap: False,
ReadyPct: 0,
Crew:
[
{
ContactID: 0,
Name: String,
Rate: 0,
BudgetedHours: 0,
IsOpen: False
}
],
Equipment:
[
{
Id: 0,
Name: String,
Amount: 0,
Qty: 0
}
],
Materials:
[
{
Id: 0,
Name: String,
Amount: 0,
Qty: 0
}
]
}
],
Equipment:
[
{
EquipmentID: 0,
Name: String,
EquipmentType: String,
SerialNumber: String,
UsedByJobs: String,
Available: False,
Conflicts:
[
{
ProjectName: String,
JobName: String,
StartDate: String,
EndDate: String
}
],
MaintenanceIntervalDays: 0,
LastServiceDate: String,
NextServiceDate: String,
MaintenanceState: String
}
],
Materials:
[
{
MaterialID: 0,
Name: String,
MaterialType: String,
OnHand: 0,
NeededByJobs: 0,
QtyNeeded: 0,
ToOrder: 0,
UnitCost: 0,
LineCost: 0,
ProjectMaterialID: 0,
StatusID: 0,
Status: String,
Supplier: String,
OrderDate: String,
DeliveryDate: String,
Shortfall: False
}
],
Calendar:
[
{
JobID: 0,
Name: String,
StartDate: String,
EndDate: String,
Status: String
}
],
ProjectStatuses:
[
{
Id: 0,
Name: String,
Amount: 0
}
],
ResponseStatus:
{
ErrorCode: String,
Message: String,
StackTrace: String,
Errors:
[
{
ErrorCode: String,
FieldName: String,
Message: String,
Meta:
{
String: String
}
}
],
Meta:
{
String: String
}
}
}