OpenAPI Download API

Examples

Intro

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.

Customer information

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)

Customer creation

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
}

Customer management

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}

Cart calculation

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,
   }
   ]
 }

Order creation

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{}

Product information

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
}

product search (webnodes)

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",
}

Stock information

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

Synchronization

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.

Other mappings with SOAP

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

Deprecated SOAP methods

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