> ## Documentation Index
> Fetch the complete documentation index at: https://docs.shipstream.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List Location Profiles

> Returns Location Profiles of one warehouse specified by its `id` path parameter, with
publication status, revision snapshots, the ordered match definition, and live usage
counts.

The response `meta` carries the warehouse-level membership repair freshness
(`membership_status`, `membership_current`, `membership_repaired_at`).

The `match` clauses keep selected Location Tags and Slot Types as compact `{type, id}`
references. For an editor, request `fields=location_tags,slot_types` together with
`fields:location_tags=name,color` and `fields:slot_types=name,is_pickable` to resolve
only those direct selections through `included`.



## OpenAPI

````yaml GET /v1/inventory/warehouses/{id}/location-profiles
openapi: 3.0.3
info:
  title: ShipStream
  version: '1.0'
  license:
    name: Commercial (Copyright 2025 - All Rights Reserved)
    url: https://shipstream.io
  contact:
    name: ShipStream Support
    email: help@shipstream.io
  termsOfService: https://shipstream.io/legal/api-terms/
servers:
  - url: https://{base_url_domain}/api/global
    description: Direct API Url
    variables:
      base_url_domain:
        default: example.shipstream.app
        description: >-
          The fully qualified domain name for your ShipStream WMS instance. This
          is either a custom domain, or a subdomain of shipstream.app,

          and will be the same as the domain name for the page which you use to
          login to ShipStream WMS.
security:
  - ShipStream_bearerAuth: []
tags:
  - name: Warehouses
    x-displayName: Warehouses
  - name: Products
    x-displayName: Products
  - name: ProductProfiles
    x-displayName: ProductProfiles
  - name: HandlingClasses
    x-displayName: HandlingClasses
  - name: Locations
    x-displayName: Locations
  - name: LocationTags
    x-displayName: LocationTags
  - name: SlotTypes
    x-displayName: SlotTypes
  - name: Levels
    x-displayName: Levels
  - name: HoldReasons
    x-displayName: HoldReasons
  - name: Holds
    x-displayName: Holds
  - name: Replenishment
    x-displayName: Replenishment
  - name: LocationProfiles
    x-displayName: LocationProfiles
  - name: SlottingRules
    x-displayName: SlottingRules
  - name: Deliveries
    description: Every thing about a Delivery Receiving
    x-displayName: Deliveries
  - name: Shipments
    x-displayName: Shipments
  - name: Orders
    x-displayName: Orders
  - name: Retailers
    x-displayName: Retailers
  - name: Users
    x-displayName: Users
  - name: User Roles
    x-displayName: User Roles
  - name: Merchants
    x-displayName: Merchants
  - name: Healthcheck
    x-displayName: Healthcheck
