# Create Collection Endpoint

## Structure

### Collection

<table border="1" id="bkmrk-name-type-descriptio" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 25.0298%;"></col><col style="width: 25.0298%;"></col><col style="width: 25.0298%;"></col><col style="width: 25.0298%;"></col></colgroup><tbody><tr><td>**Name**  
</td><td>**Type**  
</td><td>**Description**  
</td><td>**Required**  
</td></tr><tr><td>`id`</td><td>int</td><td>The id for the collection</td><td>No</td></tr><tr><td>`name`</td><td>string</td><td>The name of the collection</td><td>Yes</td></tr><tr><td>`slug`</td><td>string</td><td>The slug of the collection, if not present it is auto-generated from name</td><td>No</td></tr><tr><td>`reference`</td><td>string</td><td>The reference of the collection</td><td>No</td></tr><tr><td>`logic`</td><td>string</td><td>The logic of the rules for the collection, and/or (defaults to or if not provided)</td><td>No</td></tr><tr><td>`published_at`</td><td>timestamp</td><td>The published at of the collection</td><td>No</td></tr><tr><td>`rules`</td><td>array</td><td>An array of Listing Page [Rule](https://support.aerocommerce.com/books/api/page/create-collection-endpoint#bkmrk-rule) objects</td><td>No</td></tr><tr><td>`content`</td><td>object</td><td>The Listing Page [Content](https://support.aerocommerce.com/books/api/page/create-collection-endpoint#bkmrk-content) of the collection</td><td>No</td></tr><tr><td>`options`</td><td>object</td><td>The Listing Page [Options](https://support.aerocommerce.com/books/api/page/create-collection-endpoint#bkmrk-options) of the collection</td><td>No</td></tr><tr><td>`seo`</td><td>object</td><td>The [SEO](https://support.aerocommerce.com/books/api/page/create-collection-endpoint#bkmrk-seo) of the collection</td><td>No</td></tr><tr><td>`additional_attributes`</td><td>array</td><td>An array of [Additional Attribute](https://support.aerocommerce.com/books/api/page/create-collection-endpoint#bkmrk-additional-attribute) objects</td><td>No</td></tr><tr><td style="height: 52.1953px;">`settings`</td><td style="height: 52.1953px;">object</td><td style="height: 52.1953px;">A [Settings](https://support.aerocommerce.com/books/api/page/create-collection-endpoint#bkmrk-settings) object with grouped key-value pairs</td><td style="height: 52.1953px;">No</td></tr></tbody></table>

### Image

<table border="1" id="bkmrk-name-type-descriptio-1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 25.0298%;"></col><col style="width: 25.0298%;"></col><col style="width: 25.0298%;"></col><col style="width: 25.0298%;"></col></colgroup><tbody><tr><td>**Name**  
</td><td>**Type**  
</td><td>**Description**  
</td><td>**Required**  
</td></tr><tr><td>`src`</td><td>string</td><td>The source url of the image</td><td>Yes</td></tr></tbody></table>

### Rule

<table border="1" id="bkmrk-name-type-descriptio-4" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 25.0298%;"></col><col style="width: 25.0298%;"></col><col style="width: 25.0298%;"></col><col style="width: 25.0298%;"></col></colgroup><tbody><tr><td>**Name**  
</td><td>**Type**  
</td><td>**Description**  
</td><td>**Required**  
</td></tr><tr><td>`type`</td><td>string</td><td>Rule type. Allowed values: `in_category`, `in_price_list`, `have_manufacturers`, `have_tags`, `price_between`, `reduced`, `published_within_days`, `published_within`</td><td>Yes</td></tr><tr><td>`requirement`</td><td>string</td><td>Requirement for the rule. Allowed values: `must`, `must_not`. Defaults to `must`</td><td>No</td></tr><tr><td>`logic`</td><td>string</td><td>How this rule combines with others. Allowed values: `and`, `or`. Defaults to `or`</td><td>No</td></tr><tr><td>`data`</td><td>object</td><td>Rule-specific data (see below). Keys vary depending on type</td><td>Yes</td></tr><tr><td>`data.tags`</td><td>array</td><td>An array of Tag ids (or names formatted as group|name). Required if `type = have_tags`</td><td>Conditional</td></tr><tr><td>`data.manufacturers`</td><td>array</td><td>An array of manufacturer ids (or names). Required if `type = have_manufacturers`</td><td>Conditional</td></tr><tr><td>`data.price_list`</td><td>string</td><td>Price list id (or name). Required if `type = in_price_list`</td><td>Conditional</td></tr><tr><td>`data.category`</td><td>string</td><td>Category id (or name/breadcrumb, e.g., Mens &gt; Coats). Required if `type = in_category`</td><td>Conditional</td></tr><tr><td>`data.days`</td><td>int</td><td>Number of days. Required if `type = published_within_days`</td><td>Conditional</td></tr><tr><td>`data.start_at`</td><td>timestamp</td><td>The start date. Required if `type = published_within`</td><td>Conditional</td></tr><tr><td>`data.end_at`</td><td>timestamp</td><td>The end date. Optional if `type = published_within`</td><td>Conditional</td></tr><tr><td>`data.min_price`</td><td>float</td><td>Minimum price (including tax) in store’s default currency, whole units only (e.g. pounds, not pence). Required if `type = price_between`</td><td>Conditional</td></tr><tr><td>`data.max_price`</td><td>float</td><td>Maximum price (including tax) in store’s default currency, whole units only. Required if `type = price_between`</td><td>Conditional</td></tr></tbody></table>

<p class="callout info"> The `rules` are nested within arrays to achieve grouping, see `rules` in Example Request for clarity</p>

### Content

<table border="1" id="bkmrk-name-type-descriptio-5" style="border-collapse: collapse; width: 100%; height: 184.375px;"><colgroup><col style="width: 25.0298%;"></col><col style="width: 25.0298%;"></col><col style="width: 25.0298%;"></col><col style="width: 25.0298%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**Name**  
</td><td style="height: 29.7969px;">**Type**  
</td><td style="height: 29.7969px;">**Description**  
</td><td style="height: 29.7969px;">**Required**  
</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">`summary`</td><td style="height: 29.7969px;">string</td><td style="height: 29.7969px;">The summary content</td><td style="height: 29.7969px;">No</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">`description`</td><td style="height: 29.7969px;">string</td><td style="height: 29.7969px;">The description content</td><td style="height: 29.7969px;">No</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">`small_image`</td><td style="height: 29.7969px;">object</td><td style="height: 29.7969px;">The Small [Image](https://support.aerocommerce.com/books/api/page/create-collection-endpoint#bkmrk-image)</td><td style="height: 29.7969px;">No</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">`medium_image`</td><td style="height: 29.7969px;">object</td><td style="height: 29.7969px;">The Medium [Image](https://support.aerocommerce.com/books/api/page/create-collection-endpoint#bkmrk-image)</td><td style="height: 29.7969px;">No</td></tr><tr style="height: 35.3906px;"><td style="height: 35.3906px;">`large_image`</td><td style="height: 35.3906px;">object</td><td style="height: 35.3906px;">The Large [Image](https://support.aerocommerce.com/books/api/page/create-collection-endpoint#bkmrk-image)</td><td style="height: 35.3906px;">No</td></tr></tbody></table>

### Options

<table border="1" id="bkmrk-name-type-descriptio-6" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 25.0298%;"></col><col style="width: 25.0298%;"></col><col style="width: 25.0298%;"></col><col style="width: 25.0298%;"></col></colgroup><tbody><tr><td>**Name**  
</td><td>**Type**  
</td><td>**Description**  
</td><td>**Required**  
</td></tr><tr><td>`categories.mode`</td><td>string</td><td>Categories filter display mode. Allowed values: `show_all`, `hide_all`, `show_some`. Default: `show_all`</td><td>No</td></tr><tr><td>`categories.values`</td><td>array</td><td>An array of category ids (or names/breadcrumbs, e.g. Mens &gt; Coats) to show. Required if `categories.mode = show_some`</td><td>Conditional</td></tr><tr><td>`filters.mode`</td><td>int</td><td>Facet filters display mode. Allowed values: `show_all`, `hide_all`, `show_some`. Default: `show_all`</td><td>No</td></tr><tr><td>`filters.values`</td><td>array</td><td>The options for facet filters on the listings page. Required if `filters.mode = show_some`</td><td>Conditional</td></tr><tr><td>`filters.values.*.name`</td><td>string</td><td>The name of the facet filter, e.g. `Category`, `Price`, etc...</td><td>Yes</td></tr><tr><td>`filters.values.*.collapsed`</td><td>boolean</td><td>Whether to collapse the facet filter or not</td><td>Yes</td></tr><tr><td>`sort_bys`</td><td>array</td><td>An array of the applied sorts on the listings page (e.g., name-az, name-za, price-low, price-high, etc...)</td><td>No</td></tr><tr><td>`per_page`</td><td>int</td><td>The per page of the listings page (defaults to 24)</td><td>No</td></tr></tbody></table>

### SEO

<table border="1" id="bkmrk-name-type-descriptio-7" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 25.0298%;"></col><col style="width: 25.0298%;"></col><col style="width: 25.0298%;"></col><col style="width: 25.0298%;"></col></colgroup><tbody><tr><td>**Name**  
</td><td>**Type**  
</td><td>**Description**  
</td><td>**Required**  
</td></tr><tr><td>`heading`</td><td>string</td><td>The SEO Heading</td><td>No</td></tr><tr><td>`page_title`</td><td>string</td><td>The SEO Page Title</td><td>No</td></tr><tr><td>`meta_description`</td><td>string</td><td>The SEO Meta Description</td><td>No</td></tr><tr><td>`canonical`</td><td>string</td><td>The SEO Canonical</td><td>No</td></tr><tr><td>`noindex`</td><td>boolean</td><td>The SEO No Index</td><td>No</td></tr><tr><td>`nofollow`</td><td>boolean</td><td>The SEO No Follow</td><td>No</td></tr></tbody></table>

### Additional Attribute

<table border="1" id="bkmrk-name-type-descriptio-8" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 25.0298%;"></col><col style="width: 25.0298%;"></col><col style="width: 25.0298%;"></col><col style="width: 25.0298%;"></col></colgroup><tbody><tr><td>**Name**  
</td><td>**Type**  
</td><td>**Description**  
</td><td>**Required**  
</td></tr><tr><td>`key`</td><td>string</td><td>The key of the additional attribute</td><td>Yes</td></tr><tr><td>`value`</td><td>string</td><td>The value of the additional attribute</td><td>Yes</td></tr></tbody></table>

### Settings

Settings are grouped as key-value pairs.

- Use "\_" for ungrouped settings.
- Each group contains its own object of key-value pairs.

```json
{
    "settings": {
        "_": {
            "no_group": "value"
        },
        "group": {
            "key": "value"
        }
    }
}
```

## Example Request

```
POST /api/collections/
```

```json
{
  "name": "Sale 2",
  "slug": "sale-2",
  "content": {
    "summary": "Listing Page Summary Description",
    "description": "Listing Page Content Description"
  },
  "rules": [
    [
      {
        "type": "have_tags",
        "requirement": "must",
        "logic": "or",
        "data": {
          "tags": [
            "size|small"
          ]
        }
      },
      {
        "type": "in_category",
        "requirement": "must",
        "logic": "and",
        "data": {
          "category": 1
        }
      }
    ],
    [
      {
        "type": "in_price_list",
        "requirement": "must",
        "logic": "and",
        "data": {
          "price_list": 1
        }
      }
    ],
    [
      {
        "type": "price_between",
        "requirement": "must",
        "logic": "and",
        "data": {
          "min_price": 100,
          "max_price": 200
        }
      },
      {
        "type": "reduced",
        "requirement": "must",
        "logic": "and"
      }
    ],
    [
      {
        "type": "have_manufacturers",
        "requirement": "must",
        "logic": "and",
        "data": {
          "manufacturers": [
            "Burberry"
          ]
        }
      },
      {
        "type": "published_within",
        "requirement": "must",
        "logic": "and",
        "data": {
          "start_at": "2025-09-03T06:52:00.000000Z",
          "end_at": "2025-09-20T06:52:00.000000Z"
        }
      }
    ]
  ],
  "options": {
    "categories": {
      "mode": "show_some",
      "values": [
        1
      ]
    },
    "filters": {
      "mode": "show_some",
      "values": [
        {
          "name": "Price",
          "collapsed": true
        },
        {
          "name": "Manufacturer"
        }
      ]
    },
    "sort_bys": [
      "model-az",
      "manufacturer-za"
    ],
    "per_page": 2
  },
  "seo": {
    "heading": "test heading",
    "page_title": "",
    "meta_description": "",
    "open_graph": "",
    "canonical": "",
    "noindex": 0,
    "nofollow": 0
  },
  "additional_attributes": [
    {
      "key": "test_name",
      "value": "test_value"
    }
  ]
}
```

## Example Response

```json
{
    "collection": {
        "id": 1
    }
}
```