Http API: PlaceOrder, ValidateOrder, GetOrderTypes and GetDeliveryOptions

Http API: PlaceOrder, ValidateOrder, GetOrderTypes and GetDeliveryOptions

This article describes the PlaceOrder and ValidateOrder API calls.

The StatusCoode value is one of: Ok, Error , Warning , Information , Progress , Unauthenticated. An empty string is considered to be an Ok status.

Returned data format is “application/json”.

PlaceOrder

URI

/PlaceOrder

URL Structure

https://host/api/Order/PlaceOrder

HTTP Method

POST/PlaceOrder

Default format

JSON

Description

Signifikant will call the PlaceOrder function once user presses place order. Call will contain order and order line information.

JSON structure sample

RequestUri

https://host/API/Order/PlaceOrder?priceDisplayMode=GROSS&cultureCode=en-GB&UserName=xyx&UserId=xyz

Request

{ "Id": "0", "UserId": "2", "SalesOrigin": null, "Number": null, "CompanyInternalOrderNumber": null, "Title": "", "Description": null, "OrderLines": [ { "LineId": "9179f1e9-1c49-4929-b8eb-30bc4cd64374", "Part": { "Identifier": false, "Id": null, "PartNumber": "1234567891", "PersistentIdentity": null, "Name": { "ResolveMode": 1, "Value": "BACK PLATE", "Key": null, "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "Description": null, "SupplierPartNumber": "", "Brand": null, "IsKit": false, "QuantityUnit": null, "Properties": [] }, "Replacement": null, "ReplacedPart": null, "Quantity": 1.0, "QuantityDelivered": null, "QuantityUnit": { "ResolveMode": 1, "Value": null, "Key": null, "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "Note": null, "UnitPrice": 1853.4846, "TotalPrice": 1853.4846, "PriceInformations": [ { "Hidden": false, "Code": "BRUTTOPRICE", "Description": null, "ValueFormat": null, "Value": 2539.02, "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] }, { "Hidden": false, "Code": "ABSOLUTEDISCOUNT", "Description": null, "ValueFormat": "Discount {0:C}", "Value": 685.5354, "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] }, { "Hidden": false, "Code": "DISCOUNT", "Description": { "ResolveMode": 1, "Value": null, "Key": "Discount", "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "ValueFormat": "{0:0.##}%", "Value": 27.0, "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] } ], "TotalPriceInformations": [ { "Hidden": false, "Code": "SECIAL", "Description": { "ResolveMode": 1, "Value": "Special price", "Key": null, "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "ValueFormat": null, "Value": null, "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] } ], "Reference": null, "Context": { "Catalogue": "start", "PartModule": null, "CatalogueName": null, "PartModuleName": null }, "Availabiliy": { "PartNumber": "1234567891", "Code": "Available", "ReplacementCode": "ReplaceOutOfStock", "ValidationRules": null, "WarehouseStocks": [ { "Available": null, "Code": null, "Name": null, "Stock": 507.0, "StockDescription": null, "StockLevel": 0, "NextAvailabilityDate": null, "Default": false, "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] } ], "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] }, "StatusCode": "", "Message": null, "HtmlMessage": { "ResolveMode": 1, "Value": null, "Key": null, "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "Properties": [] } ], "OrderShipmentDetail": [], "CreatedOn": "2020-03-20T17:08:23.787", "PlacedDate": null, "OrderStatus": "AutoSaved", "OrderType": null, "SubTotalPrice": 1853.4846, "TotalPrice": 1903.4846, "TotalQuantity": 1.0, "Currency": null, "ShippingAddress": { "Id": "0", "Name": null, "IsTemporary": false, "Addressee": null, "IsDefault": false, "StreetAddress1": "MAKÖRGATAN 3", "StreetAddress2": null, "StreetAddress3": null, "State": null, "ZipCode": "136 44", "City": "HANDEN", "Country": "SE", "AddressType": null, "ReferenceId": "30093975", "RefernceType": null, "ReferencePersistentIdentity": "5637158926", "Properties": [] }, "BillingAddress": { "Id": "0", "Name": null, "IsTemporary": false, "Addressee": null, "IsDefault": false, "StreetAddress1": "MAKÖRGATAN 3", "StreetAddress2": null, "StreetAddress3": null, "State": null, "ZipCode": "136 44", "City": "HANDEN", "Country": "SE", "AddressType": null, "ReferenceId": "30093975", "RefernceType": null, "ReferencePersistentIdentity": "5637158926", "Properties": [] }, "DeliveryOption": "STD", "ReferencePerson": "Demo Demo", "ReferencePhoneNumber": null, "ConfirmationEmail": "info@signifikant.se", "Note": null, "PriceInformations": [ { "Hidden": false, "Code": "SHIP", "Description": { "ResolveMode": 1, "Value": "Shippment", "Key": null, "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "ValueFormat": null, "Value": 50.0, "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] } ], "CustomerNumber": "SE41-1033", "BillingAddressModifiedByCurrentUser": false, "ShippingAddressModifiedByCurrentUser": false, "StatusCode": "Ok", "Message": null, "HtmlMessage": { "ResolveMode": 1, "Value": null, "Key": null, "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "Properties": [ { "Key": "orderLineReference", "Value": "", "Type": null }, { "Key": "selectedShippingDate", "Value": "", "Type": null } ] }

 

Response

Response object contains a redirect URL and some additional information.

{ "RedirectUrl": "http://www.domain.com", "NotificationType": 0, "Order": { "Id": "0", "UserId": "2", "SalesOrigin": null, "Number": null, "CompanyInternalOrderNumber": null, "Title": "", "Description": null, "OrderLines": [ { "LineId": "9179f1e9-1c49-4929-b8eb-30bc4cd64374", "Part": { "Identifier": false, "Id": null, "PartNumber": "1234567891", "PersistentIdentity": null, "Name": { "ResolveMode": 1, "Value": "BACK PLATE", "Key": null, "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "Description": null, "SupplierPartNumber": "", "Brand": null, "IsKit": false, "QuantityUnit": null, "Properties": [] }, "Replacement": null, "ReplacedPart": null, "Quantity": 1.0, "QuantityDelivered": null, "QuantityUnit": null, "Note": null, "UnitPrice": 1853.4846, "TotalPrice": 1853.4846, "PriceInformations": [ { "Hidden": false, "Code": "BRUTTOPRICE", "Description": null, "ValueFormat": null, "Value": 2539.02, "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] }, { "Hidden": false, "Code": "ABSOLUTEDISCOUNT", "Description": null, "ValueFormat": "Discount {0:C}", "Value": 685.5354, "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] }, { "Hidden": false, "Code": "DISCOUNT", "Description": { "ResolveMode": 1, "Value": null, "Key": "Discount", "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "ValueFormat": "{0:0.##}%", "Value": 27.0, "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] } ], "TotalPriceInformations": [ { "Hidden": false, "Code": "SECIAL", "Description": { "ResolveMode": 1, "Value": "Special price", "Key": null, "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "ValueFormat": null, "Value": null, "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] } ], "Reference": null, "Context": { "Catalogue": "start", "PartModule": null, "CatalogueName": null, "PartModuleName": null }, "Availabiliy": { "PartNumber": "1234567891", "Code": "Available", "ReplacementCode": "ReplaceOutOfStock", "ValidationRules": null, "WarehouseStocks": [ { "Available": null, "Code": "", "Name": null, "Stock": 507.0, "StockDescription": null, "StockLevel": 0, "NextAvailabilityDate": null, "Default": false, "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] } ], "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] }, "StatusCode": "", "Message": null, "HtmlMessage": { "ResolveMode": 1, "Value": null, "Key": null, "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "Properties": [] } ], "OrderShipmentDetail": [], "CreatedOn": "2020-03-20T17:08:23.787", "PlacedDate": null, "OrderStatus": "AutoSaved", "OrderType": null, "SubTotalPrice": 1853.4846, "TotalPrice": 1903.4846, "TotalQuantity": 1.0, "Currency": null, "ShippingAddress": { "Id": "0", "Name": null, "IsTemporary": false, "Addressee": null, "IsDefault": false, "StreetAddress1": "MAKÖRGATAN 3", "StreetAddress2": null, "StreetAddress3": null, "State": null, "ZipCode": "136 44", "City": "HANDEN", "Country": "SE", "AddressType": null, "ReferenceId": "30093975", "RefernceType": null, "ReferencePersistentIdentity": "5637158926", "Properties": [] }, "BillingAddress": { "Id": "0", "Name": null, "IsTemporary": false, "Addressee": null, "IsDefault": false, "StreetAddress1": "MAKÖRGATAN 3", "StreetAddress2": null, "StreetAddress3": null, "State": null, "ZipCode": "136 44", "City": "HANDEN", "Country": "SE", "AddressType": null, "ReferenceId": "30093975", "RefernceType": null, "ReferencePersistentIdentity": "5637158926", "Properties": [] }, "DeliveryOption": "STD", "ReferencePerson": "Demo Demo", "ReferencePhoneNumber": null, "ConfirmationEmail": "info@signifikant.se", "Note": null, "PriceInformations": [ { "Hidden": false, "Code": "SHIP", "Description": { "ResolveMode": 1, "Value": null, "Key": "Shippment", "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "ValueFormat": null, "Value": 50.0, "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] } ], "CustomerNumber": "SE41-1033", "BillingAddressModifiedByCurrentUser": false, "ShippingAddressModifiedByCurrentUser": false, "StatusCode": "Ok", "Message": null, "HtmlMessage": null, "Properties": [ { "Key": "orderLineReference", "Value": "", "Type": null }, { "Key": "selectedShippingDate", "Value": "", "Type": null } ] }, "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] }

ValidateOrder

URI

/ValidateOrder

URL Structure

https://host/api/Order/ValidateOrder

HTTP Method

POST/ValidateOrder

Default format

JSON

Description

Signifikant will call the ValidateOrder function when user arrives in order page or changes content of order page. Depending on configuration ValidateOrder may be called when parts are added or removed from order cart and when user signs in. Call will contain order and order line information.

JSON structure sample

RequestUri

https://host/API/Order/ValidateOrder?validateReason={"Type":512,"AddedOrderLines":[], "DeletedOrderLines":[],"EditedOrderLines":[]}&priceDisplayMode=GROSS&UserName=xyz&UserId=xyz

Request/Response

Identical to PlaceOrder.

GetOrderTypes

URI

/GetOrderTypes

URL Structure

https://host/api/Order/GetOrderTypes

HTTP Method

GET/GetOrderTypes

Default format

JSON

Description

Signifikant will call the GetOrderTypes function when user signs in.

JSON structure sample

RequestUri

Url: https://host/Order/GetOrderTypes?cultureCode=en-GB&UserName=xyz

Response

{ "Types": [ { "Code": "Day", "Description": { "ResolveMode": 1, "Value": "Day order", "Key": null, "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "TemporaryShippingAddressEnabled": false, "TemporaryBillingAddressEnabled": false, "Permissions": [], "PermissionGroups": [], "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] }, { "Code": "Pre", "Description": { "ResolveMode": 1, "Value": "Pre-season", "Key": null, "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "TemporaryShippingAddressEnabled": false, "TemporaryBillingAddressEnabled": true, "Permissions": [], "PermissionGroups": [], "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] }, { "Code": "Std", "Description": { "ResolveMode": 1, "Value": "Standard", "Key": null, "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "TemporaryShippingAddressEnabled": true, "TemporaryBillingAddressEnabled": false, "Permissions": [], "PermissionGroups": [], "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] } ], "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] }

 

GetDeliveryOptions

URI

/GetDeliveryOptions

URL Structure

https://host/api/Order/GetDeliveryOptions

HTTP Method

POST/GetDeliveryOptions

Default format

JSON

Description

Signifikant will call the GetDeliveryOptions function at the same time as validating the order.

JSON structure sample

RequestUri

Url: https://host/API/Order/GetDeliveryOptions?cultureCode=en-GB&UserName=sign

Request

{ "Id": null, "UserId": "xyz", "SalesOrigin": null, "Number": null, "CompanyInternalOrderNumber": null, "Title": null, "Description": null, "OrderLines": [ { "LineId": "20b33909-499e-4732-b4e5-f9626a8b8ba1", "Part": { "Identifier": false, "Id": 6307, "PartNumber": "484305", "PersistentIdentity": null, "Name": { "ResolveMode": 1, "Value": "Disc", "Key": null, "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "Description": { "ResolveMode": 1, "Value": null, "Key": null, "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "SupplierPartNumber": null, "Brand": null, "IsKit": false, "QuantityUnit": { "ResolveMode": 1, "Value": null, "Key": null, "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "Properties": [] }, "Replacement": null, "ReplacedPart": null, "Quantity": 10.0, "QuantityDelivered": null, "QuantityUnit": null, "Note": null, "UnitPrice": 7.885, "TotalPrice": 70.965, "PriceInformations": [ { "Hidden": false, "Code": "GROSS", "Description": null, "ValueFormat": null, "Value": 8.3, "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] }, { "Hidden": false, "Code": "DISCOUNT", "Description": { "ResolveMode": 1, "Value": null, "Key": "Discount", "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "ValueFormat": "{0:0.##}%", "Value": 5.0, "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] } ], "TotalPriceInformations": [ { "Hidden": false, "Code": "SECIAL", "Description": { "ResolveMode": 1, "Value": "Special price", "Key": null, "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "ValueFormat": null, "Value": null, "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] }, { "Hidden": false, "Code": "MANY", "Description": { "ResolveMode": 1, "Value": "> 1 unit, 10% discount", "Key": null, "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "ValueFormat": null, "Value": null, "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] } ] } ], "OrderShipmentDetail": [], "CreatedOn": "0001-01-01T00:00:00", "PlacedDate": null, "OrderStatus": null, "OrderType": null, "SubTotalPrice": 447936.21015, "TotalPrice": 447986.21015, "TotalQuantity": 293.0, "Currency": null, "ShippingAddress": { "Id": "1084866395", "Name": null, "IsTemporary": null, "Addressee": "xyz", "IsDefault": false, "StreetAddress1": "Street", "StreetAddress2": "", "StreetAddress3": "", "State": "AB", "ZipCode": "123456", "City": "City", "Country": "SE", "AddressType": null, "ReferenceId": "1084866395", "RefernceType": null, "ReferencePersistentIdentity": "1084866395", "Properties": [] }, "BillingAddress": null, "DeliveryOption": null, "ReferencePerson": "Doe", "ReferencePhoneNumber": null, "ConfirmationEmail": "info@domain.com", "Note": null, "PriceInformations": [ { "Hidden": false, "Code": "SHIP", "Description": { "ResolveMode": 1, "Value": null, "Key": "Shippment", "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "ValueFormat": null, "Value": 50.0, "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] } ], "CustomerNumber": null, "BillingAddressModifiedByCurrentUser": false, "ShippingAddressModifiedByCurrentUser": false, "ValidExpire": "2020-05-19T21:38:22.6471117+02:00", "StatusCode": "OK", "Message": null, "HtmlMessage": null, "Properties": [] }

Response

 

{ "Options": [ { "Id": "STD", "Description": { "ResolveMode": 1, "Value": "Standard", "Key": null, "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "Available": true, "EstimatedDeliveryTime": null, "EstimatedDeliveryTimeSpan": null, "DeliveryTimeText": null, "Permissions": [], "PermissionGroups": [], "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] }, { "Id": "EXPRESS", "Description": { "ResolveMode": 1, "Value": "Express", "Key": null, "Id": null, "PersistentIdentity": null, "Translations": null, "HtmlEncode": false }, "Available": true, "EstimatedDeliveryTime": null, "EstimatedDeliveryTimeSpan": null, "DeliveryTimeText": null, "Permissions": [], "PermissionGroups": [], "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] } ], "StatusCode": "", "Message": null, "HtmlMessage": null, "Properties": [] }

Configuration

Configuration is done in profile.config.

Note that sales statistics will need orders to be saved in server database. This is configured by using save-external-order-to-server-database="true".

 

<!-- Validate and Place are both configured in the PlaceOrder provider in version 4.5 --> <PlaceOrderProvider> <!-- From version 5 it is possible to include the user's permissions in the API call. Only permissions or permission-groups listed in the provider will be included in the call --> <RESTPlaceOrderProvider save-external-order-to-server-database="false" delete-old-trace-log-after-number-of-folder="30" trace-folder="D:\Temp\Trace-logs\" url="https://host/API/" permissions="internal,partner" permission-groups="exclusive"/> </PlaceOrderProvider> <!-- In version 5.0 and later ValidateOrder is separated from PlaceOrder --> <!-- AlwaysValidate=true will trigger validation when part is added to order and when arriving at order page. --> <!-- validation-expire-time="10" is how long a validation is cached. A new validation within this time (in seconds) will not cause a roundtrip to REST. Default is 30s. --> <ValidateOrderProvider> <!-- From version 5 it is possible to include the user's permissions in the API call. Only permissions or permission-groups listed in the provider will be included in the call --> <RESTValidateOrderProvider always-validate="true" validation-expire-time="10" delete-old-trace-log-after-number-of-folder="30" trace-folder="D:\Temp\Trace-logs\" url="http://host/API/" permissions="internal,partner" permission-groups="exclusive"/> </ValidateOrderProvider>