Trendsic Platform Service

<back to all web services

RfpProposalRequest

Requires Authentication
Requires any of the roles:Agent, Administrator
The following routes are available for this service:
GET,OPTIONS/v1/Rfp/{RfpDocumentUID}/Proposal
"use strict";
export class ResourcedPosition {
    /** @param {{PositionTag?:string,Hours?:number,CrewSize?:number,Utilization?:number,FixedDays?:number,Headcount?:number,SourceReference?:string,Notes?:string,IsInCatalog?:boolean,ContactID?:number}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    PositionTag;
    /** @type {?number} */
    Hours;
    /** @type {?number} */
    CrewSize;
    /** @type {?number} */
    Utilization;
    /** @type {?number} */
    FixedDays;
    /** @type {?number} */
    Headcount;
    /** @type {string} */
    SourceReference;
    /** @type {string} */
    Notes;
    /** @type {boolean} */
    IsInCatalog;
    /** @type {?number} */
    ContactID;
}
export class ResourcedEquipment {
    /** @param {{EquipmentID?:number,EquipmentName?:string,MakeModel?:string,Quantity?:number,DurationDays?:number,Utilization?:number,FixedDays?:number,SourceReference?:string,Notes?:string,IsInCatalog?:boolean,SuggestedEquipmentID?:number,SuggestedEquipmentName?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    EquipmentID;
    /** @type {string} */
    EquipmentName;
    /** @type {string} */
    MakeModel;
    /** @type {?number} */
    Quantity;
    /** @type {?number} */
    DurationDays;
    /** @type {?number} */
    Utilization;
    /** @type {?number} */
    FixedDays;
    /** @type {string} */
    SourceReference;
    /** @type {string} */
    Notes;
    /** @type {boolean} */
    IsInCatalog;
    /** @type {number} */
    SuggestedEquipmentID;
    /** @type {string} */
    SuggestedEquipmentName;
}
export class ResourcedMaterial {
    /** @param {{MaterialID?:number,MaterialName?:string,MakeModel?:string,Quantity?:number,QuantityPerUnit?:number,Unit?:string,SourceReference?:string,Notes?:string,IsInCatalog?:boolean,SuggestedMaterialID?:number,SuggestedMaterialName?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    MaterialID;
    /** @type {string} */
    MaterialName;
    /** @type {string} */
    MakeModel;
    /** @type {?number} */
    Quantity;
    /** @type {?number} */
    QuantityPerUnit;
    /** @type {string} */
    Unit;
    /** @type {string} */
    SourceReference;
    /** @type {string} */
    Notes;
    /** @type {boolean} */
    IsInCatalog;
    /** @type {number} */
    SuggestedMaterialID;
    /** @type {string} */
    SuggestedMaterialName;
}
export class TaskResourcing {
    /** @param {{Positions?:ResourcedPosition[],Equipment?:ResourcedEquipment[],Materials?:ResourcedMaterial[],ResourcedForQuantity?:number,ProductionRatePerDay?:number,FixedDays?:number}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {ResourcedPosition[]} */
    Positions = [];
    /** @type {ResourcedEquipment[]} */
    Equipment = [];
    /** @type {ResourcedMaterial[]} */
    Materials = [];
    /** @type {?number} */
    ResourcedForQuantity;
    /** @type {?number} */
    ProductionRatePerDay;
    /** @type {?number} */
    FixedDays;
}
export class WorkPackageSpecRef {
    /** @param {{Section?:string,Title?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    Section;
    /** @type {string} */
    Title;
}
export class TaskWorkPackage {
    /** @param {{Scope?:string,LimitsOfWork?:string,SpecRefs?:WorkPackageSpecRef[],Constraints?:string[],HoldPoints?:string[],DefinitionOfDone?:string[],SafetyNote?:string,RfpRef?:string,Confidence?:number,SpecBook?:string,UserScope?:string,DodRemoved?:number[],DodExtra?:string[],UserEdited?:boolean,DodChecked?:string[],RedraftNote?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    Scope;
    /** @type {string} */
    LimitsOfWork;
    /** @type {WorkPackageSpecRef[]} */
    SpecRefs = [];
    /** @type {string[]} */
    Constraints = [];
    /** @type {string[]} */
    HoldPoints = [];
    /** @type {string[]} */
    DefinitionOfDone = [];
    /** @type {string} */
    SafetyNote;
    /** @type {string} */
    RfpRef;
    /** @type {?number} */
    Confidence;
    /** @type {string} */
    SpecBook;
    /** @type {string} */
    UserScope;
    /** @type {number[]} */
    DodRemoved = [];
    /** @type {string[]} */
    DodExtra = [];
    /** @type {boolean} */
    UserEdited;
    /** @type {string[]} */
    DodChecked = [];
    /** @type {string} */
    RedraftNote;
}
export class ProposedTask {
    /** @param {{Seq?:number,Name?:string,Category?:string,Quantity?:number,Unit?:string,SourceItemNumber?:string,SourceReference?:string,Notes?:string,Resourcing?:TaskResourcing,DurationDays?:number,DependsOn?:number[],EstimatedStartDate?:string,EstimatedEndDate?:string,WorkPackage?:TaskWorkPackage,CreatedJobID?:number}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    Seq;
    /** @type {string} */
    Name;
    /** @type {string} */
    Category;
    /** @type {?number} */
    Quantity;
    /** @type {string} */
    Unit;
    /** @type {string} */
    SourceItemNumber;
    /** @type {string} */
    SourceReference;
    /** @type {string} */
    Notes;
    /** @type {TaskResourcing} */
    Resourcing;
    /** @type {?number} */
    DurationDays;
    /** @type {number[]} */
    DependsOn = [];
    /** @type {?string} */
    EstimatedStartDate;
    /** @type {?string} */
    EstimatedEndDate;
    /** @type {TaskWorkPackage} */
    WorkPackage;
    /** @type {?number} */
    CreatedJobID;
}
export class AddendaChange {
    /** @param {{ChangeId?:string,ChangeType?:string,TargetSeq?:number,ItemNumber?:string,ItemName?:string,Field?:string,OldValue?:string,NewValue?:string,Description?:string,Status?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    ChangeId;
    /** @type {string} */
    ChangeType;
    /** @type {?number} */
    TargetSeq;
    /** @type {string} */
    ItemNumber;
    /** @type {string} */
    ItemName;
    /** @type {string} */
    Field;
    /** @type {string} */
    OldValue;
    /** @type {string} */
    NewValue;
    /** @type {string} */
    Description;
    /** @type {string} */
    Status;
}
export class AddendaChangeSet {
    /** @param {{ChangeSetId?:string,SourceRfpDocumentID?:number,SourceFileName?:string,DocumentType?:string,ExtractedAtUtc?:string,Summary?:string,Changes?:AddendaChange[]}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    ChangeSetId;
    /** @type {number} */
    SourceRfpDocumentID;
    /** @type {string} */
    SourceFileName;
    /** @type {string} */
    DocumentType;
    /** @type {?string} */
    ExtractedAtUtc;
    /** @type {string} */
    Summary;
    /** @type {AddendaChange[]} */
    Changes = [];
}
export class WageClassification {
    /** @param {{Title?:string,BaseRate?:number,FringeRate?:number,ParishNote?:string,SourceLine?:string,BenchmarkFringeRate?:number,FringeCompareNote?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    Title;
    /** @type {?number} */
    BaseRate;
    /** @type {?number} */
    FringeRate;
    /** @type {string} */
    ParishNote;
    /** @type {string} */
    SourceLine;
    /** @type {?number} */
    BenchmarkFringeRate;
    /** @type {string} */
    FringeCompareNote;
}
export class WageDeterminationResult {
    /** @param {{SourceRfpDocumentID?:number,SourceFileName?:string,WdNumber?:string,ExtractedAtUtc?:string,Classifications?:WageClassification[],Source?:string,IsTrustworthy?:boolean,ExecutiveOrderFloor?:number,PublishedDate?:string,ProjectParish?:string,Warnings?:string[]}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    SourceRfpDocumentID;
    /** @type {string} */
    SourceFileName;
    /** @type {string} */
    WdNumber;
    /** @type {?string} */
    ExtractedAtUtc;
    /** @type {WageClassification[]} */
    Classifications = [];
    /** @type {string} */
    Source;
    /** @type {boolean} */
    IsTrustworthy;
    /** @type {?number} */
    ExecutiveOrderFloor;
    /** @type {string} */
    PublishedDate;
    /** @type {string} */
    ProjectParish;
    /** @type {string[]} */
    Warnings = [];
}
export class ProjectProposal {
    /** @param {{RfpDocumentID?:number,Mode?:string,ProjectID?:number,ChangeOrderID?:number,ProjectName?:string,ClientName?:string,ProjectType?:string,ProjectLocation?:string,Scope?:string,ProjectDescription?:string,ContractDurationDays?:number,BidDueDate?:string,EstimatedStartDate?:string,EstimatedEndDate?:string,Tasks?:ProposedTask[],PendingAddendaDiffs?:AddendaChangeSet[],WageDeterminations?:WageDeterminationResult[]}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    RfpDocumentID;
    /** @type {string} */
    Mode;
    /** @type {?number} */
    ProjectID;
    /** @type {?number} */
    ChangeOrderID;
    /** @type {string} */
    ProjectName;
    /** @type {string} */
    ClientName;
    /** @type {string} */
    ProjectType;
    /** @type {string} */
    ProjectLocation;
    /** @type {string} */
    Scope;
    /** @type {string} */
    ProjectDescription;
    /** @type {?number} */
    ContractDurationDays;
    /** @type {string} */
    BidDueDate;
    /** @type {?string} */
    EstimatedStartDate;
    /** @type {?string} */
    EstimatedEndDate;
    /** @type {ProposedTask[]} */
    Tasks = [];
    /** @type {AddendaChangeSet[]} */
    PendingAddendaDiffs = [];
    /** @type {WageDeterminationResult[]} */
    WageDeterminations = [];
}
export class CrewPlanLine {
    /** @param {{PositionTag?:string,Needed?:number,NaiveTotal?:number,TaskAssignments?:number}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    PositionTag;
    /** @type {number} */
    Needed;
    /** @type {number} */
    NaiveTotal;
    /** @type {number} */
    TaskAssignments;
}
export class RfpProposalResponse {
    /** @param {{ResponseStatus?:ResponseStatus,RfpDocumentID?:number,Proposal?:ProjectProposal,CrewPlan?:CrewPlanLine[]}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {ResponseStatus} */
    ResponseStatus;
    /** @type {number} */
    RfpDocumentID;
    /** @type {ProjectProposal} */
    Proposal;
    /** @type {CrewPlanLine[]} */
    CrewPlan = [];
}
export class RfpProposalRequest {
    /** @param {{RfpDocumentUID?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    RfpDocumentUID;
}

JavaScript RfpProposalRequest 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/Rfp/{RfpDocumentUID}/Proposal HTTP/1.1 
Host: api.dev.dynamics.trendsic.com 
Accept: text/jsv
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
		}
	},
	RfpDocumentID: 0,
	Proposal: 
	{
		RfpDocumentID: 0,
		Mode: String,
		ProjectID: 0,
		ChangeOrderID: 0,
		ProjectName: String,
		ClientName: String,
		ProjectType: String,
		ProjectLocation: String,
		Scope: String,
		ProjectDescription: String,
		ContractDurationDays: 0,
		BidDueDate: String,
		EstimatedStartDate: 0001-01-01,
		EstimatedEndDate: 0001-01-01,
		Tasks: 
		[
			{
				Seq: 0,
				Name: String,
				Category: String,
				Quantity: 0,
				Unit: String,
				SourceItemNumber: String,
				SourceReference: String,
				Notes: String,
				Resourcing: 
				{
					Positions: 
					[
						{
							PositionTag: String,
							Hours: 0,
							CrewSize: 0,
							Utilization: 0,
							FixedDays: 0,
							Headcount: 0,
							SourceReference: String,
							Notes: String,
							IsInCatalog: False,
							ContactID: 0
						}
					],
					Equipment: 
					[
						{
							EquipmentID: 0,
							EquipmentName: String,
							MakeModel: String,
							Quantity: 0,
							DurationDays: 0,
							Utilization: 0,
							FixedDays: 0,
							SourceReference: String,
							Notes: String,
							IsInCatalog: False,
							SuggestedEquipmentID: 0,
							SuggestedEquipmentName: String
						}
					],
					Materials: 
					[
						{
							MaterialID: 0,
							MaterialName: String,
							MakeModel: String,
							Quantity: 0,
							QuantityPerUnit: 0,
							Unit: String,
							SourceReference: String,
							Notes: String,
							IsInCatalog: False,
							SuggestedMaterialID: 0,
							SuggestedMaterialName: String
						}
					],
					ResourcedForQuantity: 0,
					ProductionRatePerDay: 0,
					FixedDays: 0
				},
				DurationDays: 0,
				DependsOn: 
				[
					0
				],
				EstimatedStartDate: 0001-01-01,
				EstimatedEndDate: 0001-01-01,
				WorkPackage: 
				{
					Scope: String,
					LimitsOfWork: String,
					SpecRefs: 
					[
						{
							Section: String,
							Title: String
						}
					],
					Constraints: 
					[
						String
					],
					HoldPoints: 
					[
						String
					],
					DefinitionOfDone: 
					[
						String
					],
					SafetyNote: String,
					RfpRef: String,
					Confidence: 0,
					SpecBook: String,
					UserScope: String,
					DodRemoved: 
					[
						0
					],
					DodExtra: 
					[
						String
					],
					UserEdited: False,
					DodChecked: 
					[
						String
					],
					RedraftNote: String
				},
				CreatedJobID: 0
			}
		],
		PendingAddendaDiffs: 
		[
			{
				ChangeSetId: String,
				SourceRfpDocumentID: 0,
				SourceFileName: String,
				DocumentType: String,
				ExtractedAtUtc: 0001-01-01,
				Summary: String,
				Changes: 
				[
					{
						ChangeId: String,
						ChangeType: String,
						TargetSeq: 0,
						ItemNumber: String,
						ItemName: String,
						Field: String,
						OldValue: String,
						NewValue: String,
						Description: String,
						Status: String
					}
				]
			}
		],
		WageDeterminations: 
		[
			{
				SourceRfpDocumentID: 0,
				SourceFileName: String,
				WdNumber: String,
				ExtractedAtUtc: 0001-01-01,
				Classifications: 
				[
					{
						Title: String,
						BaseRate: 0,
						FringeRate: 0,
						ParishNote: String,
						SourceLine: String,
						BenchmarkFringeRate: 0,
						FringeCompareNote: String
					}
				],
				Source: String,
				IsTrustworthy: False,
				ExecutiveOrderFloor: 0,
				PublishedDate: String,
				ProjectParish: String,
				Warnings: 
				[
					String
				]
			}
		]
	},
	CrewPlan: 
	[
		{
			PositionTag: String,
			Needed: 0,
			NaiveTotal: 0,
			TaskAssignments: 0
		}
	]
}