# Lay out a location into zones and bins

Name the areas inside a facility and the exact shelves and slots stock lives in, then move stock between them — the totals hold, only where it sits changes.

Warehouse · a play in 3 steps.

## The steps

1. Name the area inside the facility. — [createZone](/reference/zone/createZone/)
2. Name the exact shelf or slot. — [createBin](/reference/bin/createBin/)
3. Move stock between bins or zones — the totals hold. — [relocateStock](/reference/inventory-operations/relocateStock/)

## The calls

Every operation this use case runs, in the order it first appears, with the request and the response its reference page shows.

### createZone

[createZone](/reference/zone/createZone/) — mutation · Create a new zone — a named area inside a facility at your organization.

**Example request**

```graphql
mutation ExampleCreateZone($input: NewZoneInput!) {
  createZone(input: $input) {
    id
    sysId
    type
    caption
    status
    parentId
    rootId
    createdAt
    updatedAt
    revisionNum
    revision
    coordinates
    code
  }
}
```

Variables:

```json
{
  "input": {
    "caption": "Blue jeans",
    "logicalFacilityId": "01900000-0000-7000-8000-8026f71c0000"
  }
}
```

Send it with the envelope naming the version: `"extensions": {"at": {"version": {"name":"genesis","number":0}}}`.

**Example response**

```json
{
  "data": {
    "createZone": {
      "id": "01900000-0000-7000-8000-37386ae00000",
      "sysId": "ZN-EXMP-0000-000F",
      "type": "Zone",
      "caption": "Blue jeans",
      "status": "active",
      "parentId": "01900000-0000-7000-8000-065235280000",
      "rootId": "01900000-0000-7000-8000-a093dd800000",
      "createdAt": "2027-01-31T00:00:00.000Z",
      "updatedAt": "2027-01-31T00:00:00.000Z",
      "revisionNum": 1,
      "revision": "01900000-0000-7000-8000-b7960e180000",
      "coordinates": "<coordinates>",
      "code": "BJ-001"
    }
  },
  "extensions": {
    "at": {
      "callId": "01EXAMPLE-CALL-ID",
      "version": {
        "requested": {
          "name": "genesis",
          "number": 0
        },
        "serviced": {
          "name": "genesis",
          "number": 0
        }
      }
    }
  }
}
```

### createBin

[createBin](/reference/bin/createBin/) — mutation · Create a new bin — an exact shelf/slot stock lives in at your organization.

**Example request**

```graphql
mutation ExampleCreateBin($input: NewBinInput!) {
  createBin(input: $input) {
    id
    sysId
    type
    caption
    status
    parentId
    rootId
    createdAt
    updatedAt
    revisionNum
    revision
    coordinates
    code
  }
}
```

Variables:

```json
{
  "input": {
    "caption": "Blue jeans",
    "zoneId": "01900000-0000-7000-8000-af658b2a0000",
    "coordinates": "<coordinates>"
  }
}
```

Send it with the envelope naming the version: `"extensions": {"at": {"version": {"name":"genesis","number":0}}}`.

**Example response**

```json
{
  "data": {
    "createBin": {
      "id": "01900000-0000-7000-8000-37386ae00000",
      "sysId": "BN-EXMP-0000-000F",
      "type": "Bin",
      "caption": "Blue jeans",
      "status": "active",
      "parentId": "01900000-0000-7000-8000-065235280000",
      "rootId": "01900000-0000-7000-8000-a093dd800000",
      "createdAt": "2027-01-31T00:00:00.000Z",
      "updatedAt": "2027-01-31T00:00:00.000Z",
      "revisionNum": 1,
      "revision": "01900000-0000-7000-8000-b7960e180000",
      "coordinates": "<coordinates>",
      "code": "BJ-001"
    }
  },
  "extensions": {
    "at": {
      "callId": "01EXAMPLE-CALL-ID",
      "version": {
        "requested": {
          "name": "genesis",
          "number": 0
        },
        "serviced": {
          "name": "genesis",
          "number": 0
        }
      }
    }
  }
}
```

### relocateStock

[relocateStock](/reference/inventory-operations/relocateStock/) — mutation · Move stock between bins or zones inside a facility.

**Example request**

```graphql
mutation ExampleRelocateStock($input: RelocateStockInput!) {
  relocateStock(input: $input) {
    inventoryItem {
      id
      sysId
      type
      caption
      status
      parentId
      rootId
      createdAt
      updatedAt
      revisionNum
      revision
      logicalFacilityId
      styleType
      controlClass
      onHandQty
      reservedQty
      inTransitQty
      damagedQty
      heldQty
      onOrderQty
      availableQty
    }
  }
}
```

Variables:

```json
{
  "input": {
    "inventoryItemId": "01900000-0000-7000-8000-9307d9650000",
    "quantity": "2",
    "bucket": "on_hand"
  }
}
```

Send it with the envelope naming the version: `"extensions": {"at": {"version": {"name":"genesis","number":0}}}`.

**Example response**

```json
{
  "data": {
    "relocateStock": {
      "inventoryItem": {
        "id": "01900000-0000-7000-8000-37386ae00000",
        "sysId": "IV-EXMP-0000-000F",
        "type": "InventoryItem",
        "caption": "Blue jeans",
        "status": "active",
        "parentId": "01900000-0000-7000-8000-065235280000",
        "rootId": "01900000-0000-7000-8000-a093dd800000",
        "createdAt": "2027-01-31T00:00:00.000Z",
        "updatedAt": "2027-01-31T00:00:00.000Z",
        "revisionNum": 1,
        "revision": "01900000-0000-7000-8000-b7960e180000",
        "logicalFacilityId": "01900000-0000-7000-8000-8026f71c0000",
        "styleType": "<style type>",
        "controlClass": "<control class>",
        "onHandQty": "<on hand qty>",
        "reservedQty": "<reserved qty>",
        "inTransitQty": "<in transit qty>",
        "damagedQty": "<damaged qty>",
        "heldQty": "<held qty>",
        "onOrderQty": "<on order qty>",
        "availableQty": "<available qty>"
      }
    }
  },
  "extensions": {
    "at": {
      "callId": "01EXAMPLE-CALL-ID",
      "version": {
        "requested": {
          "name": "genesis",
          "number": 0
        },
        "serviced": {
          "name": "genesis",
          "number": 0
        }
      }
    }
  }
}
```
