Trendsic Platform Service

<back to all web services

ApplyStartRequest

Requires Authentication
Requires any of the roles:Agent, Administrator
The following routes are available for this service:
POST,OPTIONS/v1/Rfp/{RfpDocumentUID}/ApplyStart
"use strict";
export class EstimateSettingsView {
    /** @param {{RfpEstimateID?:number,StartDate?:string,DeadlineDate?:string,WorkdaysPerWeek?:number,HoursPerDay?:number,WeatherPct?:number,OhpPct?:number,ContingencyPct?:number,BondPct?:number,Holidays?:string[],AppliedStartDate?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    RfpEstimateID;
    /** @type {?string} */
    StartDate;
    /** @type {?string} */
    DeadlineDate;
    /** @type {number} */
    WorkdaysPerWeek;
    /** @type {number} */
    HoursPerDay;
    /** @type {number} */
    WeatherPct;
    /** @type {number} */
    OhpPct;
    /** @type {number} */
    ContingencyPct;
    /** @type {number} */
    BondPct;
    /** @type {string[]} */
    Holidays = [];
    /** @type {?string} */
    AppliedStartDate;
}
export class SpecRefView {
    /** @param {{Section?:string,Title?:string,Url?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    Section;
    /** @type {string} */
    Title;
    /** @type {string} */
    Url;
}
export class DodItemView {
    /** @param {{Key?:string,Text?:string,Checked?:boolean,Source?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    Key;
    /** @type {string} */
    Text;
    /** @type {boolean} */
    Checked;
    /** @type {string} */
    Source;
}
export class WorkPackageView {
    /** @param {{HasPackage?:boolean,Scope?:string,LimitsOfWork?:string,SpecRefs?:SpecRefView[],Constraints?:string[],HoldPoints?:string[],Dod?:DodItemView[],SafetyNote?:string,Provenance?:string,SpecBook?:string,UserEdited?:boolean,RedraftNote?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {boolean} */
    HasPackage;
    /** @type {string} */
    Scope;
    /** @type {string} */
    LimitsOfWork;
    /** @type {SpecRefView[]} */
    SpecRefs = [];
    /** @type {string[]} */
    Constraints = [];
    /** @type {string[]} */
    HoldPoints = [];
    /** @type {DodItemView[]} */
    Dod = [];
    /** @type {string} */
    SafetyNote;
    /** @type {string} */
    Provenance;
    /** @type {string} */
    SpecBook;
    /** @type {boolean} */
    UserEdited;
    /** @type {string} */
    RedraftNote;
}
export class EstimateCrewLineView {
    /** @param {{Role?:string,Hours?:number,StHours?:number,OtHours?:number,HasOt?:boolean,PremiumApplied?:boolean,NeedsRate?:boolean,RateKey?:string,Chip?:string,Rrop?:number,StCost?:number,OtCost?:number,Cost?:number,FringeCost?:number}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    Role;
    /** @type {number} */
    Hours;
    /** @type {number} */
    StHours;
    /** @type {number} */
    OtHours;
    /** @type {boolean} */
    HasOt;
    /** @type {boolean} */
    PremiumApplied;
    /** @type {boolean} */
    NeedsRate;
    /** @type {string} */
    RateKey;
    /** @type {string} */
    Chip;
    /** @type {?number} */
    Rrop;
    /** @type {?number} */
    StCost;
    /** @type {?number} */
    OtCost;
    /** @type {?number} */
    Cost;
    /** @type {?number} */
    FringeCost;
}
export class EstimateEquipmentLineView {
    /** @param {{Name?:string,Quantity?:number,Rate?:number,NeedsRate?:boolean,MobCost?:number,Cost?:number,IsAvailabilityTracked?:boolean,IsOwned?:boolean,AvailabilityLabel?:string,FreedFromProject?:string,AvailableFrom?:string,RateKey?:string,Chip?:string,RentalExplain?:string,UsageDays?:number,BilledDays?:number}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {number} */
    Quantity;
    /** @type {?number} */
    Rate;
    /** @type {boolean} */
    NeedsRate;
    /** @type {number} */
    MobCost;
    /** @type {number} */
    Cost;
    /** @type {boolean} */
    IsAvailabilityTracked;
    /** @type {boolean} */
    IsOwned;
    /** @type {string} */
    AvailabilityLabel;
    /** @type {string} */
    FreedFromProject;
    /** @type {?string} */
    AvailableFrom;
    /** @type {string} */
    RateKey;
    /** @type {string} */
    Chip;
    /** @type {string} */
    RentalExplain;
    /** @type {number} */
    UsageDays;
    /** @type {number} */
    BilledDays;
}
export class EstimateMaterialLineView {
    /** @param {{Name?:string,Quantity?:number,Unit?:string,Rate?:number,NeedsRate?:boolean,Cost?:number,RateKey?:string,Chip?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    Name;
    /** @type {number} */
    Quantity;
    /** @type {string} */
    Unit;
    /** @type {?number} */
    Rate;
    /** @type {boolean} */
    NeedsRate;
    /** @type {number} */
    Cost;
    /** @type {string} */
    RateKey;
    /** @type {string} */
    Chip;
}
export class EstimateSubcontractView {
    /** @param {{EstimateSubcontractID?:number,TaskSeq?:number,Vendor?:string,Amount?:number,Scope?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    EstimateSubcontractID;
    /** @type {number} */
    TaskSeq;
    /** @type {string} */
    Vendor;
    /** @type {number} */
    Amount;
    /** @type {string} */
    Scope;
}
export class EstimateJobView {
    /** @param {{Seq?:number,WorkPackage?:WorkPackageView,ItemNo?:string,Name?:string,Category?:string,SourceRef?:string,Unit?:string,Quantity?:number,PatternCode?:string,Workdays?:number,HoursPerDay?:number,IsNight?:boolean,WeeklyHours?:number,OtFraction?:number,Days?:number,EffectiveProdPerDay?:number,CrewPremiumApplied?:boolean,CrewCost?:number,FringeCost?:number,EquipmentCost?:number,MaterialCost?:number,SubcontractCost?:number,Direct?:number,PricingBasis?:string,BenchmarkUnitPrice?:number,Crew?:EstimateCrewLineView[],Equipment?:EstimateEquipmentLineView[],Materials?:EstimateMaterialLineView[],Subcontracts?:EstimateSubcontractView[]}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    Seq;
    /** @type {WorkPackageView} */
    WorkPackage;
    /** @type {string} */
    ItemNo;
    /** @type {string} */
    Name;
    /** @type {string} */
    Category;
    /** @type {string} */
    SourceRef;
    /** @type {string} */
    Unit;
    /** @type {number} */
    Quantity;
    /** @type {string} */
    PatternCode;
    /** @type {number} */
    Workdays;
    /** @type {number} */
    HoursPerDay;
    /** @type {boolean} */
    IsNight;
    /** @type {number} */
    WeeklyHours;
    /** @type {number} */
    OtFraction;
    /** @type {number} */
    Days;
    /** @type {?number} */
    EffectiveProdPerDay;
    /** @type {boolean} */
    CrewPremiumApplied;
    /** @type {number} */
    CrewCost;
    /** @type {number} */
    FringeCost;
    /** @type {number} */
    EquipmentCost;
    /** @type {number} */
    MaterialCost;
    /** @type {number} */
    SubcontractCost;
    /** @type {number} */
    Direct;
    /** @type {string} */
    PricingBasis;
    /** @type {?number} */
    BenchmarkUnitPrice;
    /** @type {EstimateCrewLineView[]} */
    Crew = [];
    /** @type {EstimateEquipmentLineView[]} */
    Equipment = [];
    /** @type {EstimateMaterialLineView[]} */
    Materials = [];
    /** @type {EstimateSubcontractView[]} */
    Subcontracts = [];
}
export class BidScheduleLine {
    /** @param {{ItemNo?:string,Description?:string,Unit?:string,Quantity?:number,UnitPrice?:number,Extension?:number,PricingBasis?:string,BenchmarkDeltaPct?:number,BenchmarkFlagged?:boolean}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    ItemNo;
    /** @type {string} */
    Description;
    /** @type {string} */
    Unit;
    /** @type {number} */
    Quantity;
    /** @type {number} */
    UnitPrice;
    /** @type {number} */
    Extension;
    /** @type {string} */
    PricingBasis;
    /** @type {?number} */
    BenchmarkDeltaPct;
    /** @type {boolean} */
    BenchmarkFlagged;
}
export class EstimateVarianceLine {
    /** @param {{Seq?:number,ItemNo?:string,Name?:string,Unit?:string,Quantity?:number,OurUnitPrice?:number,OurTotal?:number,BenchmarkUnitPrice?:number,MarketTotal?:number,DeltaPct?:number,RateMin?:number,RateMax?:number,SampleSize?:number,OutsideRange?:boolean,IsFloor?:boolean,Severity?:string,Note?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    Seq;
    /** @type {string} */
    ItemNo;
    /** @type {string} */
    Name;
    /** @type {string} */
    Unit;
    /** @type {number} */
    Quantity;
    /** @type {number} */
    OurUnitPrice;
    /** @type {number} */
    OurTotal;
    /** @type {number} */
    BenchmarkUnitPrice;
    /** @type {number} */
    MarketTotal;
    /** @type {number} */
    DeltaPct;
    /** @type {?number} */
    RateMin;
    /** @type {?number} */
    RateMax;
    /** @type {?number} */
    SampleSize;
    /** @type {?boolean} */
    OutsideRange;
    /** @type {boolean} */
    IsFloor;
    /** @type {string} */
    Severity;
    /** @type {string} */
    Note;
}
export class EstimateVarianceView {
    /** @param {{Lines?:EstimateVarianceLine[],ItemsTotal?:number,ItemsBenchmarked?:number,CoverageValuePct?:number,OursTotal?:number,MarketTotal?:number,AggregateDeltaPct?:number,FlooredCount?:number,WatchCount?:number,OutlierCount?:number,CriticalCount?:number,Note?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {EstimateVarianceLine[]} */
    Lines = [];
    /** @type {number} */
    ItemsTotal;
    /** @type {number} */
    ItemsBenchmarked;
    /** @type {number} */
    CoverageValuePct;
    /** @type {number} */
    OursTotal;
    /** @type {number} */
    MarketTotal;
    /** @type {?number} */
    AggregateDeltaPct;
    /** @type {number} */
    FlooredCount;
    /** @type {number} */
    WatchCount;
    /** @type {number} */
    OutlierCount;
    /** @type {number} */
    CriticalCount;
    /** @type {string} */
    Note;
}
export class IndicativeLine {
    /** @param {{Seq?:number,ItemNo?:string,Name?:string,Unit?:string,Quantity?:number,Source?:string,UnitPrice?:number,LineTotal?:number}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    Seq;
    /** @type {string} */
    ItemNo;
    /** @type {string} */
    Name;
    /** @type {string} */
    Unit;
    /** @type {number} */
    Quantity;
    /** @type {string} */
    Source;
    /** @type {number} */
    UnitPrice;
    /** @type {number} */
    LineTotal;
}
export class IndicativeBidView {
    /** @param {{Lines?:IndicativeLine[],BottomUpCount?:number,BottomUpTotal?:number,BenchmarkCount?:number,BenchmarkTotal?:number,UncoveredCount?:number,UncoveredFloorTotal?:number,IndicativeTotal?:number,FloorTotal?:number,Note?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {IndicativeLine[]} */
    Lines = [];
    /** @type {number} */
    BottomUpCount;
    /** @type {number} */
    BottomUpTotal;
    /** @type {number} */
    BenchmarkCount;
    /** @type {number} */
    BenchmarkTotal;
    /** @type {number} */
    UncoveredCount;
    /** @type {number} */
    UncoveredFloorTotal;
    /** @type {number} */
    IndicativeTotal;
    /** @type {number} */
    FloorTotal;
    /** @type {string} */
    Note;
}
export class EstimateSummaryView {
    /** @param {{Direct?:number,OhpPct?:number,OhpAmount?:number,BondPct?:number,BondAmount?:number,ContingencyPct?:number,ContingencyAmount?:number,BidTotal?:number,LoadFactor?:number,MarginPct?:number}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    Direct;
    /** @type {number} */
    OhpPct;
    /** @type {number} */
    OhpAmount;
    /** @type {number} */
    BondPct;
    /** @type {number} */
    BondAmount;
    /** @type {number} */
    ContingencyPct;
    /** @type {number} */
    ContingencyAmount;
    /** @type {number} */
    BidTotal;
    /** @type {number} */
    LoadFactor;
    /** @type {number} */
    MarginPct;
}
export class EstimateTimingView {
    /** @param {{TotalWorkdays?:number,CalendarDays?:number,Finish?:string,Feasible?:boolean,Deadline?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    TotalWorkdays;
    /** @type {number} */
    CalendarDays;
    /** @type {string} */
    Finish;
    /** @type {boolean} */
    Feasible;
    /** @type {?string} */
    Deadline;
}
export class EstimateReviewItemView {
    /** @param {{TaskSeq?:number,TaskName?:string,Reason?:string,Status?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    TaskSeq;
    /** @type {string} */
    TaskName;
    /** @type {string} */
    Reason;
    /** @type {string} */
    Status;
}
export class EstimatingView {
    /** @param {{RfpDocumentID?:number,ProjectName?:string,ClientName?:string,BidDueDate?:string,ProjectType?:string,Settings?:EstimateSettingsView,Jobs?:EstimateJobView[],Schedule?:BidScheduleLine[],ScheduleTotal?:number,Variance?:EstimateVarianceView,Indicative?:IndicativeBidView,Summary?:EstimateSummaryView,Timing?:EstimateTimingView,NeedsRateCount?:number,NeedsRateKeys?:string[],ReviewItems?:EstimateReviewItemView[],NeedsReviewCount?:number,CanApprove?:boolean,CanSeePay?:boolean}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    RfpDocumentID;
    /** @type {string} */
    ProjectName;
    /** @type {string} */
    ClientName;
    /** @type {string} */
    BidDueDate;
    /** @type {string} */
    ProjectType;
    /** @type {EstimateSettingsView} */
    Settings;
    /** @type {EstimateJobView[]} */
    Jobs = [];
    /** @type {BidScheduleLine[]} */
    Schedule = [];
    /** @type {number} */
    ScheduleTotal;
    /** @type {EstimateVarianceView} */
    Variance;
    /** @type {IndicativeBidView} */
    Indicative;
    /** @type {EstimateSummaryView} */
    Summary;
    /** @type {EstimateTimingView} */
    Timing;
    /** @type {number} */
    NeedsRateCount;
    /** @type {string[]} */
    NeedsRateKeys = [];
    /** @type {EstimateReviewItemView[]} */
    ReviewItems = [];
    /** @type {number} */
    NeedsReviewCount;
    /** @type {boolean} */
    CanApprove;
    /** @type {boolean} */
    CanSeePay;
}
export class EstimateResponse {
    /** @param {{ResponseStatus?:ResponseStatus,View?:EstimatingView}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {ResponseStatus} */
    ResponseStatus;
    /** @type {EstimatingView} */
    View;
}
export class ApplyStartRequest {
    /** @param {{RfpDocumentUID?:string,StartDate?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    RfpDocumentUID;
    /** @type {string} */
    StartDate;
}

