Trendsic Platform Service

<back to all web services

ApplyAssemblyRequest

Requires Authentication
Requires any of the roles:Agent, Administrator
The following routes are available for this service:
POST,OPTIONS/v1/Rfp/{RfpDocumentUID}/Estimate/Jobs/{TaskSeq}/assembly
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 SpecRefView implements IConvertible
{
    String? Section;
    String? Title;
    String? Url;

    SpecRefView({this.Section,this.Title,this.Url});
    SpecRefView.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Section = json['Section'];
        Title = json['Title'];
        Url = json['Url'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Section': Section,
        'Title': Title,
        'Url': Url
    };

    getTypeName() => "SpecRefView";
    TypeContext? context = _ctx;
}

class DodItemView implements IConvertible
{
    String? Key;
    String? Text;
    bool? Checked;
    String? Source;

    DodItemView({this.Key,this.Text,this.Checked,this.Source});
    DodItemView.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Key = json['Key'];
        Text = json['Text'];
        Checked = json['Checked'];
        Source = json['Source'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Key': Key,
        'Text': Text,
        'Checked': Checked,
        'Source': Source
    };

    getTypeName() => "DodItemView";
    TypeContext? context = _ctx;
}

class WorkPackageView implements IConvertible
{
    bool? HasPackage;
    String? Scope;
    String? LimitsOfWork;
    List<SpecRefView>? SpecRefs = [];
    List<String>? Constraints = [];
    List<String>? HoldPoints = [];
    List<DodItemView>? Dod = [];
    String? SafetyNote;
    String? Provenance;
    String? SpecBook;
    bool? UserEdited;
    String? RedraftNote;

    WorkPackageView({this.HasPackage,this.Scope,this.LimitsOfWork,this.SpecRefs,this.Constraints,this.HoldPoints,this.Dod,this.SafetyNote,this.Provenance,this.SpecBook,this.UserEdited,this.RedraftNote});
    WorkPackageView.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        HasPackage = json['HasPackage'];
        Scope = json['Scope'];
        LimitsOfWork = json['LimitsOfWork'];
        SpecRefs = JsonConverters.fromJson(json['SpecRefs'],'List<SpecRefView>',context!);
        Constraints = JsonConverters.fromJson(json['Constraints'],'List<String>',context!);
        HoldPoints = JsonConverters.fromJson(json['HoldPoints'],'List<String>',context!);
        Dod = JsonConverters.fromJson(json['Dod'],'List<DodItemView>',context!);
        SafetyNote = json['SafetyNote'];
        Provenance = json['Provenance'];
        SpecBook = json['SpecBook'];
        UserEdited = json['UserEdited'];
        RedraftNote = json['RedraftNote'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'HasPackage': HasPackage,
        'Scope': Scope,
        'LimitsOfWork': LimitsOfWork,
        'SpecRefs': JsonConverters.toJson(SpecRefs,'List<SpecRefView>',context!),
        'Constraints': JsonConverters.toJson(Constraints,'List<String>',context!),
        'HoldPoints': JsonConverters.toJson(HoldPoints,'List<String>',context!),
        'Dod': JsonConverters.toJson(Dod,'List<DodItemView>',context!),
        'SafetyNote': SafetyNote,
        'Provenance': Provenance,
        'SpecBook': SpecBook,
        'UserEdited': UserEdited,
        'RedraftNote': RedraftNote
    };

    getTypeName() => "WorkPackageView";
    TypeContext? context = _ctx;
}

class EstimateCrewLineResult implements IConvertible
{
    String? Role;
    double? Hours;
    double? StHours;
    double? OtHours;
    double? Rrop;
    double? StCost;
    double? OtCost;
    double? Cost;
    double? FringeCost;
    bool? PremiumApplied;
    bool? HasOt;
    bool? NeedsRate;

