# Interface: CommerceConnector

## connectors/interfaces.CommerceConnector

A generic interface for API based or web-scraping ecommerce Connectors.

Source:
  - connectors/interfaces.js, line 9

### Methods

#### addCartItem(cart, cartItem, opts) → {Promise.<module:types.Cart>}

Adds a cart item to cart.

##### Parameters:

Name | Type | Description
--- | --- | ---
`cart` | module:types.Cart | The cart to add the cart item to.
`cartItem` | module:types.CartItem | The cart item to add.
`opts` | Object |

Source:
  - connectors/interfaces.js, line 214

##### Returns:

Type
  Promise.<module:types.Cart>

#### addCouponEntry(cart, couponEntry, opts) → {Promise.<module:types.Cart>}

Add a coupon to the cart by it's code.

##### Parameters:

Name | Type | Description
--- | --- | ---
`cart` | module:types.Cart | The customer's cart.
`couponEntry` | Object | The coupon.
`opts` | Object | Options object.

Source:
  - connectors/interfaces.js, line 362

##### Returns:

Type
  Promise.<module:types.Cart>

#### createCart(oldCcart, optsopt) → {Promise.<module:types.Cart>}

Creates a new cart with an optional cart object.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`oldCcart` | module:types.Cart |  | The cart you'd like to migrate to the new cart
`opts` | Object | <optional> | object

Source:
  - connectors/interfaces.js, line 180

##### Throws:

Could not create cart.

##### Returns:

Type
  Promise.<module:types.Cart>

#### createOrder(cart, opts) → {Promise.<module:types.Order>}

Create a new order using a given cart.

##### Parameters:

Name | Type | Description
--- | --- | ---
`cart` | module:types.Cart | The customer's cart.
`opts` | Object |

Source:
  - connectors/interfaces.js, line 321

##### Returns:

.

Type
  Promise.<module:types.Order>

#### deleteCart(cartId, optsopt)

Deletes the given cart

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`cartId` | String |  | The id of the cart you want to delete.
`opts` | Object | <optional> | object

Source:
  - connectors/interfaces.js, line 203

##### Throws:

Could not delete cart.

#### getCart(cartId, optsopt) → {Promise.<module:types.Cart>}

Retrieve cart by id.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`cartId` | String |  | The id of the cart you want to retrieve
`opts` | Object | <optional> | object

Source:
  - connectors/interfaces.js, line 191

##### Returns:

Type
  Promise.<module:types.Cart>

#### getCategories(ids, optsopt) → {Promise.<module:types.CategoryList>}

Returns multiple product Categories by their ids.

On supported backends this method will retrieve Categories in a single network call. Others may make a call per id to emulate the same behaviour.

Invalid ids are ignored and results are not guaranteed to be returned in the order requested.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`ids` | Array.<String> |  |
`opts` | Object | <optional> | object

Source:
  - connectors/interfaces.js, line 156

##### Returns:

Type
  Promise.<module:types.CategoryList>

#### getCategory(id, optsopt) → {Promise.<module:types.Category>}

Get a product Category by id.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`id` | String |  |
`opts` | Object | <optional> | object

Source:
  - connectors/interfaces.js, line 139

##### Returns:

Type
  Promise.<module:types.Category>

#### getCustomer(id, optsopt) → {Promise.<module:types.Customer>}

Return a customer's details by id.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`id` | String |  | Customer Id
`opts` | Object | <optional> | Options object

Source:
  - connectors/interfaces.js, line 76

##### Throws:

Throw generic error if server has error.

Type
  module:errors.ServerError

##### Returns:

Type
  Promise.<module:types.Customer>

#### getDefaultHeaders() → {Object.<String, String>}

Get the default headers that are sent with every request.

Source:
  - connectors/interfaces.js, line 15

##### Returns:

Type
  Object.<String, String>

#### getOrder(id, optsopt) → {Promise.<module:types.Order>}

Get a single order by id.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`id` | String |  | The order id.
`opts` | Object | <optional> | Options object

Source:
  - connectors/interfaces.js, line 332

##### Returns:

.

Type
  Promise.<module:types.Order>

#### getOrders(ids, optsopt) → {Promise.<module:types.OrderList>}