paths:
  /v1/inventory/warehouses/{id}/location-profiles:
    get:
      tags:
        - LocationProfiles
      summary: List Location Profiles
      description: >-
        Returns Location Profiles of one warehouse specified by its `id` path
        parameter, with

        publication status, revision snapshots, the ordered match definition,
        and live usage

        counts.


        The response `meta` carries the warehouse-level membership repair
        freshness

        (`membership_status`, `membership_current`, `membership_repaired_at`).


        The `match` clauses keep selected Location Tags and Slot Types as
        compact `{type, id}`

        references. For an editor, request `fields=location_tags,slot_types`
        together with

        `fields:location_tags=name,color` and
        `fields:slot_types=name,is_pickable` to resolve

        only those direct selections through `included`.
      operationId: getLocationProfiles
      parameters:
        - name: id
          in: path
          schema:
            type: integer
            format: int32
          required: true
          description: The `id` of the referenced `Warehouse`.
        - $ref: '#/components/parameters/Inventory_API_v1_location-profile-fields'
        - $ref: >-
            #/components/parameters/Inventory_API_v1_fields-location-profile-location-tags
        - $ref: >-
            #/components/parameters/Inventory_API_v1_fields-location-profile-slot-types
        - $ref: '#/components/parameters/Inventory_API_v1_location-profile-filter'
        - name: sort
          in: query
          schema:
            type: string
          required: false
          description: >-
            The default sort order is **ascending** by primary key (`sort=id`).

            The following fields are available for sorting:
              - `id`
              - `name`
              - `member_count`
              - `updated_at`

            A profile with no published revision has a `null` member count
            rather than zero, so sorting by `member_count` groups those profiles
            at the `null` end — first ascending, last descending.
        - $ref: '#/components/parameters/Inventory_API_v1_count'
        - $ref: '#/components/parameters/Inventory_API_v1_cursor_end'
        - $ref: '#/components/parameters/Inventory_API_v1_cursor_start'
        - name: limit
          in: query
          description: >-
            The number of `LocationProfile` objects to return. The default is
            100 and the maximum is 250.
          style: form
          schema:
            type: integer
            example: 100
            default: 100
            minimum: 1
            maximum: 250
      responses:
        '200':
          description: >-
            A dictionary with a `collection` property that contains a list of up
            to

            `limit` `LocationProfile` objects matching the query.
          content:
            application/json:
              schema:
                type: object
                properties:
                  collection:
                    type: array
                    description: A list of `LocationProfile` objects.
                    items:
                      $ref: '#/components/schemas/Inventory_API_v1_LocationProfile'
                  included:
                    $ref: '#/components/schemas/Inventory_API_v1_location-profiles'
                  has_more:
                    $ref: '#/components/schemas/Inventory_API_v1_has_more'
                  next:
                    $ref: '#/components/schemas/Inventory_API_v1_next'
                  previous:
                    $ref: '#/components/schemas/Inventory_API_v1_previous'
                  meta:
                    allOf:
                      - $ref: '#/components/schemas/Inventory_API_v1_meta'
                      - $ref: >-
                          #/components/schemas/Inventory_API_v1_location-profile-membership-meta
              example:
                collection:
                  - type: LocationProfile
                    id: 26
                    name: Cold Storage Pick Faces
                    description: >-
                      Pickable shelf locations approved for refrigerated
                      inventory.
                    status: ready
                    member_count: 486
                    match:
                      - field: slot_type
                        operator: is_one_of
                        values:
                          - type: SlotType
                            id: 5
                      - field: location_tag
                        operator: is_one_of
                        values:
                          - type: LocationTag
                            id: 12
                    match_readable: >-
                      (present(slot_type_id) && (slot_type_id in [5])) && (12 in
                      tag_ids)
                    location_tags:
                      - type: LocationTag
                        id: 12
                    slot_types:
                      - type: SlotType
                        id: 5
                    active_revision:
                      id: 1184
                      status: ready
                      member_count: 486
                      ready_at: '2026-08-12T06:41:22Z'
                    used_by:
                      slotting_rules: 3
                      replenishment_policies: 1
                    created_at: '2026-07-14T09:12:05Z'
                    updated_at: '2026-08-12T06:41:18Z'
                included:
                  LocationTag:
                    - type: LocationTag
                      id: 12
                      name: Cold Storage
                      color: blue1
                  SlotType:
                    - type: SlotType
                      id: 5
                      name: Pickable Shelf
                      is_pickable: true
                has_more: false
                next: null
                previous: null
                meta:
                  processing_time: 0.0086
                  cursor_start: null
                  cursor_end: null
                  membership_status: idle
                  membership_current: true
                  membership_repaired_at: '2026-08-12T06:40:58Z'
        '400':
          $ref: '#/components/responses/Inventory_API_v1_400-bad-request'
        '404':
          $ref: '#/components/responses/Inventory_API_v1_404-not-found'
        '500':
          $ref: '#/components/responses/Inventory_API_v1_500-internal-server-error'
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl --request GET \
              --url 'https://example.shipstream.app/api/global/v1/inventory/warehouses/1/location-profiles?fields=location_tags,slot_types&fields:location_tags=name,color&fields:slot_types=name,is_pickable&limit=100' \
              --header 'Authorization: Bearer <token>'
        - lang: python
          label: Python
          source: >-
            import requests


            url =
            "https://example.shipstream.app/api/global/v1/inventory/warehouses/1/location-profiles?fields=location_tags,slot_types&fields:location_tags=name,color&fields:slot_types=name,is_pickable&limit=100"

            headers = {"Authorization": "Bearer <token>"}


            response = requests.get(url, headers=headers)

            print(response.text)
        - lang: javascript
          label: JavaScript
          source: >-
            const options = {method: 'GET', headers: {Authorization: 'Bearer
            <token>'}};


            fetch('https://example.shipstream.app/api/global/v1/inventory/warehouses/1/location-profiles?fields=location_tags,slot_types&fields:location_tags=name,color&fields:slot_types=name,is_pickable&limit=100',
            options)
              .then(response => response.json())
              .then(response => console.log(response));
        - lang: php
          label: PHP
          source: >-
            <?php


            $curl = curl_init();

            curl_setopt($curl, CURLOPT_URL,
            'https://example.shipstream.app/api/global/v1/inventory/warehouses/1/location-profiles?fields=location_tags,slot_types&fields:location_tags=name,color&fields:slot_types=name,is_pickable&limit=100');

            curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);

            curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer
            <token>']);


            $response = curl_exec($curl);

            curl_close($curl);

            echo $response;
        - lang: go
          label: Go
          source: |-
            package main

            import (
                "fmt"
                "io"
                "net/http"
            )

            func main() {
                req, _ := http.NewRequest("GET", "https://example.shipstream.app/api/global/v1/inventory/warehouses/1/location-profiles?fields=location_tags,slot_types&fields:location_tags=name,color&fields:slot_types=name,is_pickable&limit=100", nil)
                req.Header.Add("Authorization", "Bearer <token>")
                response, _ := http.DefaultClient.Do(req)
                defer response.Body.Close()
                body, _ := io.ReadAll(response.Body)
                fmt.Println(string(body))
            }
        - lang: java
          label: Java
          source: >-
            HttpResponse<String> response =
            Unirest.get("https://example.shipstream.app/api/global/v1/inventory/warehouses/1/location-profiles?fields=location_tags,slot_types&fields:location_tags=name,color&fields:slot_types=name,is_pickable&limit=100")
              .header("Authorization", "Bearer <token>")
              .asString();
        - lang: ruby
          label: Ruby
          source: >-
            require 'uri'

            require 'net/http'


            url =
            URI('https://example.shipstream.app/api/global/v1/inventory/warehouses/1/location-profiles?fields=location_tags,slot_types&fields:location_tags=name,color&fields:slot_types=name,is_pickable&limit=100')

            request = Net::HTTP::Get.new(url)

            request['Authorization'] = 'Bearer <token>'


            response = Net::HTTP.start(url.hostname, url.port, use_ssl: true) do
            |http|
              http.request(request)
            end

            puts response.read_body
components:
  parameters:
    Inventory_API_v1_location-profile-fields:
      name: fields
      in: query
      required: false
      description: >-
        Specify additional fields of the `LocationProfile` object to be included
        in the response.

        See the [selecting fields](/global-api/selecting-fields) page for more
        information.
      explode: false
      schema:
        $ref: '#/components/schemas/Inventory_API_v1_location-profile-fields-enum'
    Inventory_API_v1_fields-location-profile-location-tags:
      name: fields:location_tags
      in: query
      required: false
      description: >-
        Specify fields of the directly referenced `LocationTag` objects to
        include under `included.LocationTag`. Add `location_tags` to the root
        `fields` parameter to return the relationship. `type` and `id` are
        always returned.
      explode: false
      schema:
        $ref: '#/components/schemas/Inventory_API_v1_location-tag-fields-enum'
    Inventory_API_v1_fields-location-profile-slot-types:
      name: fields:slot_types
      in: query
      required: false
      description: >-
        Specify fields of the directly referenced `SlotType` objects to include
        under `included.SlotType`. Add `slot_types` to the root `fields`
        parameter to return the relationship. `type` and `id` are always
        returned.
      explode: false
      schema:
        $ref: '#/components/schemas/Inventory_API_v1_slot_type-fields-enum'
    Inventory_API_v1_location-profile-filter:
      name: filter
      in: query
      description: >-
        Using the [filtering syntax](/global-api/filtering-syntax), you may
        filter the results using the following fields:
          - `id`
          - `name`
          - `status`

        `status` is derived from the profile's revision pointers rather than
        stored, so it supports

        only the `eq` and `in` operators. List the states you want instead of
        negating.
      required: false
      style: form
      explode: true
      schema:
        type: array
        items:
          type: string
      allowReserved: true
      examples:
        Profile by name:
          summary: Get profiles whose name contains "pick".
          value:
            - name{contain:"pick"}
        Profiles usable by policy writes:
          summary: Get profiles whose membership has been materialized.
          value:
            - status:ready
        Profiles that never published:
          summary: Get profiles with no revision serving consumers.
          value:
            - status{in:["building","failed","none"]}
    Inventory_API_v1_count:
      name: count
      in: query
      description: >-
        If specified as `1`, the `meta.count` property of the response will be
        present and populated with the total count of items

        matching the query before any paging is applied. This is not included by
        default to improve performance in some edge

        cases and is not required to perform paging using the `next` property of
        the response.

        See [paging parameters](/global-api/paging-parameters) for more
        information.
      style: form
      schema:
        type: integer
        minimum: 0
        maximum: 1
    Inventory_API_v1_cursor_end:
      name: cursor_end
      in: query
      description: >-
        A cursor for use in pagination which defines the last `id` of the next
        page of results, non-inclusive.

        See [paging parameters](/global-api/paging-parameters) for more
        information on paging.
      schema:
        type: integer
      style: form
    Inventory_API_v1_cursor_start:
      name: cursor_start
      in: query
      description: >-
        A cursor for use in pagination which defines the starting `id` of the
        next page of results.

        See [paging parameters](/global-api/paging-parameters) for more
        information on paging.
      schema:
        type: integer
      style: form
  schemas:
    Inventory_API_v1_LocationProfile:
      title: LocationProfile
      type: object
      description: >-
        A `LocationProfile` is a warehouse-scoped, named set of locations
        defined by match clauses

        rather than by enumeration. Slotting Rules and Replenishment Policies
        target a profile

        instead of listing locations, so the same policy keeps working as the
        warehouse grows.


        Membership is materialized asynchronously. Saving a definition creates
        an immutable revision

        and starts a build; the previously published revision keeps serving
        consumers until the

        replacement is ready. A profile without a ready active revision has no
        resolved member set

        and is never represented as an empty one — `member_count` is `null`
        rather than `0`.
      properties:
        type:
          type: string
          enum:
            - LocationProfile
          readOnly: true
          description: >-
            This is a read-only property that describes the type of object in
            the response body.
        id:
          type: integer
          format: int32
          example: 42
          readOnly: true
          description: >-
            The internal `id` property used as a path parameter in a resource
            lookup.
        name:
          type: string
          minLength: 1
          maxLength: 255
          example: Rack Pick Face
          description: The user-visible profile name, unique within the warehouse.
        description:
          type: string
          nullable: true
          example: >-
            Pickable shelf locations on rack aisles, excluding ground-level
            overflow.
          description: >-
            An optional explanation of the locations represented by this
            profile.
        status:
          type: string
          enum:
            - ready
            - building
            - failed
            - none
          description: >-
            The availability of the revision currently published for this
            profile:
              - `ready` — a published revision is serving consumers, and stays serving while any
                replacement builds. Check `pending_revision` to see a rebuild in flight.
              - `building` — no revision has been published yet and the first one is materializing.
              - `failed` — no revision has been published and the latest attempt failed.
              - `none` — no published or actionable pending revision is available.

            A Slotting Rule may reference only a `ready` profile. A
            Replenishment Policy may

            reference a profile before it is ready, but remains disqualified
            until a revision

            publishes. For a new profile, poll until `status` is `ready`. For an
            update or rebuild,

            inspect `pending_revision`: successful publication is complete when
            it becomes `null`,

            while a failed replacement remains present with a `failed` status.
        member_count:
          type: integer
          format: int32
          nullable: true
          example: 486
          description: >-
            The resolved member location count of the published revision. A
            ready profile with zero

            members is a genuine empty set; `null` means the profile has no
            published revision and

            therefore no resolved member set at all.
        match:
          type: array
          nullable: true
          description: >-
            The ordered clauses defining membership, all of which must match.
            This is the latest

            *intended* definition: the pending revision's clauses while a
            rebuild is in flight,

            otherwise the published revision's.


            An empty array is the saved all-locations definition, which matches
            every non-temporary

            location in the warehouse. `null` means no definition has ever been
            saved, which only a

            legacy profile head can be.
          items:
            $ref: '#/components/schemas/Inventory_API_v1_LocationProfileMatchClause'
          example:
            - field: location_label
              operator: starts_with
              values:
                - RK
            - field: slot_type
              operator: is_one_of
              values:
                - type: SlotType
                  id: 4
            - field: location_tag
              operator: is_not_one_of
              values:
                - type: LocationTag
                  id: 1
            - field: script
              operator: returns_true
              cel: is_pickable
        match_readable:
          type: string
          nullable: true
          example: >-
            startsWith(label.toLower(), 'rk') && (present(slot_type_id) &&
            (slot_type_id in [4])) && !(1 in tag_ids) && (is_pickable)
          description: >-
            The same definition compiled to a single CEL expression, for display
            and for comparing

            two profiles at a glance. This is the read-only counterpart of a
            `ProductProfile`'s

            `conditions_readable`.


            `true` is the all-locations definition. `null` whenever `match` is
            `null`.
        location_tags:
          type: array
          readOnly: true
          description: >-
            Unique Location Tags referenced by the ordered match definition, in
            first-appearance order. Request this field when an editor needs to
            resolve the shallow Tag references.
          items:
            $ref: '#/components/schemas/Inventory_API_v1_LocationTagRef'
        slot_types:
          type: array
          readOnly: true
          description: >-
            Unique Slot Types referenced by the ordered match definition, in
            first-appearance order. Request this field when an editor needs to
            resolve the shallow Slot Type references.
          items:
            $ref: '#/components/schemas/Inventory_API_v1_SlotTypeRef'
        active_revision:
          type: object
          nullable: true
          description: >-
            The published revision currently serving consumers, or `null` when
            none has published yet.
          allOf:
            - $ref: >-
                #/components/schemas/Inventory_API_v1_LocationProfileActiveRevision
        pending_revision:
          type: object
          nullable: true
          description: >-
            The replacement revision being materialized, or whose latest attempt
            failed. `null` once

            a revision publishes and no rebuild is in flight.
          allOf:
            - $ref: >-
                #/components/schemas/Inventory_API_v1_LocationProfilePendingRevision
        used_by:
          $ref: '#/components/schemas/Inventory_API_v1_LocationProfileUsedBy'
        created_at:
          type: string
          format: date-time
          nullable: true
          example: '2026-07-14T09:12:05Z'
          description: The UTC date and time the profile was created.
        updated_at:
          type: string
          format: date-time
          nullable: true
          example: '2026-08-02T06:41:18Z'
          description: >-
            The UTC date and time the profile metadata or revision pointers last
            changed.
      required:
        - type
        - id
      additionalProperties: false
      example:
        type: LocationProfile
        id: 26
        name: Cold Storage Pick Faces
        description: Pickable shelf locations approved for refrigerated inventory.
        status: ready
        member_count: 486
        match:
          - field: slot_type
            operator: is_one_of
            values:
              - type: SlotType
                id: 5
          - field: location_tag
            operator: is_one_of
            values:
              - type: LocationTag
                id: 12
        match_readable: (present(slot_type_id) && (slot_type_id in [5])) && (12 in tag_ids)
        active_revision:
          id: 1184
          status: ready
          member_count: 486
          ready_at: '2026-08-12T06:41:22Z'
        used_by:
          slotting_rules: 3
          replenishment_policies: 1
        created_at: '2026-07-14T09:12:05Z'
        updated_at: '2026-08-12T06:41:18Z'
    Inventory_API_v1_location-profiles:
      type: object
      description: >-
        Direct Location Tags and Slot Types expanded through nested `fields:*`
        parameters.
      example: {}
      properties:
        LocationTag:
          type: array
          items:
            $ref: '#/components/schemas/Inventory_API_v1_LocationTag'
        SlotType:
          type: array
          items:
            $ref: '#/components/schemas/Inventory_API_v1_SlotType'
      additionalProperties: false
    Inventory_API_v1_has_more:
      type: boolean
      description: |-
        True if the collection has more items on the next page.
        Use the "next" link to retrieve the next page of results.
    Inventory_API_v1_next:
      type: string
      nullable: true
      description: The resource path for the next page of results if any are expected.
    Inventory_API_v1_previous:
      type: string
      nullable: true
      description: The resource path for the previous page of results if any are expected.
    Inventory_API_v1_meta:
      type: object
      properties:
        processing_time:
          type: number
          description: Total time in which request is processed and response is sent back.
          example: 0.2525252525
        cursor_start:
          type: integer
          description: >-
            A cursor for use in pagination which defines the starting `id` of
            the next page of results.

            See [paging parameters](/global-api/paging-parameters) for more
            information on paging.
          nullable: true
        cursor_end:
          type: integer
          description: >-
            A cursor for use in pagination which defines the last `id` of the
            next page of results, non-inclusive.

            See [paging parameters](/global-api/paging-parameters) for more
            information on paging.
          nullable: true
        count:
          type: integer
          description: >-
            The total number of items matching the query before applying paging
            parameters.

            This field is only present if the query parameter `count=1` is
            present in the request.
      description: Additional metadata pertaining to the response.
    Inventory_API_v1_location-profile-membership-meta:
      type: object
      description: >-
        Warehouse-level membership repair freshness. This is the freshness of
        the

        authoritative resolved membership, distinct from the Replenishment
        quantity

        computation freshness.
      properties:
        membership_status:
          type: string
          enum:
            - idle
            - repairing
            - failed
            - null
          nullable: true
          description: >-
            The durable membership repair lifecycle state of the warehouse, or
            `null` when

            no location change was ever recorded.
        membership_current:
          type: boolean
          description: >-
            Whether every recorded location change has been applied to the
            active profile

            memberships of the warehouse.
        membership_repaired_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            The time the last requested membership repair completed, or `null`
            when none ran yet.
    Inventory_API_v1_location-profile-fields-enum:
      title: LocationProfile
      description: >-
        Specify additional fields of the `LocationProfile` object to be included
        in the response.
      type: array
      items:
        type: string
        enum:
          - all
          - name
          - description
          - status
          - member_count
          - match
          - match_readable
          - location_tags
          - slot_types
          - active_revision
          - pending_revision
          - used_by
          - created_at
          - updated_at
    Inventory_API_v1_location-tag-fields-enum:
      title: LocationTag
      description: >-
        Specify additional fields of the `LocationTag` object to be included in
        the response.
      type: array
      items:
        type: string
        enum:
          - basic
          - all
          - name
          - description
          - color
          - sort_order
          - is_deleted
          - created_at
          - updated_at
    Inventory_API_v1_slot_type-fields-enum:
      title: SlotType
      description: >-
        Specify additional fields of the `SlotType` object to be included in the
        response.
      type: array
      items:
        type: string
        enum:
          - basic
          - all
          - name
          - is_pickable
          - sort_order
          - patterns
          - is_fixed_capacity
          - slot_dimensions
          - weight_capacity
          - created_at
          - updated_at
    Inventory_API_v1_LocationProfileMatchClause:
      title: LocationProfileMatchClause
      type: object
      description: >-
        One clause of a Location Profile definition. Clauses are ANDed and
        evaluated in the order

        they appear, so a location joins the profile only when every clause
        matches it.


        A clause carries its operands in exactly one channel: `values` for the
        typed operators and

        `cel` for `script`. Only the channel in use is present — the other is
        omitted rather than

        returned as `null`.
      properties:
        field:
          type: string
          enum:
            - zone
            - rack
            - rack_type
            - location_label
            - slot_type
            - location_tag
            - script
          example: location_label
          description: |-
            The location property the clause tests:
              - `zone`, `rack`, `rack_type`, `slot_type`, `location_tag` — entity references.
              - `location_label` — the location's label text.
              - `script` — a CEL expression evaluated against the location, for cases the typed
                fields cannot express.
        operator:
          type: string
          enum:
            - is_one_of
            - is_not_one_of
            - starts_with
            - not_starts_with
            - contains
            - not_contains
            - ends_with
            - not_ends_with
            - matches
            - not_matches
            - returns_true
          example: starts_with
          description: >-
            The comparison applied to the field. Which operators are available
            depends on the field:
              - entity fields (`zone`, `rack`, `rack_type`, `slot_type`, `location_tag`) take
                `is_one_of` and `is_not_one_of`.
              - `location_label` takes `starts_with`, `contains`, `ends_with`, `matches` and their
                `not_` counterparts. `matches` takes a regular expression.
              - `script` takes `returns_true`.
        values:
          type: array
          description: >-
            The operands. Absent on a `script` clause, which carries `cel`
            instead. Entity fields whose target is exposed as

            its own Global API resource carry `{type, id}` references; `zone`
            carries bare integer

            ids because zones have no resource of their own. `location_label`
            carries a single

            string needle.
          items:
            oneOf:
              - $ref: '#/components/schemas/Inventory_API_v1_RackRef'
              - $ref: '#/components/schemas/Inventory_API_v1_RackTypeRef'
              - $ref: '#/components/schemas/Inventory_API_v1_SlotTypeRef'
              - $ref: '#/components/schemas/Inventory_API_v1_LocationTagRef'
              - type: integer
                description: A warehouse zone `id`.
              - type: string
                description: >-
                  A `location_label` needle, or a regular expression for the
                  `matches` operators.
        cel:
          type: string
          example: is_pickable
          description: >-
            The CEL expression evaluated for a `script` clause. Absent on every
            other clause, which

            carries `values` instead. The expression returns a boolean.
      required:
        - field
        - operator
      additionalProperties: false
    Inventory_API_v1_LocationTagRef:
      title: LocationTagRef
      type: object
      description: A reference to a `LocationTag` object.
      properties:
        type:
          type: string
          enum:
            - LocationTag
          description: This property describes the type of object in the response body.
        id:
          type: integer
          description: >-
            The internal `id` property used as a path parameter in a resource
            lookup.
          example: 4
      required:
        - type
        - id
      additionalProperties: false
    Inventory_API_v1_SlotTypeRef:
      title: SlotTypeRef
      type: object
      description: A reference to a `SlotType` object.
      properties:
        type:
          type: string
          enum:
            - SlotType
          description: This property describes the type of object in the response body.
        id:
          type: integer
          example: 54
          description: >-
            The internal `id` property used as a path parameter in a resource
            lookup.
      required:
        - type
        - id
      nullable: true
      additionalProperties: false
    Inventory_API_v1_LocationProfileActiveRevision:
      title: LocationProfileActiveRevision
      type: object
      description: >-
        The published Location Profile revision whose materialized membership is
        serving consumers.

        A published revision is always `ready`; it keeps serving until a
        replacement finishes

        building and atomically takes over.
      properties:
        id:
          type: integer
          format: int32
          example: 1184
          description: The internal `id` of the published revision.
        status:
          type: string
          enum:
            - ready
          description: Always `ready` — an unpublished revision is never the active one.
        member_count:
          type: integer
          format: int32
          example: 486
          description: >-
            The number of locations this revision resolved to. Zero is a genuine
            empty set.
        ready_at:
          type: string
          format: date-time
          nullable: true
          example: '2026-08-02T06:41:22Z'
          description: >-
            The UTC date and time this revision finished materializing and was
            published.
      required:
        - id
        - status
        - member_count
        - ready_at
      additionalProperties: false
    Inventory_API_v1_LocationProfilePendingRevision:
      title: LocationProfilePendingRevision
      type: object
      description: >-
        The Location Profile revision being materialized, or whose latest
        attempt failed. It is not

        serving anyone yet: while it builds, the profile keeps answering with
        its published revision

        if it has one. A `failed` pending revision is retried by a rebuild.
      properties:
        id:
          type: integer
          format: int32
          example: 1185
          description: The internal `id` of the pending revision.
        status:
          type: string
          enum:
            - building
            - failed
          description: >-
            `building` while membership is being materialized, `failed` when the
            latest attempt

            stopped with an error. See `last_error` for the diagnostic.
        started_at:
          type: string
          format: date-time
          nullable: true
          example: '2026-08-02T06:41:19Z'
          description: The UTC date and time the latest materialization attempt started.
        failed_at:
          type: string
          format: date-time
          nullable: true
          example: '2026-08-02T06:41:21Z'
          description: >-
            The UTC date and time the revision was marked failed, or `null` when
            it has not failed.
        last_error:
          type: string
          nullable: true
          example: >-
            A location rule in this Profile could not be evaluated. Review the
            Profile rules.
          description: >-
            The diagnostic from the latest failed attempt, or `null` when it has
            not failed.
      required:
        - id
        - status
        - started_at
        - failed_at
        - last_error
      additionalProperties: false
    Inventory_API_v1_LocationProfileUsedBy:
      title: LocationProfileUsedBy
      type: object
      description: >-
        Live counts of the authoring objects referencing this Location Profile.
        A profile with any

        reference cannot be deleted. These fields do not include published
        Replenishment result rows,

        which may temporarily continue to reference the profile until the
        Warehouse index is rebuilt.
      properties:
        slotting_rules:
          type: integer
          format: int32
          example: 3
          description: The number of Slotting Rules currently referencing this profile.
        replenishment_policies:
          type: integer
          format: int32
          example: 1
          description: >-
            The number of Replenishment Policies currently referencing this
            profile.
      required:
        - slotting_rules
        - replenishment_policies
      additionalProperties: false
    Inventory_API_v1_LocationTag:
      title: LocationTag
      type: object
      description: >-
        A `LocationTag` is a free-form label that warehouse staff assign to
        locations to record a

        property the location schema does not model — "hazmat approved", "cold
        storage", "mezzanine".

        Location Profiles match on tags, so the set of tags is part of a
        warehouse's slotting policy

        rather than mere decoration.


        Deleting a tag is a soft delete: the row survives so locations already
        carrying it keep

        rendering it, and only its availability for new assignments is
        withdrawn.
      properties:
        type:
          type: string
          enum:
            - LocationTag
          readOnly: true
          description: >-
            This is a read-only property that describes the type of object in
            the response body.
        id:
          type: integer
          format: int32
          description: >-
            The internal `id` property used as a path parameter in a resource
            lookup.
          readOnly: true
          example: 4
        name:
          type: string
          maxLength: 255
          example: Hazmat
          description: >-
            The display name of the tag, unique among location tags. A submitted
            name is limited to 230

            characters; the remainder of the field is reserved for the suffix a
            deleted tag carries.
        description:
          type: string
          maxLength: 255
          nullable: true
          example: Locations approved to store hazardous materials.
          description: An explanation of what the tag signifies.
        color:
          $ref: '#/components/schemas/Inventory_API_v1_tag_color'
        sort_order:
          type: integer
          example: 1
          description: >-
            The position the tag takes relative to other location tags when they
            are listed for selection.
        is_deleted:
          type: boolean
          example: false
          description: >-
            Whether the tag has been soft-deleted. Deleted tags cannot be
            assigned to further

            locations, and their `name` carries a `(Deleted ID: n)` suffix so
            the original name

            becomes available again.
        created_at:
          type: string
          format: date-time
          nullable: true
          example: '2026-08-01T14:03:22Z'
          description: |-
            The UTC date and time the tag was created.\
              `Optional Field`
        updated_at:
          type: string
          format: date-time
          nullable: true
          example: '2026-08-01T14:03:22Z'
          description: |-
            The UTC date and time the tag was last modified.\
              `Optional Field`
      required:
        - type
        - id
      additionalProperties: false
    Inventory_API_v1_SlotType:
      title: SlotType
      type: object
      description: >-
        The `SlotType` object allows locations with common attributes or
        purposes to be easily distinguishable.

        The slot type also determines if a location is pickable or not which may
        affect whether or not the location

        can be reserved for shipments when creating a batch.


        A slot type may additionally declare a fixed physical capacity, which
        drives slot capacity and

        utilization calculations, and a list of label patterns that auto-assign
        the type to matching locations.
      properties:
        type:
          type: string
          enum:
            - SlotType
          readOnly: true
          description: >-
            This is a read-only property that describes the type of object in
            the response body.
        id:
          type: integer
          example: 54
          description: >-
            The internal `id` property used as a path parameter in a resource
            lookup.
        name:
          type: string
          maxLength: 45
          description: The descriptive name of the slot type, unique across slot types.
          example: Pickable Pallets
        is_pickable:
          type: boolean
          description: >-
            Whether or not the location is considered to be easy to pick from
            for the purpose of generating pickable batches.
          default: true
        sort_order:
          type: integer
          minimum: 0
          maximum: 65535
          example: 10
          description: >-
            The order in which this slot type's auto-assign patterns are tested,
            lowest first; among slot

            types sharing a sort order the newest is tested first. The first
            pattern to match a location

            label decides its slot type.\
              `Optional Field`
        patterns:
          type: array
          description: >-
            Label patterns that automatically assign this slot type to matching
            locations. Stored in a

            canonical order, which is not necessarily the order they were
            submitted in.\
              `Optional Field`
          items:
            $ref: '#/components/schemas/Inventory_API_v1_Pattern'
        is_fixed_capacity:
          type: boolean
          example: true
          description: >-
            Whether slots of this type hold a fixed, known amount, making them
            eligible for slot capacity

            and utilization calculations. When enabled, all three slot
            dimensions are required.\
              `Optional Field`
        slot_dimensions:
          description: |-
            The interior dimensions of slots assigned to this slot type.\
              `Optional Field`
          allOf:
            - $ref: '#/components/schemas/Inventory_API_v1_DimensionsWHD'
        weight_capacity:
          description: >-
            The maximum weight a slot of this type may hold, used to clamp
            computed slot capacities.

            Must not be negative.\
              `Optional Field`
          allOf:
            - $ref: '#/components/schemas/Inventory_API_v1_WeightNonNegative'
        created_at:
          type: string
          format: date-time
          nullable: true
          example: '2026-08-01T14:03:22Z'
          description: |-
            The UTC date and time the slot type was created.\
              `Optional Field`
        updated_at:
          type: string
          format: date-time
          nullable: true
          example: '2026-08-01T14:03:22Z'
          description: |-
            The UTC date and time the slot type was last modified.\
              `Optional Field`
      required:
        - type
        - id
      additionalProperties: false
    Inventory_API_v1_RackRef:
      title: RackRef
      type: object
      description: >-
        A `Rack` is a grouping of locations in a warehouse implying a very close
        proximity.
      properties:
        type:
          type: string
          enum:
            - Rack
          description: This property describes the type of object in the response body.
        id:
          type: integer
          description: >-
            The internal `id` property used as a path parameter in a resource
            lookup.
      required:
        - type
        - id
      nullable: true
      additionalProperties: false
    Inventory_API_v1_RackTypeRef:
      title: RackTypeRef
      type: object
      description: >-
        A `RackType` classifies racks by their physical characteristics (e.g.
        "Wide Aisle", "Narrow Aisle").
      properties:
        type:
          type: string
          enum:
            - RackType
          description: This property describes the type of object in the response body.
        id:
          type: integer
          description: >-
            The internal `id` property used as a path parameter in a resource
            lookup.
      required:
        - type
        - id
      nullable: true
      additionalProperties: false
    Inventory_API_v1_tag_color:
      type: string
      enum:
        - black1
        - black2
        - black3
        - black4
        - black5
        - blue1
        - blue2
        - blue3
        - blue4
        - blue5
        - brown1
        - brown2
        - brown3
        - brown4
        - brown5
        - gray1
        - gray2
        - gray3
        - gray4
        - gray5
        - green1
        - green2
        - green3
        - green4
        - green5
        - orange1
        - orange2
        - orange3
        - orange4
        - orange5
        - purple1
        - purple2
        - purple3
        - purple4
        - purple5
        - red1
        - red2
        - red3
        - red4
        - red5
        - yellow1
        - yellow2
        - yellow3
        - yellow4
        - yellow5
      example: blue3
      description: >-
        The palette entry the tag renders with, written as a color family
        followed by a shade from 1 (lightest) to 5 (darkest).
    Inventory_API_v1_Pattern:
      title: SlotTypePattern
      type: object
      description: >-
        A rule that assigns its slot type to every location whose label matches
        `regex`, applied only

        to locations that are still set to automatic slot type assignment.
      properties:
        description:
          type: string
          example: Pallet racks on aisles A through D
          description: An explanation of which locations the pattern is meant to capture.
        regex:
          type: string
          example: P-[A-D]-\d+
          description: A regular expression matched against the whole location label.
        warehouses:
          type: array
          description: >-
            The warehouses the pattern applies to. An empty list, or omitting
            the property on a

            request, applies it to every warehouse. Always present in responses.
          items:
            $ref: '#/components/schemas/Inventory_API_v1_WarehouseRef'
      required:
        - description
        - regex
      additionalProperties: false
    Inventory_API_v1_DimensionsWHD:
      title: DimensionsWHD
      type: object
      nullable: true
      properties:
        width:
          type: number
          description: The width defined as a floating-point number up to 4 decimal places.
          format: float
          example: 48
        height:
          type: number
          description: >-
            The height defined as a floating-point number up to 4 decimal
            places.
          format: float
          example: 60
        depth:
          type: number
          description: The depth defined as a floating-point number up to 4 decimal places.
          format: float
          example: 42
        unit:
          $ref: '#/components/schemas/Inventory_API_v1_LengthUnit'
    Inventory_API_v1_WeightNonNegative:
      title: WeightNonNegative
      type: object
      nullable: true
      description: >-
        A weight that describes a capacity or an allowance rather than a
        measurement, and so cannot be

        negative. Send `null` rather than an object without a `value` to clear a
        stored weight.
      required:
        - value
      properties:
        value:
          type: number
          description: >-
            The weight quantity defined as a floating point value of up to 4
            decimal places.
          format: float
          minimum: 0
          maximum: 99999999.999999
          example: 20
        unit:
          $ref: '#/components/schemas/Inventory_API_v1_WeightUnit'
    Inventory_API_v1_WarehouseRef:
      title: WarehouseRef
      type: object
      description: A reference to a `Warehouse` by `id`.
      properties:
        type:
          type: string
          enum:
            - Warehouse
          description: This property describes the type of object in the response body.
        id:
          type: integer
          format: int32
          description: >-
            The internal `id` property used as a path parameter in a resource
            lookup.
      required:
        - type
        - id
      nullable: true
      additionalProperties: false
    Inventory_API_v1_LengthUnit:
      type: string
      description: The imperical or metric unit of measurement.
      enum:
        - in
        - mm
        - cm
        - m
    Inventory_API_v1_WeightUnit:
      type: string
      description: This can be an imperial or metric unit for weight.
      enum:
        - lb
        - oz
        - kg
        - g
  responses:
    Inventory_API_v1_400-bad-request:
      description: >-
        The request was invalid. The client must change the request. See the
        response body for more details.
      content:
        application/json:
          schema:
            type: object
            properties:
              errors:
                type: array
                items:
                  type: object
                  properties:
                    type:
                      type: string
                      description: The error type code.
                      enum:
                        - parser
                        - parameters
                        - openapi
                    message:
                      type: string
                      description: An English sentence describing the error type.
                    details:
                      type: array
                      description: >-
                        An array of objects describing which keys are
                        responsible for the error and detailed messages
                        describing why they are not valid.
                      items:
                        type: object
                        properties:
                          key:
                            type: string
                            description: The path to the key which relates to the error.
                          message:
                            type: string
                            description: >-
                              An English sentence describing the details of the
                              error.
                        additionalProperties: false
                  additionalProperties: false
                minItems: 1
            additionalProperties: false
          example:
            errors:
              - type: parameters
                message: The supplied parameters are invalid.
    Inventory_API_v1_404-not-found:
      description: >-
        The requested resource was not found. It may have been deleted, it may
        have never existed, or you may not have permission to view it.
      content:
        application/json:
          schema:
            type: object
            properties:
              errors:
                type: array
                items:
                  type: object
                  properties:
                    type:
                      type: string
                      description: The error type code.
                      enum:
                        - not_found
                    message:
                      type: string
                      description: An English sentence describing the error type.
                    details:
                      type: array
                      description: >-
                        An array of objects describing which keys are
                        responsible for the error and detailed messages
                        describing why they are not valid.
                      items:
                        type: object
                        properties:
                          key:
                            type: string
                            description: The path to the key which relates to the error.
                          message:
                            type: string
                            description: >-
                              An English sentence describing the details of the
                              error.
                        additionalProperties: false
                  additionalProperties: false
                minItems: 1
            additionalProperties: false
          example:
            errors:
              - type: not_found
                message: The server could not find the requested resource.
    Inventory_API_v1_500-internal-server-error:
      description: >-
        Internal Server Error - Something wrong happened at server side. Contact
        server administrator for more details.
  securitySchemes:
    ShipStream_bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Generate a JWT access token through a Custom Global Integration and
        provide it with each request in the `Authorization` header prefixed with
        "Bearer" and then a single space.

````