    EstimateCrewLineResult({this.Role,this.Hours,this.StHours,this.OtHours,this.Rrop,this.StCost,this.OtCost,this.Cost,this.FringeCost,this.PremiumApplied,this.HasOt,this.NeedsRate});
    EstimateCrewLineResult.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Role = json['Role'];
        Hours = JsonConverters.toDouble(json['Hours']);
        StHours = JsonConverters.toDouble(json['StHours']);
        OtHours = JsonConverters.toDouble(json['OtHours']);
        Rrop = JsonConverters.toDouble(json['Rrop']);
        StCost = JsonConverters.toDouble(json['StCost']);
        OtCost = JsonConverters.toDouble(json['OtCost']);
        Cost = JsonConverters.toDouble(json['Cost']);
        FringeCost = JsonConverters.toDouble(json['FringeCost']);
        PremiumApplied = json['PremiumApplied'];
        HasOt = json['HasOt'];
        NeedsRate = json['NeedsRate'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Role': Role,
        'Hours': Hours,
        'StHours': StHours,
        'OtHours': OtHours,
        'Rrop': Rrop,
        'StCost': StCost,
        'OtCost': OtCost,
        'Cost': Cost,
        'FringeCost': FringeCost,
        'PremiumApplied': PremiumApplied,
        'HasOt': HasOt,
        'NeedsRate': NeedsRate
    };

    getTypeName() => "EstimateCrewLineResult";
    TypeContext? context = _ctx;
}

class EstimateEquipmentLineResult implements IConvertible
{
    String? Name;
    double? Quantity;
    double? Rate;
    bool? NeedsRate;
    double? MobCost;
    double? Cost;
    bool? IsAvailabilityTracked;
    bool? IsOwned;
    String? AvailabilityLabel;
    String? FreedFromProject;
    DateTime? AvailableFrom;
    String? RateKey;
    String? RentalExplain;
    double? UsageDays;
    double? BilledDays;

    EstimateEquipmentLineResult({this.Name,this.Quantity,this.Rate,this.NeedsRate,this.MobCost,this.Cost,this.IsAvailabilityTracked,this.IsOwned,this.AvailabilityLabel,this.FreedFromProject,this.AvailableFrom,this.RateKey,this.RentalExplain,this.UsageDays,this.BilledDays});
    EstimateEquipmentLineResult.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Name = json['Name'];
        Quantity = JsonConverters.toDouble(json['Quantity']);
        Rate = JsonConverters.toDouble(json['Rate']);
        NeedsRate = json['NeedsRate'];
        MobCost = JsonConverters.toDouble(json['MobCost']);
        Cost = JsonConverters.toDouble(json['Cost']);
        IsAvailabilityTracked = json['IsAvailabilityTracked'];
        IsOwned = json['IsOwned'];
        AvailabilityLabel = json['AvailabilityLabel'];
        FreedFromProject = json['FreedFromProject'];
        AvailableFrom = JsonConverters.fromJson(json['AvailableFrom'],'DateTime',context!);
        RateKey = json['RateKey'];
        RentalExplain = json['RentalExplain'];
        UsageDays = JsonConverters.toDouble(json['UsageDays']);
        BilledDays = JsonConverters.toDouble(json['BilledDays']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Name': Name,
        'Quantity': Quantity,
        'Rate': Rate,
        'NeedsRate': NeedsRate,
        'MobCost': MobCost,
        'Cost': Cost,
        'IsAvailabilityTracked': IsAvailabilityTracked,
        'IsOwned': IsOwned,
        'AvailabilityLabel': AvailabilityLabel,
        'FreedFromProject': FreedFromProject,
        'AvailableFrom': JsonConverters.toJson(AvailableFrom,'DateTime',context!),
        'RateKey': RateKey,
        'RentalExplain': RentalExplain,
        'UsageDays': UsageDays,
        'BilledDays': BilledDays
    };

    getTypeName() => "EstimateEquipmentLineResult";
    TypeContext? context = _ctx;
}

class EstimateMaterialLineResult implements IConvertible
{
    String? Name;
    double? Quantity;
    String? Unit;
    double? Rate;
    bool? NeedsRate;
    double? Cost;
    String? RateKey;

    EstimateMaterialLineResult({this.Name,this.Quantity,this.Unit,this.Rate,this.NeedsRate,this.Cost,this.RateKey});
    EstimateMaterialLineResult.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Name = json['Name'];
        Quantity = JsonConverters.toDouble(json['Quantity']);
        Unit = json['Unit'];
        Rate = JsonConverters.toDouble(json['Rate']);
        NeedsRate = json['NeedsRate'];
        Cost = JsonConverters.toDouble(json['Cost']);
        RateKey = json['RateKey'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Name': Name,
        'Quantity': Quantity,
        'Unit': Unit,
        'Rate': Rate,
        'NeedsRate': NeedsRate,
        'Cost': Cost,
        'RateKey': RateKey
    };

    getTypeName() => "EstimateMaterialLineResult";
    TypeContext? context = _ctx;
}

