| Requires any of the roles: | Agent, Administrator |
| POST,OPTIONS | /v1/Rfp/PricePreview |
|---|
import 'package:servicestack/servicestack.dart';
class CostRange implements IConvertible
{
double? Min;
double? Max;
double? Mid;
CostRange({this.Min,this.Max,this.Mid});
CostRange.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Min = JsonConverters.toDouble(json['Min']);
Max = JsonConverters.toDouble(json['Max']);
Mid = JsonConverters.toDouble(json['Mid']);
return this;
}
Map<String, dynamic> toJson() => {
'Min': Min,
'Max': Max,
'Mid': Mid
};
getTypeName() => "CostRange";
TypeContext? context = _ctx;
}
class PricedPosition implements IConvertible
{
String? PositionTag;
double? Hours;
bool? HasInternalRate;
double? RateMin;
double? RateMax;
double? RateAvg;
int? ContactCount;
CostRange? Cost;
double? MarketRateReference;
PricedPosition({this.PositionTag,this.Hours,this.HasInternalRate,this.RateMin,this.RateMax,this.RateAvg,this.ContactCount,this.Cost,this.MarketRateReference});
PricedPosition.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
PositionTag = json['PositionTag'];
Hours = JsonConverters.toDouble(json['Hours']);
HasInternalRate = json['HasInternalRate'];
RateMin = JsonConverters.toDouble(json['RateMin']);
RateMax = JsonConverters.toDouble(json['RateMax']);
RateAvg = JsonConverters.toDouble(json['RateAvg']);
ContactCount = json['ContactCount'];
Cost = JsonConverters.fromJson(json['Cost'],'CostRange',context!);
MarketRateReference = JsonConverters.toDouble(json['MarketRateReference']);
return this;
}
Map<String, dynamic> toJson() => {
'PositionTag': PositionTag,
'Hours': Hours,
'HasInternalRate': HasInternalRate,
'RateMin': RateMin,
'RateMax': RateMax,
'RateAvg': RateAvg,
'ContactCount': ContactCount,
'Cost': JsonConverters.toJson(Cost,'CostRange',context!),
'MarketRateReference': MarketRateReference
};
getTypeName() => "PricedPosition";
TypeContext? context = _ctx;
}
class PricedEquipment implements IConvertible
{
int? EquipmentID;
String? EquipmentName;
double? Quantity;
double? DurationDays;
String? RateType;
double? BilledRate;
double? CostRate;
bool? HasRate;
bool? IsInCatalog;
double? Cost;
double? CompanyCost;
double? Margin;
PricedEquipment({this.EquipmentID,this.EquipmentName,this.Quantity,this.DurationDays,this.RateType,this.BilledRate,this.CostRate,this.HasRate,this.IsInCatalog,this.Cost,this.CompanyCost,this.Margin});
PricedEquipment.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
EquipmentID = json['EquipmentID'];
EquipmentName = json['EquipmentName'];
Quantity = JsonConverters.toDouble(json['Quantity']);
DurationDays = JsonConverters.toDouble(json['DurationDays']);
RateType = json['RateType'];
BilledRate = JsonConverters.toDouble(json['BilledRate']);
CostRate = JsonConverters.toDouble(json['CostRate']);
HasRate = json['HasRate'];
IsInCatalog = json['IsInCatalog'];
Cost = JsonConverters.toDouble(json['Cost']);
CompanyCost = JsonConverters.toDouble(json['CompanyCost']);
Margin = JsonConverters.toDouble(json['Margin']);
return this;
}
Map<String, dynamic> toJson() => {
'EquipmentID': EquipmentID,
'EquipmentName': EquipmentName,
'Quantity': Quantity,
'DurationDays': DurationDays,
'RateType': RateType,
'BilledRate': BilledRate,
'CostRate': CostRate,
'HasRate': HasRate,
'IsInCatalog': IsInCatalog,
'Cost': Cost,
'CompanyCost': CompanyCost,
'Margin': Margin
};
getTypeName() => "PricedEquipment";
TypeContext? context = _ctx;
}
class PricedMaterial implements IConvertible
{
int? MaterialID;
String? MaterialName;
double? Quantity;
double? UnitCost;
bool? HasRate;
bool? IsInCatalog;
double? Cost;
PricedMaterial({this.MaterialID,this.MaterialName,this.Quantity,this.UnitCost,this.HasRate,this.IsInCatalog,this.Cost});
PricedMaterial.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
MaterialID = json['MaterialID'];
MaterialName = json['MaterialName'];
Quantity = JsonConverters.toDouble(json['Quantity']);
UnitCost = JsonConverters.toDouble(json['UnitCost']);
HasRate = json['HasRate'];
IsInCatalog = json['IsInCatalog'];
Cost = JsonConverters.toDouble(json['Cost']);
return this;
}
Map<String, dynamic> toJson() => {
'MaterialID': MaterialID,
'MaterialName': MaterialName,
'Quantity': Quantity,
'UnitCost': UnitCost,
'HasRate': HasRate,
'IsInCatalog': IsInCatalog,
'Cost': Cost
};
getTypeName() => "PricedMaterial";
TypeContext? context = _ctx;
}
class PricedTask implements IConvertible
{
String? Name;
String? Category;
List<PricedPosition>? Positions = [];
List<PricedEquipment>? Equipment = [];
List<PricedMaterial>? Materials = [];
CostRange? Subtotal;
PricedTask({this.Name,this.Category,this.Positions,this.Equipment,this.Materials,this.Subtotal});
PricedTask.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Name = json['Name'];
Category = json['Category'];
Positions = JsonConverters.fromJson(json['Positions'],'List<PricedPosition>',context!);
Equipment = JsonConverters.fromJson(json['Equipment'],'List<PricedEquipment>',context!);
Materials = JsonConverters.fromJson(json['Materials'],'List<PricedMaterial>',context!);
Subtotal = JsonConverters.fromJson(json['Subtotal'],'CostRange',context!);
return this;
}
Map<String, dynamic> toJson() => {
'Name': Name,
'Category': Category,
'Positions': JsonConverters.toJson(Positions,'List<PricedPosition>',context!),
'Equipment': JsonConverters.toJson(Equipment,'List<PricedEquipment>',context!),
'Materials': JsonConverters.toJson(Materials,'List<PricedMaterial>',context!),
'Subtotal': JsonConverters.toJson(Subtotal,'CostRange',context!)
};
getTypeName() => "PricedTask";
TypeContext? context = _ctx;
}
class PricedProposal implements IConvertible
{
int? RfpDocumentID;
String? ProjectName;
String? Currency;
List<PricedTask>? Tasks = [];
CostRange? Total;
int? PositionsNeedingRate;
int? EquipmentNotInCatalog;
int? MaterialsNotInCatalog;
int? PositionsNotInCatalog;
double? EquipmentMargin;
PricedProposal({this.RfpDocumentID,this.ProjectName,this.Currency,this.Tasks,this.Total,this.PositionsNeedingRate,this.EquipmentNotInCatalog,this.MaterialsNotInCatalog,this.PositionsNotInCatalog,this.EquipmentMargin});
PricedProposal.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
RfpDocumentID = json['RfpDocumentID'];
ProjectName = json['ProjectName'];
Currency = json['Currency'];
Tasks = JsonConverters.fromJson(json['Tasks'],'List<PricedTask>',context!);
Total = JsonConverters.fromJson(json['Total'],'CostRange',context!);
PositionsNeedingRate = json['PositionsNeedingRate'];
EquipmentNotInCatalog = json['EquipmentNotInCatalog'];
MaterialsNotInCatalog = json['MaterialsNotInCatalog'];
PositionsNotInCatalog = json['PositionsNotInCatalog'];
EquipmentMargin = JsonConverters.toDouble(json['EquipmentMargin']);
return this;
}
Map<String, dynamic> toJson() => {
'RfpDocumentID': RfpDocumentID,
'ProjectName': ProjectName,
'Currency': Currency,
'Tasks': JsonConverters.toJson(Tasks,'List<PricedTask>',context!),
'Total': JsonConverters.toJson(Total,'CostRange',context!),
'PositionsNeedingRate': PositionsNeedingRate,
'EquipmentNotInCatalog': EquipmentNotInCatalog,
'MaterialsNotInCatalog': MaterialsNotInCatalog,
'PositionsNotInCatalog': PositionsNotInCatalog,
'EquipmentMargin': EquipmentMargin
};
getTypeName() => "PricedProposal";
TypeContext? context = _ctx;
}
class RfpPricingResponse implements IConvertible
{
ResponseStatus? ResponseStatus;
int? RfpDocumentID;
PricedProposal? Pricing;
RfpPricingResponse({this.ResponseStatus,this.RfpDocumentID,this.Pricing});
RfpPricingResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
ResponseStatus = JsonConverters.fromJson(json['ResponseStatus'],'ResponseStatus',context!);
RfpDocumentID = json['RfpDocumentID'];
Pricing = JsonConverters.fromJson(json['Pricing'],'PricedProposal',context!);
return this;
}
Map<String, dynamic> toJson() => {
'ResponseStatus': JsonConverters.toJson(ResponseStatus,'ResponseStatus',context!),
'RfpDocumentID': RfpDocumentID,
'Pricing': JsonConverters.toJson(Pricing,'PricedProposal',context!)
};
getTypeName() => "RfpPricingResponse";
TypeContext? context = _ctx;
}
class ResourcedPosition implements IConvertible
{
String? PositionTag;
double? Hours;
int? Headcount;
String? SourceReference;
String? Notes;
bool? IsInCatalog;
int? ContactID;
ResourcedPosition({this.PositionTag,this.Hours,this.Headcount,this.SourceReference,this.Notes,this.IsInCatalog,this.ContactID});
ResourcedPosition.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
PositionTag = json['PositionTag'];
Hours = JsonConverters.toDouble(json['Hours']);
Headcount = json['Headcount'];
SourceReference = json['SourceReference'];
Notes = json['Notes'];
IsInCatalog = json['IsInCatalog'];
ContactID = json['ContactID'];
return this;
}
Map<String, dynamic> toJson() => {
'PositionTag': PositionTag,
'Hours': Hours,
'Headcount': Headcount,
'SourceReference': SourceReference,
'Notes': Notes,
'IsInCatalog': IsInCatalog,
'ContactID': ContactID
};
getTypeName() => "ResourcedPosition";
TypeContext? context = _ctx;
}
class ResourcedEquipment implements IConvertible
{
int? EquipmentID;
String? EquipmentName;
String? MakeModel;
double? Quantity;
double? DurationDays;
String? SourceReference;
String? Notes;
bool? IsInCatalog;
int? SuggestedEquipmentID;
String? SuggestedEquipmentName;
ResourcedEquipment({this.EquipmentID,this.EquipmentName,this.MakeModel,this.Quantity,this.DurationDays,this.SourceReference,this.Notes,this.IsInCatalog,this.SuggestedEquipmentID,this.SuggestedEquipmentName});
ResourcedEquipment.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
EquipmentID = json['EquipmentID'];
EquipmentName = json['EquipmentName'];
MakeModel = json['MakeModel'];
Quantity = JsonConverters.toDouble(json['Quantity']);
DurationDays = JsonConverters.toDouble(json['DurationDays']);
SourceReference = json['SourceReference'];
Notes = json['Notes'];
IsInCatalog = json['IsInCatalog'];
SuggestedEquipmentID = json['SuggestedEquipmentID'];
SuggestedEquipmentName = json['SuggestedEquipmentName'];
return this;
}
Map<String, dynamic> toJson() => {
'EquipmentID': EquipmentID,
'EquipmentName': EquipmentName,
'MakeModel': MakeModel,
'Quantity': Quantity,
'DurationDays': DurationDays,
'SourceReference': SourceReference,
'Notes': Notes,
'IsInCatalog': IsInCatalog,
'SuggestedEquipmentID': SuggestedEquipmentID,
'SuggestedEquipmentName': SuggestedEquipmentName
};
getTypeName() => "ResourcedEquipment";
TypeContext? context = _ctx;
}
class ResourcedMaterial implements IConvertible
{
int? MaterialID;
String? MaterialName;
String? MakeModel;
double? Quantity;
String? Unit;
String? SourceReference;
String? Notes;
bool? IsInCatalog;
int? SuggestedMaterialID;
String? SuggestedMaterialName;
ResourcedMaterial({this.MaterialID,this.MaterialName,this.MakeModel,this.Quantity,this.Unit,this.SourceReference,this.Notes,this.IsInCatalog,this.SuggestedMaterialID,this.SuggestedMaterialName});
ResourcedMaterial.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
MaterialID = json['MaterialID'];
MaterialName = json['MaterialName'];
MakeModel = json['MakeModel'];
Quantity = JsonConverters.toDouble(json['Quantity']);
Unit = json['Unit'];
SourceReference = json['SourceReference'];
Notes = json['Notes'];
IsInCatalog = json['IsInCatalog'];
SuggestedMaterialID = json['SuggestedMaterialID'];
SuggestedMaterialName = json['SuggestedMaterialName'];
return this;
}
Map<String, dynamic> toJson() => {
'MaterialID': MaterialID,
'MaterialName': MaterialName,
'MakeModel': MakeModel,
'Quantity': Quantity,
'Unit': Unit,
'SourceReference': SourceReference,
'Notes': Notes,
'IsInCatalog': IsInCatalog,
'SuggestedMaterialID': SuggestedMaterialID,
'SuggestedMaterialName': SuggestedMaterialName
};
getTypeName() => "ResourcedMaterial";
TypeContext? context = _ctx;
}
class TaskResourcing implements IConvertible
{
List<ResourcedPosition>? Positions = [];
List<ResourcedEquipment>? Equipment = [];
List<ResourcedMaterial>? Materials = [];
TaskResourcing({this.Positions,this.Equipment,this.Materials});
TaskResourcing.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Positions = JsonConverters.fromJson(json['Positions'],'List<ResourcedPosition>',context!);
Equipment = JsonConverters.fromJson(json['Equipment'],'List<ResourcedEquipment>',context!);
Materials = JsonConverters.fromJson(json['Materials'],'List<ResourcedMaterial>',context!);
return this;
}
Map<String, dynamic> toJson() => {
'Positions': JsonConverters.toJson(Positions,'List<ResourcedPosition>',context!),
'Equipment': JsonConverters.toJson(Equipment,'List<ResourcedEquipment>',context!),
'Materials': JsonConverters.toJson(Materials,'List<ResourcedMaterial>',context!)
};
getTypeName() => "TaskResourcing";
TypeContext? context = _ctx;
}
class ProposedTask implements IConvertible
{
int? Seq;
String? Name;
String? Category;
double? Quantity;
String? Unit;
String? SourceItemNumber;
String? SourceReference;
String? Notes;
TaskResourcing? Resourcing;
double? DurationDays;
List<int>? DependsOn = [];
DateTime? EstimatedStartDate;
DateTime? EstimatedEndDate;
ProposedTask({this.Seq,this.Name,this.Category,this.Quantity,this.Unit,this.SourceItemNumber,this.SourceReference,this.Notes,this.Resourcing,this.DurationDays,this.DependsOn,this.EstimatedStartDate,this.EstimatedEndDate});
ProposedTask.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Seq = json['Seq'];
Name = json['Name'];
Category = json['Category'];
Quantity = JsonConverters.toDouble(json['Quantity']);
Unit = json['Unit'];
SourceItemNumber = json['SourceItemNumber'];
SourceReference = json['SourceReference'];
Notes = json['Notes'];
Resourcing = JsonConverters.fromJson(json['Resourcing'],'TaskResourcing',context!);
DurationDays = JsonConverters.toDouble(json['DurationDays']);
DependsOn = JsonConverters.fromJson(json['DependsOn'],'List<int>',context!);
EstimatedStartDate = JsonConverters.fromJson(json['EstimatedStartDate'],'DateTime',context!);
EstimatedEndDate = JsonConverters.fromJson(json['EstimatedEndDate'],'DateTime',context!);
return this;
}
Map<String, dynamic> toJson() => {
'Seq': Seq,
'Name': Name,
'Category': Category,
'Quantity': Quantity,
'Unit': Unit,
'SourceItemNumber': SourceItemNumber,
'SourceReference': SourceReference,
'Notes': Notes,
'Resourcing': JsonConverters.toJson(Resourcing,'TaskResourcing',context!),
'DurationDays': DurationDays,
'DependsOn': JsonConverters.toJson(DependsOn,'List<int>',context!),
'EstimatedStartDate': JsonConverters.toJson(EstimatedStartDate,'DateTime',context!),
'EstimatedEndDate': JsonConverters.toJson(EstimatedEndDate,'DateTime',context!)
};
getTypeName() => "ProposedTask";
TypeContext? context = _ctx;
}
class ProjectProposal implements IConvertible
{
int? RfpDocumentID;
String? ProjectName;
String? ClientName;
String? ProjectType;
String? ProjectLocation;
String? Scope;
String? ProjectDescription;
int? ContractDurationDays;
String? BidDueDate;
DateTime? EstimatedStartDate;
DateTime? EstimatedEndDate;
List<ProposedTask>? Tasks = [];
ProjectProposal({this.RfpDocumentID,this.ProjectName,this.ClientName,this.ProjectType,this.ProjectLocation,this.Scope,this.ProjectDescription,this.ContractDurationDays,this.BidDueDate,this.EstimatedStartDate,this.EstimatedEndDate,this.Tasks});
ProjectProposal.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
RfpDocumentID = json['RfpDocumentID'];
ProjectName = json['ProjectName'];
ClientName = json['ClientName'];
ProjectType = json['ProjectType'];
ProjectLocation = json['ProjectLocation'];
Scope = json['Scope'];
ProjectDescription = json['ProjectDescription'];
ContractDurationDays = json['ContractDurationDays'];
BidDueDate = json['BidDueDate'];
EstimatedStartDate = JsonConverters.fromJson(json['EstimatedStartDate'],'DateTime',context!);
EstimatedEndDate = JsonConverters.fromJson(json['EstimatedEndDate'],'DateTime',context!);
Tasks = JsonConverters.fromJson(json['Tasks'],'List<ProposedTask>',context!);
return this;
}
Map<String, dynamic> toJson() => {
'RfpDocumentID': RfpDocumentID,
'ProjectName': ProjectName,
'ClientName': ClientName,
'ProjectType': ProjectType,
'ProjectLocation': ProjectLocation,
'Scope': Scope,
'ProjectDescription': ProjectDescription,
'ContractDurationDays': ContractDurationDays,
'BidDueDate': BidDueDate,
'EstimatedStartDate': JsonConverters.toJson(EstimatedStartDate,'DateTime',context!),
'EstimatedEndDate': JsonConverters.toJson(EstimatedEndDate,'DateTime',context!),
'Tasks': JsonConverters.toJson(Tasks,'List<ProposedTask>',context!)
};
getTypeName() => "ProjectProposal";
TypeContext? context = _ctx;
}
class RfpPricePreviewRequest implements IConvertible
{
ProjectProposal? Proposal;
RfpPricePreviewRequest({this.Proposal});
RfpPricePreviewRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Proposal = JsonConverters.fromJson(json['Proposal'],'ProjectProposal',context!);
return this;
}
Map<String, dynamic> toJson() => {
'Proposal': JsonConverters.toJson(Proposal,'ProjectProposal',context!)
};
getTypeName() => "RfpPricePreviewRequest";
TypeContext? context = _ctx;
}
TypeContext _ctx = TypeContext(library: 'api.dev.dynamics.trendsic.com', types: <String, TypeInfo> {
'CostRange': TypeInfo(TypeOf.Class, create:() => CostRange()),
'PricedPosition': TypeInfo(TypeOf.Class, create:() => PricedPosition()),
'PricedEquipment': TypeInfo(TypeOf.Class, create:() => PricedEquipment()),
'PricedMaterial': TypeInfo(TypeOf.Class, create:() => PricedMaterial()),
'PricedTask': TypeInfo(TypeOf.Class, create:() => PricedTask()),
'List<PricedPosition>': TypeInfo(TypeOf.Class, create:() => <PricedPosition>[]),
'List<PricedEquipment>': TypeInfo(TypeOf.Class, create:() => <PricedEquipment>[]),
'List<PricedMaterial>': TypeInfo(TypeOf.Class, create:() => <PricedMaterial>[]),
'PricedProposal': TypeInfo(TypeOf.Class, create:() => PricedProposal()),
'List<PricedTask>': TypeInfo(TypeOf.Class, create:() => <PricedTask>[]),
'RfpPricingResponse': TypeInfo(TypeOf.Class, create:() => RfpPricingResponse()),
'ResourcedPosition': TypeInfo(TypeOf.Class, create:() => ResourcedPosition()),
'ResourcedEquipment': TypeInfo(TypeOf.Class, create:() => ResourcedEquipment()),
'ResourcedMaterial': TypeInfo(TypeOf.Class, create:() => ResourcedMaterial()),
'TaskResourcing': TypeInfo(TypeOf.Class, create:() => TaskResourcing()),
'List<ResourcedPosition>': TypeInfo(TypeOf.Class, create:() => <ResourcedPosition>[]),
'List<ResourcedEquipment>': TypeInfo(TypeOf.Class, create:() => <ResourcedEquipment>[]),
'List<ResourcedMaterial>': TypeInfo(TypeOf.Class, create:() => <ResourcedMaterial>[]),
'ProposedTask': TypeInfo(TypeOf.Class, create:() => ProposedTask()),
'ProjectProposal': TypeInfo(TypeOf.Class, create:() => ProjectProposal()),
'List<ProposedTask>': TypeInfo(TypeOf.Class, create:() => <ProposedTask>[]),
'RfpPricePreviewRequest': TypeInfo(TypeOf.Class, create:() => RfpPricePreviewRequest()),
});
Dart RfpPricePreviewRequest 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.
POST /v1/Rfp/PricePreview HTTP/1.1
Host: api.dev.dynamics.trendsic.com
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
Proposal:
{
RfpDocumentID: 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,
Headcount: 0,
SourceReference: String,
Notes: String,
IsInCatalog: False,
ContactID: 0
}
],
Equipment:
[
{
EquipmentID: 0,
EquipmentName: String,
MakeModel: String,
Quantity: 0,
DurationDays: 0,
SourceReference: String,
Notes: String,
IsInCatalog: False,
SuggestedEquipmentID: 0,
SuggestedEquipmentName: String
}
],
Materials:
[
{
MaterialID: 0,
MaterialName: String,
MakeModel: String,
Quantity: 0,
Unit: String,
SourceReference: String,
Notes: String,
IsInCatalog: False,
SuggestedMaterialID: 0,
SuggestedMaterialName: String
}
]
},
DurationDays: 0,
DependsOn:
[
0
],
EstimatedStartDate: 0001-01-01,
EstimatedEndDate: 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
}
},
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
}
}