Trendsic Platform Service

<back to all web services

PmProjectDetailRequest

Requires Authentication
The following routes are available for this service:
GET,OPTIONS/v1/pm/project/{Uid}
import java.math.*
import java.util.*
import java.io.InputStream
import net.servicestack.client.*


open class PmProjectDetailRequest
{
    open var Uid:String? = null
}

open class PmProjectDetail
{
    open var ProjectID:Int? = null
    open var ProjectUID:String? = null
    open var Name:String? = null
    open var Client:String? = null
    open var ProjectType:String? = null
    open var Status:String? = null
    open var Branch:String? = null
    open var StartDate:String? = null
    open var EndDate:String? = null
    open var Description:String? = null
    open var Finance:PmFinance? = null
    open var Readiness:PmReadiness? = null
    open var Jobs:ArrayList<PmJob> = ArrayList<PmJob>()
    open var Equipment:ArrayList<PmEquipmentRow> = ArrayList<PmEquipmentRow>()
    open var Materials:ArrayList<PmMaterialRow> = ArrayList<PmMaterialRow>()
    open var Calendar:ArrayList<PmCalendarBar> = ArrayList<PmCalendarBar>()
    open var ProjectStatuses:ArrayList<PmCatalogItem> = ArrayList<PmCatalogItem>()
    open var ResponseStatus:ResponseStatus? = null
}

open class PmFinance
{
    open var Budget:Double? = null
    open var Spent:Double? = null
    open var EstimatedCost:Double? = null
    open var CrewCost:Double? = null
    open var EquipCost:Double? = null
    open var MatCost:Double? = null
    open var Variance:Double? = null
    open var HealthPct:Int? = null
    open var SpentPct:Int? = null
    open var ProgressPct:Int? = null
}

open class PmReadiness
{
    open var JobsNoCrew:Int? = null
    open var OpenRoles:Int? = null
    open var EquipmentConflicts:Int? = null
    open var MaterialGaps:Int? = null
    open var TotalGaps:Int? = null
    open var ReadyPct:Int? = null
}

open class PmJob
{
    open var JobID:Int? = null
    open var Name:String? = null
    open var Description:String? = null
    open var Status:String? = null
    open var StartDate:String? = null
    open var EndDate:String? = null
    open var CrewCount:Int? = null
    open var BudgetedHours:Double? = null
    open var EquipmentCount:Int? = null
    open var MaterialCount:Int? = null
    open var CrewCost:Double? = null
    open var EquipCost:Double? = null
    open var MatCost:Double? = null
    open var Cost:Double? = null
    open var NoCrew:Boolean? = null
    open var EquipConflict:Boolean? = null
    open var MaterialGap:Boolean? = null
    open var ReadyPct:Int? = null
    open var Crew:ArrayList<PmJobCrew> = ArrayList<PmJobCrew>()
    open var Equipment:ArrayList<PmJobResource> = ArrayList<PmJobResource>()
    open var Materials:ArrayList<PmJobResource> = ArrayList<PmJobResource>()
}

open class PmJobCrew
{
    open var ContactID:Int? = null
    open var Name:String? = null
    open var Rate:Double? = null
    open var BudgetedHours:Double? = null
    open var IsOpen:Boolean? = null
}

open class PmJobResource
{
    open var Id:Int? = null
    open var Name:String? = null
    open var Amount:Double? = null
    open var Qty:Int? = null
}

open class PmEquipmentRow
{
    open var EquipmentID:Int? = null
    open var Name:String? = null
    open var EquipmentType:String? = null
    open var SerialNumber:String? = null
    open var UsedByJobs:String? = null
    open var Available:Boolean? = null
    open var Conflicts:ArrayList<PmConflict> = ArrayList<PmConflict>()
    open var MaintenanceIntervalDays:Int? = null
    open var LastServiceDate:String? = null
    open var NextServiceDate:String? = null
    open var MaintenanceState:String? = null
}

open class PmConflict
{
    open var ProjectName:String? = null
    open var JobName:String? = null
    open var StartDate:String? = null
    open var EndDate:String? = null
}

open class PmMaterialRow
{
    open var MaterialID:Int? = null
    open var Name:String? = null
    open var MaterialType:String? = null
    open var OnHand:Int? = null
    open var NeededByJobs:Int? = null
    open var QtyNeeded:Int? = null
    open var ToOrder:Int? = null
    open var UnitCost:Double? = null
    open var LineCost:Double? = null
    open var ProjectMaterialID:Int? = null
    open var StatusID:Int? = null
    open var Status:String? = null
    open var Supplier:String? = null
    open var OrderDate:String? = null
    open var DeliveryDate:String? = null
    open var Shortfall:Boolean? = null
}

open class PmCalendarBar
{
    open var JobID:Int? = null
    open var Name:String? = null
    open var StartDate:String? = null
    open var EndDate:String? = null
    open var Status:String? = null
}

open class PmCatalogItem
{
    open var Id:Int? = null
    open var Name:String? = null
    open var Amount:Double? = null
}

Kotlin PmProjectDetailRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

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