| Requires any of the roles: | Agent, Administrator |
| GET,OPTIONS | /v1/Rfp/{RfpDocumentUID}/Proposal |
|---|
import 'package:servicestack/servicestack.dart';
import 'dart:typed_data';
class ResourcedPosition implements IConvertible
{
String? PositionTag;
double? Hours;
double? CrewSize;
double? Utilization;
double? FixedDays;
int? Headcount;
String? SourceReference;
String? Notes;
bool? IsInCatalog;
int? ContactID;
ResourcedPosition({this.PositionTag,this.Hours,this.CrewSize,this.Utilization,this.FixedDays,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']);
CrewSize = JsonConverters.toDouble(json['CrewSize']);
Utilization = JsonConverters.toDouble(json['Utilization']);
FixedDays = JsonConverters.toDouble(json['FixedDays']);
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,
'CrewSize': CrewSize,
'Utilization': Utilization,
'FixedDays': FixedDays,
'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;
double? Utilization;
double? FixedDays;
String? SourceReference;
String? Notes;
bool? IsInCatalog;
int? SuggestedEquipmentID;
String? SuggestedEquipmentName;
ResourcedEquipment({this.EquipmentID,this.EquipmentName,this.MakeModel,this.Quantity,this.DurationDays,this.Utilization,this.FixedDays,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']);
Utilization = JsonConverters.toDouble(json['Utilization']);
FixedDays = JsonConverters.toDouble(json['FixedDays']);
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,
'Utilization': Utilization,
'FixedDays': FixedDays,
'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;
double? QuantityPerUnit;
String? Unit;
String? SourceReference;
String? Notes;
bool? IsInCatalog;
int? SuggestedMaterialID;
String? SuggestedMaterialName;
ResourcedMaterial({this.MaterialID,this.MaterialName,this.MakeModel,this.Quantity,this.QuantityPerUnit,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']);
QuantityPerUnit = JsonConverters.toDouble(json['QuantityPerUnit']);
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,
'QuantityPerUnit': QuantityPerUnit,
'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 = [];
double? ResourcedForQuantity;
double? ProductionRatePerDay;
double? FixedDays;
TaskResourcing({this.Positions,this.Equipment,this.Materials,this.ResourcedForQuantity,this.ProductionRatePerDay,this.FixedDays});
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!);
ResourcedForQuantity = JsonConverters.toDouble(json['ResourcedForQuantity']);
ProductionRatePerDay = JsonConverters.toDouble(json['ProductionRatePerDay']);
FixedDays = JsonConverters.toDouble(json['FixedDays']);
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!),
'ResourcedForQuantity': ResourcedForQuantity,
'ProductionRatePerDay': ProductionRatePerDay,
'FixedDays': FixedDays
};
getTypeName() => "TaskResourcing";
TypeContext? context = _ctx;
}
class WorkPackageSpecRef implements IConvertible
{
String? Section;
String? Title;
WorkPackageSpecRef({this.Section,this.Title});
WorkPackageSpecRef.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Section = json['Section'];
Title = json['Title'];
return this;
}
Map<String, dynamic> toJson() => {
'Section': Section,
'Title': Title
};
getTypeName() => "WorkPackageSpecRef";
TypeContext? context = _ctx;
}
class TaskWorkPackage implements IConvertible
{
String? Scope;
String? LimitsOfWork;
List<WorkPackageSpecRef>? SpecRefs = [];
List<String>? Constraints = [];
List<String>? HoldPoints = [];
List<String>? DefinitionOfDone = [];
String? SafetyNote;
String? RfpRef;
int? Confidence;
String? SpecBook;
String? UserScope;
List<int>? DodRemoved = [];
List<String>? DodExtra = [];
bool? UserEdited;
List<String>? DodChecked = [];
String? RedraftNote;
TaskWorkPackage({this.Scope,this.LimitsOfWork,this.SpecRefs,this.Constraints,this.HoldPoints,this.DefinitionOfDone,this.SafetyNote,this.RfpRef,this.Confidence,this.SpecBook,this.UserScope,this.DodRemoved,this.DodExtra,this.UserEdited,this.DodChecked,this.RedraftNote});
TaskWorkPackage.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Scope = json['Scope'];
LimitsOfWork = json['LimitsOfWork'];
SpecRefs = JsonConverters.fromJson(json['SpecRefs'],'List<WorkPackageSpecRef>',context!);
Constraints = JsonConverters.fromJson(json['Constraints'],'List<String>',context!);
HoldPoints = JsonConverters.fromJson(json['HoldPoints'],'List<String>',context!);
DefinitionOfDone = JsonConverters.fromJson(json['DefinitionOfDone'],'List<String>',context!);
SafetyNote = json['SafetyNote'];
RfpRef = json['RfpRef'];
Confidence = json['Confidence'];
SpecBook = json['SpecBook'];
UserScope = json['UserScope'];
DodRemoved = JsonConverters.fromJson(json['DodRemoved'],'List<int>',context!);
DodExtra = JsonConverters.fromJson(json['DodExtra'],'List<String>',context!);
UserEdited = json['UserEdited'];
DodChecked = JsonConverters.fromJson(json['DodChecked'],'List<String>',context!);
RedraftNote = json['RedraftNote'];
return this;
}
Map<String, dynamic> toJson() => {
'Scope': Scope,
'LimitsOfWork': LimitsOfWork,
'SpecRefs': JsonConverters.toJson(SpecRefs,'List<WorkPackageSpecRef>',context!),
'Constraints': JsonConverters.toJson(Constraints,'List<String>',context!),
'HoldPoints': JsonConverters.toJson(HoldPoints,'List<String>',context!),
'DefinitionOfDone': JsonConverters.toJson(DefinitionOfDone,'List<String>',context!),
'SafetyNote': SafetyNote,
'RfpRef': RfpRef,
'Confidence': Confidence,
'SpecBook': SpecBook,
'UserScope': UserScope,
'DodRemoved': JsonConverters.toJson(DodRemoved,'List<int>',context!),
'DodExtra': JsonConverters.toJson(DodExtra,'List<String>',context!),
'UserEdited': UserEdited,
'DodChecked': JsonConverters.toJson(DodChecked,'List<String>',context!),
'RedraftNote': RedraftNote
};
getTypeName() => "TaskWorkPackage";
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;
TaskWorkPackage? WorkPackage;
int? CreatedJobID;
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,this.WorkPackage,this.CreatedJobID});
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!);
WorkPackage = JsonConverters.fromJson(json['WorkPackage'],'TaskWorkPackage',context!);
CreatedJobID = json['CreatedJobID'];
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!),
'WorkPackage': JsonConverters.toJson(WorkPackage,'TaskWorkPackage',context!),
'CreatedJobID': CreatedJobID
};
getTypeName() => "ProposedTask";
TypeContext? context = _ctx;
}
class AddendaChange implements IConvertible
{
String? ChangeId;
String? ChangeType;
int? TargetSeq;
String? ItemNumber;
String? ItemName;
String? Field;
String? OldValue;
String? NewValue;
String? Description;
String? Status;
AddendaChange({this.ChangeId,this.ChangeType,this.TargetSeq,this.ItemNumber,this.ItemName,this.Field,this.OldValue,this.NewValue,this.Description,this.Status});
AddendaChange.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
ChangeId = json['ChangeId'];
ChangeType = json['ChangeType'];
TargetSeq = json['TargetSeq'];
ItemNumber = json['ItemNumber'];
ItemName = json['ItemName'];
Field = json['Field'];
OldValue = json['OldValue'];
NewValue = json['NewValue'];
Description = json['Description'];
Status = json['Status'];
return this;
}
Map<String, dynamic> toJson() => {
'ChangeId': ChangeId,
'ChangeType': ChangeType,
'TargetSeq': TargetSeq,
'ItemNumber': ItemNumber,
'ItemName': ItemName,
'Field': Field,
'OldValue': OldValue,
'NewValue': NewValue,
'Description': Description,
'Status': Status
};
getTypeName() => "AddendaChange";
TypeContext? context = _ctx;
}
class AddendaChangeSet implements IConvertible
{
String? ChangeSetId;
int? SourceRfpDocumentID;
String? SourceFileName;
String? DocumentType;
DateTime? ExtractedAtUtc;
String? Summary;
List<AddendaChange>? Changes = [];
AddendaChangeSet({this.ChangeSetId,this.SourceRfpDocumentID,this.SourceFileName,this.DocumentType,this.ExtractedAtUtc,this.Summary,this.Changes});
AddendaChangeSet.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
ChangeSetId = json['ChangeSetId'];
SourceRfpDocumentID = json['SourceRfpDocumentID'];
SourceFileName = json['SourceFileName'];
DocumentType = json['DocumentType'];
ExtractedAtUtc = JsonConverters.fromJson(json['ExtractedAtUtc'],'DateTime',context!);
Summary = json['Summary'];
Changes = JsonConverters.fromJson(json['Changes'],'List<AddendaChange>',context!);
return this;
}
Map<String, dynamic> toJson() => {
'ChangeSetId': ChangeSetId,
'SourceRfpDocumentID': SourceRfpDocumentID,
'SourceFileName': SourceFileName,
'DocumentType': DocumentType,
'ExtractedAtUtc': JsonConverters.toJson(ExtractedAtUtc,'DateTime',context!),
'Summary': Summary,
'Changes': JsonConverters.toJson(Changes,'List<AddendaChange>',context!)
};
getTypeName() => "AddendaChangeSet";
TypeContext? context = _ctx;
}
class WageClassification implements IConvertible
{
String? Title;
double? BaseRate;
double? FringeRate;
String? ParishNote;
String? SourceLine;
double? BenchmarkFringeRate;
String? FringeCompareNote;
WageClassification({this.Title,this.BaseRate,this.FringeRate,this.ParishNote,this.SourceLine,this.BenchmarkFringeRate,this.FringeCompareNote});
WageClassification.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Title = json['Title'];
BaseRate = JsonConverters.toDouble(json['BaseRate']);
FringeRate = JsonConverters.toDouble(json['FringeRate']);
ParishNote = json['ParishNote'];
SourceLine = json['SourceLine'];
BenchmarkFringeRate = JsonConverters.toDouble(json['BenchmarkFringeRate']);
FringeCompareNote = json['FringeCompareNote'];
return this;
}
Map<String, dynamic> toJson() => {
'Title': Title,
'BaseRate': BaseRate,
'FringeRate': FringeRate,
'ParishNote': ParishNote,
'SourceLine': SourceLine,
'BenchmarkFringeRate': BenchmarkFringeRate,
'FringeCompareNote': FringeCompareNote
};
getTypeName() => "WageClassification";
TypeContext? context = _ctx;
}
class WageDeterminationResult implements IConvertible
{
int? SourceRfpDocumentID;
String? SourceFileName;
String? WdNumber;
DateTime? ExtractedAtUtc;
List<WageClassification>? Classifications = [];
String? Source;
bool? IsTrustworthy;
double? ExecutiveOrderFloor;
String? PublishedDate;
String? ProjectParish;
List<String>? Warnings = [];
WageDeterminationResult({this.SourceRfpDocumentID,this.SourceFileName,this.WdNumber,this.ExtractedAtUtc,this.Classifications,this.Source,this.IsTrustworthy,this.ExecutiveOrderFloor,this.PublishedDate,this.ProjectParish,this.Warnings});
WageDeterminationResult.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
SourceRfpDocumentID = json['SourceRfpDocumentID'];
SourceFileName = json['SourceFileName'];
WdNumber = json['WdNumber'];
ExtractedAtUtc = JsonConverters.fromJson(json['ExtractedAtUtc'],'DateTime',context!);
Classifications = JsonConverters.fromJson(json['Classifications'],'List<WageClassification>',context!);
Source = json['Source'];
IsTrustworthy = json['IsTrustworthy'];
ExecutiveOrderFloor = JsonConverters.toDouble(json['ExecutiveOrderFloor']);
PublishedDate = json['PublishedDate'];
ProjectParish = json['ProjectParish'];
Warnings = JsonConverters.fromJson(json['Warnings'],'List<String>',context!);
return this;
}
Map<String, dynamic> toJson() => {
'SourceRfpDocumentID': SourceRfpDocumentID,
'SourceFileName': SourceFileName,
'WdNumber': WdNumber,
'ExtractedAtUtc': JsonConverters.toJson(ExtractedAtUtc,'DateTime',context!),
'Classifications': JsonConverters.toJson(Classifications,'List<WageClassification>',context!),
'Source': Source,
'IsTrustworthy': IsTrustworthy,
'ExecutiveOrderFloor': ExecutiveOrderFloor,
'PublishedDate': PublishedDate,
'ProjectParish': ProjectParish,
'Warnings': JsonConverters.toJson(Warnings,'List<String>',context!)
};
getTypeName() => "WageDeterminationResult";
TypeContext? context = _ctx;
}
class ProjectProposal implements IConvertible
{
int? RfpDocumentID;
String? Mode;
int? ProjectID;
int? ChangeOrderID;
String? ProjectName;
String? ClientName;
String? ProjectType;
String? ProjectLocation;
String? Scope;
String? ProjectDescription;
int? ContractDurationDays;
String? BidDueDate;
DateTime? EstimatedStartDate;
DateTime? EstimatedEndDate;
List<ProposedTask>? Tasks = [];
List<AddendaChangeSet>? PendingAddendaDiffs = [];
List<WageDeterminationResult>? WageDeterminations = [];
ProjectProposal({this.RfpDocumentID,this.Mode,this.ProjectID,this.ChangeOrderID,this.ProjectName,this.ClientName,this.ProjectType,this.ProjectLocation,this.Scope,this.ProjectDescription,this.ContractDurationDays,this.BidDueDate,this.EstimatedStartDate,this.EstimatedEndDate,this.Tasks,this.PendingAddendaDiffs,this.WageDeterminations});
ProjectProposal.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
RfpDocumentID = json['RfpDocumentID'];
Mode = json['Mode'];
ProjectID = json['ProjectID'];
ChangeOrderID = json['ChangeOrderID'];
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!);
PendingAddendaDiffs = JsonConverters.fromJson(json['PendingAddendaDiffs'],'List<AddendaChangeSet>',context!);
WageDeterminations = JsonConverters.fromJson(json['WageDeterminations'],'List<WageDeterminationResult>',context!);
return this;
}
Map<String, dynamic> toJson() => {
'RfpDocumentID': RfpDocumentID,
'Mode': Mode,
'ProjectID': ProjectID,
'ChangeOrderID': ChangeOrderID,
'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!),
'PendingAddendaDiffs': JsonConverters.toJson(PendingAddendaDiffs,'List<AddendaChangeSet>',context!),
'WageDeterminations': JsonConverters.toJson(WageDeterminations,'List<WageDeterminationResult>',context!)
};
getTypeName() => "ProjectProposal";
TypeContext? context = _ctx;
}
class CrewPlanLine implements IConvertible
{
String? PositionTag;
int? Needed;
int? NaiveTotal;
int? TaskAssignments;
CrewPlanLine({this.PositionTag,this.Needed,this.NaiveTotal,this.TaskAssignments});
CrewPlanLine.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
PositionTag = json['PositionTag'];
Needed = json['Needed'];
NaiveTotal = json['NaiveTotal'];
TaskAssignments = json['TaskAssignments'];
return this;
}
Map<String, dynamic> toJson() => {
'PositionTag': PositionTag,
'Needed': Needed,
'NaiveTotal': NaiveTotal,
'TaskAssignments': TaskAssignments
};
getTypeName() => "CrewPlanLine";
TypeContext? context = _ctx;
}
class RfpProposalResponse implements IConvertible
{
ResponseStatus? ResponseStatus;
int? RfpDocumentID;
ProjectProposal? Proposal;
List<CrewPlanLine>? CrewPlan = [];
RfpProposalResponse({this.ResponseStatus,this.RfpDocumentID,this.Proposal,this.CrewPlan});
RfpProposalResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
ResponseStatus = JsonConverters.fromJson(json['ResponseStatus'],'ResponseStatus',context!);
RfpDocumentID = json['RfpDocumentID'];
Proposal = JsonConverters.fromJson(json['Proposal'],'ProjectProposal',context!);
CrewPlan = JsonConverters.fromJson(json['CrewPlan'],'List<CrewPlanLine>',context!);
return this;
}
Map<String, dynamic> toJson() => {
'ResponseStatus': JsonConverters.toJson(ResponseStatus,'ResponseStatus',context!),
'RfpDocumentID': RfpDocumentID,
'Proposal': JsonConverters.toJson(Proposal,'ProjectProposal',context!),
'CrewPlan': JsonConverters.toJson(CrewPlan,'List<CrewPlanLine>',context!)
};
getTypeName() => "RfpProposalResponse";
TypeContext? context = _ctx;
}
class RfpProposalRequest implements IConvertible
{
String? RfpDocumentUID;
RfpProposalRequest({this.RfpDocumentUID});
RfpProposalRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
RfpDocumentUID = json['RfpDocumentUID'];
return this;
}
Map<String, dynamic> toJson() => {
'RfpDocumentUID': RfpDocumentUID
};
getTypeName() => "RfpProposalRequest";
TypeContext? context = _ctx;
}
TypeContext _ctx = TypeContext(library: 'api.dev.dynamics.trendsic.com', types: <String, TypeInfo> {
'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>[]),
'WorkPackageSpecRef': TypeInfo(TypeOf.Class, create:() => WorkPackageSpecRef()),
'TaskWorkPackage': TypeInfo(TypeOf.Class, create:() => TaskWorkPackage()),
'List<WorkPackageSpecRef>': TypeInfo(TypeOf.Class, create:() => <WorkPackageSpecRef>[]),
'ProposedTask': TypeInfo(TypeOf.Class, create:() => ProposedTask()),
'AddendaChange': TypeInfo(TypeOf.Class, create:() => AddendaChange()),
'AddendaChangeSet': TypeInfo(TypeOf.Class, create:() => AddendaChangeSet()),
'List<AddendaChange>': TypeInfo(TypeOf.Class, create:() => <AddendaChange>[]),
'WageClassification': TypeInfo(TypeOf.Class, create:() => WageClassification()),
'WageDeterminationResult': TypeInfo(TypeOf.Class, create:() => WageDeterminationResult()),
'List<WageClassification>': TypeInfo(TypeOf.Class, create:() => <WageClassification>[]),
'ProjectProposal': TypeInfo(TypeOf.Class, create:() => ProjectProposal()),
'List<ProposedTask>': TypeInfo(TypeOf.Class, create:() => <ProposedTask>[]),
'List<AddendaChangeSet>': TypeInfo(TypeOf.Class, create:() => <AddendaChangeSet>[]),
'List<WageDeterminationResult>': TypeInfo(TypeOf.Class, create:() => <WageDeterminationResult>[]),
'CrewPlanLine': TypeInfo(TypeOf.Class, create:() => CrewPlanLine()),
'RfpProposalResponse': TypeInfo(TypeOf.Class, create:() => RfpProposalResponse()),
'List<CrewPlanLine>': TypeInfo(TypeOf.Class, create:() => <CrewPlanLine>[]),
'RfpProposalRequest': TypeInfo(TypeOf.Class, create:() => RfpProposalRequest()),
});
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}/Proposal 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,"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-01T00:00:00.0000000","EstimatedEndDate":"0001-01-01T00:00:00.0000000","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-01T00:00:00.0000000","EstimatedEndDate":"0001-01-01T00:00:00.0000000","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-01T00:00:00.0000000","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-01T00:00:00.0000000","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}]}