---
displayed_sidebar: servicesSidebar
---

import ParameterTypes from "@site/src/components/ParameterTypes"

# IStockLocationService

## Methods

#### create

`**create**(input, context?): Promise&#60;[StockLocationDTO](../types/StockLocationDTO.mdx)&#62;`

This method is used to create a stock location.

##### Example

```ts
import {
  initialize as initializeStockLocationModule,
} from "@medusajs/stock-location"

async function createStockLocation (name: string) {
  const stockLocationModule = await initializeStockLocationModule({})

  const stockLocation = await stockLocationModule.create({
    name
  })

  // do something with the stock location or return it
}
```

##### Parameters

<ParameterTypes parameters={[
  {
    "name": "input",
    "type": "[CreateStockLocationInput](../types/CreateStockLocationInput.mdx)",
    "description": "The details of the stock location to create.",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "context",
    "type": "[SharedContext](SharedContext.mdx)",
    "description": "A context used to share resources, such as transaction manager, between the application and the module.",
    "optional": true,
    "defaultValue": "",
    "expandable": false,
    "children": []
  }
]} />

##### Returns

Promise&#60;[StockLocationDTO](../types/StockLocationDTO.mdx)&#62;

<ParameterTypes parameters={[
  {
    "name": "Promise",
    "type": "Promise&#60;[StockLocationDTO](../types/StockLocationDTO.mdx)&#62;",
    "optional": false,
    "defaultValue": "",
    "description": "The created stock location's details.",
    "expandable": false,
    "children": []
  }
]} />

___

#### delete

`**delete**(id, context?): Promise&#60;void&#62;`

This method is used to delete a stock location.

##### Example

```ts
import {
  initialize as initializeStockLocationModule,
} from "@medusajs/stock-location"

async function deleteStockLocation (id:string) {
  const stockLocationModule = await initializeStockLocationModule({})

  await stockLocationModule.delete(id)
}
```

##### Parameters

<ParameterTypes parameters={[
  {
    "name": "id",
    "type": "`string`",
    "description": "The ID of the stock location.",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "context",
    "type": "[SharedContext](SharedContext.mdx)",
    "description": "A context used to share resources, such as transaction manager, between the application and the module.",
    "optional": true,
    "defaultValue": "",
    "expandable": false,
    "children": []
  }
]} />

##### Returns

Promise&#60;void&#62;

<ParameterTypes parameters={[
  {
    "name": "Promise",
    "type": "Promise&#60;void&#62;",
    "optional": false,
    "defaultValue": "",
    "description": "Resolves when the stock location is successfully deleted.",
    "expandable": false,
    "children": []
  }
]} />

___

#### list

`**list**(selector, config?, context?): Promise&#60;[StockLocationDTO](../types/StockLocationDTO.mdx)[]&#62;`

This method is used to retrieve a paginated list of stock locations based on optional filters and configuration.

##### Example

To retrieve a list of stock locations using their IDs:

```ts
import {
  initialize as initializeStockLocationModule,
} from "@medusajs/stock-location"

async function listStockLocations (ids: string[]) {
  const stockLocationModule = await initializeStockLocationModule({})

  const stockLocations = await stockLocationModule.list({
    id: ids
  })

  // do something with the stock locations or return them
}
```

To specify relations that should be retrieved within the stock locations:

```ts
import {
  initialize as initializeStockLocationModule,
} from "@medusajs/stock-location"

async function listStockLocations (ids: string[]) {
  const stockLocationModule = await initializeStockLocationModule({})

  const stockLocations = await stockLocationModule.list({
    id: ids
  }, {
    relations: ["address"]
  })

  // do something with the stock locations or return them
}
```

By default, only the first `10` records are retrieved. You can control pagination by specifying the `skip` and `take` properties of the `config` parameter:

```ts
import {
  initialize as initializeStockLocationModule,
} from "@medusajs/stock-location"

async function listStockLocations (ids: string[], skip: number, take: number) {
  const stockLocationModule = await initializeStockLocationModule({})

  const stockLocations = await stockLocationModule.list({
    id: ids
  }, {
    relations: ["address"],
    skip,
    take
  })

  // do something with the stock locations or return them
}
```