class EstimateSubcontractLine implements IConvertible
{
    String? Vendor;
    double? Amount;
    String? Scope;

    EstimateSubcontractLine({this.Vendor,this.Amount,this.Scope});
    EstimateSubcontractLine.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Vendor = json['Vendor'];
        Amount = JsonConverters.toDouble(json['Amount']);
        Scope = json['Scope'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Vendor': Vendor,
        'Amount': Amount,
        'Scope': Scope
    };

    getTypeName() => "EstimateSubcontractLine";
    TypeContext? context = _ctx;
}

class EstimateJobResult implements IConvertible
{
    int? Seq;
    List<int>? DependsOn = [];
    String? ItemNo;
    String? Name;
    String? Category;
    String? SourceRef;
    String? Unit;
    double? Quantity;
    String? PatternCode;
    int? Workdays;
    double? HoursPerDay;
    bool? IsNight;
    double? WeeklyHours;
    double? OtFraction;
    double? Days;
    double? EffectiveProdPerDay;
    bool? CrewPremiumApplied;
    WorkPackageView? WorkPackage;
    List<EstimateCrewLineResult>? Crew = [];
    List<EstimateEquipmentLineResult>? Equipment = [];
    List<EstimateMaterialLineResult>? Materials = [];
    List<EstimateSubcontractLine>? Subcontracts = [];
    double? CrewCost;
    double? FringeCost;
    double? EquipmentCost;
    double? MaterialCost;
    double? SubcontractCost;
    double? Direct;
    String? PricingBasis;
    String? PricingRuleId;
    double? PricingBandP25;
    double? PricingBandP75;
    int? PricingBandN;
    String? PricingBandLabel;
    double? BenchmarkUnitPrice;
    double? BenchmarkRateMin;
    double? BenchmarkRateMax;
    int? BenchmarkSampleSize;
    double? BenchmarkP25;
    double? BenchmarkP75;
    String? BenchmarkBasis;
    double? UnitPriceOverride;
    String? OverrideBasis;
    double? ReferencePrice;
    double? ReferenceRangeMin;
    double? ReferenceRangeMax;
    int? ReferenceN;
    DateTime? ReferenceDate;
    String? ReferenceBasis;
    String? ReferenceUrl;

