The BookingGate can be reached via: http://bg.promaterial.com/api

 

upsertProduct

mutation m1 {
upsertProduct(product:{
proMaterialId: "<proMaterialId>"
productGateCode: "<productGateCode>"
distributionGateCode: "<distributionGateCode>"
distributionChannel: "<distributionChannel>"
productPrice: {
amount: 7.76
currency: "EUR"
taxDetails: {
taxType: VAT
taxAmount: 19
}
}
productOrderDetails:{
orderUnit: {
code: "QM-PIECE"
}
quantity: 1
}
email: "<email>",
clientNumber: "801754"
}){
shoppingCartId
creationDate
orderTotals {
totalOrderProducts
totalAmountNet
orderCurrency
}
products {
productOrderDetails {
orderUnit {
code
}
}
}
}
}

upsertProduct adds a product to the shopping cart and returns the new shopping cart.

If no shopping cart yet exists, leave the field shoppingCartId empty; a new shopping cart is created. Use the ID of this shopping cart to add more products.

You specify the product you want to add via the proMaterialId. If the product is already in the shopping cart, the old quantity is replaced by the new quantity.  The proMaterialId will be replaced by the productId in the future.

You need to provide productPrice; use the price you obtained via the pricesearch. We use the productPrice to check if the price the user saw in the frontend changed in the meantime.

productGateCode is an information that can be retrieved via productsearch.

distributionGateCode is the first part of the DistributionGate URL and can also be retrieved with the connectedDistributionGates query.

Add the ID of your distributionChannel  as returned by the connectedDistributionGate query. The ID is different for each DistributionGate.

productOrderDetails is optional. 

clientNumber und email are obligatory fields that can be retrieved via the getUser query.

deleteProduct

Delete a product by providing the shoppingCartId and the proMaterialId of the product. The new shoppingCart is returned.

Example:

mutation m2 {
deleteProduct(
shoppingCartId: "<shoppingCartId>"
proMaterialId: "<proMaterialId>"
){ shoppingCartId creationDate orderTotals { totalOrderProducts totalAmountNet orderCurrency } products { productOrderDetails { orderUnit { code } } } } }

 

shoppingCart

You can get shopping carts for a user using this query:

query q1 {
  shoppingCart(id:"<shoppingCartId>"){
    content {
      shoppingCartId
      creationDate
      orderTotals {
        totalOrderProducts
        totalAmountNet
        orderCurrency
      }
      products {
        shoppingCartId
        proMaterialId
        distributionChannel
        productPrice {
          amount
          currency
          taxDetails {taxType taxAmount}
        }
        productOrderDetails {
          orderUnit{
            code
            value
            unit
          }
          quantity
        }
        category
      }
    }
    
  }
}

The shoppingCartId is optional here. When you do not send it, you will get the latest shoppingCart that belongs to the user who is identified by the token you send. By default it always returns one. By using the page parameter, you can get other, older carts. For example this: page:{page:0 size: 5} would return the last five carts of the logged in user.