> ## Documentation Index
> Fetch the complete documentation index at: https://redo-44af351d-docs-v3-graphql-api-reference.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Location

> A physical or logical location where inventory is held or shipped from.

**Required scopes:**
[`locations_read`](/docs/api-reference/v3/reference/scopes#scope-locations_read)

<ResponseField name="city" type="String">
  The city of the location's address.
</ResponseField>

<ResponseField name="company" type="String">
  The company name associated with the location.
</ResponseField>

<ResponseField name="countryCode" type="String">
  The country code, e.g. "US".
</ResponseField>

<ResponseField name="createdAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
  When the record was created.
</ResponseField>

<ResponseField name="id" type="ID!" required>
  The id of this location.
</ResponseField>

<ResponseField name="inventoryLevels" type={<a href="/docs/api-reference/v3/pagination">LocationInventoryLevelConnection!</a>} required>
  Per-product inventory levels held at this location.

  **Requires:**
  [`inventory_read`](/docs/api-reference/v3/reference/scopes#scope-inventory_read)

  <Expandable title="fields" lazyRender>
    **Arguments**

    <ResponseField name="after" type="String">
      Forward pagination cursor — returns items after it. Pass an `edges[].cursor` or `pageInfo.endCursor` from a previous page.
    </ResponseField>

    <ResponseField name="before" type="String">
      Backward pagination cursor — returns items before it. Pass an `edges[].cursor` or `pageInfo.startCursor` from a previous page.
    </ResponseField>

    <ResponseField name="first" type="Int">
      Forward pagination: returns the first N items (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.
    </ResponseField>

    <ResponseField name="last" type="Int">
      Backward pagination: returns the last N items (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.
    </ResponseField>

    **Fields**

    <ResponseField name="edges" type={<a href="/docs/api-reference/v3/pagination">[LocationInventoryLevelEdge!]!</a>} required>
      The list of edges (each a node plus its pagination `cursor`).

      <Expandable title="fields" lazyRender>
        <ResponseField name="cursor" type="String!" required>
          Opaque cursor for this item; pass to `after`/`before` to page from here.
        </ResponseField>

        <ResponseField name="node" type={<a href="/docs/api-reference/v3/reference/inventory/location-inventory-level">LocationInventoryLevel!</a>} required>
          The item at this edge.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="nodes" type={<a href="/docs/api-reference/v3/reference/inventory/location-inventory-level">[LocationInventoryLevel!]!</a>} required>
      The nodes in this page, without the edge/cursor wrapper — a convenience over `edges`.

      <Expandable title="fields" lazyRender>
        <ResponseField name="available" type="Int!" required>
          The quantity available to sell.
        </ResponseField>

        <ResponseField name="buildable" type="Int!" required>
          The quantity that can be built from components.
        </ResponseField>

        <ResponseField name="committed" type="Int!" required>
          The quantity committed to existing orders.
        </ResponseField>

        <ResponseField name="createdAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
          When the record was created.
        </ResponseField>

        <ResponseField name="id" type="ID!" required>
          The id of this inventory level.
        </ResponseField>

        <ResponseField name="inventoryProduct" type={<a href="/docs/api-reference/v3/reference/inventory/inventory-product">InventoryProduct</a>}>
          A fulfillment-oriented view of the product, readable by anyone who can see this level (e.g. a 3PL). For the full product, use `product`.

          **Requires:** [`inventory_read`](/docs/api-reference/v3/reference/scopes#scope-inventory_read)
        </ResponseField>

        <ResponseField name="location" type={<a href="/docs/api-reference/v3/reference/inventory/location">Location</a>}>
          The location these inventory levels are held at.

          **Requires:** [`locations_read`](/docs/api-reference/v3/reference/scopes#scope-locations_read)
        </ResponseField>

        <ResponseField name="product" type={<a href="/docs/api-reference/v3/reference/catalog/product">Product</a>}>
          The full product these inventory levels are for. Only readable by the account that owns the product; use `inventoryProduct` otherwise.

          **Requires:** [`products_read`](/docs/api-reference/v3/reference/scopes#scope-products_read)
        </ResponseField>

        <ResponseField name="quantity" type="Int!" required>
          The total quantity on hand at the location.
        </ResponseField>

        <ResponseField name="reserved" type="Int!" required>
          The quantity reserved across all reservation buckets.
        </ResponseField>

        <ResponseField name="updatedAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
          When the record was last updated.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="pageInfo" type={<a href="/docs/api-reference/v3/pagination">PageInfo!</a>} required>
      Pagination metadata for the current page.

      <Expandable title="fields" lazyRender>
        <ResponseField name="endCursor" type="String">
          Cursor of the last edge in this page; pass to `after` to page forward.
        </ResponseField>

        <ResponseField name="hasNextPage" type="Boolean!" required>
          Whether more items exist after this page (drives forward pagination with `first`/`after`).
        </ResponseField>

        <ResponseField name="hasPreviousPage" type="Boolean!" required>
          Whether more items exist before this page (drives backward pagination with `last`/`before`).
        </ResponseField>

        <ResponseField name="startCursor" type="String">
          Cursor of the first edge in this page; pass to `before` to page backward.
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="name" type="String!" required>
  The location's display name.
</ResponseField>

<ResponseField name="phone" type="String">
  The contact phone number for the location.
</ResponseField>

<ResponseField name="postalCode" type="String">
  The postal or ZIP code, e.g. "84101".
</ResponseField>

<ResponseField name="stateCode" type="String">
  The state or province code, e.g. "UT".
</ResponseField>

<ResponseField name="street1" type="String">
  The first line of the street address.
</ResponseField>

<ResponseField name="street2" type="String">
  The second line of the street address.
</ResponseField>

<ResponseField name="updatedAt" type={<a href="/docs/api-reference/v3/reference/common/date-time">DateTime!</a>} required>
  When the record was last updated.
</ResponseField>