    EstimateJobResult({this.Seq,this.DependsOn,this.ItemNo,this.Name,this.Category,this.SourceRef,this.Unit,this.Quantity,this.PatternCode,this.Workdays,this.HoursPerDay,this.IsNight,this.WeeklyHours,this.OtFraction,this.Days,this.EffectiveProdPerDay,this.CrewPremiumApplied,this.WorkPackage,this.Crew,this.Equipment,this.Materials,this.Subcontracts,this.CrewCost,this.FringeCost,this.EquipmentCost,this.MaterialCost,this.SubcontractCost,this.Direct,this.PricingBasis,this.PricingRuleId,this.PricingBandP25,this.PricingBandP75,this.PricingBandN,this.PricingBandLabel,this.BenchmarkUnitPrice,this.BenchmarkRateMin,this.BenchmarkRateMax,this.BenchmarkSampleSize,this.BenchmarkP25,this.BenchmarkP75,this.BenchmarkBasis,this.UnitPriceOverride,this.OverrideBasis,this.ReferencePrice,this.ReferenceRangeMin,this.ReferenceRangeMax,this.ReferenceN,this.ReferenceDate,this.ReferenceBasis,this.ReferenceUrl});
    EstimateJobResult.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Seq = json['Seq'];
        DependsOn = JsonConverters.fromJson(json['DependsOn'],'List<int>',context!);
        ItemNo = json['ItemNo'];
        Name = json['Name'];
        Category = json['Category'];
        SourceRef = json['SourceRef'];
        Unit = json['Unit'];
        Quantity = JsonConverters.toDouble(json['Quantity']);
        PatternCode = json['PatternCode'];
        Workdays = json['Workdays'];
        HoursPerDay = JsonConverters.toDouble(json['HoursPerDay']);
        IsNight = json['IsNight'];
        WeeklyHours = JsonConverters.toDouble(json['WeeklyHours']);
        OtFraction = JsonConverters.toDouble(json['OtFraction']);
        Days = JsonConverters.toDouble(json['Days']);
        EffectiveProdPerDay = JsonConverters.toDouble(json['EffectiveProdPerDay']);
        CrewPremiumApplied = json['CrewPremiumApplied'];
        WorkPackage = JsonConverters.fromJson(json['WorkPackage'],'WorkPackageView',context!);
        Crew = JsonConverters.fromJson(json['Crew'],'List<EstimateCrewLineResult>',context!);
        Equipment = JsonConverters.fromJson(json['Equipment'],'List<EstimateEquipmentLineResult>',context!);
        Materials = JsonConverters.fromJson(json['Materials'],'List<EstimateMaterialLineResult>',context!);
        Subcontracts = JsonConverters.fromJson(json['Subcontracts'],'List<EstimateSubcontractLine>',context!);
        CrewCost = JsonConverters.toDouble(json['CrewCost']);
        FringeCost = JsonConverters.toDouble(json['FringeCost']);
        EquipmentCost = JsonConverters.toDouble(json['EquipmentCost']);
        MaterialCost = JsonConverters.toDouble(json['MaterialCost']);
        SubcontractCost = JsonConverters.toDouble(json['SubcontractCost']);
        Direct = JsonConverters.toDouble(json['Direct']);
        PricingBasis = json['PricingBasis'];
        PricingRuleId = json['PricingRuleId'];
        PricingBandP25 = JsonConverters.toDouble(json['PricingBandP25']);
        PricingBandP75 = JsonConverters.toDouble(json['PricingBandP75']);
        PricingBandN = json['PricingBandN'];
        PricingBandLabel = json['PricingBandLabel'];
        BenchmarkUnitPrice = JsonConverters.toDouble(json['BenchmarkUnitPrice']);
        BenchmarkRateMin = JsonConverters.toDouble(json['BenchmarkRateMin']);
        BenchmarkRateMax = JsonConverters.toDouble(json['BenchmarkRateMax']);
        BenchmarkSampleSize = json['BenchmarkSampleSize'];
        BenchmarkP25 = JsonConverters.toDouble(json['BenchmarkP25']);
        BenchmarkP75 = JsonConverters.toDouble(json['BenchmarkP75']);
        BenchmarkBasis = json['BenchmarkBasis'];
        UnitPriceOverride = JsonConverters.toDouble(json['UnitPriceOverride']);
        OverrideBasis = json['OverrideBasis'];
        ReferencePrice = JsonConverters.toDouble(json['ReferencePrice']);
        ReferenceRangeMin = JsonConverters.toDouble(json['ReferenceRangeMin']);
        ReferenceRangeMax = JsonConverters.toDouble(json['ReferenceRangeMax']);
        ReferenceN = json['ReferenceN'];
        ReferenceDate = JsonConverters.fromJson(json['ReferenceDate'],'DateTime',context!);
        ReferenceBasis = json['ReferenceBasis'];
        ReferenceUrl = json['ReferenceUrl'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Seq': Seq,
        'DependsOn': JsonConverters.toJson(DependsOn,'List<int>',context!),
        'ItemNo': ItemNo,
        'Name': Name,
        'Category': Category,
        'SourceRef': SourceRef,
        'Unit': Unit,
        'Quantity': Quantity,
        'PatternCode': PatternCode,
        'Workdays': Workdays,
        'HoursPerDay': HoursPerDay,
        'IsNight': IsNight,
        'WeeklyHours': WeeklyHours,
        'OtFraction': OtFraction,
        'Days': Days,
        'EffectiveProdPerDay': EffectiveProdPerDay,
        'CrewPremiumApplied': CrewPremiumApplied,
        'WorkPackage': JsonConverters.toJson(WorkPackage,'WorkPackageView',context!),
        'Crew': JsonConverters.toJson(Crew,'List<EstimateCrewLineResult>',context!),
        'Equipment': JsonConverters.toJson(Equipment,'List<EstimateEquipmentLineResult>',context!),
        'Materials': JsonConverters.toJson(Materials,'List<EstimateMaterialLineResult>',context!),
        'Subcontracts': JsonConverters.toJson(Subcontracts,'List<EstimateSubcontractLine>',context!),
        'CrewCost': CrewCost,
        'FringeCost': FringeCost,
        'EquipmentCost': EquipmentCost,
        'MaterialCost': MaterialCost,
        'SubcontractCost': SubcontractCost,
        'Direct': Direct,
        'PricingBasis': PricingBasis,
        'PricingRuleId': PricingRuleId,
        'PricingBandP25': PricingBandP25,
        'PricingBandP75': PricingBandP75,
        'PricingBandN': PricingBandN,
        'PricingBandLabel': PricingBandLabel,
        'BenchmarkUnitPrice': BenchmarkUnitPrice,
        'BenchmarkRateMin': BenchmarkRateMin,
        'BenchmarkRateMax': BenchmarkRateMax,
        'BenchmarkSampleSize': BenchmarkSampleSize,
        'BenchmarkP25': BenchmarkP25,
        'BenchmarkP75': BenchmarkP75,
        'BenchmarkBasis': BenchmarkBasis,
        'UnitPriceOverride': UnitPriceOverride,
        'OverrideBasis': OverrideBasis,
        'ReferencePrice': ReferencePrice,
        'ReferenceRangeMin': ReferenceRangeMin,
        'ReferenceRangeMax': ReferenceRangeMax,
        'ReferenceN': ReferenceN,
        'ReferenceDate': JsonConverters.toJson(ReferenceDate,'DateTime',context!),
        'ReferenceBasis': ReferenceBasis,
        'ReferenceUrl': ReferenceUrl
    };