JavaScript ApplyStartRequest 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.

POST /v1/Rfp/{RfpDocumentUID}/ApplyStart HTTP/1.1 
Host: api.dev.dynamics.trendsic.com 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	RfpDocumentUID: 00000000000000000000000000000000,
	StartDate: 0001-01-01
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	ResponseStatus: 
	{
		ErrorCode: String,
		Message: String,
		StackTrace: String,
		Errors: 
		[
			{
				ErrorCode: String,
				FieldName: String,
				Message: String,
				Meta: 
				{
					String: String
				}
			}
		],
		Meta: 
		{
			String: String
		}
	},
	View: 
	{
		RfpDocumentID: 0,
		ProjectName: String,
		ClientName: String,
		BidDueDate: String,
		ProjectType: String,
		Settings: 
		{
			RfpEstimateID: 0,
			StartDate: 0001-01-01,
			DeadlineDate: 0001-01-01,
			WorkdaysPerWeek: 0,
			HoursPerDay: 0,
			WeatherPct: 0,
			OhpPct: 0,
			ContingencyPct: 0,
			BondPct: 0,
			Holidays: 
			[
				0001-01-01
			],
			AppliedStartDate: 0001-01-01
		},
		Jobs: 
		[
			{
				Seq: 0,
				WorkPackage: 
				{
					HasPackage: False,
					Scope: String,
					LimitsOfWork: String,
					SpecRefs: 
					[
						{
							Section: String,
							Title: String,
							Url: String
						}
					],
					Constraints: 
					[
						String
					],
					HoldPoints: 
					[
						String
					],
					Dod: 
					[
						{
							Key: String,
							Text: String,
							Checked: False,
							Source: String
						}
					],
					SafetyNote: String,
					Provenance: String,
					SpecBook: String,
					UserEdited: False,
					RedraftNote: String
				},
				ItemNo: String,
				Name: String,
				Category: String,
				SourceRef: String,
				Unit: String,
				Quantity: 0,
				PatternCode: String,
				Workdays: 0,
				HoursPerDay: 0,
				IsNight: False,
				WeeklyHours: 0,
				OtFraction: 0,
				Days: 0,
				EffectiveProdPerDay: 0,
				CrewPremiumApplied: False,
				CrewCost: 0,
				FringeCost: 0,
				EquipmentCost: 0,
				MaterialCost: 0,
				SubcontractCost: 0,
				Direct: 0,
				PricingBasis: String,
				BenchmarkUnitPrice: 0,
				Crew: 
				[
					{
						Role: String,
						Hours: 0,
						StHours: 0,
						OtHours: 0,
						HasOt: False,
						PremiumApplied: False,
						NeedsRate: False,
						RateKey: String,
						Chip: String,
						Rrop: 0,
						StCost: 0,
						OtCost: 0,
						Cost: 0,
						FringeCost: 0
					}
				],
				Equipment: 
				[
					{
						Name: String,
						Quantity: 0,
						Rate: 0,
						NeedsRate: False,
						MobCost: 0,
						Cost: 0,
						IsAvailabilityTracked: False,
						IsOwned: False,
						AvailabilityLabel: String,
						FreedFromProject: String,
						AvailableFrom: 0001-01-01,
						RateKey: String,
						Chip: String,
						RentalExplain: String,
						UsageDays: 0,
						BilledDays: 0
					}
				],
				Materials: 
				[
					{
						Name: String,
						Quantity: 0,
						Unit: String,
						Rate: 0,
						NeedsRate: False,
						Cost: 0,
						RateKey: String,
						Chip: String
					}
				],
				Subcontracts: 
				[
					{
						EstimateSubcontractID: 0,
						TaskSeq: 0,
						Vendor: String,
						Amount: 0,
						Scope: String
					}
				]
			}
		],
		Schedule: 
		[
			{
				ItemNo: String,
				Description: String,
				Unit: String,
				Quantity: 0,
				UnitPrice: 0,
				Extension: 0,
				PricingBasis: String,
				BenchmarkDeltaPct: 0,
				BenchmarkFlagged: False
			}
		],
		ScheduleTotal: 0,
		Variance: 
		{
			Lines: 
			[
				{
					Seq: 0,
					ItemNo: String,
					Name: String,
					Unit: String,
					Quantity: 0,
					OurUnitPrice: 0,
					OurTotal: 0,
					BenchmarkUnitPrice: 0,
					MarketTotal: 0,
					DeltaPct: 0,
					RateMin: 0,
					RateMax: 0,
					SampleSize: 0,
					OutsideRange: False,
					IsFloor: False,
					Severity: String,
					Note: String
				}
			],
			ItemsTotal: 0,
			ItemsBenchmarked: 0,
			CoverageValuePct: 0,
			OursTotal: 0,
			MarketTotal: 0,
			AggregateDeltaPct: 0,
			FlooredCount: 0,
			WatchCount: 0,
			OutlierCount: 0,
			CriticalCount: 0,
			Note: String
		},
		Indicative: 
		{
			Lines: 
			[
				{
					Seq: 0,
					ItemNo: String,
					Name: String,
					Unit: String,
					Quantity: 0,
					Source: String,
					UnitPrice: 0,
					LineTotal: 0
				}
			],
			BottomUpCount: 0,
			BottomUpTotal: 0,
			BenchmarkCount: 0,
			BenchmarkTotal: 0,
			UncoveredCount: 0,
			UncoveredFloorTotal: 0,
			IndicativeTotal: 0,
			FloorTotal: 0,
			Note: String
		},
		Summary: 
		{
			Direct: 0,
			OhpPct: 0,
			OhpAmount: 0,
			BondPct: 0,
			BondAmount: 0,
			ContingencyPct: 0,
			ContingencyAmount: 0,
			BidTotal: 0,
			LoadFactor: 0,
			MarginPct: 0
		},
		Timing: 
		{
			TotalWorkdays: 0,
			CalendarDays: 0,
			Finish: 0001-01-01,
			Feasible: False,
			Deadline: 0001-01-01
		},
		NeedsRateCount: 0,
		NeedsRateKeys: 
		[
			String
		],
		ReviewItems: 
		[
			{
				TaskSeq: 0,
				TaskName: String,
				Reason: String,
				Status: String
			}
		],
		NeedsReviewCount: 0,
		CanApprove: False,
		CanSeePay: False
	}
}