Trendsic Platform Service

<back to all web services

RfpAddendaApplyRequest

Requires Authentication
Requires any of the roles:Agent, Administrator
The following routes are available for this service:
POST,OPTIONS/v1/Rfp/{RfpDocumentUID}/Addenda/{ChangeId}/Apply
import 'package:servicestack/servicestack.dart';

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 RfpAddendaResponse implements IConvertible
{
    ResponseStatus? ResponseStatus;
    int? RfpDocumentID;
    List<AddendaChangeSet>? Diffs = [];
    List<WageDeterminationResult>? WageDeterminations = [];
    String? Message;
    bool? Reflowed;

    RfpAddendaResponse({this.ResponseStatus,this.RfpDocumentID,this.Diffs,this.WageDeterminations,this.Message,this.Reflowed});
    RfpAddendaResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ResponseStatus = JsonConverters.fromJson(json['ResponseStatus'],'ResponseStatus',context!);
        RfpDocumentID = json['RfpDocumentID'];
        Diffs = JsonConverters.fromJson(json['Diffs'],'List<AddendaChangeSet>',context!);
        WageDeterminations = JsonConverters.fromJson(json['WageDeterminations'],'List<WageDeterminationResult>',context!);
        Message = json['Message'];
        Reflowed = json['Reflowed'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ResponseStatus': JsonConverters.toJson(ResponseStatus,'ResponseStatus',context!),
        'RfpDocumentID': RfpDocumentID,
        'Diffs': JsonConverters.toJson(Diffs,'List<AddendaChangeSet>',context!),
        'WageDeterminations': JsonConverters.toJson(WageDeterminations,'List<WageDeterminationResult>',context!),
        'Message': Message,
        'Reflowed': Reflowed
    };

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

class RfpAddendaApplyRequest implements IConvertible
{
    String? RfpDocumentUID;
    String? ChangeId;

    RfpAddendaApplyRequest({this.RfpDocumentUID,this.ChangeId});
    RfpAddendaApplyRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

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

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

TypeContext _ctx = TypeContext(library: 'api.dev.dynamics.trendsic.com', types: <String, TypeInfo> {
    '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>[]),
    'RfpAddendaResponse': TypeInfo(TypeOf.Class, create:() => RfpAddendaResponse()),
    'List<AddendaChangeSet>': TypeInfo(TypeOf.Class, create:() => <AddendaChangeSet>[]),
    'List<WageDeterminationResult>': TypeInfo(TypeOf.Class, create:() => <WageDeterminationResult>[]),
    'RfpAddendaApplyRequest': TypeInfo(TypeOf.Class, create:() => RfpAddendaApplyRequest()),
});

Dart RfpAddendaApplyRequest DTOs

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

HTTP + JSV

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

POST /v1/Rfp/{RfpDocumentUID}/Addenda/{ChangeId}/Apply HTTP/1.1 
Host: api.dev.dynamics.trendsic.com 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	RfpDocumentUID: 00000000000000000000000000000000,
	ChangeId: String
}
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,
	Diffs: 
	[
		{
			ChangeSetId: String,
			SourceRfpDocumentID: 0,
			SourceFileName: String,
			DocumentType: String,
			ExtractedAtUtc: 0001-01-01,
			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-01,
			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
			]
		}
	],
	Message: String,
	Reflowed: False
}