Commerce Layer will be proud to sponsor the next JAMstack Conf in London — 09-10 July, 2019 🎉 Stay tuned!

API REFERENCE

Stock Levels

Stock levels build a hierarchy of stock locations within an inventory model. In case an SKU is available in more stock locations, it gets shipped from those with the highest priority.

The stock level object

A Stock level object is returned as part of the response body of each successful create, list, retrieve or update API call. The following table contains the list of all its fields along with their type, description and example values.

Object fields:
priority
integer
The stock location priority within the associated invetory model.
Example:
1
on_hold
boolean
Indicates if the shipment should be put on hold if fulfilled from the associated stock location. This is useful to manage use cases like back-orders, pre-orders or personalized orders that need to be customized before being fulfilled.
Example:
false
id
integer
Unique identifier for the resource.
Example:
1234
created_at
datetime
Time at which the resource was created.
Example:
2018-01-01T12:00:00.000Z
updated_at
datetime
Time at which the resource was last updated.
Example:
2018-01-01T12:00:00.000Z
reference
string
A string that you can use to add your own identifier to the resource. This can be useful for intergrating the resource to an external system, like an ERP, a marketing tool or a CRM.
Example:
ANYREFEFERNCE
metadata
object
Set of key-value pairs that you can attach to the resource. This can be useful for storing additional information about the resource in a structured format.
Example:
{"foo":"bar"}
relationship (N:1)
The associated stock location.
relationship (N:1)
The associated inventory model.

Create a stock level

To create a new stock level, send a POST request to the /api/stock_levels endpoint, passing the resource arguments in the request body. The following table contains the list of all the possible arguments, along with their type, description and examples values. All the arguments marked as required must be present in the request.

Arguments:
priority
required
The stock location priority within the associated invetory model.
Example:
1
on_hold
optional
Indicates if the shipment should be put on hold if fulfilled from the associated stock location. This is useful to manage use cases like back-orders, pre-orders or personalized orders that need to be customized before being fulfilled.
Example:
false
reference
optional
A string that you can use to add your own identifier to the resource. This can be useful for intergrating the resource to an external system, like an ERP, a marketing tool or a CRM.
Example:
ANYREFEFERNCE
metadata
optional
Set of key-value pairs that you can attach to the resource. This can be useful for storing additional information about the resource in a structured format.
Example:
{"foo":"bar"}
required
The associated stock location.
required
The associated inventory model.
Example request:
POST /api/stock_levels HTTP/1.1
Content-Type: application/vnd.api+json
Accept: application/vnd.api+json

{
  "data": {
    "type": "stock_levels",
    "attributes": {
      "priority": "1"
    },
    "relationships": {
      "stock_location": {
        "data": {
          "type": "stock_locations",
          "id": "1234"
        }
      },
      "inventory_model": {
        "data": {
          "type": "inventory_models",
          "id": "1234"
        }
      }
    }
  }
}
Example response:
HTTP/1.1 201 Created
Content-Type: application/vnd.api+json

{
  "data": {
    "id": "1234",
    "type": "stock_levels",
    "links": {
      "self": "https://your-brand.commercelayer.io/api/stock_levels/1234"
    },
    "attributes": {
      "priority": "1",
      "on_hold": "false",
      "id": "1234",
      "created_at": "2018-01-01T12:00:00.000Z",
      "updated_at": "2018-01-01T12:00:00.000Z",
      "reference": "ANYREFEFERNCE",
      "metadata": {
        "foo": "bar"
      }
    },
    "relationships": {
      "stock_location": {
        "links": {
          "self": "https://your-brand.commercelayer.io/api/stock_levels/1234/relationships/stock_location",
          "related": "https://your-brand.commercelayer.io/api/stock_levels/1234/stock_location"
        }
      },
      "inventory_model": {
        "links": {
          "self": "https://your-brand.commercelayer.io/api/stock_levels/1234/relationships/inventory_model",
          "related": "https://your-brand.commercelayer.io/api/stock_levels/1234/inventory_model"
        }
      }
    },
    "meta": {
      "mode": "test"
    }
  }
}

List all stock levels

To fetch a collection of stock levels, send a GET request to the /api/stock_levels endpoint.

Example request:
GET /api/stock_levels HTTP/1.1
Accept: application/vnd.api+json
Example response:
HTTP/1.1 200 OK
Content-Type: application/vnd.api+json

