Trendsic Platform Service

<back to all web services

RfpApproveRequest

Requires Authentication
Requires any of the roles:Agent, Administrator
The following routes are available for this service:
POST,OPTIONS/v1/Rfp/{RfpDocumentUID}/Approve
import java.math.*
import java.util.*
import java.io.InputStream
import net.servicestack.client.*


open class RfpApproveRequest
{
    open var RfpDocumentUID:UUID? = null
    open var Proposal:ProjectProposal? = null
}

open class ProjectProposal
{
    open var RfpDocumentID:Int? = null
    open var Mode:String? = null
    open var ProjectID:Int? = null
    open var ChangeOrderID:Int? = null
    open var ProjectName:String? = null
    open var ClientName:String? = null
    open var ProjectType:String? = null
    open var ProjectLocation:String? = null
    open var Scope:String? = null
    open var ProjectDescription:String? = null
    open var ContractDurationDays:Int? = null
    open var BidDueDate:String? = null
    open var EstimatedStartDate:Date? = null
    open var EstimatedEndDate:Date? = null
    open var Tasks:ArrayList<ProposedTask> = ArrayList<ProposedTask>()
    open var PendingAddendaDiffs:ArrayList<AddendaChangeSet> = ArrayList<AddendaChangeSet>()
    open var WageDeterminations:ArrayList<WageDeterminationResult> = ArrayList<WageDeterminationResult>()
}

open class ProposedTask
{
    open var Seq:Int? = null
    open var Name:String? = null
    open var Category:String? = null
    open var Quantity:Double? = null
    open var Unit:String? = null
    open var SourceItemNumber:String? = null
    open var SourceReference:String? = null
    open var Notes:String? = null
    open var Resourcing:TaskResourcing? = null
    open var DurationDays:Double? = null
    open var DependsOn:ArrayList<Int> = ArrayList<Int>()
    open var EstimatedStartDate:Date? = null
    open var EstimatedEndDate:Date? = null
    open var WorkPackage:TaskWorkPackage? = null
    open var CreatedJobID:Int? = null
}

open class TaskResourcing
{
    open var Positions:ArrayList<ResourcedPosition> = ArrayList<ResourcedPosition>()
    open var Equipment:ArrayList<ResourcedEquipment> = ArrayList<ResourcedEquipment>()
    open var Materials:ArrayList<ResourcedMaterial> = ArrayList<ResourcedMaterial>()
    open var ResourcedForQuantity:Double? = null
    open var ProductionRatePerDay:Double? = null
    open var FixedDays:Double? = null
}

open class ResourcedPosition
{
    open var PositionTag:String? = null
    open var Hours:Double? = null
    open var CrewSize:Double? = null
    open var Utilization:Double? = null
    open var FixedDays:Double? = null
    open var Headcount:Int? = null
    open var SourceReference:String? = null
    open var Notes:String? = null
    open var IsInCatalog:Boolean? = null
    open var ContactID:Int? = null
}

open class ResourcedEquipment
{
    open var EquipmentID:Int? = null
    open var EquipmentName:String? = null
    open var MakeModel:String? = null
    open var Quantity:Double? = null
    open var DurationDays:Double? = null
    open var Utilization:Double? = null
    open var FixedDays:Double? = null
    open var SourceReference:String? = null
    open var Notes:String? = null
    open var IsInCatalog:Boolean? = null
    open var SuggestedEquipmentID:Int? = null
    open var SuggestedEquipmentName:String? = null
}

open class ResourcedMaterial
{
    open var MaterialID:Int? = null
    open var MaterialName:String? = null
    open var MakeModel:String? = null
    open var Quantity:Double? = null
    open var QuantityPerUnit:Double? = null
    open var Unit:String? = null
    open var SourceReference:String? = null
    open var Notes:String? = null
    open var IsInCatalog:Boolean? = null
    open var SuggestedMaterialID:Int? = null
    open var SuggestedMaterialName:String? = null
}

open class TaskWorkPackage
{
    open var Scope:String? = null
    open var LimitsOfWork:String? = null
    open var SpecRefs:ArrayList<WorkPackageSpecRef> = ArrayList<WorkPackageSpecRef>()
    open var Constraints:ArrayList<String> = ArrayList<String>()
    open var HoldPoints:ArrayList<String> = ArrayList<String>()
    open var DefinitionOfDone:ArrayList<String> = ArrayList<String>()
    open var SafetyNote:String? = null
    open var RfpRef:String? = null
    open var Confidence:Int? = null
    open var SpecBook:String? = null
    open var UserScope:String? = null
    open var DodRemoved:ArrayList<Int> = ArrayList<Int>()
    open var DodExtra:ArrayList<String> = ArrayList<String>()
    open var UserEdited:Boolean? = null
    open var DodChecked:ArrayList<String> = ArrayList<String>()
    open var RedraftNote:String? = null
}