    getTypeName() => "EstimateJobResult";
    TypeContext? context = _ctx;
}

class ApplyAssemblyResponse implements IConvertible
{
    ResponseStatus? ResponseStatus;
    int? TaskSeq;
    String? TemplateUID;
    String? TemplateName;
    double? Quantity;
    String? Unit;
    TaskResourcing? Resourcing;
    EstimateJobResult? Job;
    String? Headline;

    ApplyAssemblyResponse({this.ResponseStatus,this.TaskSeq,this.TemplateUID,this.TemplateName,this.Quantity,this.Unit,this.Resourcing,this.Job,this.Headline});
    ApplyAssemblyResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ResponseStatus = JsonConverters.fromJson(json['ResponseStatus'],'ResponseStatus',context!);
        TaskSeq = json['TaskSeq'];
        TemplateUID = json['TemplateUID'];
        TemplateName = json['TemplateName'];
        Quantity = JsonConverters.toDouble(json['Quantity']);
        Unit = json['Unit'];
        Resourcing = JsonConverters.fromJson(json['Resourcing'],'TaskResourcing',context!);
        Job = JsonConverters.fromJson(json['Job'],'EstimateJobResult',context!);
        Headline = json['Headline'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ResponseStatus': JsonConverters.toJson(ResponseStatus,'ResponseStatus',context!),
        'TaskSeq': TaskSeq,
        'TemplateUID': TemplateUID,
        'TemplateName': TemplateName,
        'Quantity': Quantity,
        'Unit': Unit,
        'Resourcing': JsonConverters.toJson(Resourcing,'TaskResourcing',context!),
        'Job': JsonConverters.toJson(Job,'EstimateJobResult',context!),
        'Headline': Headline
    };

    getTypeName() => "ApplyAssemblyResponse";
    TypeContext? context = _ctx;
}

class ApplyAssemblyRequest implements IConvertible
{
    String? RfpDocumentUID;
    int? TaskSeq;
    String? TemplateUID;

    ApplyAssemblyRequest({this.RfpDocumentUID,this.TaskSeq,this.TemplateUID});
    ApplyAssemblyRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        RfpDocumentUID = json['RfpDocumentUID'];
        TaskSeq = json['TaskSeq'];
        TemplateUID = json['TemplateUID'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'RfpDocumentUID': RfpDocumentUID,
        'TaskSeq': TaskSeq,
        'TemplateUID': TemplateUID
    };