Get multiple orders by their ids.

On supported backends this method will retrieve orders in a single network call. Others may make a call per id to emulate the same behaviour.

Invalid ids are ignored and results are not guaranteed to be returned in the order requested.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`ids` | Array.<String> |  | The order ids.
`opts` | Object | <optional> | Options object

Source:
  - connectors/interfaces.js, line 349

##### Returns:

.

Type
  Promise.<module:types.OrderList>

#### getPaymentMethods(cart, opts) → {Promise.<Array.<module:types.PaymentMethod>>}

Get the available payment methods for the cart.

##### Parameters:

Name | Type | Description
--- | --- | ---
`cart` | module:types.Cart | The customer's cart.
`opts` | Object |

Source:
  - connectors/interfaces.js, line 311

##### Returns:

Type
  Promise.<Array.<module:types.PaymentMethod>>

#### getProduct(id, optsopt) → {Promise.<module:types.Product>}

Get a single product by id.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`id` | String |  | The product id.
`opts` | Object | <optional> | Options object

Source:
  - connectors/interfaces.js, line 98

##### Returns:

.

Type
  Promise.<module:types.Product>

#### getProducts(ids, optsopt) → {Promise.<module:types.ProductList>}

Get multiple products by their ids.

On supported backends this method will retrieve products in a single network call. Others may make a call per id to emulate the same behaviour.

Invalid ids are ignored and results are not guaranteed to be returned in the order requested.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`ids` | Array.<String> |  | The product ids.
`opts` | Object | <optional> | Options object

Source:
  - connectors/interfaces.js, line 115

##### Returns:

.

Type
  Promise.<module:types.ProductList>

#### getShippingMethods(cart, opts) → {Promise.<Array.<module:types.ShippingMethod>>}

Get all the available shipping methods given the cart details.

##### Parameters:

Name | Type | Description
--- | --- | ---
`cart` | module:types.Cart | The cart to determinen avaialble shipping methods for.
`opts` | Object |

Source:
  - connectors/interfaces.js, line 279

##### Returns:

Type
  Promise.<Array.<module:types.ShippingMethod>>

#### getStore(id, optsopt) → {Promise.<module:types.Store>}

Get a Store (ie. a physical retail-outlet) by id. Includes addresses, opening hours, etc.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`id` | String |  | The id of the store
`opts` | Object | <optional> | Options object

Source:
  - connectors/interfaces.js, line 128

##### Returns:

.

Type
  Promise.<module:types.Store>

#### login(username, password) → {Promise.<module:types.Customer>}

Log a customer in and return their details.

On backends which support "guest login", credentials can be omitted to give you a guest session.

##### Parameters:

Name | Type | Description
--- | --- | ---
`username` | String |
`password` | String |

Source:
  - connectors/interfaces.js, line 41

##### Throws:

- Will throw an error if the username or password aren't provided for type registered.

  Type
    module:errors.InvalidArgumentError

- Will throw an error if the customer credentials are incorrect.

  Type
    module:errors.ForbiddenError

##### Returns:

.

Type
  Promise.<module:types.Customer>

#### logout() → {Promise.<undefined>}

Log a customer out.

Source:
  - connectors/interfaces.js, line 52

##### Throws:

Will throw an error if there was a server-side error.

Type
  module:errors.ServerError

##### Returns:

Type
  Promise.<undefined>

#### refreshSession() → {Promise.<module:types.Customer>}

Refresh a session token, on backends that support refresh.

Source:
  - connectors/interfaces.js, line 63

##### Throws:

Will throw an error if authorization credentials are incorrect

Type
  module:errors.ForbiddenError

##### Returns:

Type
  Promise.<module:types.Customer>

#### removeCartItem(cart, cartItemId, opts) → {Promise.<module:types.Cart>}

Remove a cart item from the cart.

##### Parameters:

Name | Type | Description
--- | --- | ---
`cart` | module:types.Cart | The cart to remove the cart item from.
`cartItemId` | String | The id of the cart item to remove.
`opts` | Object |

Source:
  - connectors/interfaces.js, line 225

##### Returns:

Type
  Promise.<module:types.Cart>

#### removeCouponEntry(cart, couponEntryId, opts) → {Promise.<module:types.Cart>}

