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}

export class PmFinance
{
    public Budget: number;
    public Spent: number;
    public EstimatedCost: number;
    public CrewCost: number;
    public EquipCost: number;
    public MatCost: number;
    public Variance: number;
    public HealthPct: number;
    public SpentPct: number;
    public ProgressPct: number;

    public constructor(init?: Partial<PmFinance>) { (Object as any).assign(this, init); }
}

export class PmReadiness
{
    public JobsNoCrew: number;
    public OpenRoles: number;
    public EquipmentConflicts: number;
    public MaterialGaps: number;
    public TotalGaps: number;
    public ReadyPct: number;

    public constructor(init?: Partial<PmReadiness>) { (Object as any).assign(this, init); }
}

export class PmJobCrew
{
    public ContactID: number;
    public Name: string;
    public Rate: number;
    public BudgetedHours: number;
    public IsOpen: boolean;

    public constructor(init?: Partial<PmJobCrew>) { (Object as any).assign(this, init); }
}

export class PmJobResource
{
    public Id: number;
    public Name: string;
    public Amount: number;
    public Qty: number;

    public constructor(init?: Partial<PmJobResource>) { (Object as any).assign(this, init); }
}

export class PmJob
{
    public JobID: number;
    public Name: string;
    public Description: string;
    public Status: string;
    public StartDate: string;
    public EndDate: string;
    public CrewCount: number;
    public BudgetedHours: number;
    public EquipmentCount: number;
    public MaterialCount: number;
    public CrewCost: number;
    public EquipCost: number;
    public MatCost: number;
    public Cost: number;
    public NoCrew: boolean;
    public EquipConflict: boolean;
    public MaterialGap: boolean;
    public ReadyPct: number;
    public Crew: PmJobCrew[] = [];
    public Equipment: PmJobResource[] = [];
    public Materials: PmJobResource[] = [];

    public constructor(init?: Partial<PmJob>) { (Object as any).assign(this, init); }
}

export class PmConflict
{
    public ProjectName: string;
    public JobName: string;
    public StartDate: string;
    public EndDate: string;

    public constructor(init?: Partial<PmConflict>) { (Object as any).assign(this, init); }
}

export class PmEquipmentRow
{
    public EquipmentID: number;
    public Name: string;
    public EquipmentType: string;
    public SerialNumber: string;
    public UsedByJobs: string;
    public Available: boolean;
    public Conflicts: PmConflict[] = [];
    public MaintenanceIntervalDays?: number;
    public LastServiceDate: string;
    public NextServiceDate: string;
    public MaintenanceState: string;

    public constructor(init?: Partial<PmEquipmentRow>) { (Object as any).assign(this, init); }
}

export class PmMaterialRow
{
    public MaterialID: number;
    public Name: string;
    public MaterialType: string;
    public OnHand: number;
    public NeededByJobs: number;
    public QtyNeeded: number;
    public ToOrder: number;
    public UnitCost: number;
    public LineCost: number;
    public ProjectMaterialID: number;
    public StatusID: number;
    public Status: string;
    public Supplier: string;
    public OrderDate: string;
    public DeliveryDate: string;
    public Shortfall: boolean;

    public constructor(init?: Partial<PmMaterialRow>) { (Object as any).assign(this, init); }
}

export class PmCalendarBar
{
    public JobID: number;
    public Name: string;
    public StartDate: string;
    public EndDate: string;
    public Status: string;

    public constructor(init?: Partial<PmCalendarBar>) { (Object as any).assign(this, init); }
}

export class PmCatalogItem
{
    public Id: number;
    public Name: string;
    public Amount: number;

    public constructor(init?: Partial<PmCatalogItem>) { (Object as any).assign(this, init); }
}

export class PmProjectDetail
{
    public ProjectID: number;
    public ProjectUID: string;
    public Name: string;
    public Client: string;
    public ProjectType: string;
    public Status: string;
    public Branch: string;
    public StartDate: string;
    public EndDate: string;
    public Description: string;
    public Finance: PmFinance;
    public Readiness: PmReadiness;
    public Jobs: PmJob[] = [];
    public Equipment: PmEquipmentRow[] = [];
    public Materials: PmMaterialRow[] = [];
    public Calendar: PmCalendarBar[] = [];
    public ProjectStatuses: PmCatalogItem[] = [];
    public ResponseStatus: ResponseStatus;

    public constructor(init?: Partial<PmProjectDetail>) { (Object as any).assign(this, init); }
}

export class PmProjectDetailRequest
{
    public Uid: string;

    public constructor(init?: Partial<PmProjectDetailRequest>) { (Object as any).assign(this, init); }
}

TypeScript PmProjectDetailRequest DTOs

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

To embed the response in a jsonp callback, append ?callback=myCallback

HTTP + JSON

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/json
HTTP/1.1 200 OK
Content-Type: application/json
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"}}}