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>