##### Parameters

<ParameterTypes parameters={[
  {
    "name": "selector",
    "type": "[FilterableStockLocationProps](FilterableStockLocationProps.mdx)",
    "description": "The filters to apply on the retrieved stock locations.",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "config",
    "type": "[FindConfig](FindConfig-1.mdx)&#60;[StockLocationDTO](../types/StockLocationDTO.mdx)&#62;",
    "description": "The configurations determining how the stock locations are retrieved. Its properties, such as `select` or `relations`, accept the attributes or relations associated with a stock location.",
    "optional": true,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "context",
    "type": "[SharedContext](SharedContext.mdx)",
    "description": "A context used to share resources, such as transaction manager, between the application and the module.",
    "optional": true,
    "defaultValue": "",
    "expandable": false,
    "children": []
  }
]} />

##### Returns

Promise&#60;[StockLocationDTO](../types/StockLocationDTO.mdx)[]&#62;

<ParameterTypes parameters={[
  {
    "name": "Promise",
    "type": "Promise&#60;[StockLocationDTO](../types/StockLocationDTO.mdx)[]&#62;",
    "optional": false,
    "defaultValue": "",
    "description": "The list of stock locations.",
    "expandable": false,
    "children": []
  }
]} />

___

#### listAndCount

`**listAndCount**(selector, config?, context?): Promise&#60;[[StockLocationDTO](../types/StockLocationDTO.mdx)[], number]&#62;`

This method is used to retrieve a paginated list of stock locations along with the total count of available stock locations satisfying the provided filters.

##### Example

To retrieve a list of stock locations using their IDs:

```ts
import {
  initialize as initializeStockLocationModule,
} from "@medusajs/stock-location"

async function listStockLocations (ids: string[]) {
  const stockLocationModule = await initializeStockLocationModule({})

  const [stockLocations, count] = await stockLocationModule.listAndCount({
    id: ids
  })

  // do something with the stock locations or return them
}
```

To specify relations that should be retrieved within the stock locations:

```ts
import {
  initialize as initializeStockLocationModule,
} from "@medusajs/stock-location"

async function listStockLocations (ids: string[]) {
  const stockLocationModule = await initializeStockLocationModule({})

  const [stockLocations, count] = await stockLocationModule.listAndCount({
    id: ids
  }, {
    relations: ["address"]
  })

  // do something with the stock locations or return them
}
```

By default, only the first `10` records are retrieved. You can control pagination by specifying the `skip` and `take` properties of the `config` parameter:

```ts
import {
  initialize as initializeStockLocationModule,
} from "@medusajs/stock-location"

async function listStockLocations (ids: string[], skip: number, take: number) {
  const stockLocationModule = await initializeStockLocationModule({})

  const [stockLocations, count] = await stockLocationModule.listAndCount({
    id: ids
  }, {
    relations: ["address"],
    skip,
    take
  })

  // do something with the stock locations or return them
}
```

##### Parameters

<ParameterTypes parameters={[
  {
    "name": "selector",
    "type": "[FilterableStockLocationProps](FilterableStockLocationProps.mdx)",
    "description": "The filters to apply on the retrieved stock locations.",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "config",
    "type": "[FindConfig](FindConfig-1.mdx)&#60;[StockLocationDTO](../types/StockLocationDTO.mdx)&#62;",
    "description": "The configurations determining how the stock locations are retrieved. Its properties, such as `select` or `relations`, accept the attributes or relations associated with a stock location.",
    "optional": true,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "context",
    "type": "[SharedContext](SharedContext.mdx)",
    "description": "A context used to share resources, such as transaction manager, between the application and the module.",
    "optional": true,
    "defaultValue": "",
    "expandable": false,
    "children": []
  }
]} />

##### Returns

Promise&#60;[[StockLocationDTO](../types/StockLocationDTO.mdx)[], number]&#62;