    getTypeName() => "ApplyAssemblyRequest";
    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>[]),
    'SpecRefView': TypeInfo(TypeOf.Class, create:() => SpecRefView()),
    'DodItemView': TypeInfo(TypeOf.Class, create:() => DodItemView()),
    'WorkPackageView': TypeInfo(TypeOf.Class, create:() => WorkPackageView()),
    'List<SpecRefView>': TypeInfo(TypeOf.Class, create:() => <SpecRefView>[]),
    'List<DodItemView>': TypeInfo(TypeOf.Class, create:() => <DodItemView>[]),
    'EstimateCrewLineResult': TypeInfo(TypeOf.Class, create:() => EstimateCrewLineResult()),
    'EstimateEquipmentLineResult': TypeInfo(TypeOf.Class, create:() => EstimateEquipmentLineResult()),
    'EstimateMaterialLineResult': TypeInfo(TypeOf.Class, create:() => EstimateMaterialLineResult()),
    'EstimateSubcontractLine': TypeInfo(TypeOf.Class, create:() => EstimateSubcontractLine()),
    'EstimateJobResult': TypeInfo(TypeOf.Class, create:() => EstimateJobResult()),
    'List<EstimateCrewLineResult>': TypeInfo(TypeOf.Class, create:() => <EstimateCrewLineResult>[]),
    'List<EstimateEquipmentLineResult>': TypeInfo(TypeOf.Class, create:() => <EstimateEquipmentLineResult>[]),
    'List<EstimateMaterialLineResult>': TypeInfo(TypeOf.Class, create:() => <EstimateMaterialLineResult>[]),
    'List<EstimateSubcontractLine>': TypeInfo(TypeOf.Class, create:() => <EstimateSubcontractLine>[]),
    'ApplyAssemblyResponse': TypeInfo(TypeOf.Class, create:() => ApplyAssemblyResponse()),
    'ApplyAssemblyRequest': TypeInfo(TypeOf.Class, create:() => ApplyAssemblyRequest()),
});

Dart ApplyAssemblyRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .other suffix or ?format=other

HTTP + OTHER

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /v1/Rfp/{RfpDocumentUID}/Estimate/Jobs/{TaskSeq}/assembly HTTP/1.1 
Host: api.dev.dynamics.trendsic.com 
Accept: text/jsonl
Content-Type: text/jsonl
Content-Length: length

{"RfpDocumentUID":"00000000000000000000000000000000","TaskSeq":0,"TemplateUID":"00000000000000000000000000000000"}
HTTP/1.1 200 OK
Content-Type: text/jsonl
Content-Length: length

{"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}},"TaskSeq":0,"TemplateUID":"00000000000000000000000000000000","TemplateName":"String","Quantity":0,"Unit":"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},"Job":{"Seq":0,"DependsOn":[0],"ItemNo":"String","Name":"String","Category":"String","SourceRef":"String","Unit":"String","Quantity":0,"PatternCode":"String","Workdays":0,"HoursPerDay":0,"IsNight":false,"WeeklyHours":0,"OtFraction":0,"Days":0,"EffectiveProdPerDay":0,"CrewPremiumApplied":false,"WorkPackage":{"HasPackage":false,"Scope":"String","LimitsOfWork":"String","SpecRefs":[{"Section":"String","Title":"String","Url":"String"}],"Constraints":["String"],"HoldPoints":["String"],"Dod":[{"Key":"String","Text":"String","Checked":false,"Source":"String"}],"SafetyNote":"String","Provenance":"String","SpecBook":"String","UserEdited":false,"RedraftNote":"String"},"Crew":[{"Role":"String","Hours":0,"StHours":0,"OtHours":0,"Rrop":0,"StCost":0,"OtCost":0,"Cost":0,"FringeCost":0,"PremiumApplied":false,"HasOt":false,"NeedsRate":false}],"Equipment":[{"Name":"String","Quantity":0,"Rate":0,"NeedsRate":false,"MobCost":0,"Cost":0,"IsAvailabilityTracked":false,"IsOwned":false,"AvailabilityLabel":"String","FreedFromProject":"String","AvailableFrom":"0001-01-01T00:00:00.0000000","RateKey":"String","RentalExplain":"String","UsageDays":0,"BilledDays":0}],"Materials":[{"Name":"String","Quantity":0,"Unit":"String","Rate":0,"NeedsRate":false,"Cost":0,"RateKey":"String"}],"Subcontracts":[{"Vendor":"String","Amount":0,"Scope":"String"}],"CrewCost":0,"FringeCost":0,"EquipmentCost":0,"MaterialCost":0,"SubcontractCost":0,"Direct":0,"PricingBasis":"String","PricingRuleId":"String","PricingBandP25":0,"PricingBandP75":0,"PricingBandN":0,"PricingBandLabel":"String","BenchmarkUnitPrice":0,"BenchmarkRateMin":0,"BenchmarkRateMax":0,"BenchmarkSampleSize":0,"BenchmarkP25":0,"BenchmarkP75":0,"BenchmarkBasis":"String","UnitPriceOverride":0,"OverrideBasis":"String","ReferencePrice":0,"ReferenceRangeMin":0,"ReferenceRangeMax":0,"ReferenceN":0,"ReferenceDate":"0001-01-01T00:00:00.0000000","ReferenceBasis":"String","ReferenceUrl":"String"},"Headline":"String"}