open class WorkPackageSpecRef
{
    open var Section:String? = null
    open var Title:String? = null
}

open class AddendaChangeSet
{
    open var ChangeSetId:String? = null
    open var SourceRfpDocumentID:Int? = null
    open var SourceFileName:String? = null
    open var DocumentType:String? = null
    open var ExtractedAtUtc:Date? = null
    open var Summary:String? = null
    open var Changes:ArrayList<AddendaChange> = ArrayList<AddendaChange>()
}

open class AddendaChange
{
    open var ChangeId:String? = null
    open var ChangeType:String? = null
    open var TargetSeq:Int? = null
    open var ItemNumber:String? = null
    open var ItemName:String? = null
    open var Field:String? = null
    open var OldValue:String? = null
    open var NewValue:String? = null
    open var Description:String? = null
    open var Status:String? = null
}

open class WageDeterminationResult
{
    open var SourceRfpDocumentID:Int? = null
    open var SourceFileName:String? = null
    open var WdNumber:String? = null
    open var ExtractedAtUtc:Date? = null
    open var Classifications:ArrayList<WageClassification> = ArrayList<WageClassification>()
    open var Source:String? = null
    open var IsTrustworthy:Boolean? = null
    open var ExecutiveOrderFloor:BigDecimal? = null
    open var PublishedDate:String? = null
    open var ProjectParish:String? = null
    open var Warnings:ArrayList<String> = ArrayList<String>()
}

open class WageClassification
{
    open var Title:String? = null
    open var BaseRate:BigDecimal? = null
    open var FringeRate:BigDecimal? = null
    open var ParishNote:String? = null
    open var SourceLine:String? = null
    open var BenchmarkFringeRate:BigDecimal? = null
    open var FringeCompareNote:String? = null
}

open class RfpApproveResponse
{
    open var ResponseStatus:ResponseStatus? = null
    open var RfpDocumentID:Int? = null
    open var ProjectID:Int? = null
    open var ProjectUID:UUID? = null
    open var RfpApprovalID:Int? = null
    open var JobIDs:ArrayList<Int> = ArrayList<Int>()
    open var OpenPositionCount:Int? = null
    open var Diff:ProposalDiff? = null
}

open class ProposalDiff
{
    open var TasksAdded:ArrayList<String> = ArrayList<String>()
    open var TasksRemoved:ArrayList<String> = ArrayList<String>()
    open var Tasks:ArrayList<TaskDiff> = ArrayList<TaskDiff>()
    open var HasChanges:Boolean? = null
}

open class TaskDiff
{
    open var TaskName:String? = null
    open var PositionsAdded:ArrayList<String> = ArrayList<String>()
    open var PositionsRemoved:ArrayList<String> = ArrayList<String>()
    open var PositionsStaffed:ArrayList<String> = ArrayList<String>()
    open var EquipmentAdded:ArrayList<Int> = ArrayList<Int>()
    open var EquipmentRemoved:ArrayList<Int> = ArrayList<Int>()
    open var MaterialsAdded:ArrayList<Int> = ArrayList<Int>()
    open var MaterialsRemoved:ArrayList<Int> = ArrayList<Int>()
    open var HasChanges:Boolean? = null
}

Kotlin RfpApproveRequest 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}/Approve HTTP/1.1 
Host: api.dev.dynamics.trendsic.com 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	RfpDocumentUID: 00000000000000000000000000000000,
	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-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,
							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-01,
				EstimatedEndDate: 0001-01-01,
				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-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
				]
			}
		]
	}
}
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,
	ProjectID: 0,
	ProjectUID: 00000000000000000000000000000000,
	RfpApprovalID: 0,
	JobIDs: 
	[
		0
	],
	OpenPositionCount: 0,
	Diff: 
	{
		TasksAdded: 
		[
			String
		],
		TasksRemoved: 
		[
			String
		],
		Tasks: 
		[
			{
				TaskName: String,
				PositionsAdded: 
				[
					String
				],
				PositionsRemoved: 
				[
					String
				],
				PositionsStaffed: 
				[
					String
				],
				EquipmentAdded: 
				[
					0
				],
				EquipmentRemoved: 
				[
					0
				],
				MaterialsAdded: 
				[
					0
				],
				MaterialsRemoved: 
				[
					0
				],
				HasChanges: True
			}
		],
		HasChanges: True
	}
}