| Requires any of the roles: | Agent, Administrator |
| GET,OPTIONS | /v1/Rfp/{RfpDocumentUID}/Pricing |
|---|
"use strict";
export class CostRange {
/** @param {{Min?:number,Max?:number,Mid?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
Min;
/** @type {number} */
Max;
/** @type {number} */
Mid;
}
export class PricedPosition {
/** @param {{PositionTag?:string,Hours?:number,HasInternalRate?:boolean,RateMin?:number,RateMax?:number,RateAvg?:number,ContactCount?:number,Cost?:CostRange,MarketRateReference?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
PositionTag;
/** @type {number} */
Hours;
/** @type {boolean} */
HasInternalRate;
/** @type {?number} */
RateMin;
/** @type {?number} */
RateMax;
/** @type {?number} */
RateAvg;
/** @type {number} */
ContactCount;
/** @type {CostRange} */
Cost;
/** @type {?number} */
MarketRateReference;
}
export class PricedEquipment {
/** @param {{EquipmentID?:number,EquipmentName?:string,Quantity?:number,DurationDays?:number,RateType?:string,BilledRate?:number,CostRate?:number,HasRate?:boolean,IsInCatalog?:boolean,Cost?:number,CompanyCost?:number,Margin?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
EquipmentID;
/** @type {string} */
EquipmentName;
/** @type {number} */
Quantity;
/** @type {?number} */
DurationDays;
/** @type {string} */
RateType;
/** @type {?number} */
BilledRate;
/** @type {?number} */
CostRate;
/** @type {boolean} */
HasRate;
/** @type {boolean} */
IsInCatalog;
/** @type {number} */
Cost;
/** @type {number} */
CompanyCost;
/** @type {number} */
Margin;
}
export class PricedMaterial {
/** @param {{MaterialID?:number,MaterialName?:string,Quantity?:number,UnitCost?:number,HasRate?:boolean,IsInCatalog?:boolean,Cost?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
MaterialID;
/** @type {string} */
MaterialName;
/** @type {number} */
Quantity;
/** @type {?number} */
UnitCost;
/** @type {boolean} */
HasRate;
/** @type {boolean} */
IsInCatalog;
/** @type {number} */
Cost;
}
export class PricedTask {
/** @param {{Name?:string,Category?:string,Positions?:PricedPosition[],Equipment?:PricedEquipment[],Materials?:PricedMaterial[],Subtotal?:CostRange}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
Name;
/** @type {string} */
Category;
/** @type {PricedPosition[]} */
Positions = [];
/** @type {PricedEquipment[]} */
Equipment = [];
/** @type {PricedMaterial[]} */
Materials = [];
/** @type {CostRange} */
Subtotal;
}
export class PricedProposal {
/** @param {{RfpDocumentID?:number,ProjectName?:string,Currency?:string,Tasks?:PricedTask[],Total?:CostRange,PositionsNeedingRate?:number,EquipmentNotInCatalog?:number,MaterialsNotInCatalog?:number,PositionsNotInCatalog?:number,EquipmentMargin?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
RfpDocumentID;
/** @type {string} */
ProjectName;
/** @type {string} */
Currency;
/** @type {PricedTask[]} */
Tasks = [];
/** @type {CostRange} */
Total;
/** @type {number} */
PositionsNeedingRate;
/** @type {number} */
EquipmentNotInCatalog;
/** @type {number} */
MaterialsNotInCatalog;
/** @type {number} */
PositionsNotInCatalog;
/** @type {number} */
EquipmentMargin;
}
export class RfpPricingResponse {
/** @param {{ResponseStatus?:ResponseStatus,RfpDocumentID?:number,Pricing?:PricedProposal}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {ResponseStatus} */
ResponseStatus;
/** @type {number} */
RfpDocumentID;
/** @type {PricedProposal} */
Pricing;
}
export class RfpPricingRequest {
/** @param {{RfpDocumentUID?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
RfpDocumentUID;
}
JavaScript RfpPricingRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
GET /v1/Rfp/{RfpDocumentUID}/Pricing HTTP/1.1
Host: api.dev.dynamics.trendsic.com
Accept: text/csv
HTTP/1.1 200 OK
Content-Type: text/csv
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,"Pricing":{"RfpDocumentID":0,"ProjectName":"String","Currency":"String","Tasks":[{"Name":"String","Category":"String","Positions":[{"PositionTag":"String","Hours":0,"HasInternalRate":false,"RateMin":0,"RateMax":0,"RateAvg":0,"ContactCount":0,"Cost":{"Min":0,"Max":0,"Mid":0},"MarketRateReference":0}],"Equipment":[{"EquipmentID":0,"EquipmentName":"String","Quantity":0,"DurationDays":0,"RateType":"String","BilledRate":0,"CostRate":0,"HasRate":false,"IsInCatalog":false,"Cost":0,"CompanyCost":0,"Margin":0}],"Materials":[{"MaterialID":0,"MaterialName":"String","Quantity":0,"UnitCost":0,"HasRate":false,"IsInCatalog":false,"Cost":0}],"Subtotal":{"Min":0,"Max":0,"Mid":0}}],"Total":{"Min":0,"Max":0,"Mid":0},"PositionsNeedingRate":0,"EquipmentNotInCatalog":0,"MaterialsNotInCatalog":0,"PositionsNotInCatalog":0,"EquipmentMargin":0}}