On this page you can find example requests for the most common use cases. There are also references to the methods which were available in our older SOAP webservices (called ShopServices). This should make it easier to convert code from using the SOAP services to these newer REST services.
The easiest way to find specific mappings for the SOAP services is to search for the method name on this page, for example 'Product_Get'.
Before using these example requests make sure you understand the basics which can be found here. All these examples should be edited to your specific needs using the 'resource selection' en 'resource expansion' principles.
Use the Openapi specifications, or this page to see which fields can be retrieved and which resources can be expanded.
ShopServices: Customer_Get, WebShop_Validated_Customer_GetByEmailAddress, Customer_GetBonusPoints, WebShop_Validated_Customer_GetByCardID,Loyalty_Cards_GetBalance
Retrieve a customer full name by customer id. Also include addresses and contacts
GET api/customers/{id}?fields=firstName,lastName,middleName&expand=addresses(type,street,houseNumber,city,postalCode),contacts(gender,lastName)
Retrieve a customer id by customer or contact email address. Also include specific customerfields.
GET api/customers/email/{email}?fields=id&expand=fields(code,value)&fieldCodes=fieldCode1&fieldCodes=fieldCode2
Retrieve a customer full name by customer card number.
GET api/customers/card/{cardNumber}?fields=firstName,lastName,middleName
Retrieve a customers total bonuspoints by customerId. Also include the points per cardNumber.
GET api/customers/{id}?fields=totalBonusPoints&expand=cards(number,totalBonusPoints)
ShopServices: Customer_new
Create a new customer with an address
POST api/customers
{
"birthDate": "1966-07-30T00:00:00.000Z",
"customerGroupId": 1,
"email": "janedoe@mail.com",
"firstName": "Jane",
"gender": "Female",
"initials": "J",
"isOptIn": true,
"lastName": "Doe",
"registered": true,
"storeId": 1,
"addresses": [
{
"street": "Vlasakker",
"houseNumber": "5",
"postalCode": "1234AA",
"city": "Montfoort",
"countryCode": "NL",
"type": "Default",
}
],
"cards": [
{
"number": "12345678",
"validUntilDate": "2030-01-01T00:00:00.000Z"
}
],
"storeSettings": [
{
"storeId": 1,
"allowOnAccount": true,
"creditLimit": 1000
}
]
}
Create a new company with contact and invoice address
POST api/customers
{
"coCNumber": "12345",
"coCEstablishmentNumber": "67890",
"companyName": "Acme",
"companySizeCode": "08",
"companyTypeCode": "BV",
"customerGroupId": 1,
"email": "info@acme.com",
"gender": "Company",
"isOptIn": true,
"registered": true,
"storeId": 1,
"addresses": [
{
"street": "Vlasakker",
"houseNumber": "5",
"postalCode": "1234AA",
"city": "Montfoort",
"countryCode": "NL",
"type": "Invoice",
"phoneNumber": "0123456789"
}
],
"contacts": [
{
"allowOnAccount": true,
"email": "johndoe@acme.com",
"firstName": "John",
"gender": "Male",
"initials": "J",
"lastName": "Doe",
"isOptIn": true,
}
]
}
Add customer field FieldX to customer 1
POST api/customer-fields
{
"language": "NL",
"code": "FieldX",
"value": "MyValue",
"customerId": 1,
"storeId": 1
}
ShopServices: Customer_update, Customer_Update2, Customer_SetOptIn, Customer_SetRemarks
Update customer OptIn and mobile number
PATCH api/customers/{id}
{
"isOptIn": true,
"mobileNumber": "0611223344"
}
Update contact last name and notes
PATCH api/customer-contacts/{id}
{
"lastName": "Doe",
"memo": "my note for ms. Doe"
}
Update customer settings for store 5
PATCH api/customers/{id}/store-settings/5
{
"storeMemo": "Note on store 5",
"lastVisitDate": "2020-07-16T09:57:09.778Z"
}
Add an extra address to existing customer 1
POST api/customer-addresses
{
"type": "deliveryAddress1",
"street": "Vlasakker",
"houseNumber": "5",
"houseNumberExtension": "A",
"postalCode": "1234AA",
"city": "Montfoort",
"countryCode": "NL",
"phoneNumber": "0352837777",
"customerId": 1,
"memo": "Entrance on the left",
}
Delete a specific customer field
DELETE api/customer-fields/{id}
ShopServices: Cart_Calculate
Calculate the discounts when customer 1 is buying product 1 once and product 2 three times.
api/carts/Calculate
{
"fields": "totalInclTax,totalExclTax,discountAmountInclTax",
"expand": "lines(productId,priceInclTax,totalInclTax,discountAmountInclTax,discountPercentage)",
"customerId": 1,
"lines": [
{
"id": 1,
"productId": 1,
"quantity": 1,
},{
"id": 2,
"productId": 2,
"quantity": 3,
}
]
}
ShopServices: Order_Create, Order_AddPayment, Order_Commit, OrderShipment_GetAll, PaymentType_GetAll
Create a pre-order for customer 1 on store 2, ordering product 3 one time
POST api/customer-orders
{
"customerId": 1,
"storeId": 2,
"shipmentTypeId": 1
"isDeliveryOrder": true,
"delivery_Street": "Long street",
"delivery_HouseNumber": "1200",
"delivery_HouseNumberExtension": "B",
"delivery_PostalCode": "1234AB",
"delivery_City": "Amsterdam",
"delivery_CountryCode": "NL",
"delivery_PhoneNumber": "0611223344",
"orderLines": [
{
"lineNr":1,
"productId": 3,
"quantity": 1
}
]
}
Retrieve the available shipment types which you'll need to create an order. These values can be cached.
api/customer-orders/shipment-types?fields=id,description
Retrieve the payment methods which are marked to use in the webshop. These values can be cached.
api/payment-methods?fields=id,code,paymentCosts&paymentMethodTags=webshop
Add a payment of 10 euro to order 1
POST api/customer-order-payments
{
"customerOrderId": 1,
"amount": 10,
"paymentMethodId": 2
}
Commit order 1 to finalize the order
POST api/customer-orders/{id}/Commit{}
ShopServices: Product_Get, Product_GetByCode, Products_GetByID, Product_GetConnectedProducts, ProductPrice_Get, ProductPricings_Get
Retrieve a product description and number by product id. Also include discount price
GET api/products/{id}?fields=number,description&expand=discount(priceInclTax)
A product has multiple price, see this faq to understand which different prices are available.
Retrieve a product description and id by product number. Also include brand description and images
GET api/products/number/{number}?fields=id,description&expand=brand(description),images(type,url)
Retrieve a product description and id by product scancode/barcode. Also include productgroup description and code. Retrieve the german description if available
GET api/products/scancode/{scancode}?fields=id,description&expand=productgroup(description,code)&locale=de-DE
Retrieve multiple product description and number by product ids. Also include memos
GET api/products/ids?ids=1&ids=2&ids=3&fields=number,description&expand=memos(memoType,text)
Retrieve all connected products marked as 'replacement' or 'same'
GET api/product-connections?productId=1&fields=isActive,type&expand=product(id,description)
Base filters
The base filters should by set by the application and define the subset of products the end-user is allowed to see.
The "filters" parameter is designed to let the end-users narrow down the search results further as they wish.
Given that the root web node id for a webshop is 123, a webshop could set the following values to scope the product catalog:
POST api/products/Search
{
"query": "",
"fields": "id,description",
"productStates": [ "Active" ],
"productTypes": [ "Product", "Matrix" ],
"webNodeIds": [ 123 ],
"webNodeIsActive": true
}
Search index fields and capabilities
The field names you provide to the "fields" and "expand" parameters are the same as they are for all other product endpoints.
The field names you can provide to the rest of the search request however, are different fields.
A full list of the search fields and their capabilities is available at GET api/products/search-field-capabilities
Field capabilities:
Search (query)
Provide a query, or leave the query empty to get all products. Besides query, you can provide specific fields to search.
boost will determine the weight of the field in the search results.
usePrefixMatching/useSuffixMatching will enable starts-with/ends-with matching for the field if available.
A webshop search might look like this:
POST api/products/Search
{
"query": "foo",
"fields": "id,onlineDescription",
"searchFields": [
{ "name": "scanCode", "boost": 10 },
{ "name": "productNumber", "boost": 10 },
{ "name": "onlineDescription", "boost": 10, "usePrefixMatching": true, "useSuffixMatching": true },
{ "name": "brand", "boost": 5 },
{ "name": "memos_internetmemo", "boost": 1 }
]
}
Default search fields if there are no fields specified in the request, the following fields are added to the request:
Field capabilities These parameters only apply when a field has been configured to allow them to be. You can see this in the field-capabilities endpoint.
Facets
You can request facets to display to the user. This allows the user to narrow down the results by selecting additional filters.
Do not request more facets than you can fit in the UI, but load additional facets on demand instead. This will improve performance.
POST api/products/Search
{
"query": "",
"limit": 0,
"facets": [
{ "terms": { "field": "webNodes", "size": 5 }},
{ "terms": { "field": "brand", "size": 5 }},
{ "terms": { "field": "group", "size": 5 }},
{ "terms": { "field": "subgroup", "size": 10 }},
{ "stats": { "field": "priceExclTax" }}
]
}
default facets if there are no facets specified in the request, the following facets are added to the request:
Filter - terms
These will typically be the filters the user selects from the facets you provide in the UI.
POST api/products/Search
{
"query": "",
"fields": "id,description",
"filters": [
{ "terms": { "field": "brand", "values": [ "Nike" ] }},
{ "terms": { "field": "size", "values": [ "32", "33" ]}}
]
}
Filter - range
A webshop might provide a price range filter/slider:
POST api/products/Search
{
"query": "",
"fields": "id,description",
"filters": [
{ "doubleRange": { "field": "priceExclTax", "greaterThanOrEqual": 0, "lessThanOrEqual": 100 }}
]
}
Sorting
Results are sorted by relevance (to the query) by default.
You can provide one or more custom fields to sort by, where multiple fields will behave like "then by".
"relevance" is a special field name you can use here. The sort order for relevance should be Descending as the highest relevance should come first.
POST api/products/Search
{
"query": "",
"fields": "id,description",
"sortFields": [
{ "name": "relevance", "sortOrder": "Descending" },
{ "name": "description", "sortOrder": "Ascending"}
]
}
Sorting - webNodeRecordSortOrder
webNodeRecordSortOrder can be provided as a special sort field name.
This will order the products by their sort order under a specific web node. Note that this will only make sense when you show products from a single node.
POST api/products/Search
{
"query": "",
"fields": "id,description",
"webNodeIds": [ 999 ]
"webNodesIsActive": true,
"sortFields": [
{ "name": "webNodeRecordSortOrder", "sortOrder": "Ascending" }
]
}
Note that using the webNodeIds parameter will include child nodes as well.
If the target node has children, you can add the node as a terms filter. This will filter out the child products:
POST api/products/Search
{
"query": "",
"fields": "id,description",
"filters": [{ "terms": { "field": "webNodes", "values": [ "Books top 100" ] }}]
"webNodeIds": [ 999 ]
"webNodesIsActive": true,
"sortFields": [
{ "name": "webNodeRecordSortOrder", "sortOrder": "Ascending" }
]
}
Suggest - type-ahead
The suggest endpoint can be used to get type-ahead suggestions.
Currently the minimum length of the query is 3, shorter queries will return an empty result.
Custom fields and boosts can be provided, just like the search endpoint. The same base filters should be applied as well.
The number of fields should be as small as possible and the fields should have unique values, there is no point in using brand or group here.
POST api/products/Suggest
{
"query": "een",
"typeAheadLimit": 10,
"typeAheadSearchFields": [
{ "name": "description", "boost": 1 }
]
}
Suggest - products
The suggest endpoint can also return suggested products based on the query. (or both)
POST api/products/Suggest
{
"query": "een",
"fields": "id,description",
"productsLimit": 3,
"productSearchFields": [
{
"name": "description",
"boost": 1,
"usePrefixMatching": true,
"useSuffixMatching": true
}
],
"typeaheadlimit": 0
}
ShopServices: Product_GetAllBySearch, Search, Search_ApplyFilters, Search_CreateSet, Search_CreateSetNodes, Search_GetFilterDescriptions, Search_GetFilters, Search_GetPage, Search_GetSuggestions, Search_Sort
Search for 'shoe', within webnode 1 and child nodes, include the original price and the current discount price. Do not load filter options
POST api/web-nodes/ProductsSearch
{
"fields": "id,code,description,priceInclTax",
"expand": "discount(priceInclTax)",
"offset": 0,
"limit": 10,
"webNodeId": 0,
"includeChildWebNodes": true,
"includeTotalResultCount": false,
"searchText": "Shoe",
"sorting": "Relevance",
"sortOrder": "Descending",
"loadFacets": false,
"facetLimit": 0,
}
Search for 'shoe' in any web node, include filters with a maximum of 10 possible options per filter.
POST api/web-nodes/ProductsSearch
{
"fields": "id,code,description,priceInclTax",
"expand": "discount(priceInclTax)",
"offset": 0,
"limit": 10,
"includeTotalResultCount": true,
"searchText": "Shoe",
"sorting": "Relevance",
"sortOrder": "Descending",
"loadFacets": true,
"facetLimit": 10,
}
Get suggestions for 'shoe', also include 5 first products that match current search text.
POST api/web-nodes/ProductsSuggest
{
"productsLimit": 5,
"searchText": "Shoe",
}
ShopServices: Product_GetStockLevels,Products_GetStockLevels
Get all available stocks per storeId for multiple products.
GET api/products/ids?ids=1&ids=2&ids=3&expand=stockinfo(availableQuantity,storeId)&fields=number,description
Get the available stocks for the stores with code M001 and M005 for a specific product.
GET api/products/{id}/stock-info?fields=storeId,availableQuantity&stockStoreCodes=M001&stockStoreCodes=M005
ShopServices: ProductXml_Get, ProductStatesXml_Get
First time synchronizing web nodes, retrieve the first 50 changes
GET api/sync/web-nodes?fields=id,code,description,status&limit=50
To retrieve the next changes include the token you receive in the response header X-Sync-Token.
GET api/sync/web-nodes?fields=id,code,description,status&limit=50&token=202001011100000000|1
First time synchronizing web node records (link between web node and product), retrieve the first 50 changes
GET api/sync/web-node-records?fields=isDeleted,relatedId,webNodeId,status&limit=50
To retrieve the next changes include the token you receive in the response header X-Sync-Token.
GET api/sync/web-node-records?fields=isDeleted,relatedId,webNodeId,status&limit=50&token=202001011100000000|1
First time synchronizing products with productfields, retrieve the first 50 changes
GET api/sync/web-products?fields=id,number,description&expand=fields(code,description)&limit=50
To retrieve the next changes include the token you receive in the response header X-Sync-Token.
GET api/sync/web-products?fields=id,number,description&expand=fields(code,description)&limit=50&token=202001011100000000|1
Retrieve changed products and include descriptions in all languages
GET api/sync/web-products?fields=id,number,description&expand=translations(propertyName,language,value)&limit=50&token=202001011100000000|1
First time synchronizing stock changes, retrieve the first 50 changes
GET api/sync/web-products-stock-info?fields=id,isDeleted,availableQuantity,storeId,productId&limit=50
To retrieve the next changes include the token you receive in the response header X-Sync-Token.
GET api/sync/web-products-stock-info?fields=id,isDeleted,availableQuantity,storeId,productId&limit=50&token=202001011100000000|1
Retrieve changed stocks but only for stores M001 and M005
GET api/sync/web-products-stock-info?fields=id,isDeleted,availableQuantity,storeId,productId&limit=50&token=202001011100000000|1&stockStoreCodes=M001&stockStoreCodes=M005
You can search on brands, how will be explained below.
Use the SearchQuery field to search in Brand Description and Code.
Fields you can filter and sort on:
| Name | Type | Sortable | Filterable |
|---|---|---|---|
| Id | number | yes | no |
| Description | number | yes | no |
| Code | number | yes | no |
| BonusPointsAllowed | boolean | yes | yes |
| VisibleInWebshop | boolean | yes | yes |
| DiscountAllowed | boolean | yes | yes |
| VisibleInLists | boolean | yes | yes |
| BonusPointsFactor | number | yes | yes |
| BonusPointsFactorStartDate | date | yes | yes |
| BonusPointsFactorEndDate | date | yes | yes |
| PriceFactor | number | yes | yes |
| PriceRounding | number | yes | yes |
| CreationDate | date | yes | yes |
| LastModifiedDate | date | yes | yes |
| PreferredSupplierId | integer | yes | no |
Available operators:
| IsLessThan |
| IsLessThanOrEqualTo |
| IsEqualTo |
| IsNotEqualTo |
| IsGreaterThanOrEqualTo |
| IsGreaterThan |
| IsNull |
| IsNotNull |
| In (Works like a "contains" operator. Allows you to pass a list of values separated by commas. Only supported for number fields) |
Search request
{
"searchRecords": [
{
"fieldName": "Description",
"value": "test"
"operator": "IsEqualTo"
}
],
"searchQuery": "ExampleBrand"
"orderBy": "Description",
"orderByDirection": "ASC”,
"limit": 10,
"offset": 0,
"storeId": 24,
"fields": "",
"expand": "",
"locale": "nl"
}
Additional notes Expands/fieldselection are available. Send null if you don't need them.
This section show an overview of mappings between other SOAP requests to REST requests
| SOAP / Shopservices | REST | Remarks |
|---|---|---|
| Cart_Import | POST api/product-selections | A request per product, productSelection-type 'OpenShoppingBasket' can be used |
| CB_IsEbookAvailable | POST api/books/CheckAvailabilityCB | |
| CB_Physical_Stock | POST api/books/GetPhysicalStockCB | |
| Customer_Address_Delete | DELETE api/customer-addresses/{id} | |
| Customer_ChangePassword Customer_ChangePasswordWithKey |
POST api/customers/{id}/ChangePassword POST api/customer-contacts/{id}/ChangePassword |
|
| Customer_Check Customer_Check_GetAll |
POST api/company-info/FindEstablishments | |
| Customer_CheckEvlVouchers | GET api/vouchers?customerId=1 | |
| Customer_CheckProductSelectionProducts | DELETE api/product-selections/{id} | The shopservices automatically deleted products which no longer had active web nodes. In REST you can check for active webnodes per product yourself. Property 'hasActiveWebNodes' |
| Customer_Get_History | GET api/transactions?customerId=1&fields=date,type,amountInclTax&expand=records(productId,productQuantity,amountInclTax)&startDate=2020-01-01&endDate=2020-01-14 | |
| Customer_Get_ProductCountOrdered | GET api/products/{id}/order-history?fields=orderCount | |
| Customer_Get_ProductHistory | GET api/customer-order-lines?customerIds=1&customerIds=2&productIds=1&productIds=2&fields=quantity,previouslyDeliveredQuantity&expand=customerOrder(orderNumber,orderDate,remarks) | |
| Customer_GetAgents | GET api/customers/{id}/store-settings?fields=RepresentativeGroupUserId&expand=RepresentativeGroupUser(firstName,lastName) | |
| Customer_GetCreditLine | GET api/customers/{id}?fields=code&expand=financialData(allowOnAccount,creditLimit,creditBalance) | |
| Customer_GetDashboardInformation | GET api/customer-contracts GET api/transactions?customerId=1&startDate=X&endDate=Y&status=committed&fields=amountInclTaxGET api/customers/{id}?expand=fields&fields=firstName,LastName&fieldCodes=SBICode&fieldCodes=RevenueThisYear&fieldCodes=RevenueLast4Weeks&fieldCodes=RevenueLastYearGET api/customer-events?customerId=1&eventTypes=visit&field=creationDatePOST api/transactions/AggregateGET api/customer-orders?fields=statusDetail&startDate=X&endDate=Y |
This method was a collection of different statistics which can be retrieved with the above endpoints and different filters. Caching is advised, because dashboard typically are visited often and show lots of different data |
| Customer_GetEntryInformation | GET api/customers/card/{cardNumber}?fields=id,firstName,lastName | SOAP requests also retrieved information about orders, vouchers and groupUsers. The following endpoints can be used for that info; api/customer-orders, api/vouchers, api/group-users, api/group-users/ValidatePinCode, api/group-users/{id}/image/download |
| Customer_GetInterests | GET api/customer-interests?customerId=1&fields=code,description | |
| Customer_GetRemarks | GET api/customers/{id}?fields=storeMemo | |
| Customer_GetTransactions | GET api/transactions?customerId=1&fields=date,type,amountInclTax&startDate=2020-01-01&endDate=2020-01-14 | |
| Customer_GetVouchers | GET api/vouchers?customerId=1 | |
| Customer_Login Customer_Login_v2 |
POST api/customers/Validate | |
| Customer_MoveCard | POST api/customer-cards/{id}/Move | |
| Customer_SelectAllByInterests | GET api/customer-interests?interestCodes=code1&fields=customerId&expand=customer(email) | |
| Customer_SendMail | POST api/mails POST api/mails/{id}/Send |
|
| Customer_SetInterests | POST api/customer-interests | |
| Customer_ValidateProduct | GET api/product-fields?productId=1&fieldCodes=publicationcode GET api/customer-fields?customerId=1&fieldCodes=publicationcode |
|
| CustomerCard_Update | PATCH api/customer-cards/{id} | |
| CustomerContact_ValidatePincode | POST api/customer-contacts/{id}/ValidatePinCode | |
| CustomerEvent_Put | POST api/customer-events | |
| CustomerGroup_GetAll | GET api/customer-groups?fields=id,description | |
| Customers_CheckCardRegister | GET api/customers/card/{cardNumber}?fields=id,registered,defaultStoreId,email&expand=addresses(street,postalCode,city,type) | |
| Customers_GetBirthDays | GET api/customers?birthDate=01-01-2000&fields=firstName,lastName | |
| Customers_Search | POST api/customers/Search | |
| Discount_GetDaily | GET api/discounts?category=MixMatch&flyerCode=X&fields=id,description,ticketDescription,startDate&expand=images(url) | To retrieve the products within the found discount, the endpoint api/discount-records?discountId=1 can be used |
| DiscountsXml_Get | GET api/discounts GET api/discount-records |
|
| Favourite_Insert | POST api/product-selections | Set property 'type' to 'Favorite' |
| Favourites_GetAllByCustomer | GET api/product-selections?customerId=1&types=Favorite&fields=productId | |
| Geo_GetAddress | POST api/locations/FindAddress | |
| Geo_GetStoresInRange | POST api/stores?fields=id,code&expand=location&distanceFromLatitude=52.0472179&distanceFromLongitude=4.9363009&limit=50&storeTags=webshop | |
| GetSettings | GET api/customers/{id}/store-settings&names=x&names=y | |
| Giftcard_GetInfo | POST api/gift-cards/{serialNumber}/GetInfo | |
| Giftcard_Load | POST api/gift-cards/{serialNumber}/Reload | |
| Giftcard_Pay | POST api/gift-cards/{serialNumber}/Pay | |
| Invoice_Get | GET api/customer-invoices/{id}?fields=date,totalAmount,openAmount GET api/customer-invoices/{id}/download |
|
| Invoice_GetAllByCustomer | GET api/customer-invoices?customerId=1&fields=date,totalAmount,openAmount | |
| Loyalty_CardTransactions_Get | GET api/customer-card-transactions?cardId=1&fields=mutationDate,originalPoints,newPoints | |
| Mail_Put | POST api/mails | |
| MasterTable_Get | GET api/customers/company-sizes GET api/customers/company-types |
|
| Notification_Register | POST api/push-notifications/registrations | |
| Notification_Unregister | DELETE api/push-notifications/registrations/{registrationId} | |
| Order_Cancel | POST api/customer-orders/{id}/Cancel | |
| Order_Get | GET api/customer-orders/{id}?field=orderDate,customerId&expand=orderlines(productId,quantity) | |
| Order_GetAllByCustomer | GET api/customer-orders?customerId=1&startDate=2020-01-01&endDate=2020-01-15&fields=orderNumber,isDeliveryOrder,remarks | |
| Orders_Search | GET api/customer-orders?&lastModifiedStartDate=2020-01-01&orderTypes=InternetOrder&orderTypes=Normal&fields=orderNumber,isDeliveryOrder,remarks,type | |
| PaymentType_GetAll | GET api/payment-methods?paymentMethodTags=webshop&fields=id,code,paymentCosts | |
| PriceList_GetAll | GET api/price-lists?fields=id,description | |
| Product_DecisionTree_Get | GET api/products/{id}/configuration-options | |
| ProductBrand_GetAll | GET api/brands?fields=id,description | |
| ProductGroup_GetAll | GET api/product-groups?fields=id,description | |
| ProductGroup_GetAllByParent | GET api/product-subgroups?fields=id,description | |
| ProductPricings_Get | GET api/product-pricings | |
| Project_Put | POST api/projects | |
| Projects_Get | GET api/projects?fields=id,name,customerId | |
| SecurityLog_Put | POST api/security-calls | |
| StartSession | POST connect/token | OAuth client credentials |
| Store_Get | GET api/stores/{id}?field=code,name&expand=openingtimes | |
| Store_GetAll Store_GetStoreNamesSelection |
GET api/stores?fields=id,code,name,city | |
| WebCustomerProductSelection_Put | POST api/product-selections | |
| WebCustomerProductSelections_Delete | DELETE api/product-selections/{id} | |
| WebCustomerProductSelections_Get WebCustomerProductSelectionsWithDetails_Get |
GET api/product-selections?fields=id,customerId,quantity&expand=Product(id,code,description) | |
| WebLog | POST api/web-logs | |
| WebNode_Get | GET api/web-nodes/{id}?fields=id,code,description | |
| WebNode_GetProductIDs WebNodeRecords_GetRelatedProducts |
GET api/web-nodes/{id}/products?fields=id,code,description | |
| WebNodes_Get | GET api/web-nodes?fields=id,code,description | |
| WebSettings_Get | GET api/customers/{id}/store-settings?names=setting1&names=setting2 | |
| WebShopReview_Insert | POST api/product-reviews | |
| WebShopReviews_GetAllByProduct | GET api/product-reviews?productId=1&fields=rating,content | |
| WebTree_Get | GET api/web-nodes | WebTree_Get also included authentication, this should be done through endpoint connect/token |
This section show an overview of SOAP requests which are no longer available.
| SOAP / Shopservices | Remarks |
|---|---|
| Country_GetAll | We use ISO 3166 2-digit country codes which can be cached or retrieved from your own data source |
| Customer_ResetPassword Customer_ResetPasswordSendLink Customer_SetPasswordByEmailAddress |
Logic to reset a password should be implemented by the calling party. Endpoint api/customers/{id}/ChangePassword can be used to directly change the password. |
| Entities_Get, Entity_Put | No longer used, use api/projects |
| FavouriteStatus_GetAll | ProductSelections can be used to manage favorites, these also have a state field. |
| GetTopProducts | 'Top' products can be managed in a productSelection or a web-node. In accordance, endpoints api/product-selections or api/web-nodes/{id}/products can be used to retrieve them |
| Giftcard_Authenticate Giftcard_Cancel Giftcard_Logoff |
Separate requests no longer needed, use the other gift-card requests |
| GiftLists_Get | ProductSelections can be used to manage a gift list. |
| Language_GetAll | Localization |
| ProductConnectionType_GetAll | Fixed list of types which can be found here |
| ValidateSession | You can decode the OAuth token yourself and check if it's still valid. By default tokens are valid for 24 hours |
| WebShopReviewStatus_GetAll | Fixed list of statuses which can be found here |