Backend API
Categories are used to organize products and can be nested, creating a hierarchy that resembles a tree structure. Since categories aren't necessarily tied to store navigation, you may find uses for categories both visible and invisible to customers.
Fields
id
objectIdUnique identifier for the category.
name
stringrequiredA human-friendly name for the category.
active
booleanIndicates the category may be visible to customers. Otherwise it will be hidden from view.
children
CategoryExpandable list of child categories.
date_created
dateautoDate and time the category was created.
date_updated
dateautoDate and time the category was last updated.
demo
booleanIndicates the category is a demo.
description
stringrequiredA long-form description of the category. Can contain HTML or other markup languages.
image
objectImage depicting the category.
image.caption
stringimage.file
objectAn object representing the image's source file.
file.id
objectIdUnique identifier for the file.
file.filename
stringOptional file name.
file.data
filedataA reference to the raw file data.
file.content_type
stringMIME content type of the file.
file.date_uploaded
dateDate the file was uploaded.
file.height
intImage height in pixels, if applicable.
file.length
intSize of the file in bytes.
file.metadata
objectA set of arbitrary data that is typically used to store custom values.
file.md5
stringAn MD5 hash of the file contents. This can be used to uniquely identify the file for caching purposes.
file.private
booleanIndicates whether the file is private.
file.url
stringA public URL to reference the file. Updated automatically if file content changes.
file.width
intImage width in pixels, if applicable.
images
array of objectList of images depicting the category.
id
objectIdautoUnique identifier for the object.
caption
stringA brief description of the image.
file
objectAn object representing the image file.
file.id
objectIdUnique identifier for the file.
file.content_type
stringMIME content type of the file.
file.data
filedataA reference to the raw file data.
file.date_uploaded
dateDate the file was uploaded.
file.filename
stringOptional file name.
file.height
intImage height in pixels, if applicable.
file.length
intSize of the file in bytes.
file.md5
stringAn MD5 hash of the file contents. This can be used to uniquely identify the file for caching purposes.
file.url
stringA public URL to reference the file. Updated automatically if file content changes.
file.width
intImage width in pixels, if applicable.
file.metadata
objectArbitrary image data, typically used to store custom values. See Frontend API for more details.
file.private
booleanIndicates the image is not visible to customers.
meta_description
stringPage description used for search engine optimization purposes.
meta_keywords
stringPage keywords used for search engine optimization purposes.
meta_title
stringPage title used to override product name in storefronts.
parent_id
objectIdID of the parent category, if applicable.
parent
CategoryExpandable link to the parent category, if applicable.
products
array of ProductsExpandable list of category products.
products_indexed
ProductExpandable list of products as indexed and sorted by their respective position.
slug
stringrequiredUnique identifier typically used in URLs. Defaults to name converted to lowercase and hyphenated. If the category has a parent, the default slug will be prefixed with the parent slug. Maximum length of 1,000 characters.
sort
intPosition of the category in a list.
sorting
stringDefault product sorting applied when retrieving products using the category or categories filter. Can be one of popularity, price_asc, price_desc, date_asc. date_desc. If not specified, products are sorted by their manually defined sort value.
top
CategoryExpandable link to the top level category.
top_id
objectIdID of the top level category in the hierarchy.
The category model
{
"name": "Luck",
"active": true,
"sorting": null,
"images": [
{
"file": {
"id": "628bb4ba499bba0019b1ab7c",
"date_uploaded": "2022-05-23T16:22:18.978Z",
"length": 52772,
"md5": "82fd851c2edcd4bd7ed941c561e605ea",
"filename": null,
"content_type": "image/gif",
"metadata": null,
"url": "https://cdn.schema.io/launch-storefront/628bb4ba499bba0019b1ab7c/82fd851c2edcd4bd7ed941c561e605ea",
"width": 127,
"height": 127
},
"id": "628bb4be499bba0019b1ab7e"
}
],
"description": "Luck affects all skills a little bit—with the exception of Acrobatics and Athletics.<br>",
"meta_title": "Luck",
"meta_description": "Luck affects all skills a little bit—not including Acrobatics and Athletics.",
"parent_id": "628bae71499bba0019b1aac2",
"slug": "skills-luck",
"top_id": "628bae71499bba0019b1aac2",
"date_created": "2022-05-23T16:06:40.137Z",
"date_updated": "2022-05-23T16:22:22.300Z",
"sort": 7,
"id": "628bb1101869c10019b4205c"
Create a new category. If you wish to generate your own unique ID for the record, it must use BSON ObjectID format for compatibility.
Arguments
name
stringrequiredA human-friendly name for the category.
active
booleanSet true to make the category visible to customers in a storefront, otherwise it will be hidden from view.
description
stringA long-form description of the category, often containing HTML or other markup languages.
slug
stringUnique identifier typically used in URLs. Defaults to name converted to lowercase and hyphenated. If the category has a parent, the default slug will be prefixed with the parent slug. Maximum length of 1,000 characters.
images
array of objectList of images depicting the category.
.id
objectIdautoUnique identifier for the object.
.caption
stringA brief description of the image.
.file
objectAn object representing the image file.
file.id
objectIdUnique identifier for the file.
file.content_type
stringMIME content type of the file.
file.data
filedataA reference to the raw file data.
file.date_uploaded
dateDate the file was uploaded.
file.filename
stringOptional file name.
file.height
intImage height in pixels, if applicable.
file.length
intSize of the file in bytes.
file.md5
stringAn MD5 hash of the file contents. This can be used to uniquely identify the file for caching purposes.
file.url
stringA public URL to reference the file. Updated automatically if file content changes.
file.width
intImage width in pixels, if applicable.
file.metadata
objectfile.private
booleanmeta_description
stringPage description used for search engine optimization purposes.
meta_keywords
stringPage keywords used for search engine optimization purposes.
meta_title
stringPage title used to override product name in storefronts.
parent_id
objectIdThe id of the parent category, if applicable.
sort
intPosition of the category in a list.
sorting
stringDefault product sorting is applied when retrieving products using the category or categories filter. This can be one of the following: popularity, price_asc, price_desc, date_asc. date_desc. If not specified, products are sorted by their manually defined sort value.
top_id
objectIdID of the top level category in the hierarchy.
top
CategoryExpandable link to the top level category.
parent
CategoryExpandable link to the parent category, if applicable.
children
CategoryExpandable list of child categories.
products
ProductExpandable list of category products.
products_indexed
ProductExpandable list of products as indexed and sorted by their respective position.
const swell = require('swell-node').init('store-id', 'secret-key');
await swell.post('/categories', {
name: 'Widgets',
active: true,
});
Response
{
"id": "5ca9871f9b14d199072432a1",
"active": false,
"name": "Widgets",
"slug": "widgets",
"date_created": "2019-04-01T00:00:00.000Z"
}
Retrieve an existing category using the ID that was returned when created.
Arguments
id
objectIdrequiredThe id of the category to retrieve.
expand
stringExpanding link fields and child collections is performed using the expand argument.
- For example, expand=account would return a related customer account if one exists.
When the field represents a collection, you can specify the query limit.
- For example, expand=variants:10 would return up to 10 records of the variants collection.
See expanding for more details.
etails.
fields
stringReturn only the specified fields in the result. For example fields=name,slug would return only the fields name and slug in the response. Supports nested object and array fields using dot-notation, for example, items.product_id. The category id is always returned.
include
stringInclude one or more arbitrary queries in the response, possibly related to the main query.
See including for more details.
const swell = require('swell-node').init('store-id', 'secret-key');
await swell.get('/categories/{id}', {
id: '5ca9871f9b14d199072432a1',
});
Response
{
"id": "5ca9871f9b14d199072432a1",
"active": true,
"name": "Widgets",
"slug": "widgets",
"date_created": "2019-04-01T00:00:00.000Z"
"description": null,
"images": [
{
"id": "5ca24abb9c077817e5fe2b37",
"file": {
"id": "5ca24abb9c077817e5fe2b38",
"date_uploaded": "2019-04-02T00:26:23.399Z",
"length": 66764,
"md5": "99194f53bfdea832553e7fa8ae8fd80f",
"content_type": "image/png",
"url": "http://cdn.swell.store/test/5ca24abb9c077817e5fe2b36/99194f53bfdea832553e7fa8ae8fd80f",
"width": 940,
"height": 600
}
}
],
"meta_title": null,
"meta_keywords": null,
"meta_description": null
}
Update an existing category.
Arguments
id
objectIdrequiredThe unique identifier of the category.
active
booleanSet true to make the category visible to customers in a storefront, otherwise, it will be hidden from view.
description
stringA long-form description of the category, often containing HTML or other markup languages.
name
stringA human-friendly name for the category.
slug
stringUnique identifier typically used in URLs. Defaults to name converted to lowercase and hyphenated. If the category has a parent, the default slug will be prefixed with the parent slug. Maximum length of 1,000 characters.
image
objectImages depicting the category.
image.caption
stringA brief description of the image.
image.file
objectAn object representing the image file.
file.data
fileSet or overwrite file data. Use the following format when writing a file from binary data (for example an image): data[$binary]=<base64 encoded binary daya>.
file.filename
stringOptional file name.
images
array of imageList of images depicting the category.
image.image
objectprices
objectPrice rules to override price and sale_price when conditions match quantity or account group in a cart. Overrides product prices.
prices.price
currencyPrice applied when conditions are met.
prices.account_group
stringCustomer account group as a condition to apply price.
prices.quantity_max
intMaximum quantity as a condition to apply price.
prices.quantity_min
intMinimum quantity as a condition to apply price.
sale
booleanIndicates the variant is on sale and sale_price is used by default when the product is added to a cart. Overrides product sale.
sale_price
currencySale price used by default when sale=true, overriding price. Overrides product sale price.
shipment_weight
floatIf specified, shipping is calculated based on this shipping weight. Otherwise, it will assume 1 lb/oz/kg depending on your default weight unit. Overrides product shipping weight.
sku
stringStock keeping unit (SKU) used to track inventory in a warehouse.
const swell = require('swell-node').init('store-id', 'secret-key');
await swell.put('/categories/{id}', {
id: '5ca9871f9b14d199072432a1',
description: 'A bunch of widgets',
active: false
});
Response
{
"id": "5ca9871f9b14d199072432a1",
"active": false,
"name": "Widgets",
"slug": "widgets",
"date_created": "2019-04-01T00:00:00.000Z"
"date_updated": "2019-04-01T00:00:00.000Z",
"description": 'A bunch of widgets',
"images": [
{
"id": "5ca24abb9c077817e5fe2b37",
"file": {
"id": "5ca24abb9c077817e5fe2b38",
"date_uploaded": "2019-04-02T00:26:23.399Z",
"length": 66764,
"md5": "99194f53bfdea832553e7fa8ae8fd80f",
"content_type": "image/png",
"url": "http://cdn.swell.store/test/5ca24abb9c077817e5fe2b36/99194f53bfdea832553e7fa8ae8fd80f",
"width": 940,
"height": 600
}
}
],
"meta_title": null,
"meta_keywords": null,
"meta_description": null
}
Return a list of product categories.
Arguments
expand
stringExpand link fields and child collections by using the expand argument.
- For example, expand=account would return a related customer account if one exists.
When the field represents a collection, you can specify the query limit.
- For example, expand=variants:10 would return up to 10 records of the variants collection.
See expanding for more details.
fields
stringReturns only the specified fields in the result.
- For example fields=name,slug would return only the fields name and slug in the response.
Supports nested object and array fields using dot-notation.
- For example, items.product_id. The product id is always returned.
include
objectInclude one or more arbitrary queries in the response which are potentially related to the main query.
See including for more details.
limit
intLimit the number of records returned, ranging between 1 and 1000. Defaults to 15.
page
intThe page number of results to return given the specified or default limit.
search
stringA text search is performed using the search argument. Searchable fields are defined by the model.
- For example, search=red would return records containing the word "red" anywhere in the defined text fields.
See searching for more details.
sort
stringExpression to sort results by using a format similar to a SQL sort statement.
- For example, sort=name asc would return records sorted by name ascending.
See sorting for more details.
where
objectAn object with criteria to filter the result.
- For example, active=true would return records containing a field active with the value true.
It's also possible to use query operators, for example, $eq, $ne, $gt, and more.
See querying for more details.
const swell = require('swell-node').init('store-id', 'secret-key');
await swell.get('/categories', {
where: {
active: true
},
limit: 25,
page: 1
});
Response
{
"count": 29,
"results": [
{
"name": "Luck",
"active": true,
"sorting": null,
"images": null,
"description": null,
"meta_title": null,
"meta_description": null,
"parent_id": "628bae71499bba0019b1aac2",
"slug": "skills-luck",
"top_id": "628bae71499bba0019b1aac2",
"date_created": "2022-05-23T16:06:40.137Z",
"date_updated": "2022-05-23T16:10:52.946Z",
"sort": 7,
"id": "628bb1101869c10019b4205c"
},
{
"name": "Willpower",
"active": true,
"sorting": null,
"images": null,
"description": null,
"meta_title": null,
"meta_description": null,
"parent_id": "628bae71499bba0019b1aac2",
"slug": "skills-willpower",
"top_id": "628bae71499bba0019b1aac2",
"date_created": "2022-05-23T16:06:33.466Z",
"date_updated": "2022-05-23T16:10:20.092Z",
"sort": 5,
"id": "628bb1091869c10019b4205a"
},
{
"name": "Intelligence",
"active": true,
"sorting": null,
"images": null,
"description": null,
"meta_title": null,
"meta_description": null,
"parent_id": "628bae71499bba0019b1aac2",
"slug": "skills-intelligence",
"top_id": "628bae71499bba0019b1aac2",
"date_created": "2022-05-23T16:06:23.079Z",
"date_updated": "2022-05-23T16:10:20.090Z",
"sort": 6,
"id": "628bb0ff1869c10019b42058"
},
{
"name": "Personality",
"active": true,
"sorting": null,
"images": null,
"description": null,
"meta_title": null,
"meta_description": null,
"parent_id": "628bae71499bba0019b1aac2",
"slug": "skills-personality",
"top_id": "628bae71499bba0019b1aac2",
"date_created": "2022-05-23T16:06:13.645Z",
"date_updated": "2022-05-23T16:10:52.955Z",
"sort": 4,
"id": "628bb0f5499bba0019b1ab25"
},
{
"name": "Agility",
"active": true,
"sorting": null,
"images": null,
"description": null,
"meta_title": null,
"meta_description": null,
"parent_id": "628bae71499bba0019b1aac2",
"slug": "skills-agility",
"top_id": "628bae71499bba0019b1aac2",
"date_created": "2022-05-23T16:06:00.026Z",
"date_updated": "2022-05-23T16:10:52.961Z",
"sort": 3,
"id": "628bb0e81869c10019b42056"
},
{
"name": "Speed",
"active": true,
"sorting": null,
"images": null,
"description": null,
"meta_title": null,
"meta_description": null,
"parent_id": "628bae71499bba0019b1aac2",
"slug": "skills-speed",
"top_id": "628bae71499bba0019b1aac2",
"date_created": "2022-05-23T16:05:50.621Z",
"date_updated": "2022-05-23T16:10:52.953Z",
"sort": 2,
"id": "628bb0de1869c10019b42054"
},
{
"name": "Endurance",
"active": true,
"sorting": null,
"images": null,
"description": null,
"meta_title": null,
"meta_description": null,
"parent_id": "628bae71499bba0019b1aac2",
"slug": "skills-endurance",
"top_id": "628bae71499bba0019b1aac2",
"date_created": "2022-05-23T16:05:41.771Z",
"date_updated": "2022-05-23T16:10:52.941Z",
"sort": 1,
"id": "628bb0d5499bba0019b1ab23"
},
{
"name": "Strength",
"active": true,
"sorting": null,
"images": null,
"description": null,
"meta_title": null,
"meta_description": null,
"parent_id": "628bae71499bba0019b1aac2",
"slug": "strength",
"top_id": "628bae71499bba0019b1aac2",
"date_created": "2022-05-23T16:05:34.393Z",
"date_updated": "2022-05-23T16:10:52.953Z",
"sort": 0,
"id": "628bb0ce499bba0019b1ab21"
},
{
"name": "Speechcraft",
"active": false,
"sorting": null,
"images": null,
"description": null,
"meta_title": null,
"meta_description": null,
"parent_id": "628bb0f5499bba0019b1ab25",
"slug": "skills-speechcraft",
"top_id": "628bae71499bba0019b1aac2",
"date_created": "2022-05-23T16:05:18.864Z",
"date_updated": "2022-05-23T16:10:20.092Z",
"sort": 1,
"id": "628bb0be499bba0019b1ab1f"
},
{
"name": "Mercantile",
"active": false,
"sorting": null,
"images": null,
"description": null,
"meta_title": null,
"meta_description": null,
"parent_id": "628bb0f5499bba0019b1ab25",
"slug": "skills-mercantile",
"top_id": "628bae71499bba0019b1aac2",
"date_created": "2022-05-23T16:05:08.369Z",
"date_updated": "2022-05-23T16:10:20.092Z",
"sort": 0,
"id": "628bb0b4499bba0019b1ab1d"
},
{
"name": "Marksman",
"active": false,
"sorting": null,
"images": null,
"description": null,
"meta_title": null,
"meta_description": null,
"parent_id": "628bb0e81869c10019b42056",
"slug": "skills-marksman",
"top_id": "628bae71499bba0019b1aac2",
"date_created": "2022-05-23T16:04:57.274Z",
"date_updated": "2022-05-23T16:10:20.112Z",
"sort": 2,
"id": "628bb0a91869c10019b42052"
},
{
"name": "Sneak",
"active": false,
"sorting": null,
"images": null,
"description": null,
"meta_title": null,
"meta_description": null,
"parent_id": "628bb0e81869c10019b42056",
"slug": "skills-sneak",
"top_id": "628bae71499bba0019b1aac2",
"date_created": "2022-05-23T16:04:47.385Z",
"date_updated": "2022-05-23T16:10:20.112Z",
"sort": 0,
"id": "628bb09f1869c10019b42050"
},
{
"name": "Security",
"active": false,
"sorting": null,
"images": null,
"description": null,
"meta_title": null,
"meta_description": null,
"parent_id": "628bb0e81869c10019b42056",
"slug": "security",
"top_id": "628bae71499bba0019b1aac2",
"date_created": "2022-05-23T16:04:37.967Z",
"date_updated": "2022-05-23T16:10:20.114Z",
"sort": 1,
"id": "628bb0951869c10019b4204e"
},
{
"name": "Light armor",
"active": false,
"sorting": null,
"images": null,
"description": null,
"meta_title": null,
"meta_description": null,
"parent_id": "628bb0de1869c10019b42054",
"slug": "skills-light-armor",
"top_id": "628bae71499bba0019b1aac2",
"date_created": "2022-05-23T16:04:27.646Z",
"date_updated": "2022-05-23T16:10:20.114Z",
"sort": 2,
"id": "628bb08b499bba0019b1ab1b"
},
{
"name": "Acrobatics",
"active": false,
"sorting": null,
"images": null,
"description": null,
"meta_title": null,
"meta_description": null,
"parent_id": "628bb0de1869c10019b42054",
"slug": "skills-acrobatics",
"top_id": "628bae71499bba0019b1aac2",
"date_created": "2022-05-23T16:04:17.292Z",
"date_updated": "2022-05-23T16:10:20.114Z",
"sort": 1,
"id": "628bb0811869c10019b4204c"
}
],
"page": 1,
"pages": {
"1": {
"start": 1,
"end": 15
},
"2": {
"start": 16,
"end": 29
}
}
}
Delete a category.
Arguments
id
objectIdrequiredThe id of the category to delete.
const swell = require('swell-node').init('store-id', 'secret-key');
await swell.delete('/categories/{id}', {
id: '5ca9871f9b14d199072432a1',
});
Response
{
"id": "5ca9871f9b14d199072432a1",
"active": false,
"name": "Widgets",
"slug": "widgets",
"date_created": "2019-04-01T00:00:00.000Z"
"date_updated": "2019-04-01T00:00:00.000Z",
"description": 'A bunch of widgets',
"images": [
{
"id": "5ca24abb9c077817e5fe2b37",
"file": {
"id": "5ca24abb9c077817e5fe2b38",
"date_uploaded": "2019-04-02T00:26:23.399Z",
"length": 66764,
"md5": "99194f53bfdea832553e7fa8ae8fd80f",
"content_type": "image/png",
"url": "http://cdn.swell.store/test/5ca24abb9c077817e5fe2b36/99194f53bfdea832553e7fa8ae8fd80f",
"width": 940,
"height": 600
}
}
],
"meta_title": null,
"meta_keywords": null,
"meta_description": null
}