Trendsic Platform Service

<back to all web services

RfpPricePreviewRequest

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


open class RfpPricePreviewRequest
{
    open var Proposal:ProjectProposal? = null
}

open class ProjectProposal
{
    open var RfpDocumentID: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 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 class TaskResourcing
{
    open var Positions:ArrayList<ResourcedPosition> = ArrayList<ResourcedPosition>()
    open var Equipment:ArrayList<ResourcedEquipment> = ArrayList<ResourcedEquipment>()
    open var Materials:ArrayList<ResourcedMaterial> = ArrayList<ResourcedMaterial>()
}

open class ResourcedPosition
{
    open var PositionTag:String? = null
    open var Hours: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 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 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 RfpPricingResponse
{
    open var ResponseStatus:ResponseStatus? = null
    open var RfpDocumentID:Int? = null
    open var Pricing:PricedProposal? = null
}

open class PricedProposal
{
    open var RfpDocumentID:Int? = null
    open var ProjectName:String? = null
    open var Currency:String? = null
    open var Tasks:ArrayList<PricedTask> = ArrayList<PricedTask>()
    open var Total:CostRange? = null
    open var PositionsNeedingRate:Int? = null
    open var EquipmentNotInCatalog:Int? = null
    open var MaterialsNotInCatalog:Int? = null
    open var PositionsNotInCatalog:Int? = null
    open var EquipmentMargin:Double? = null
}

open class PricedTask
{
    open var Name:String? = null
    open var Category:String? = null
    open var Positions:ArrayList<PricedPosition> = ArrayList<PricedPosition>()
    open var Equipment:ArrayList<PricedEquipment> = ArrayList<PricedEquipment>()
    open var Materials:ArrayList<PricedMaterial> = ArrayList<PricedMaterial>()
    open var Subtotal:CostRange? = null
}

open class PricedPosition
{
    open var PositionTag:String? = null
    open var Hours:Double? = null
    open var HasInternalRate:Boolean? = null
    open var RateMin:Double? = null
    open var RateMax:Double? = null
    open var RateAvg:Double? = null
    open var ContactCount:Int? = null
    open var Cost:CostRange? = null
    open var MarketRateReference:Double? = null
}

open class CostRange
{
    open var Min:Double? = null
    open var Max:Double? = null
    open var Mid:Double? = null
}

open class PricedEquipment
{
    open var EquipmentID:Int? = null
    open var EquipmentName:String? = null
    open var Quantity:Double? = null
    open var DurationDays:Double? = null
    open var RateType:String? = null
    open var BilledRate:Double? = null
    open var CostRate:Double? = null
    open var HasRate:Boolean? = null
    open var IsInCatalog:Boolean? = null
    open var Cost:Double? = null
    open var CompanyCost:Double? = null
    open var Margin:Double? = null
}

open class PricedMaterial
{
    open var MaterialID:Int? = null
    open var MaterialName:String? = null
    open var Quantity:Double? = null
    open var UnitCost:Double? = null
    open var HasRate:Boolean? = null
    open var IsInCatalog:Boolean? = null
    open var Cost:Double? = null
}

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

{
	Proposal: 
	{
		RfpDocumentID: 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,
							Headcount: 0,
							SourceReference: String,
							Notes: String,
							IsInCatalog: False,
							ContactID: 0
						}
					],
					Equipment: 
					[
						{
							EquipmentID: 0,
							EquipmentName: String,
							MakeModel: String,
							Quantity: 0,
							DurationDays: 0,
							SourceReference: String,
							Notes: String,
							IsInCatalog: False,
							SuggestedEquipmentID: 0,
							SuggestedEquipmentName: String
						}
					],
					Materials: 
					[
						{
							MaterialID: 0,
							MaterialName: String,
							MakeModel: String,
							Quantity: 0,
							Unit: String,
							SourceReference: String,
							Notes: String,
							IsInCatalog: False,
							SuggestedMaterialID: 0,
							SuggestedMaterialName: String
						}
					]
				},
				DurationDays: 0,
				DependsOn: 
				[
					0
				],
				EstimatedStartDate: 0001-01-01,
				EstimatedEndDate: 0001-01-01
			}
		]
	}
}
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,
	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
	}
}