<ParameterTypes parameters={[
  {
    "name": "Promise",
    "type": "Promise&#60;[[StockLocationDTO](../types/StockLocationDTO.mdx)[], number]&#62;",
    "optional": false,
    "defaultValue": "",
    "description": "The list of stock locations along with the total count.",
    "expandable": false,
    "children": []
  }
]} />

___

#### retrieve

`**retrieve**(id, config?, context?): Promise&#60;[StockLocationDTO](../types/StockLocationDTO.mdx)&#62;`

This method is used to retrieve a stock location by its ID

##### Example

A simple example that retrieves a inventory item by its ID:

```ts
import {
  initialize as initializeStockLocationModule,
} from "@medusajs/stock-location"

async function retrieveStockLocation (id: string) {
  const stockLocationModule = await initializeStockLocationModule({})

  const stockLocation = await stockLocationModule.retrieve(id)

  // do something with the stock location or return it
}
```

To specify relations that should be retrieved:

```ts
import {
  initialize as initializeStockLocationModule,
} from "@medusajs/stock-location"

async function retrieveStockLocation (id: string) {
  const stockLocationModule = await initializeStockLocationModule({})

  const stockLocation = await stockLocationModule.retrieve(id, {
    relations: ["address"]
  })

  // do something with the stock location or return it
}
```

##### Parameters

<ParameterTypes parameters={[
  {
    "name": "id",
    "type": "`string`",
    "description": "The ID of the stock location",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "config",
    "type": "[FindConfig](FindConfig-1.mdx)&#60;[StockLocationDTO](../types/StockLocationDTO.mdx)&#62;",
    "description": "The configurations determining how the stock location is retrieved. Its properties, such as `select` or `relations`, accept the attributes or relations associated with a stock location.",
    "optional": true,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "context",
    "type": "[SharedContext](SharedContext.mdx)",
    "description": "A context used to share resources, such as transaction manager, between the application and the module.",
    "optional": true,
    "defaultValue": "",
    "expandable": false,
    "children": []
  }
]} />

##### Returns

Promise&#60;[StockLocationDTO](../types/StockLocationDTO.mdx)&#62;

<ParameterTypes parameters={[
  {
    "name": "Promise",
    "type": "Promise&#60;[StockLocationDTO](../types/StockLocationDTO.mdx)&#62;",
    "optional": false,
    "defaultValue": "",
    "description": "The stock location's details.",
    "expandable": false,
    "children": []
  }
]} />

___

#### update

`**update**(id, input, context?): Promise&#60;[StockLocationDTO](../types/StockLocationDTO.mdx)&#62;`

This method is used to update a stock location.

##### Example

```ts
import {
  initialize as initializeStockLocationModule,
} from "@medusajs/stock-location"

async function updateStockLocation (id:string, name: string) {
  const stockLocationModule = await initializeStockLocationModule({})

  const stockLocation = await stockLocationModule.update(id, {
    name
  })

  // do something with the stock location or return it
}
```

##### Parameters

<ParameterTypes parameters={[
  {
    "name": "id",
    "type": "`string`",
    "description": "The ID of the stock location.",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "input",
    "type": "[UpdateStockLocationInput](../types/UpdateStockLocationInput.mdx)",
    "description": "The attributes to update in the stock location.",
    "optional": false,
    "defaultValue": "",
    "expandable": false,
    "children": []
  },
  {
    "name": "context",
    "type": "[SharedContext](SharedContext.mdx)",
    "description": "A context used to share resources, such as transaction manager, between the application and the module.",
    "optional": true,
    "defaultValue": "",
    "expandable": false,
    "children": []
  }
]} />

##### Returns

Promise&#60;[StockLocationDTO](../types/StockLocationDTO.mdx)&#62;

<ParameterTypes parameters={[
  {
    "name": "Promise",
    "type": "Promise&#60;[StockLocationDTO](../types/StockLocationDTO.mdx)&#62;",
    "optional": false,
    "defaultValue": "",
    "description": "The stock location's details.",
    "expandable": false,
    "children": []
  }
]} />
