| Requires any of the roles: | Agent, Administrator |
| GET,OPTIONS | /v1/Rfp/{RfpDocumentUID}/Pricing |
|---|
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 RfpPricingRequest implements IConvertible
{
String? RfpDocumentUID;
RfpPricingRequest({this.RfpDocumentUID});
RfpPricingRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
RfpDocumentUID = json['RfpDocumentUID'];
return this;
}
Map<String, dynamic> toJson() => {
'RfpDocumentUID': RfpDocumentUID
};
getTypeName() => "RfpPricingRequest";
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()),
'RfpPricingRequest': TypeInfo(TypeOf.Class, create:() => RfpPricingRequest()),
});
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}}