{
  "data": [
    {
      "id": "1234",
      "type": "stock_levels",
      "links": {
        "self": "https://your-brand.commercelayer.io/api/stock_levels/1234"
      },
      "attributes": {
        "priority": "1",
        "on_hold": "false",
        "id": "1234",
        "created_at": "2018-01-01T12:00:00.000Z",
        "updated_at": "2018-01-01T12:00:00.000Z",
        "reference": "ANYREFEFERNCE",
        "metadata": {
          "foo": "bar"
        }
      },
      "relationships": {
        "stock_location": {
          "links": {
            "self": "https://your-brand.commercelayer.io/api/stock_levels/1234/relationships/stock_location",
            "related": "https://your-brand.commercelayer.io/api/stock_levels/1234/stock_location"
          }
        },
        "inventory_model": {
          "links": {
            "self": "https://your-brand.commercelayer.io/api/stock_levels/1234/relationships/inventory_model",
            "related": "https://your-brand.commercelayer.io/api/stock_levels/1234/inventory_model"
          }
        }
      },
      "meta": {
        "mode": "test"
      }
    },
    {
      "other": "... 24 stock_levels (first page)"
    }
  ],
  "meta": {
    "record_count": 125,
    "page_count": 5
  },
  "links": {
    "first": "/api/stock_levels?page[number]=1&page[size]=25",
    "prev": "/api/stock_levels?page[number]=2&page[size]=25",
    "next": "/api/stock_levels?page[number]=4&page[size]=25",
    "last": "/api/stock_levels?page[number]=5&page[size]=25"
  }
}
Available filters
id q on_hold reference stock_location_id inventory_model_id ids created_at_from created_at_to updated_at_from updated_at_to
Sortable attributes
priority on_hold id created_at updated_at reference

Retrieve a stock level

To fetch a single stock level, send a GET request to the /api/stock_levels/{{id}} endpoint, where {{id}} is the id of the resource that you want to retrieve.

Example request:
GET /api/stock_levels/1234 HTTP/1.1
Accept: application/vnd.api+json
Example response:
HTTP/1.1 200 OK
Content-Type: application/vnd.api+json

{
  "data": {
    "id": "1234",
    "type": "stock_levels",
    "links": {
      "self": "https://your-brand.commercelayer.io/api/stock_levels/1234"
    },
    "attributes": {
      "priority": "1",
      "on_hold": "false",
      "id": "1234",
      "created_at": "2018-01-01T12:00:00.000Z",
      "updated_at": "2018-01-01T12:00:00.000Z",
      "reference": "ANYREFEFERNCE",
      "metadata": {
        "foo": "bar"
      }
    },
    "relationships": {
      "stock_location": {
        "links": {
          "self": "https://your-brand.commercelayer.io/api/stock_levels/1234/relationships/stock_location",
          "related": "https://your-brand.commercelayer.io/api/stock_levels/1234/stock_location"
        }
      },
      "inventory_model": {
        "links": {
          "self": "https://your-brand.commercelayer.io/api/stock_levels/1234/relationships/inventory_model",
          "related": "https://your-brand.commercelayer.io/api/stock_levels/1234/inventory_model"
        }
      }
    },
    "meta": {
      "mode": "test"
    }
  }
}

Update a stock level

To update an existing stock level, send a PATCH request to the /api/stock_levels/{{id}} endpoint, where {{id}} is the id of the resource that you want to update. The following table contains the list of all the possible arguments that you can pass with the request body, along with their type, description and examples values. Please note that all arguments are optional.

Arguments:
priority
optional
The stock location priority within the associated invetory model.
Example:
1
on_hold
optional
Indicates if the shipment should be put on hold if fulfilled from the associated stock location. This is useful to manage use cases like back-orders, pre-orders or personalized orders that need to be customized before being fulfilled.
Example:
false
reference
optional
A string that you can use to add your own identifier to the resource. This can be useful for intergrating the resource to an external system, like an ERP, a marketing tool or a CRM.
Example:
ANYREFEFERNCE
metadata
optional
Set of key-value pairs that you can attach to the resource. This can be useful for storing additional information about the resource in a structured format.
Example:
{"foo":"bar"}
optional
The associated stock location.
optional
The associated inventory model.
Example request:
PATCH /api/stock_levels/1234 HTTP/1.1
Content-Type: application/vnd.api+json
Accept: application/vnd.api+json

{
  "data": {
    "type": "stock_levels",
    "id": 1234,
    "attributes": {
      "priority": "1"
    },
    "relationships": {
    }
  }
}
Example response:
HTTP/1.1 201 Created
Content-Type: application/vnd.api+json

{
  "data": {
    "id": "1234",
    "type": "stock_levels",
    "links": {
      "self": "https://your-brand.commercelayer.io/api/stock_levels/1234"
    },
    "attributes": {
      "priority": "1",
      "on_hold": "false",
      "id": "1234",
      "created_at": "2018-01-01T12:00:00.000Z",
      "updated_at": "2018-01-01T12:00:00.000Z",
      "reference": "ANYREFEFERNCE",
      "metadata": {
        "foo": "bar"
      }
    },
    "relationships": {
      "stock_location": {
        "links": {
          "self": "https://your-brand.commercelayer.io/api/stock_levels/1234/relationships/stock_location",
          "related": "https://your-brand.commercelayer.io/api/stock_levels/1234/stock_location"
        }
      },
      "inventory_model": {
        "links": {
          "self": "https://your-brand.commercelayer.io/api/stock_levels/1234/relationships/inventory_model",
          "related": "https://your-brand.commercelayer.io/api/stock_levels/1234/inventory_model"
        }
      }
    },
    "meta": {
      "mode": "test"
    }
  }
}

Delete a stock level

To delete a stock level, send a DELETE request to the /api/stock_levels/{{id}} endpoint, where {{id}} is the id of the resource that you want to delete.

Example request:
DELETE /api/stock_levels/1234 HTTP/1.1
Accept: application/vnd.api+json
Example response:
HTTP/1.1 204 No Content