| 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 .jsv suffix or ?format=jsv
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/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,
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
}
}