| GET,OPTIONS | /v1/pm/project/{Uid} |
|---|
"use strict";
export class PmFinance {
/** @param {{Budget?:number,Spent?:number,EstimatedCost?:number,CrewCost?:number,EquipCost?:number,MatCost?:number,Variance?:number,HealthPct?:number,SpentPct?:number,ProgressPct?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
Budget;
/** @type {number} */
Spent;
/** @type {number} */
EstimatedCost;
/** @type {number} */
CrewCost;
/** @type {number} */
EquipCost;
/** @type {number} */
MatCost;
/** @type {number} */
Variance;
/** @type {number} */
HealthPct;
/** @type {number} */
SpentPct;
/** @type {number} */
ProgressPct;
}
export class PmReadiness {
/** @param {{JobsNoCrew?:number,OpenRoles?:number,EquipmentConflicts?:number,MaterialGaps?:number,TotalGaps?:number,ReadyPct?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
JobsNoCrew;
/** @type {number} */
OpenRoles;
/** @type {number} */
EquipmentConflicts;
/** @type {number} */
MaterialGaps;
/** @type {number} */
TotalGaps;
/** @type {number} */
ReadyPct;
}
export class PmJobCrew {
/** @param {{ContactID?:number,Name?:string,Rate?:number,BudgetedHours?:number,IsOpen?:boolean}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
ContactID;
/** @type {string} */
Name;
/** @type {number} */
Rate;
/** @type {number} */
BudgetedHours;
/** @type {boolean} */
IsOpen;
}
export class PmJobResource {
/** @param {{Id?:number,Name?:string,Amount?:number,Qty?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
Id;
/** @type {string} */
Name;
/** @type {number} */
Amount;
/** @type {number} */
Qty;
}
export class PmJob {
/** @param {{JobID?:number,Name?:string,Description?:string,Status?:string,StartDate?:string,EndDate?:string,CrewCount?:number,BudgetedHours?:number,EquipmentCount?:number,MaterialCount?:number,CrewCost?:number,EquipCost?:number,MatCost?:number,Cost?:number,NoCrew?:boolean,EquipConflict?:boolean,MaterialGap?:boolean,ReadyPct?:number,Crew?:PmJobCrew[],Equipment?:PmJobResource[],Materials?:PmJobResource[]}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
JobID;
/** @type {string} */
Name;
/** @type {string} */
Description;
/** @type {string} */
Status;
/** @type {string} */
StartDate;
/** @type {string} */
EndDate;
/** @type {number} */
CrewCount;
/** @type {number} */
BudgetedHours;
/** @type {number} */
EquipmentCount;
/** @type {number} */
MaterialCount;
/** @type {number} */
CrewCost;
/** @type {number} */
EquipCost;
/** @type {number} */
MatCost;
/** @type {number} */
Cost;
/** @type {boolean} */
NoCrew;
/** @type {boolean} */
EquipConflict;
/** @type {boolean} */
MaterialGap;
/** @type {number} */
ReadyPct;
/** @type {PmJobCrew[]} */
Crew = [];
/** @type {PmJobResource[]} */
Equipment = [];
/** @type {PmJobResource[]} */
Materials = [];
}
export class PmConflict {
/** @param {{ProjectName?:string,JobName?:string,StartDate?:string,EndDate?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
ProjectName;
/** @type {string} */
JobName;
/** @type {string} */
StartDate;
/** @type {string} */
EndDate;
}
export class PmEquipmentRow {
/** @param {{EquipmentID?:number,Name?:string,EquipmentType?:string,SerialNumber?:string,UsedByJobs?:string,Available?:boolean,Conflicts?:PmConflict[],MaintenanceIntervalDays?:number,LastServiceDate?:string,NextServiceDate?:string,MaintenanceState?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
EquipmentID;
/** @type {string} */
Name;
/** @type {string} */
EquipmentType;
/** @type {string} */
SerialNumber;
/** @type {string} */
UsedByJobs;
/** @type {boolean} */
Available;
/** @type {PmConflict[]} */
Conflicts = [];
/** @type {?number} */
MaintenanceIntervalDays;
/** @type {string} */
LastServiceDate;
/** @type {string} */
NextServiceDate;
/** @type {string} */
MaintenanceState;
}
export class PmMaterialRow {
/** @param {{MaterialID?:number,Name?:string,MaterialType?:string,OnHand?:number,NeededByJobs?:number,QtyNeeded?:number,ToOrder?:number,UnitCost?:number,LineCost?:number,ProjectMaterialID?:number,StatusID?:number,Status?:string,Supplier?:string,OrderDate?:string,DeliveryDate?:string,Shortfall?:boolean}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
MaterialID;
/** @type {string} */
Name;
/** @type {string} */
MaterialType;
/** @type {number} */
OnHand;
/** @type {number} */
NeededByJobs;
/** @type {number} */
QtyNeeded;
/** @type {number} */
ToOrder;
/** @type {number} */
UnitCost;
/** @type {number} */
LineCost;
/** @type {number} */
ProjectMaterialID;
/** @type {number} */
StatusID;
/** @type {string} */
Status;
/** @type {string} */
Supplier;
/** @type {string} */
OrderDate;
/** @type {string} */
DeliveryDate;
/** @type {boolean} */
Shortfall;
}
export class PmCalendarBar {
/** @param {{JobID?:number,Name?:string,StartDate?:string,EndDate?:string,Status?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
JobID;
/** @type {string} */
Name;
/** @type {string} */
StartDate;
/** @type {string} */
EndDate;
/** @type {string} */
Status;
}
export class PmCatalogItem {
/** @param {{Id?:number,Name?:string,Amount?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
Id;
/** @type {string} */
Name;
/** @type {number} */
Amount;
}
export class PmProjectDetail {
/** @param {{ProjectID?:number,ProjectUID?:string,Name?:string,Client?:string,ProjectType?:string,Status?:string,Branch?:string,StartDate?:string,EndDate?:string,Description?:string,Finance?:PmFinance,Readiness?:PmReadiness,Jobs?:PmJob[],Equipment?:PmEquipmentRow[],Materials?:PmMaterialRow[],Calendar?:PmCalendarBar[],ProjectStatuses?:PmCatalogItem[],ResponseStatus?:ResponseStatus}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
ProjectID;
/** @type {string} */
ProjectUID;
/** @type {string} */
Name;
/** @type {string} */
Client;
/** @type {string} */
ProjectType;
/** @type {string} */
Status;
/** @type {string} */
Branch;
/** @type {string} */
StartDate;
/** @type {string} */
EndDate;
/** @type {string} */
Description;
/** @type {PmFinance} */
Finance;
/** @type {PmReadiness} */
Readiness;
/** @type {PmJob[]} */
Jobs = [];
/** @type {PmEquipmentRow[]} */
Equipment = [];
/** @type {PmMaterialRow[]} */
Materials = [];
/** @type {PmCalendarBar[]} */
Calendar = [];
/** @type {PmCatalogItem[]} */
ProjectStatuses = [];
/** @type {ResponseStatus} */
ResponseStatus;
}
export class PmProjectDetailRequest {
/** @param {{Uid?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
Uid;
}
JavaScript PmProjectDetailRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml
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: application/xml
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length
<PmProjectDetail xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/CRM.AgencyPlatform.API.Internal">
<Branch>String</Branch>
<Calendar>
<PmCalendarBar>
<EndDate>String</EndDate>
<JobID>0</JobID>
<Name>String</Name>
<StartDate>String</StartDate>
<Status>String</Status>
</PmCalendarBar>
</Calendar>
<Client>String</Client>
<Description>String</Description>
<EndDate>String</EndDate>
<Equipment>
<PmEquipmentRow>
<Available>false</Available>
<Conflicts>
<PmConflict>
<EndDate>String</EndDate>
<JobName>String</JobName>
<ProjectName>String</ProjectName>
<StartDate>String</StartDate>
</PmConflict>
</Conflicts>
<EquipmentID>0</EquipmentID>
<EquipmentType>String</EquipmentType>
<LastServiceDate>String</LastServiceDate>
<MaintenanceIntervalDays>0</MaintenanceIntervalDays>
<MaintenanceState>String</MaintenanceState>
<Name>String</Name>
<NextServiceDate>String</NextServiceDate>
<SerialNumber>String</SerialNumber>
<UsedByJobs>String</UsedByJobs>
</PmEquipmentRow>
</Equipment>
<Finance>
<Budget>0</Budget>
<CrewCost>0</CrewCost>
<EquipCost>0</EquipCost>
<EstimatedCost>0</EstimatedCost>
<HealthPct>0</HealthPct>
<MatCost>0</MatCost>
<ProgressPct>0</ProgressPct>
<Spent>0</Spent>
<SpentPct>0</SpentPct>
<Variance>0</Variance>
</Finance>
<Jobs>
<PmJob>
<BudgetedHours>0</BudgetedHours>
<Cost>0</Cost>
<Crew>
<PmJobCrew>
<BudgetedHours>0</BudgetedHours>
<ContactID>0</ContactID>
<IsOpen>false</IsOpen>
<Name>String</Name>
<Rate>0</Rate>
</PmJobCrew>
</Crew>
<CrewCost>0</CrewCost>
<CrewCount>0</CrewCount>
<Description>String</Description>
<EndDate>String</EndDate>
<EquipConflict>false</EquipConflict>
<EquipCost>0</EquipCost>
<Equipment>
<PmJobResource>
<Amount>0</Amount>
<Id>0</Id>
<Name>String</Name>
<Qty>0</Qty>
</PmJobResource>
</Equipment>
<EquipmentCount>0</EquipmentCount>
<JobID>0</JobID>
<MatCost>0</MatCost>
<MaterialCount>0</MaterialCount>
<MaterialGap>false</MaterialGap>
<Materials>
<PmJobResource>
<Amount>0</Amount>
<Id>0</Id>
<Name>String</Name>
<Qty>0</Qty>
</PmJobResource>
</Materials>
<Name>String</Name>
<NoCrew>false</NoCrew>
<ReadyPct>0</ReadyPct>
<StartDate>String</StartDate>
<Status>String</Status>
</PmJob>
</Jobs>
<Materials>
<PmMaterialRow>
<DeliveryDate>String</DeliveryDate>
<LineCost>0</LineCost>
<MaterialID>0</MaterialID>
<MaterialType>String</MaterialType>
<Name>String</Name>
<NeededByJobs>0</NeededByJobs>
<OnHand>0</OnHand>
<OrderDate>String</OrderDate>
<ProjectMaterialID>0</ProjectMaterialID>
<QtyNeeded>0</QtyNeeded>
<Shortfall>false</Shortfall>
<Status>String</Status>
<StatusID>0</StatusID>
<Supplier>String</Supplier>
<ToOrder>0</ToOrder>
<UnitCost>0</UnitCost>
</PmMaterialRow>
</Materials>
<Name>String</Name>
<ProjectID>0</ProjectID>
<ProjectStatuses>
<PmCatalogItem>
<Amount>0</Amount>
<Id>0</Id>
<Name>String</Name>
</PmCatalogItem>
</ProjectStatuses>
<ProjectType>String</ProjectType>
<ProjectUID>String</ProjectUID>
<Readiness>
<EquipmentConflicts>0</EquipmentConflicts>
<JobsNoCrew>0</JobsNoCrew>
<MaterialGaps>0</MaterialGaps>
<OpenRoles>0</OpenRoles>
<ReadyPct>0</ReadyPct>
<TotalGaps>0</TotalGaps>
</Readiness>
<ResponseStatus xmlns:d2p1="http://schemas.servicestack.net/types">
<d2p1:ErrorCode>String</d2p1:ErrorCode>
<d2p1:Message>String</d2p1:Message>
<d2p1:StackTrace>String</d2p1:StackTrace>
<d2p1:Errors>
<d2p1:ResponseError>
<d2p1:ErrorCode>String</d2p1:ErrorCode>
<d2p1:FieldName>String</d2p1:FieldName>
<d2p1:Message>String</d2p1:Message>
<d2p1:Meta xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d5p1:KeyValueOfstringstring>
<d5p1:Key>String</d5p1:Key>
<d5p1:Value>String</d5p1:Value>
</d5p1:KeyValueOfstringstring>
</d2p1:Meta>
</d2p1:ResponseError>
</d2p1:Errors>
<d2p1:Meta xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d3p1:KeyValueOfstringstring>
<d3p1:Key>String</d3p1:Key>
<d3p1:Value>String</d3p1:Value>
</d3p1:KeyValueOfstringstring>
</d2p1:Meta>
</ResponseStatus>
<StartDate>String</StartDate>
<Status>String</Status>
</PmProjectDetail>