Removes a coupon from the cart by its coupon entry id.

##### Parameters:

Name | Type | Description
--- | --- | ---
`cart` | module:types.Cart | The customer's cart.
`couponEntryId` | Object | The coupon entry id.
`opts` | Object | Options object.

Source:
  - connectors/interfaces.js, line 375

##### Returns:

Type
  Promise.<module:types.Cart>

#### searchProducts(productSearchRequest, optsopt) → {Promise.<module:types.ProductSearch>}

Search for products, given a productSearchRequest object.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`productSearchRequest` | module:types.ProductSearchRequest |  | Search query
`opts` | Object | <optional> | Options object

Source:
  - connectors/interfaces.js, line 87

##### Returns:

Type
  Promise.<module:types.ProductSearch>

#### searchStores(storeSearchRequest, optsopt) → {Promise.<module:types.StoreSearchResult>}

Searches for Stores (ie. physical retail-outlets).

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`storeSearchRequest` | module:types.StoreSearchRequest |  |
`opts` | Object | <optional> | Options object

Source:
  - connectors/interfaces.js, line 167

##### Returns:

Type
  Promise.<module:types.StoreSearchResult>

#### setBillingAddress(cart, billingAddress, opts) → {Promise.<module:types.Cart>}

Set the billing address on the cart.

##### Parameters:

Name | Type | Description
--- | --- | ---
`cart` | module:types.Cart | The cart to update the billing address for.
`billingAddress` | module:types.OrderAddress | The new or modified address.
`opts` | Object |

Source:
  - connectors/interfaces.js, line 258

##### Returns:

Type
  Promise.<module:types.Cart>

#### setCustomerInformation(cart, customerInformation, opts) → {Promise.<module:types.Cart>}

Set the customer information.

##### Parameters:

Name | Type | Description
--- | --- | ---
`cart` | module:types.Cart | The customer's cart.
`customerInformation` | module:types.CustomerInformation | The new or modified customer information.
`opts` | Object |

Source:
  - connectors/interfaces.js, line 301

##### Returns:

Type
  Promise.<module:types.Cart>

#### setDefaultHeaders(headers)

Set the default headers that are sent with every request.

##### Parameters:

Name | Type | Description
--- | --- | ---
`headers` | Object.<String, String> |

Source:
  - connectors/interfaces.js, line 24

#### setPayment(cart, payment, opts) → {Promise.<module:types.Cart>}

Add a supported payment type to the cart

##### Parameters:

Name | Type | Description
--- | --- | ---
`cart` | module:types.Cart | The cart to remove the payment from.
`payment` | module:types.Payment | The payment to add.
`opts` | Object |

Source:
  - connectors/interfaces.js, line 269

##### Returns:

Type
  Promise.<module:types.Cart>

#### setShippingAddress(cart, shippingAddress, opts) → {Promise.<module:types.Cart>}

Set the shipping address on the cart.

##### Parameters:

Name | Type | Description
--- | --- | ---
`cart` | module:types.Cart | The cart to update the shipping address for.
`shippingAddress` | module:types.OrderAddress | The new or modified address.
`opts` | Object |

Source:
  - connectors/interfaces.js, line 247

##### Returns:

Type
  Promise.<module:types.Cart>

#### setShippingMethod(cart, shippingMethod, opts) → {Promise.<module:types.Cart>}

Set the shipping method for the cart.

##### Parameters:

Name | Type | Description
--- | --- | ---
`cart` | module:types.Cart | The cart to set the shipping method for.
`shippingMethod` | module:types.ShippingMethod | The shipping method to set.
`opts` | Object |

Source:
  - connectors/interfaces.js, line 290

##### Returns:

Type
  Promise.<module:types.Cart>

#### updateCartItem(cart, cartItem, opts) → {Promise.<module:types.Cart>}

Update an existing cart item in the cart.

##### Parameters:

Name | Type | Description
--- | --- | ---
`cart` | module:types.Cart | The cart to containing the cart item to update.
`cartItem` | module:types.CartItem | The cart item to update.
`opts` | Object |

Source:
  - connectors/interfaces.js, line 236

##### Returns:

Type
  Promise.<module:types.Cart>