npm package: @plasma-platform/tm-service-carts
Description: Carts service SDK
Author: Anton Nemtsev
Latest version: 4.3.0

# Documentation

<!-- Generated by documentation.js. Update this documentation by updating the source code. -->

### Table of Contents

-   [CartsService](#cartsservice)
    -   [addNewCart](#addnewcart)
    -   [cloneCart](#clonecart)
    -   [getCartById](#getcartbyid)
    -   [getCartCalculatedById](#getcartcalculatedbyid)
    -   [getMyCarts](#getmycarts)
    -   [linkItemToCart](#linkitemtocart)
    -   [linkItemToItem](#linkitemtoitem)
    -   [linkServiceToBundle](#linkservicetobundle)
    -   [unlinkServiceFromBundle](#unlinkservicefrombundle)
    -   [mergeCarts](#mergecarts)
    -   [unLinkItemFromCart](#unlinkitemfromcart)
    -   [unLinkItemFromItem](#unlinkitemfromitem)
    -   [updateCart](#updatecart)
    -   [reassignCart](#reassigncart)
    -   [getToken](#gettoken)
-   [defaultAutoTrim](#defaultautotrim)

## CartsService

-   **See: <https://jsonplaceholder.typicode.com/>**

Carts Micro Service API SDK

**Parameters**

-   `url` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** service url
-   `token` **([string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) | null)** user access tocken if available (optional, default `null`)

### addNewCart

Add new cart

**Parameters**

-   `currency` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) Currency code iso3
-   `attributes` **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** List of predefined attributes to be stored with cart
    -   `attributes.affiliate` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** Affiliate name
    -   `attributes.trackers` **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** Analytics trackers
    -   `attributes.trackers` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** [ga] - Google Analytics tracker
    -   `attributes.trackers` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** [ad] - Google Adwords tracker
    -   `attributes.trackers` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** [sc] - Soft Cube tracker

**Examples**

```javascript
(async () => {
  const cartsService = new CartsService('https://jsonplaceholder.typicode.com/', 'dsugsahfdkljhafljkdfhajkldshfad');
  const cart = await cartsService.addNewCart('USD', { affiliate: 'colorlib' });
})();
```

Returns **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** object with new cart properties

### cloneCart

Clone cart

**Parameters**

-   `id` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) cart id for cone

**Examples**

```javascript
(async () => {
  const cartsService = new CartsService('https://jsonplaceholder.typicode.com/', 'hfkjasdhfljkadhflkajdshflkadjhald');
  const cart = await cartsService.cloneCart(111);
})();
```

Returns **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** object with new cart properties

### getCartById

Get cart by id

**Parameters**

-   `id` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) Cart id

**Examples**

```javascript
(async () => {
  const cartsService = new CartsService('https://jsonplaceholder.typicode.com/');
  const cart = await cartsService.getCartById(111);
})();
```

Returns **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** object with cart properties

### getCartCalculatedById

Get cart calculated by id

**Parameters**

-   `id` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) Cart id

**Examples**

```javascript
(async () => {
  const cartsService = new CartsService('https://jsonplaceholder.typicode.com/');
  const cart = await cartsService.getCartCalculatedById(111);
})();
```

Returns **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** object with cart properties

### getMyCarts

Get my carts

**Parameters**

-   `typeSort` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** type of sorting products in cart

**Examples**

```javascript
(async () => {
  const cartsService = new CartsService('https://jsonplaceholder.typicode.com/');
  const cart = await cartsService.getMyCarts();
})();
```

Returns **[array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)** array with objects cart properties

### linkItemToCart

Link item to cart

**Parameters**

-   `productServiceLink` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) link to product in service products
-   `cartId` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) cart id
-   `itemType` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) type of product (products | services | discounts | link-discounts)
-   `data` **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (required) params for link product to cart
    -   `data.license` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** license id
    -   `data.channel` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** channel for service (required if itemType is services)
    -   `data.position` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** position for service
    -   `data.presentation_id` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** presentation id for service

**Examples**

```javascript
(async () => {
  const cartsService = new CartsService('https://jsonplaceholder.typicode.com/');
  const cart = await cartsService.linkItemToCart('http://service-products.dev/api/v1/products/en/55555', 111, 'products', {
    license: 50,
  });
})();
```

Returns **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** object cart properties

### linkItemToItem

Link item to item

**Parameters**

-   `productServiceLink` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) link to product in service products
-   `cartId` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) cart id
-   `itemId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** (required) item id
-   `data` **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (required) params for link product to cart
    -   `data.channel` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) channel for service
    -   `data.position` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** position for service
    -   `data.presentation_id` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** presentation id for service
-   `typeLink` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** type of link to item

**Examples**

```javascript
(async () => {
  const cartsService = new CartsService('https://jsonplaceholder.typicode.com/');
  const cart = await cartsService.linkItemToItem('http://service-services.dev/api/v1/services/en/1', 111, 222, {
    channel: 'tm-cart'
  }, 'bundles');
})();
```

Returns **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** object cart properties

### linkServiceToBundle

Link service to bundle

**Parameters**

-   `productServiceLinks` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) link to service in service products
-   `cartId` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) cart id
-   `itemId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** (required) item id
-   `data` **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (required) params for link product to cart
    -   `data.channel` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) channel for service
-   `bundleId` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** bundle's id

**Examples**

```javascript
(async () => {
  const cartsService = new CartsService('https://jsonplaceholder.typicode.com/');
  const cart = await cartsService.linkItemToItem('http://service-services.dev/api/v1/services/en/1', 111, 222, {
    channel: 'tm-cart'
  }, 'qwerty123');
})();
```

Returns **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** object cart properties

### unlinkServiceFromBundle

Unlink service from bundle

**Parameters**

-   `productServiceLinks` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) link to service in service products
-   `cartId` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) cart id
-   `itemId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** (required) item id
-   `bundleId` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** bundle's id

**Examples**

```javascript
(async () => {
  const cartsService = new CartsService('https://jsonplaceholder.typicode.com/');
  const cart = await cartsService.unlinkServiceFromBundle('http://service-services.dev/api/v1/services/en/1', 111, 222, 'qwerty123');
})();
```

Returns **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** object cart properties

### mergeCarts

Merge carts

**Parameters**

-   `users_cart_id` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) users cart id
-   `anonymous_cart_id` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) anonymous cart id

**Examples**

```javascript
(async () => {
  const cartsService = new CartsService('https://jsonplaceholder.typicode.com/', 'dsugsahfdkljhafljkdfhajkldshfad');
  const cart = await cartsService.mergeCarts(111, 333);
})();
```

Returns **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** object with new cart properties

### unLinkItemFromCart

Unlink item from cart

**Parameters**

-   `productServiceLink` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) link to product in service products
-   `cartId` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) cart id
-   `itemType` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) type of product (products | services | discounts | link-discounts)

**Examples**

```javascript
(async () => {
  const cartsService = new CartsService('https://jsonplaceholder.typicode.com/');
  const cart = await cartsService.unLinkItemFromCart('http://service-products.dev/api/v1/products/en/55555', 111, 'products');
})();
```

Returns **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** object cart properties

### unLinkItemFromItem

Unlink item from item

**Parameters**

-   `productServiceLink` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) link to product in service products
-   `cartId` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) cart id
-   `itemTypeTarget` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) item type target
-   `itemId` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** (required) item id
-   `itemTypeSource` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) item type source

**Examples**

```javascript
(async () => {
  const cartsService = new CartsService('https://jsonplaceholder.typicode.com/');
  const cart = await cartsService.unLinkItemFromItem('http://service-services.dev/api/v1/services/en/1', 111, 'services', 222, 'services');
})();
```

Returns **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** object cart properties

### updateCart

update cart

**Parameters**

-   `id` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) cart id for cone
-   `currecy` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** currency for shopping cart (iso3)
-   `attributes` **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** list of predefined attributes to be stored with cart
    -   `attributes.affiliate` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** Affiliate name
    -   `attributes.trackers` **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** Analytics trackers
    -   `attributes.trackers` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** [ga] - Google Analytics tracker
    -   `attributes.trackers` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** [ad] - Google Adwords tracker
    -   `attributes.trackers` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** [sc] - Soft Cube tracker

Returns **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** object with new cart properties

### reassignCart

Reassign cart

**Parameters**

-   `cardId` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) cart Id
-   `link` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) link to user profile

**Examples**

```javascript
(async () => {
  const cartsService = new CartsService('https://jsonplaceholder.typicode.com/', 'dsugsahfdkljhafljkdfhajkldshfad');
  const cart = await cartsService.reassignCart('123');
})();
```

Returns **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** object with new cart properties

### getToken

Get token for centrifuge

**Parameters**

-   `options` **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 
    -   `options.id` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** (required) cart Id
    -   `options.time` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** (required) timestamp for centrifuge

**Examples**

```javascript
<caption>Get token for centrifuge<caption>
import Config from 'Config';
import CartsService from '@plasma-platform/tm-service-carts';
import TMCentrifuge from '@plasma-platform/tm-centrifuge';
(async () => {
  const cartsService = new CartsService('//socket.templatemonster.com/', 'ZW7NJyKVEtjyGCjPBXOZyQrjNZ5aOjIcJD7SAFNm');
  const timestamp = Math.round(new Date().getTime() / 1000);
  const [ cart ] = await cartsService.getMyCarts('-created_at&per-page=1');
  const token = await cartsService.getToken({
     id: cart.id,
     timestamp,
   });
  const centrifuge = TMCentrifuge({
     url: Config.centrifugeCartUrl,
     timestamp,
  });

  centrifuge.subscribe('update', (message)=>{…});
})();
```

-   Throws **any** ErrorBadRequest

Returns **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** object with new cart properties

## defaultAutoTrim

Object with class service messages