Platform Subscription API

<back to all web services

SaveProject

Inserts or Updates a project details and its contact connections and addresses.

Requires Authentication
System.IO.InvalidDataException: MetaData is potentially malicious. Expected scalar value, Received: The altitude of an address - the altitude above sea level."
   at ServiceStack.NativeTypes.VbNet.VbNetGeneratorExtensions.SafeValue(String value)
   at ServiceStack.NativeTypes.VbNet.VbNetGeneratorExtensions.QuotedSafeValue(String value)
   at ServiceStack.NativeTypes.VbNet.VbNetGenerator.TypeValue(String type, String value)
   at ServiceStack.NativeTypes.VbNet.VbNetGenerator.AppendAttributes(StringBuilderWrapper sb, List`1 attributes)
   at ServiceStack.NativeTypes.VbNet.VbNetGenerator.AddProperties(StringBuilderWrapper sb, MetadataType type, Dictionary`2 explicitInterfacesMap, Boolean includeResponseStatus)
   at ServiceStack.NativeTypes.VbNet.VbNetGenerator.AppendType(StringBuilderWrapper& sb, MetadataType type, String lastNS, List`1 allTypes, CreateTypeOptions options)
   at ServiceStack.NativeTypes.VbNet.VbNetGenerator.GetCode(MetadataTypes metadata, IRequest request, INativeTypesMetadata nativeTypes)
   at ServiceStack.NativeTypes.LangGeneratorExtensions.g__Generate|1_0(ILangGenerator gen, <>c__DisplayClass1_0& )
   at ServiceStack.NativeTypes.LangGeneratorExtensions.GenerateSourceCode(MetadataTypes metadataTypes, MetadataTypesConfig typesConfig, String lang, IRequest req, Action`1 configure)
   at ServiceStack.NativeTypes.LangGeneratorExtensions.GenerateSourceCode(List`1 metadataTypes, String lang, IRequest req, Action`1 configure)
   at ServiceStack.Metadata.BaseMetadataHandler.d__12.MoveNext()

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 /jsv/reply/SaveProject HTTP/1.1 
Host: production-eros-platform-apisubscription.azurewebsites.net 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	AlternateKey: String,
	IgnoreHash: False,
	Project: 
	{
		Reference: String,
		Name: String,
		Description: String,
		ProjectContacts: 
		[
			{
				ContactAlternateKey: String,
				RoleAlternateKey: String
			}
		],
		ProjectAddress: 
		{
			DistanceAway: 0,
			Latitude: 0,
			Longitude: 0,
			SuburbName: String,
			StateShortName: String,
			PostCode: String,
			CountryName: String,
			ISOCountryCode: String,
			LotNumber: String,
			SubUnit: String,
			BuildingNumber: String,
			StreetNumber: String,
			StreetName: String,
			AddressLineOne: String,
			AddressLineTwo: String,
			AddressFull: String,
			IsPhysical: False,
			Notes: String,
			AutoMapCoordinates: False,
			LocationCoordinates: 
			{
				Latitude: 0,
				Longitude: 0,
				Altitude: 0,
				Accuracy: 0,
				AltitudeAccuracy: 0,
				Heading: 0,
				Speed: 0,
				VerticalSpeed: 0
			}
		},
		CustomerContactGroup: 
		{
			AlternateKey: String
		},
		GroupName: String,
		StageName: String,
		PrimaryProjectPhotoUrl: String,
		PrimaryProjectThumbnailUrl: String,
		PrimaryProjectPhotoHeight: 0,
		PrimaryProjectPhotoWidth: 0,
		DynamicContent: String,
		DocumentableObjectConnection: ,
		DimensionValues: 
		[
			{
				Name: String,
				Description: String,
				ShortName: String,
				TrafficLightColour: String,
				RecordStatus: String
			}
		],
		Calendars: 
		[
			00000000-0000-0000-0000-000000000000
		],
		DocumentSiteId: 00000000-0000-0000-0000-000000000000,
		ObjectHash: String
	},
	ValidationErrors: 
	[
		{
			Message: String,
			Key: String,
			ErrorCode: String
		}
	]
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	ErrorCode: String,
	Message: String,
	StackTrace: String,
	Errors: 
	[
		{
			ErrorCode: String,
			FieldName: String,
			Message: String,
			Meta: 
			{
				String: String
			}
		}
	],
	Meta: 
	{
		String: String
	}
}