API

General

General

What are the available endpoints?

Orders

Method Endpoint Permission Description
GET /api/orders orders.index List orders
GET /api/orders/{id} orders.view Get an order
POST /api/orders orders.store Create an order
POST /api/orders/{id}/flags/{id} orders.flags.store Attach a flag
DELETE /api/orders/{id}/flags/{id} orders.flags.delete Remove a flag
POST /api/orders/{id}/comments orders.comments.store Add a comment

You can pass the order reference in place of id.

You can pass the flag name in place of the id.

Fulfillments

Method Endpoint Permission Description
POST /api/orders/{id}/fulfillments fulfillments.store Create a fulfillment
DELETE /api/orders/{id}/fulfillments/{id} fulfillments.delete Cancel a fulfillment

You can pass the order reference in place of id.

You can pass the fulfillment reference in place of id.

Order Statuses

Method Endpoint Permission Description
GET /api/order-statuses order-statuses.index List order statuses
GET /api/order-statuses/{id} order-statuses.view Get an order status

Products

Method Endpoint Permission Description
GET /api/products products.index List products
GET /api/products/search products.search Search products
GET /api/products/{id} products.view Get a product
POST /api/products products.store Create a product
PUT /api/products/{id} products.update Update a product

You can pass the product model in place of id.

The search route allows for filtering at document level rather than eloquent level.

Variants

Method Endpoint Permission Description
POST /api/products/{id}/variants variants.store Create a variant
PUT /api/products/{id}/variants/{id} variants.update Update a variant

You can pass the product model in place of id.

You can pass the variant sku in place of id.

Manufacturers

Method Endpoint Permission Description
GET /api/manufacturers manufacturers.index List manufacturers
GET /api/manufacturers/{id} manufacturers.view Get a manufacturer
POST /api/manufacturers manufacturers.store Create a manufacturer
PUT /api/manufacturers/{id} manufacturers.update Update a manufacturer
DELETE /api/manufacturers/{id} manufacturers.delete Delete a manufacturer

You can pass the manufacturer name in place of id.

Attribute Groups

Method Endpoint Permission Description
GET /api/attribute-groups attribute-groups.index List attribute groups
GET /api/attribute-groups/{id} attribute-groups.view Get an attribute group
POST /api/attribute-groups attribute-groups.store Create an attribute group
PUT /api/attribute-groups/{id} attribute-groups.update Update an attribute group
DELETE /api/attribute-groups/{id} attribute-groups.delete Delete an attribute group

You can pass the attribute group name in place of id.

Attributes

Method Endpoint Permission Description
POST /api/attribute-groups/{id}/attributes attributes.store Create an attribute
PUT /api/attribute-groups/{id}/attributes/{id} attributes.update Update an attribute
DELETE /api/attribute-groups/{id}/attributes/{id} attributes.delete Delete an attribute

You can pass the attribute group name in place of id.

You can pass the attribute name in place of id.

Categories

Method Endpoint Permission Description
GET /api/categories categories.index List categories
GET /api/categories/{id} categories.view Get a category
POST /api/categories categories.store Create a category
PUT /api/categories/{id} categories.update Update a category
DELETE /api/categories/{id} categories.delete Delete a category

You can pass the category name or breadcrumb in place of id.

Tag Groups

Method Endpoint Permission Description
GET /api/tag-groups tag-groups.index List tag groups
GET /api/tag-groups/{id} tag-groups.view Get a tag group
POST /api/tag-groups tag-groups.store Create a tag group
PUT /api/tag-groups/{id} tag-groups.update Update a tag group
DELETE /api/tag-groups/{id} tag-groups.delete Delete a tag group

You can pass the tag group name in place of id.

Tags

Method Endpoint Permission Description
POST /api/tag-groups/{id}/tags tags.store Create a tag
PUT /api/tag-groups/{id}/tags/{id} tags.update Update a tag
DELETE /api/tag-groups/{id}/tags/{id} tags.delete Delete a tag

You can pass the tag group name in place of id.

You can pass the tag name in place of id.

Collections

Method Endpoint Permission Description
GET /api/collections collections.index List collections
GET /api/collections/{id} collections.view Get a collection
POST /api/collections collections.store Create a collection
PUT /api/collections/{id} collections.update Update a collection
DELETE /api/collections/{id} collections.delete Delete a collection

You can pass the collection name in place of id.

Customers

Method Endpoint Permission Description
GET /api/customers customers.index List customers
GET /api/customers/{id} customers.view Get a customer
POST /api/customers customers.store Create a customer
PUT /api/customers/{id} customers.update Update a customer

Addresses

Method Endpoint Permission Description
POST /api/customers/{id}/addresses addresses.store Create an address
PUT /api/customers/{id}/addresses/{id} addresses.update Update an address
DELETE /api/customers/{id}/addresses/{id} addresses.delete Delete an address

Payment Methods

Method Endpoint Permission Description
GET /api/payment-methods payment-methods.index List payment methods
GET /api/payment-methods/{id} payment-methods.view Get a payment method

Shipping Methods

Method Endpoint Permission Description
GET /api/shipping-methods shipping-methods.index List shipping methods
GET /api/shipping-methods/{id} shipping-methods.view Get a shipping method

Locations

Method Endpoint Permission Description
GET /api/locations locations.index List locations
GET /api/locations/{id} locations.view Get a location
POST /api/locations locations.store Create a location
PUT /api/locations/{id} locations.update Update a location

You can pass the location name in place of id.

Flags

Method Endpoint Permission Description
GET /api/flags flags.index List flags
GET /api/flags/{id} flags.view Get a flag
POST /api/flags flags.store Create a flag
PUT /api/flags/{id} flags.update Update a flag
DELETE /api/flags/{id} flags.delete Delete a flag

You can pass the flag name in place of id.

Price Lists

Method Endpoint Permission Description
GET /api/price-lists price-lists.index List price lists
GET /api/price-lists/{id} price-lists.view Get a price list
POST /api/price-lists price-lists.store Create a price list
PUT /api/price-lists/{id} price-lists.update Update a price list

Price List Entries

Method Endpoint Permission Description
POST /api/price-lists/{id}/entries price-list-entries.store Create a price list entry
PUT /api/price-lists/{id}/entries/{id} price-list-entries.update Update a price list entry

Specification Groups

Method Endpoint Permission Description
GET /api/specification-groups specification-groups.index List specification groups
GET /api/specification-groups/{id} specification-groups.view Get a specification group
POST /api/specification-groups specification-groups.store Create a specification group
PUT /api/specification-groups/{id} specification-groups.update Update a specification group

Must have installed aerocargo/specifications for these endpoints to work.

Upsell Groups

Method Endpoint Permission Description
GET /api/upsell-groups upsell-groups.index List upsell groups
GET /api/upsell-groups/{key} upsell-groups.view Get an upsell group
POST /api/upsell-groups upsell-groups.store Create an upsell group
PUT /api/upsell-groups/{key} upsell-groups.update Update an upsell group

Must have installed aerocargo/upsells for these endpoints to work.

Listing Collection Groups

Method Endpoint Permission Description
GET /api/listing-collection-groups listing-collection-groups.index List listing collection groups
GET /api/listing-collection-groups/{key} listing-collection-groups.view Get a listing collection group
POST /api/listing-collection-groups listing-collection-groups.store Create a listing collection group
PUT /api/listing-collection-groups/{key} listing-collection-groups.update Update a listing collection group

Must have installed aerocargo/listing-collections for these endpoints to work.

Stock

Method Endpoint Permission Description
POST /api/stock stock.update Bulk update variant stock

Size Guides

Method Endpoint Permission Description
GET /api/size-guides size-guides.index List size guides
GET /api/size-guides/{id} size-guides.view Get a size guide
POST /api/size-guides size-guides.store Create a size guide
PUT /api/size-guides/{id} size-guides.update Update a size guide

Must have installed aerocargo/size-guides for these endpoints to work.

General

What conventions does the API use?

Attribute Conventions

Relationship Conventions

Price Conventions

Date Conventions

Pagination Conventions

Parameter
Description
Example
page The page number (default: 1) ?page=2
per_page The number of results per page (default: 24, max: 96) ?per_page=48
ids Comma-separated list of IDs to fetch ?ids=1,2,5
min_updated_at The min updated at for a product ?min_updated_at=2023-08-30%2010:35:05
max_updated_at The max updated at for a product ?max_updated_at=2023-08-30%2010:35:05

The min_updated_at and max_updated_at parameters are only supported by index endpoints.

Responses follow Laravel's pagination format, e.g.:

{
    "current_page": 1,
    "data": [
        //...
    ],
    "first_page_url": "http://aero.test/api/products?page=1",
    "from": 1,
    "last_page": 2,
    "last_page_url": "http://aero.test/api/products?page=2",
    "next_page_url": "http://aero.test/api/products?page=2",
    "path": "http://aero.test/api/products",
    "per_page": 24,
    "prev_page_url": null,
    "to": 24,
    "total": 29
}

Scope Conventions

Image Factory Conventions

Parameter
Description
Example
image_factory_width Output image width ?image_factory_width=200
image_factory_height Output image height ?image_factory_height=200
image_factory_options Comma-seperated options ?image_factory_options=flip,greyscale

If any of these query parameters are present in the GET requests, Image Factory will be applied.

General

What responses does the API return?

Code
Scenario
200 Success The request was processed successfully.
201 Created
One (or multiple) resources were created.
400 Bad Request 
Cannot process request due to client error.
401 Unauthorised
Invalid bearer token provided.
404 Not Found
Endpoint not found.
422 Unprocessable Content
Payload failed validation.
500 Internal Server Error

Examples

200 Success

GET /api/orders/{id}
{
    "reference": "ABC123",
    "email": "acme@aerocommerce.com",
    "subtotal": {
        "amount": 84166.67,
        "tax": 16833.33
    },
    "shipping": {
        "amount": 83.33,
        "tax": 16.67
    },
    "discount": {
        "amount": 8416.67,
        "tax": 1683.33
    },
    "surcharge": {
        "amount": 0,
        "tax": 0
    },
    "ordered_at": "2023-09-01T09:29:41.000000Z",
    "deliver_on": null,
    "currency": "GBP",
    "status": {
        "id": 3,
        "name": "Successful",
        "state": "successful"
    },
    "customer": {
        "id": 1,
        "name": "Acme",
        "email": "acme@aerocommerce.com"
    },
    "shipping_method": {
        "id": 1,
        "name": "Standard"
    },
    "billing_address": {
        "id": 1,
        "first_name": "Aero",
        "last_name": "Commerce",
        "company": "Aero Commerce",
        "mobile": null,
        "phone": null,
        "line_1": "28-32 Albert Rd",
        "line_2": null,
        "city": "Middlesbrough",
        "zone": null,
        "postcode": "TS1 1QD",
        "reference": null,
        "country": "GB",
        "eori_number": null
    },
    "shipping_address": {
        "id": 1,
        "first_name": "Aero",
        "last_name": "Commerce",
        "company": "Aero Commerce",
        "mobile": null,
        "phone": null,
        "line_1": "28-32 Albert Rd",
        "line_2": null,
        "city": "Middlesbrough",
        "zone": null,
        "postcode": "TS1 1QD",
        "reference": null,
        "country": "GB",
        "eori_number": null
    },
    "items": [
        {
            "id": 1,
            "name": "Test",
            "sku": "TEST-S",
            "product_id": 4,
            "variant_id": 14,
            "shippable": true,
            "quantity": 2,
            "price": {
                "amount": 42083.33,
                "tax": 8416.67
            },
            "discount": {
                "amount": 8416.67,
                "tax": 1683.33
            },
            "full_price": {
                "amount": 42083.33,
                "tax": 8416.67
            },
            "weight": 0,
            "volume": 0
        }
    ]
}

201 Created

POS /api/orders
{
    "order": {
        "id": 15
    }
}

400 Bad Request

GET /api/orders/{id}
{
    "message": "Missing order ID"
}

401 Unauthorised

GET /api/orders/{id}
{
    "message": "Unauthorized: Bearer token missing."
}

404 Not Found

GET /api/orders/{id}
{
    "message": "The requested order with ID {id} could not be found."
}

422 Unprocessable Content

POST /api/orders
{
    "message": "The given data was invalid.",
    "errors": {
        "currency": ["The currency field is required."]
    }
}

500 Internal Server Error

{
    "message": "Exception message..."
}

Orders

Orders

Order Index Endpoint

Structure

See View Order Endpoint for the structure of the order payload inside the data array.


Scopes

Name
Description
Example
visible Only return visible orders (those which have been ordered) ?scope=visible
outstanding Only return outstanding orders ?scope=outstanding
completed Only return completed orders ?scope=completed
incomplete Only return incomplete orders ?scope=incomplete
express Only return express orders ?scope=express
standard Only return standard orders ?scope=standard

Filters

Name
Description
Example
reference Only return orders with specific references ?references=ABC123,DEF456
statuses Only return orders with specific status ids or names ?statuses=1,On Hold
states Only return orders with specific states ?states=dispatched,returned
customers Only return orders with specific customers (by id or email) ?customers=1,test@gmail.com
emails Only return orders for specific emails ?emails=test@gmail.com
channels Only return orders for specific channels ?channels=web,api
flags Only return orders for specific flags (by id, name, or name|value) ?flags=1,abc,def|123

GET /api/orders?per_page=2&min_ordered_at=2023-08-30%2010:36:23
{
    "current_page": 1,
    "data": [
      //...
    ],
    "first_page_url": "http://aero.test/api/orders?page=1",
    "from": 1,
    "last_page": 3,
    "last_page_url": "http://aero.test/api/orders?page=3",
    "next_page_url": "http://aero.test/api/orders?page=2",
    "path": "http://aero.test/api/orders",
    "per_page": 2,
    "prev_page_url": null,
    "to": 2,
    "total": 5
}

See View Order Endpoint for the structure of the order payload inside the data array.

Orders

View Order Endpoint

Structure

Order

Name
Type
Description
reference string The unique reference for the order
status object The Order Status of the order (null if none)
customer object The Customer of the order (null if none)
email string The email of the customer that placed the order
subtotal.amount float The subtotal of the order excluding tax
subtotal.tax float The subtotal tax for the order
shipping.amount float The shipping of the order excluding tax
shipping.tax float The shipping tax for the order
discount.amount float The discount of the order excluding tax
discount.tax float The discount tax for the order
surcharge.amount float The surcharge of the order excluding tax
surcharge.tax float The surcharge tax for the order
currency string The currency code of the order
shipping_method object The Shipping Method of the order (null if none)
shipping_address object The Shipping Address of the order (null if none)
billing_address object The Billing Address of the order (null if none)
ordered_at timestamp When the order was ordered
deliver_on timestamp When the order should be delivered
items array An array of Order Item objects
payments array An array of Payment objects
fulfillments array An array of Fulfillment objects
returns array An array of Return objects
comments array An array of Comment objects
additional_attributes array An array of Additional Attribute objects

Order Status

Name
Type
Description
id int The id of the order status
name string The name of the order status
state string The state of the order status

Valid states: cancelled, on_hold, successful, complete, processing, closed, partially_dispatched, dispatched, partially_returned, returned

Customer

Name
Type
Description
id int The id of the customer
name string The name of the customer
email string The email of the customer

Shipping Method

Name
Type
Description
id int The id of the shipping method
name string The name of the shipping method

Shipping Address

Name
Type
Description
first_name string The first name for the shipping address
last_name string The last name for the shipping address
company string The company for the shipping address
mobile string The mobile number for the shipping address
phone string The phone number for the shipping address
line_1 string The first line for the shipping address
line_2 string The second line for the shipping address
city string The city for the shipping address
county string The county for the shipping address
zone string The zone code for the shipping address
postcode string The postcode for the shipping address
country string The country code for the shipping address
reference string The unique reference for the shipping address
eori_number string The EORI number for the shipping address

Billing Address

Name
Type
Description
first_name string The first name for the billing address
last_name string The last name for the billing address
company string The company for the billing address
mobile string The mobile number for the billing address
phone string The phone number for the billing address
line_1 string The first line for the billing address
line_2 string The second line for the billing address
city string The city for the billing address
county string The county for the billing address
zone string The zone code for the billing address
postcode string The postcode for the billing address
country string The country code for the billing address
reference string The unique reference for the billing address
eori_number string The EORI number for the billing address

Order Item

Name
Type
Description
id int The id of the order item
variant_id int The variant id of the buyable (not set if the buyable is not a variant)
product_id int The product id of the buyable
buyable_type string The buyable type of the order item
buyable_id int The buyable id of the order item
name string The name for the order item
url string The url for the order item
sku string The sku for the order item
reference string The unique reference for the order item
manufacturer object The Manufacturer for the order item (null if none)
image.url string The image url for the order item
shippable boolean Whether the order item is shippable
quantity int The quantity for the order item
returned_quantity int The quantity returned for the order item
price.amount float The unit price of the order item excluding tax
price.tax float The unit tax for the order item
discount.amount float The total discount of the order item excluding tax
discount.tax float The total discount tax for the order item
full_price.amount float The unit full price (including extras) of the order item excluding tax
full_price.tax float The unit full tax (including extras) for the order item
cost_price.amount float The unit cost price of the order item excluding tax
cost_price.currency string The currency code for the cost price
weight float The weight for the order item
weight_unit float The weight unit for the order item, defaults to stores normalized
weight unit
volume float The volume for the order item
volume_unit float The volume unit for the order item, defaults to stores normalized
volume unit
hs string The HS code for the order item
origin_country string The origin country code for the order item
goods_description string The goods description for the order item

Manufacturer

Name
Type
Description
id int The id of the manufacturer
name string The name of the manufacturer

Payment

Name
Type
Description
id int The id of the payment
method object The Payment Method for the payment
reference string The reference for the payment
state string The state of the payment
amount float The total amount for the payment
currency string The currency code for the payment
captured_at timestamp The date the payment was captured

Payment Method

Name
Type
Description
id int The id of the payment method
name string The name of the payment method
driver string The driver of the payment method

Fulfillment

Name
Type
Description
id int The id of the order return
method object The Fulfillment Method for the fulfillment
reference string The reference of the fulfillment
state string The state of the fulfillment
mobile string The mobile number for the fulfillment
phone string The phone number for the fulfillment
tracking_code string The tracking code for the fulfillment
tracking_url string The tracking url for the fulfillment
weight float The weight for the fulfillment
weight_unit string The weight unit for the fulfillment, defaults to stores normalized
weight unit
volume float The volume for the order item
volume_unit string The volume unit for the fulfillment, defaults to stores normalized
volume unit
delivery_note string The delivery note for the fulfillment
created_at timestamp The date the fulfillment was made
items array An array of Fulfillment Items objects

Fulfillment Method

Name
Type
Description
id int The id of the fulfillment method
name string The name of the fulfillment method
driver string The driver of the fulfillment method

Fulfillment Items

Name
Type
Description
id int The id of the order item that was fulfilled
quantity int The quantity of the order item that was fulfilled

Return

Name
Type
Description
id int The id of the order return
reason string The reason for the return - null if no reason given
created_at timestamp The date the return was made
items array An array of Return Item objects

Return Item

Name
Type
Description
id int The id of the order item that was returned
quantity int The quantity of the order item that was returned
exchanged_for_id int The id of the order item that the item was returned for (null if the item was not exchanged)

Comment

Name
Type
Description
admin object The Admin who commented
message string The comment message
customer_facing boolean Whether the comment is customer facing
created_at timestamp The date the comment was created

Admin

Name
Type
Description
id int The id of the admin
name string The name of the admin
email string The email of the admin

Additional Attribute

Name
Type
Description
key string The key of the additional attribute
value string The value of the additional attribute

Examples

Unfulfilled & Unreturned Order
Request
GET /api/orders/{id|reference}
Response
{
    "id": 1,
    "reference": "ABC123",
    "email": "testing@gmail.com",
    "subtotal": {
        "amount": 84166.67,
        "tax": 16833.33
    },
    "shipping": {
        "amount": 83.33,
        "tax": 16.67
    },
    "discount": {
        "amount": 8416.67,
        "tax": 1683.33
    },
    "surcharge": {
        "amount": 0,
        "tax": 0
    },
    "ordered_at": "2023-09-01T09:29:41.000000Z",
    "deliver_on": null,
    "currency": "GBP",
    "status": {
        "id": 3,
        "name": "Successful",
        "state": "successful"
    },
    "customer": {
        "id": 1,
        "name": "Test",
        "email": "test@gmail.com"
    },
    "shipping_method": {
        "id": 1,
        "name": "Standard"
    },
    "billing_address": {
        "id": 1,
        "first_name": "Aero",
        "last_name": "Commerce",
        "company": "Aero Commerce",
        "mobile": null,
        "phone": null,
        "line_1": "28-32 Albert Rd",
        "line_2": null,
        "city": "Middlesbrough",
        "zone": null,
        "postcode": "TS1 1QD",
        "reference": null,
        "country": "GB",
        "eori_number": null
    },
    "shipping_address": {
        "id": 1,
        "first_name": "Aero",
        "last_name": "Commerce",
        "company": "Aero Commerce",
        "mobile": null,
        "phone": null,
        "line_1": "28-32 Albert Rd",
        "line_2": null,
        "city": "Middlesbrough",
        "zone": null,
        "postcode": "TS1 1QD",
        "reference": null,
        "country": "GB",
        "eori_number": null
    },
    "items": [
        {
            "id": 148,
            "name": "Sandro Paris Checked Trench Coat",
            "sku": "SHPMA00148-M",
            "product_id": 4,
            "variant_id": 14,
            "shippable": true,
            "quantity": 2,
            "price": {
                "amount": 42083.33,
                "tax": 8416.67
            },
            "discount": {
                "amount": 8416.67,
                "tax": 1683.33
            },
            "full_price": {
                "amount": 42083.33,
                "tax": 8416.67
            },
            "weight": 0,
            "volume": 0
        }
    ],
    "payments": [
        {
            "id": "a53c31f9-43bd-4fc4-b308-cded0b533a2c",
            "method": {
                "id": 1,
                "name": "Cash",
                "driver": "cash"
            },
            "reference": "a53c31f9-43bd-4fc4-b308-cded0b533a2c",
            "amount": 91000,
            "currency": "GBP",
            "captured_at": "2023-09-12T10:17:03.000000Z"
        }
    ],
    "fulfillments": [],
    "returns": [],
    "comments": [
        {
            "admin": {
                "id": 1,
                "name": "Admin",
                "email": "admin@example.com"
            },
            "message": "This is an API message",
            "customer_facing": true,
            "created_at": "2025-09-01 09:29:41"
        }
    ]
}
Fulfilled Order
Request
GET /api/orders/{id|reference}
Response
{
    "id": 1,
    "reference": "ABC123",
    "email": "testing@gmail.com",
    "subtotal": {
        "amount": 84166.67,
        "tax": 16833.33
    },
    "shipping": {
        "amount": 83.33,
        "tax": 16.67
    },
    "discount": {
        "amount": 8416.67,
        "tax": 1683.33
    },
    "surcharge": {
        "amount": 0,
        "tax": 0
    },
    "currency": "GBP",
    "ordered_at": "2023-09-01T08:29:41.000000Z",
    "deliver_on": null,
    "status": {
        "id": 6,
        "name": "Dispatched",
        "state": "dispatched"
    },
    "customer": {
        "id": 1,
        "name": "Test",
        "email": "test@gmail.com"
    },
    "shipping_method": {
        "id": 1,
        "name": "Standard"
    },
    "billing_address": {
        "id": 1,
        "first_name": "Aero",
        "last_name": "Commerce",
        "company": "Aero Commerce",
        "mobile": null,
        "phone": null,
        "line_1": "28-32 Albert Rd",
        "line_2": null,
        "city": "Middlesbrough",
        "zone": null,
        "postcode": "TS1 1QD",
        "country": "GB",
        "eori_number": null
    },
    "shipping_address": {
        "id": 1,
        "first_name": "Aero",
        "last_name": "Commerce",
        "company": "Aero Commerce",
        "mobile": null,
        "phone": null,
        "line_1": "28-32 Albert Rd",
        "line_2": null,
        "city": "Middlesbrough",
        "zone": null,
        "postcode": "TS1 1QD",
        "country": "GB",
        "eori_number": null
    },
    "items": [
        {
            "id": 26,
            "name": "Sandro Paris Checked Trench Coat",
            "url": "/product/sandro-paris-checked-trench-coat-4?variant=2",
            "sku": "SHPMA00148-M",
            "reference": null,
            "manufacturer": {
                "id": 2,
                "name": "Sandro Paris"
            },
            "image": {
                "url": "http://l9.test/storage/images/products/uaaVbTbqbZxs1FH3N28Tw0a7dc6I7Xd08DiyPAG6.jpg"
            },
            "product_id": 4,
            "variant_id": 14,
            "buyable_type": "variant",
            "buyable_id": 14,
            "shippable": true,
            "quantity": 2,
            "returned_quantity": 0,
            "price": {
                "amount": 42083.33,
                "tax": 8416.67
            },
            "discount": {
                "amount": 8416.67,
                "tax": 1683.33
            },
            "full_price": {
                "amount": 42083.33,
                "tax": 8416.67
            },
            "weight": 0,
            "volume": 0,
            "cost_price": {
                "amount": null,
                "currency": null
            },
            "hs": null,
            "origin_country": null,
            "goods_description": null
        }
    ],
    "flags": [],
    "payments": [
        {
            "id": "a53c31f9-43bd-4fc4-b308-cded0b533a2c",
            "method": {
                "id": 1,
                "name": "Cash",
                "driver": "cash"
            },
            "reference": "a53c31f9-43bd-4fc4-b308-cded0b533a2c",
            "state": "captured",
            "amount": 91000,
            "currency": "GBP",
            "captured_at": "2023-09-12T10:17:03.000000ZZ",
            "refunds": []
        }
    ],
    "fulfillments": [
        {
            "id": 3,
            "method": {
                "id": 1,
                "name": "Manual Fulfillment",
                "driver": "manual"
            },
            "address": {
                "id": 3,
                "first_name": "Aero",
                "last_name": "Commerce",
                "company": "Aero Commerce",
                "mobile": null,
                "phone": null,
                "line_1": "28-32 Albert Rd",
                "line_2": null,
                "city": "Middlesbrough",
                "zone": null,
                "postcode": "TS1 1QD",
                "country": "GB",
                "eori_number": null
            },
            "reference": "F3-128",
            "state": "successful",
            "mobile": null,
            "email": "testing@gmail.com",
            "tracking_code": "test tracking code",
            "tracking_url": null,
            "weight": 0,
            "weight_unit": null,
            "volume": 0,
            "volume_unit": "cm^3",
            "delivery_note": "test delivery note",
            "created_at": "2023-09-12T10:17:03.000000Z",
            "items": [
                {
                    "id": 26,
                    "quantity": 2
                }
            ]
        }
    ],
    "returns": [],
    "comments": []
}
Returned Order (Exchange)
Request
GET /api/orders/{id|reference}
Response
{
    "id": 1,
    "reference": "ABC123",
    "email": "testing@gmail.com",
    "subtotal": {
        "amount": 84166.67,
        "tax": 16833.33
    },
    "shipping": {
        "amount": 83.33,
        "tax": 16.67
    },
    "discount": {
        "amount": 8416.67,
        "tax": 1683.33
    },
    "surcharge": {
        "amount": 0,
        "tax": 0
    },
    "currency": "GBP",
    "ordered_at": "2023-09-01T08:29:41.000000Z",
    "deliver_on": null,
    "status": {
        "id": 7,
        "name": "Partially Returned",
        "state": "partially_returned"
    },
    "customer": {
        "id": 1,
        "name": "Test",
        "email": "test@gmail.com"
    },
    "shipping_method": {
        "id": 1,
        "name": "Standard"
    },
    "billing_address": {
        "id": 1,
        "first_name": "Aero",
        "last_name": "Commerce",
        "company": "Aero Commerce",
        "mobile": null,
        "phone": null,
        "line_1": "28-32 Albert Rd",
        "line_2": null,
        "city": "Middlesbrough",
        "zone": null,
        "postcode": "TS1 1QD",
        "country": "GB",
        "eori_number": null
    },
    "shipping_address": {
        "id": 1,
        "first_name": "Aero",
        "last_name": "Commerce",
        "company": "Aero Commerce",
        "mobile": null,
        "phone": null,
        "line_1": "28-32 Albert Rd",
        "line_2": null,
        "city": "Middlesbrough",
        "zone": null,
        "postcode": "TS1 1QD",
        "country": "GB",
        "eori_number": null
    },
    "items": [
        {
            "id": 26,
            "name": "Sandro Paris Checked Trench Coat",
            "url": "/product/sandro-paris-checked-trench-coat-4?variant=2",
            "sku": "SHPMA00148-M",
            "reference": null,
            "manufacturer": {
                "id": 2,
                "name": "Sandro Paris"
            },
            "image": {
                "url": "http://l9.test/storage/images/products/uaaVbTbqbZxs1FH3N28Tw0a7dc6I7Xd08DiyPAG6.jpg"
            },
            "product_id": 4,
            "variant_id": 14,
            "buyable_type": "variant",
            "buyable_id": 14,
            "shippable": true,
            "quantity": 2,
            "returned_quantity": 0,
            "price": {
                "amount": 42083.33,
                "tax": 8416.67
            },
            "discount": {
                "amount": 8416.67,
                "tax": 1683.33
            },
            "full_price": {
                "amount": 42083.33,
                "tax": 8416.67
            },
            "weight": 0,
            "volume": 0,
            "cost_price": {
                "amount": null,
                "currency": null
            },
            "hs": null,
            "origin_country": null,
            "goods_description": null
        }
    ],
    "flags": [],
    "payments": [
        {
            "id": "a53c31f9-43bd-4fc4-b308-cded0b533a2c",
            "method": {
                "id": 1,
                "name": "Cash",
                "driver": "cash"
            },
            "reference": "a53c31f9-43bd-4fc4-b308-cded0b533a2c",
            "state": "captured",
            "amount": 91000,
            "currency": "GBP",
            "captured_at": "2023-09-12T10:17:03.000000ZZ",
            "refunds": []
        }
    ],
    "fulfillments": [],
    "returns": [
        {
            "id": 1,
            "reason": "Test Reason",
            "created_at": "2023-09-12T10:17:03.000000ZZ",
            "items": [
                {
                    "id": 26,
                    "quantity": 2,
                    "exchanged_for_id": 27
                }
            ]
        }
    ],
    "comments": []
}
Returned Order (Refund)
Request
GET /api/orders/{id|reference}
Response
{
    "id": 1,
    "reference": "ABC123",
    "email": "testing@gmail.com",
    "subtotal": {
        "amount": 84166.67,
        "tax": 16833.33
    },
    "shipping": {
        "amount": 83.33,
        "tax": 16.67
    },
    "discount": {
        "amount": 8416.67,
        "tax": 1683.33
    },
    "surcharge": {
        "amount": 0,
        "tax": 0
    },
    "currency": "GBP",
    "ordered_at": "2023-09-01T08:29:41.000000Z",
    "deliver_on": null,
    "status": {
        "id": 8,
        "name": "Returned",
        "state": "returned"
    },
    "customer": {
        "id": 1,
        "name": "Test",
        "email": "test@gmail.com"
    },
    "shipping_method": {
        "id": 1,
        "name": "Standard"
    },
    "billing_address": {
        "id": 1,
        "first_name": "Aero",
        "last_name": "Commerce",
        "company": "Aero Commerce",
        "mobile": null,
        "phone": null,
        "line_1": "28-32 Albert Rd",
        "line_2": null,
        "city": "Middlesbrough",
        "zone": null,
        "postcode": "TS1 1QD",
        "country": "GB",
        "eori_number": null
    },
    "shipping_address": {
        "id": 1,
        "first_name": "Aero",
        "last_name": "Commerce",
        "company": "Aero Commerce",
        "mobile": null,
        "phone": null,
        "line_1": "28-32 Albert Rd",
        "line_2": null,
        "city": "Middlesbrough",
        "zone": null,
        "postcode": "TS1 1QD",
        "country": "GB",
        "eori_number": null
    },
    "items": [
        {
            "id": 26,
            "name": "Sandro Paris Checked Trench Coat",
            "url": "/product/sandro-paris-checked-trench-coat-4?variant=2",
            "sku": "SHPMA00148-M",
            "reference": null,
            "manufacturer": {
                "id": 2,
                "name": "Sandro Paris"
            },
            "image": {
                "url": "http://l9.test/storage/images/products/uaaVbTbqbZxs1FH3N28Tw0a7dc6I7Xd08DiyPAG6.jpg"
            },
            "product_id": 4,
            "variant_id": 14,
            "buyable_type": "variant",
            "buyable_id": 14,
            "shippable": true,
            "quantity": 2,
            "returned_quantity": 0,
            "price": {
                "amount": 42083.33,
                "tax": 8416.67
            },
            "discount": {
                "amount": 8416.67,
                "tax": 1683.33
            },
            "full_price": {
                "amount": 42083.33,
                "tax": 8416.67
            },
            "weight": 0,
            "volume": 0,
            "cost_price": {
                "amount": null,
                "currency": null
            },
            "hs": null,
            "origin_country": null,
            "goods_description": null
        }
    ],
    "flags": [],
    "payments": [
        {
            "id": "a53c31f9-43bd-4fc4-b308-cded0b533a2c",
            "method": {
                "id": 1,
                "name": "Cash",
                "driver": "cash"
            },
            "reference": "a53c31f9-43bd-4fc4-b308-cded0b533a2c",
            "state": "captured",
            "amount": 91000,
            "currency": "GBP",
            "captured_at": "2023-09-12T10:17:03.000000ZZ",
            "refunds": [
                {
                    "id": 1,
                    "amount": 91000,
                    "created_at": "2025-09-16T07:40:22.000000Z"
                }
            ]
        }
    ],
    "fulfillments": [],
    "returns": [
        {
            "id": 1,
            "reason": "Test reason",
            "created_at": "2025-09-16T07:40:22.000000Z",
            "items": [
                {
                    "id": 28,
                    "quantity": 2,
                    "exchanged_for_id": null
                }
            ]
        }
    ],
    "comments": []
}
Orders

Create Order Endpoint

Structure

Order

Name
Type
Description
Required
id int The id for the order No
reference string The unique reference for the order Yes
status_id int The status id of the order, can also be resolved from state If ordered_at is not null
state string Alternative to passing status_id, resolves the first status with the specified state No
customer_id int The id of the customer that placed the order No
email string The email of the customer that placed the order No
subtotal.amount float The subtotal of the order excluding tax (in pence not pounds) No
subtotal.tax float The subtotal tax for the order (in pence not pounds) No
shipping.amount float The shipping of the order excluding tax (in pence not pounds) No
shipping.tax float The shipping tax for the order (in pence not pounds) No
discount.amount float The discount of the order excluding tax (in pence not pounds) No
discount.tax float The discount tax for the order (in pence not pounds) No
surcharge.amount float The surcharge of the order excluding tax (in pence not pounds) No
surcharge.tax float The surcharge tax for the order (in pence not pounds) No
shipping_method_id int The shipping method id of the order No
currency string The currency of the order, (defaults to store default if not provided) No
exchange_rate float The exchange rate of the order (derives from currency if not supplied) No
shipping_address object The Shipping Address for the order No
billing_address object The Billing Address for the order No
ip string The ip of the order No
channel string The channel of the order No
subscription_id int The subscription id of the order No
notify boolean Whether the order notifications are activated (defaults to true) No
buy_items boolean Whether the order items stock should be mutated. If false then OrderItemBought event will not be emit (defaults to true) No
ordered_at timestamp When the order was ordered No
deliver_on timestamp When the order should be delivered No
items array An array of Order Item objects Yes
payments array An array of Payment objects No
fulfillments array An array of Fulfillment objects No
comments array An array of Comment objects No
additional_attributes array An array of Additional Attribute objects No

If no subtotal.amount or subtotal.tax is passed their values will be set to the sum of the items price.amount * quantity & price.tax * quantity respectively.

If no discount.amount or discount.tax is passed their values will be set to the sum of the items discount.amount & discount.tax respectively.

Shipping Address

Name
Type
Description
Required
first_name string The first name for the shipping address Yes
last_name string The last name for the shipping address Yes
company string The company for the shipping address No
mobile string The mobile number for the shipping address No
phone string The phone number for the shipping address No
line_1 string The first line for the shipping address Yes
line_2 string The second line for the shipping address No
city string The city for the shipping address Yes
zone string The zone code for the shipping address No
postcode string The postcode for the shipping address Yes
country string The country code for the shipping address No
reference string The unique reference for the shipping address No
eori_number string The EORI number for the shipping address No

Billing Address

Name
Type
Description
Required
first_name string The first name for the billing address Yes
last_name string The last name for the billing address Yes
company string The company for the billing address No
mobile string The mobile number for the billing address No
phone string The phone number for the billing address No
line_1 string The first line for the billing address Yes
line_2 string The second line for the billing address No
city string The city for the billing address Yes
zone string The zone code for the billing address No
postcode string The postcode for the billing address Yes
country string The country code for the billing address No
reference string The unique reference for the billing address No
eori_number string The EORI number for the billing address No

Order Item

Name
Type
Description
Required
key string The unique key for the order item No
variant_id int The variant id of the buyable No
product_id string The product id of the buyable (resolves first variant unless variant_id is provided) No
buyable_type string The buyable type of the order item Not required if any of:
sku/variant_id/product_id are provided
buyable_id int The buyable id of the order item Not required if any of:
sku/variant_id/product_id are provided
name string The name for the order item Conditional *
url string The url for the order item No
sku string The sku for the order item, can be used to resolve buyable Conditional *
reference string The unique reference for the order item No
manufacturer_id int The manufacturer id for the order item No
image string The image for the order item No
options array The options for the order item No
shippable boolean Whether the order item is shippable No
quantity int The quantity for the order item Yes
price.amount float The unit price of the order item excluding tax (in pence not pounds) Yes
price.tax float The unit tax for the order item (in pence not pounds) Yes
discount.amount float The total discount of the order item excluding tax (in pence not pounds) No
discount.tax float The total discount tax for the order item (in pence not pounds) No
full_price.amount float The unit full price (including extras) of the order item excluding tax (in pence not pounds) No
full_price.tax float The unit full tax (including extras) for the order item (in pence not pounds) No
cost_price.amount float The unit cost price of the order item excluding tax (in pence not pounds) No
cost_price.currency string The currency code for the cost price No
weight float The weight for the order item No
weight_unit float The weight unit for the order item, defaults to stores normalized
weight unit if not passed
No
volume float The volume for the order item No
volume_unit float The volume unit for the order item, defaults to stores normalized
volume unit if not passed
No
tag_ids array The tag ids for the order item No
hs string The HS code for the order item No
origin_country string The origin country code for the order item No
subscription_plan_id int The subscription plan id for the order item No
goods_description string The goods description for the order item No

* If no buyable can be resolved from the given data, the sku is required - as is the name.

price, discount & full_price all support an un-nested price including tax being passed, see Price Conventions.

Payment

Name
Type
Description
Required
method_id int The payment method id of the payment Not required if driver is passed
driver string Payment driver used to resolve method_id No
reference string The reference for the payment, if not specified a uuid will be generated No
state string The state for the payment, if not specified the captured state will be used No
amount float The total amount for the payment Yes

Valid states: failed, pending, authorized, partially captured, captured, partially refunded, refunded, canceled, errored

Fulfillment

Name
Type
Description
Required
id int The id for the fulfillment No
reference string The reference for the fulfillment No
state string The state of the fulfillment (defaults to method's default if not passed) No
method int| string The fulfillment method's id, name or driver (defaults to orders' default if not passed) No
tracking_code string The tracking code for the fulfillment No
tracking_url url The tracking url for the fulfillment No
weight float The total weight of the fulfillment (calculated from items if not passed) No
weight_unit string The weight unit (defaults to store's default if not provided) No
volume float The total volume of the fulfillment (calculated from items if not passed) No
volume_unit string The volume unit (defaults to store's default if not provided) No
delivery_note string The delivery note for the fulfillment No
notify boolean Whether the fulfillment notifications are activated (defaults to true) No
dispatched_at timestamp The dispatched at of the fulfillment No
items array An array of Fullfillment Item objects (if not passed every fulfillable item is fulfilled) No

Fulfillment Item

Name
Type
Description
Required
sku string The sku of the order item to be fulfilled Yes
quantity int The quantity to be fulfilled (defaults to max possible) No
weight float The weight of the item (uses order item's weight if not passed) No
weight_unit string The weight unit (defaults to store's default if not provided) No
volume float The volume of the fulfillment (uses order item's volume if not passed) No
volume_unit string The volume unit (defaults to store's default if not provided) No

Comment

Name
Type
Description
Required
id int The id for the comment No
admin int|string The id or email of the admin No
message string The comment message Yes
customer_facing boolean Whether the comment is customer facing (default: false) No
created_at timestamp The date the comment was created (defaults to now) No

Additional Attribute

Name
Type
Description
Required
key string The key of the additional attribute Yes
value string The value of the additional attribute Yes

Example Request

POST /api/orders
{
    "reference": "ABC123",
    "email": "testing@gmail.com",
    "subtotal": {
        "amount": 84166.67,
        "tax": 16833.33
    },
    "shipping": {
        "amount": 83.33,
        "tax": 16.67
    },
    "discount": {
        "amount": 8416.67,
        "tax": 1683.33
    },
    "ordered_at": "2023-09-01T09:29:41.000000Z",
    "currency": "GBP", 
    "status_id": 3, 
    "customer_id": 1, 
    "shipping_method_id": 1, 
    "notify": true, 
    "billing_address": { 
        "first_name": "Aero",
        "last_name": "Commerce",
        "company": "Aero Commerce", 
        "mobile": null, 
        "phone": null, 
        "line_1": "28-32 Albert Rd",
        "line_2": null, 
        "city": "Middlesbrough",
        "zone": null, 
        "postcode": "TS1 1QD",
        "reference": null, 
        "country": "GB", 
        "eori_number": null 
    },
    "shipping_address": {
        "first_name": "Aero",
        "last_name": "Commerce",
        "company": "Aero Commerce", 
        "mobile": null, 
        "phone": null, 
        "line_1": "28-32 Albert Rd",
        "line_2": null, 
        "city": "Middlesbrough",
        "zone": null, 
        "postcode": "TS1 1QD",
        "reference": null, 
        "country": "GB", 
        "eori_number": null 
    },
    "items": [
        {
            "variant_id": 1,
            "shippable": true,
            "quantity": 2,
            "price": {
                "amount": 42083.33,
                "tax": 8416.67
            },
            "discount": {
                "amount": 8416.67,
                "tax": 1683.33
            }
        }
    ],
    "payments": [
        {
            "driver": "cash",
            "amount": 91000
        }
    ],
    "comments": [
        {
            "admin": "admin@example.com",
            "message": "This is an API message",
            "created_at": "2025-09-01 09:29:41",
            "customer_facing": true
        }
    ]
}

Example Response

{
    "order": {
        "id": 1
    }
}

Orders

Flag Order Endpoints

Examples

Adding a Flag
Request
POST /api/orders/{id|reference}/flags/{id|name}
Response
{
    "order": {
        "id": 1
    },
    "flag": {
        "id": 1
    }
}
Removing a Flag
Request
DELETE /api/orders/{id|reference}/flags/{id|name}
Response
204 No Content
Orders

Order Comments Endpoint

Structure

Name
Type
Description
Required
id int The id for the comment No
admin int|string The id or email of the admin No
message string The comment message Yes
customer_facing boolean Whether the comment is customer facing (default: false) No
created_at timestamp The date the comment was created (defaults to now) No

If no admin is supplied then the API Token name will be displayed for the comment in the Admin.

Example Request

POST /api/orders/{id|reference}/comments
{
    "admin": "admin@example.com",
    "message": "This is an API message",
    "customer_facing": true,
    "created_at": "2025-09-01 09:29:41"
}

Example Response

{
    "order": {
        "id": 1
    },
    "comment": {
        "id": 1
    }
}

Fulfillments

Fulfillments

Create Fulfillment Endpoint

Structure

Fulfillment

Name
Type
Description
Required
id int The id for the fulfillment No
reference string The reference for the fulfillment No
state string The state of the fulfillment (defaults to method's default if not passed) No
method int| string The fulfillment method's id, name or driver (defaults to orders' default if not passed) No
tracking_code string The tracking code for the fulfillment No
tracking_url url The tracking url for the fulfillment No
weight float The total weight of the fulfillment (calculated from items if not passed) No
weight_unit string The weight unit (defaults to store's default if not provided) No
volume float The total volume of the fulfillment (calculated from items if not passed) No
volume_unit string The volume unit (defaults to store's default if not provided) No
delivery_note string The delivery note for the fulfillment No
notify boolean Whether the fulfillment notifications are activated (defaults to true) No
dispatched_at timestamp The dispatched at of the fulfillment No
items array An array of Item objects (if not passed every fulfillable item is fulfilled) No

Valid fulfillment states: failed, pending, open, successful, canceled, errored

Fulfillment Item

Name
Type
Description
Required
id int The id of the order item to be fulfilled Conditional *
sku string The sku of the order item to be fulfilled Conditional *
quantity int The quantity to be fulfilled (defaults to max possible) No
weight float The weight of the item (uses order item's weight if not passed) No
weight_unit string The weight unit (defaults to store's default if not provided) No
volume float The volume of the fulfillment (uses order item's volume if not passed) No
volume_unit string The volume unit (defaults to store's default if not provided) No

* One of id or sku must be provided.

Example Requests

Fulfill Specific Items
POST /api/orders/{id|reference}/fulfillments
{
    "reference": "F1-API",
    "tracking_code": "Test tracking code",
    "tracking_url": "http://aero.test",
    "delivery_note": "Test delivery note",
    "items": [
        {
            "sku": "ABC-123",
            "quantity": 1,
            "weight": 10,
            "weight_unit": "oz",
            "volume": 0.5,
            "volume_unit": "m^3"
        },
        {
            "sku": "DEF-456"
        }
    ]
}
Fulfill All Items
POST /api/orders/{id|reference}/fulfillments
{
    "reference": "F2-API",
    "tracking_code": "Test tracking code",
    "tracking_url": "http://aero.test",
    "delivery_note": "Test delivery note",
}

Example Response

{
    "fulfillment": {
        "id": 1
    }
}

Fulfillments

Delete Fulfillment Endpoint

Example Request

DELETE /api/orders/{id|reference}/fulfillments/{id|reference}

Example Response

204 No Content

Order Statuses

Order Statuses

View Order Status Endpoint

Structure

Order Status

Name
Type
Description
id int The id of the order status
name string The name of the order status
state string The state of the order status
group object The Group of the order status

Order Status Group

Name
Type
Description
id int The id of the order status group
name string The name of the order status group

Example Request

GET /api/order-statuses/{id}

Example Response

{
    "id": 2,
    "name": "On Hold",
    "state": "on_hold",
    "group": {
        "id": 1,
        "name": "test"
    }
}
Order Statuses

Order Status Index Endpoint

Structure

See View Order Status Endpoint for the structure of the order status payload inside the data array.

Example Request

GET /api/order-statuses?per_page=2

Example Response

{
    "current_page": 1,
    "data": [
        //
    ],
    "first_page_url": "http://aero.test/api/order-statuses?page=1",
    "from": 1,
    "last_page": 5,
    "last_page_url": "http://aero.test/api/order-statuses?page=5",
    "next_page_url": "http://aero.test/api/order-statuses?page=2",
    "path": "http://aero.test/api/order-statuses",
    "per_page": 2,
    "prev_page_url": null,
    "to": 2,
    "total": 9
}

See View Order Status Endpoint for the structure of the order status payload inside the data array.

Products

Products

Product Index Endpoint

Structure

See View Product Endpoint for the structure of the order payload inside the data array.

Scopes

Name
Description
Example
active Only return active products ?scope=active
inactive Only return inactive products ?scope=inactive
visible Only return visible products ?scope=visible
hidden Only return hidden products ?scope=hidden
published Only return published products ?scope=published
unpublished Only return unpublished products ?scope=unpublished
scheduled Only return scheduled to be published products ?scope=scheduled

These scopes are applied at database level and may not always reflect real-time search index data. For precise filtering use the Product Search Endpoint.

Filters

Name
Description
Example
models Only return products with specific models (note: singular form ?model not supported) ?models=ABC,DEF
skus Only return products with variants that have specific SKUs ?skus=ABC-123,DEF-456

Plural filters can also be used in singular form (unless otherwise stated), e.g. ?sku=ABC-123 for ?skus=ABC-123.

Example Request

GET /api/products?per_page=2&min_updated_at=2023-08-30%2010:36:23

Example Response

{
    "current_page": 1,
    "data": [
      //...
    ],
    "first_page_url": "http://aero.test/api/products?page=1",
    "from": 1,
    "last_page": 16,
    "last_page_url": "http://aero.test/api/products?page=16",
    "next_page_url": "http://aero.test/api/products?page=2",
    "path": "http://aero.test/api/products",
    "per_page": 2,
    "prev_page_url": null,
    "to": 2,
    "total": 32
}

Products

Product Search Endpoint

Pre-requisites

This endpoint performs product search queries using Elasticsearch. Make sure your product documents are indexed before using this route:

php artisan aero:search:reindex --type=product

You must run this command after installing the API.

Structure

See View Product Endpoint for the structure of the order payload inside the data array.

Name
Description
Example
active Only return active products ?scope=active
inactive Only return inactive products ?scope=inactive
visible Only return visible products ?scope=visible
hidden Only return hidden products ?scope=hidden
categorised Only return products that are in a category ?scope=categorised
un-categorised Only return products that aren't in a category ?scope=un-categorised
published Only return published products ?scope=published
unpublished Only return unpublished products ?scope=unpublished
scheduled Only return scheduled to be published products ?scope=scheduled
has-stock Only return products that have stock ?scope=has-stock
out-of-stock Only return products that don't have stock ?scope=out-of-stock
not-tracking-stock Only return products that aren't tracking stock ?scope=not-tracking-stock
reduced Only return reduced products ?scope=reduced
not-reduced Only return non-reduced products ?scope=not-reduced
has-images Only return products that have images ?scope=has-images
no-images Only return products that don't have images ?scope=no-images

Filters

Name
Description
Example
manufacturers Only return products with specific manufacturer ids (or names) ?manufacturers=1,burberry
tags Only return products with specific tag ids (or names formatted as group|name) ?tags=1,colour|red
barcodes Only return products with specific barcodes ?barcodes=123,abc
references Only return products with specific references ?references=123,abc
price Only return products with specific price in whole units (e.g. pounds, not pence) ?price=123
min_price Only return products with price above min price in whole units (e.g. pounds, not pence) ?min_price=123
max_price Only return products with price below max price in whole units (e.g. pounds, not pence) ?max_price=123
stock_level Only return products with specific stock level ?stock_level=1
min_stock_level Only return products with stock above specific stock level ?min_stock_level=1
max_stock_level Only return products with stock below specific stock level ?max_stock_level=10
type Only return products of a certain type (e.g. simple or variant) ?type=variant
models Only return products with specific models ?models=ABC,DEF
skus Only return products with variants that have specific SKUs ?skus=ABC-123,DEF-456

The tags filter applies AND logic across groups and OR logic within groups:

- ?tags=size|small,colour|red = small and red.
- ?tags=colour|red,colour|green = red or green.

Plural filters can also be used in singular form, e.g. ?manufacturer=burberry for ?manufacturers=burberry.

Example Request

GET /api/products/search?per_page=2&min_updated_at=2023-08-30%2010:36:23&min_stock_level=1&max_stock_level=10

Example Response

{
    "current_page": 1,
    "data": [
        //...
    ],
    "first_page_url": "http://aero.test/api/products?page=1",
    "from": 1,
    "last_page": 16,
    "last_page_url": "http://aero.test/api/products?page=16",
    "next_page_url": "http://aero.test/api/products?page=2",
    "path": "http://aero.test/api/products",
    "per_page": 2,
    "prev_page_url": null,
    "to": 2,
    "total": 32
}


Products

View Product Endpoint

Structure

Product

Name
Type
Description
model string The unique model identifier for the product
name string The display name of the product
manufacturer object The Manufacturer object (null when none)
summary string A short summary of the product
description string A detailed description of the product
active boolean Whether the product is active (available for purchase)
visible boolean Whether the product is visible in the storefront
attribute_groups_to_split_by ?array The attribute groups to split listings by (null when none)
published_at timestamp When the product was published
images array An array of Image objects
categories array An array of Category objects
tags array An array of Tag objects
variants array An array of Variant objects
seo object A SEO object
settings object A Settings object with grouped key-value pairs
additional_attributes array An array of Additional Attribute objects
specifications * array An array of Specification objects
specification_groups * array An array of Specification Group objects
upsells array An array of Upsell objects
related_listings array An array of Related Listing objects

* specifications is if using <1.0.0 version of aerocargo/specifications, otherwise use specification_groups.

Manufacturer

Name
Type
Description
id int The id of the manufacturer
name string The name of the manufacturer

Image

Name
Type
Description
url string The url of the image
default bool Whether the image is default
attributes array An array of Attribute objects

Category

Name
Type
Description
id int The id of the category
name string The name of the category (e.g., Coats)
breadcrumb string The breadcrumb path for the category (e.g., Mens > Coats)

Variant

Name
Type
Description
sku string The unique SKU for the variant
reference string The unique reference for the variant
name string Display name of the variant
summary string A short summary of the variant
description string A detailed description of the variant
barcode string The barcode/UPC/EAN of the variant
buyable boolean Whether the variant can be purchased
visible boolean Whether the variant is visible in listings
shippable boolean Whether the variant is shippable
discountable boolean Whether discounts can be applied to this variant
hide_when_no_stock boolean Whether the variant should be hidden when out of stock
infinite_stock boolean Whether the variant has unlimited stock
stock_level int Current stock level
stock_buffer int The stock buffer
tax_group string The tax group applied to the variant
minimum_quantity int Minimum quantity per purchase
maximum_quantity int Maximum quantity per purchase
multiples_of int Purchasable only in multiples of this number
weight float Weight of the variant
weight_unit string Unit of weight (e.g., kg, lb)
volume float Volume of the variant
volume_unit string Unit of volume (e.g., m^3, cm^3)
hs string HS (Harmonized System) code for customs
price.amount float The current price of the variant excluding tax
price.tax float The tax of the current price
price.currency string The currency of the current price
retail.amount float The RRP for the variant excluding tax
retail.tax float The tax of the RRP
retail.currency string The currency of the RRP
origin_country string ISO country code of origin (e.g., US, GB)
goods_description string Description of goods for customs
attributes array An array of Attribute objects
tags array An array of Tag objects
cost object The Cost Price of the variant
prices array An array of Price objects
additional_attributes array An array of Additional Attribute objects
specifications * array An array of Specification objects
specification_groups * array An array of Specification Group objects
upsells array An array of Upsell objects

* specifications is if using <1.0.0 version of aerocargo/specifications, otherwise use specification_groups.

Attribute

Name
Type
Description
id int The id of the attribute
name string The name of the attribute
reference string The reference of the attribute
group object The Attribute Group object

Attribute Group

Name
Type
Description
id int The id of the tag group
name string The name of the tag group
reference string The reference of the tag group

Tag

Name
Type
Description
id int The id of the tag
name string The name of the tag
reference string The reference of the tag
group object The Tag Group object

Tag Group

Name
Type
Description
id int The id of the tag group
name string The name of the tag group
reference string The reference of the tag group

Cost Price

Name
Type
Description
amount float The cost price including tax
currency string Currency code (defaults to store default if not provided)

Price

Name
Type
Description
id int The id of the price
currency string The currency code for the price
quantity int The quantity required for the price to be detected/applied
value.amount float The normal price excluding tax
value.tax float The tax for the normal price
sale_value.amount float The sale price excluding tax
sale_value.tax float The tax for the sale price
retail_value.amount float The retail price excluding tax
retail_value.tax float The tax for the retail price
start_at timestamp The start date for when the price is active
end_at timestamp The end date for when the price is active
reference string The reference for the price

SEO

Name
Type
Description
heading string The SEO Heading
page_title string The SEO Page Title
meta_description string The SEO Meta Description
canonical string The SEO Canonical
noindex boolean The SEO No Index
nofollow boolean The SEO No Follow

Settings

Settings are grouped as key-value pairs.

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

Additional Attribute

Name
Type
Description
key string The key of the additional attribute
value string The value of the additional attribute

Specification

Name
Type
Description
group.name string The name of the specification group
name string The name of the specification
value string The value of the specification
media array An array of Media objects

This is only for <1.0.0 version of aerocargo/specifications. See Specification Group for 1.x structure.

Specification Group

Name
Type
Description
id int The id of the specification group
name string The name of the specification group
fields array An array of Field objects
media array An array of Media objects
settings object A Settings object with grouped key-value pairs

This is only for >=1.0.0 version of aerocargo/specifications. See Specification for 0.x structure.

Specification Group Field

Name
Type
Description
id int The id of the specification group field
name string The name of the specification group field
value string The value of the specification group field
media array An array of Media objects
settings object A Settings object with grouped key-value pairs

Media

Name
Type
Description
id int The id of the media
slug string The slug of the media
disk string The disk used to store the media
path string The path of the media on the disk
title string The title of the media
type string The mimetype of the media
extension string The file extension of the media
size int The file size of the media in bytes
meta object The meta data of the media
source string The source file name of the media
is_protected bool Whether the media is protected

Upsell

Name
Type
Description
group object The Upsell Group object (null when none)
attributes array An array of Attribute objects that the upsell shows for
models array And array of models for the upsell
skus array And array of SKUs for the upsell

Upsell Group

Name
Type
Description
key string The key of the upsell group
name string The name of the upsell group
Name
Type
Description
id int The id of the listing
product.id int The id of the product linked to the listing
product.model string The model of the product linked to the listing
variants.*.id id The id of the variants linked to the listing
variants.*.sku string The sku of the variants linked to the listing
sort int The sort of the listing within the group

Example Requests

GET /api/products/{id|model}
GET /api/products?model=model

Using the first request syntax is advised, only use the second if/when the model is numeric, as if a matching id exists that would be resolved instead.

Example Responses

Simple Product
{
    "model": "9021182",
    "name": "Detachable Sleeve Puffer Jacket",
    "manufacturer": "Burberry",
    "categories": [
        { 
            "name": "Mens > Coats > Padded Coats"
        }
    ],
    "summary": "Summary",
    "description": "Description",
    "active": true,
    "visible": true,
    "images": [
        {
            "src": "https://picsum.photos/seed/first/600/400",
            "default": true
        }
    ],
    "variants": [
        {
            "sku": "9021182",
            "barcode": "abc123",
            "stock_level": 5,
            "prices": [
                {
                    "currency": "GBP",
                    "price": 790,
                    "quantity": 1
                }
            ],
            "tax_group": "Taxable Product"
        }
    ],
    "tags": [
        {
            "group": { 
                "name": "Colour"
            },
            "name": "Blue"
        }
    ],
    "seo": {
        "heading": "test heading",
        "page_title": "test page title",
        "meta_description": "test meta description",
        "noindex": 0,
        "nofollow": 0
    },
    "additional_attributes": [
        {
            "key": "test_name",
            "value": "test_value"
        }
    ]
}
Variant Product
{
    "id": 1,
    "model": "8021182",
    "name": "Detachable Sleeve Puffer Jacket",
    "summary": "Outer: Leather 100%, Polyamide 100%\nLining: Polyester 100%, Goose Down 90%, Wool 70%, Polyamide 20%, Cashmere 10%, Feather 10%",
    "description": "A quintessentially British brand, Burberry creates iconic designs that seamlessly infuse their rich heritage with a contemporary aesthetic. This deep blue wool and cashmere blend detachable sleeve puffer jacket from Burberry features a hood, a high standing collar, a zip and press stud fastening, detachable long sleeves, a contrast logo patch to one side, zipped side slit pockets and a puffer style.",
    "type": "variant",
    "active": true,
    "visible": true,
    "attribute_groups_to_split_by": null,
    "published_at": "2025-06-13T07:34:34.000000Z",
    "manufacturer": {
        "id": 1,
        "name": "Burberry"
    },
    "images": [
        {
            "url": "https://picsum.photos/seed/first/600/400",
            "default": "1"
        },
        {
            "url": "https://picsum.photos/seed/second/600/400",
            "default": "1"
        },
        {
            "url": "https://picsum.photos/seed/third/600/400",
            "default": "1"
        },
    ],
    "categories": [
        {
            "id": 3,
            "name": "Padded Coats",
            "breadcrumb": "Mens » Coats » Padded Coats"
        }
    ],
    "tags": [
        {
            "id": 1,
            "name": "Blue",
            "reference": null,
            "group": {
                "id": 1,
                "name": "Colour",
                "reference": null
            }
        }
    ],
    "seo": {
        "heading": "test heading",
        "page_title": "test page title",
        "meta_description": "test meta description",
        "open_graph": "",
        "canonical": "",
        "noindex": null,
        "nofollow": null
    },
    "variants": [
        {
            "id": 1,
            "sku": "8021182-S",
            "reference": null,
            "name": "",
            "summary": "",
            "description": "",
            "barcode": null,
            "buyable": true,
            "visible": true,
            "shippable": true,
            "discountable": true,
            "infinite_stock": false,
            "stock_level": 5,
            "stock_buffer": 0,
            "weight": null,
            "weight_unit": null,
            "volume": null,
            "volume_unit": null,
            "hs": null,
            "origin_country": null,
            "goods_description": null,
            "cost": {
                "amount": 5623.54,
                "currency": "GBP"
            },
            "price": {
                "amount": 65833.33,
                "tax": 13166.669999999998,
                "currency": "GBP"
            },
            "retail": {
                "amount": null,
                "tax": null,
                "currency": "GBP"
            },
            "prices": [
                {
                    "id": 1,
                    "currency": "GBP",
                    "quantity": 1,
                    "value": {
                        "amount": 65833.33,
                        "tax": 13166.669999999998
                    },
                    "sale_value": {
                        "amount": 65833.33,
                        "tax": 13166.669999999998
                    },
                    "retail_value": {
                        "amount": null,
                        "tax": null
                    },
                    "start_at": null,
                    "end_at": null,
                    "reference": null
                }
            ],
            "images": [
                {
                    "url": "https://picsum.photos/seed/fourth/600/400",
                    "default": "1",
                    "attributes": [
                        {
                            "group": {
                                "name": "Size"
                            },
                            "name": "Small"
                        }
                    ]
                }
            ],
            "attributes": [
                {
                    "id": 1,
                    "name": "Small",
                    "display_name": "Small",
                    "reference": null,
                    "group": {
                        "id": 1,
                        "name": "Size",
                        "reference": null
                    }
                }
            ],
            "tags": [
                {
                    "id": 2,
                    "name": "Small",
                    "reference": null,
                    "group": {
                        "id": 2,
                        "name": "Size",
                        "reference": null
                    }
                }
            ],
            "additional_attributes": []
        },
        {
            "id": 2,
            "sku": "8021182-M",
            "reference": null,
            "name": "",
            "summary": "",
            "description": "",
            "barcode": null,
            "buyable": true,
            "visible": true,
            "shippable": true,
            "discountable": true,
            "infinite_stock": false,
            "stock_level": 5,
            "stock_buffer": 0,
            "weight": null,
            "weight_unit": null,
            "volume": null,
            "volume_unit": null,
            "hs": null,
            "origin_country": null,
            "goods_description": null,
            "cost": {
                "amount": null,
                "currency": null
            },
            "price": {
                "amount": 65833.33,
                "tax": 13166.669999999998,
                "currency": "GBP"
            },
            "retail": {
                "amount": null,
                "tax": null,
                "currency": "GBP"
            },
            "prices": [
                {
                    "id": 2,
                    "currency": "GBP",
                    "quantity": 1,
                    "value": {
                        "amount": 65833.33,
                        "tax": 13166.669999999998
                    },
                    "sale_value": {
                        "amount": 65833.33,
                        "tax": 13166.669999999998
                    },
                    "retail_value": {
                        "amount": null,
                        "tax": null
                    },
                    "start_at": null,
                    "end_at": null,
                    "reference": null
                }
            ],
            "images": [],
            "attributes": [
                {
                    "id": 2,
                    "name": "Medium",
                    "display_name": "Medium",
                    "reference": null,
                    "group": {
                        "id": 1,
                        "name": "Size",
                        "reference": null
                    }
                }
            ],
            "tags": [
                {
                    "id": 3,
                    "name": "Medium",
                    "reference": null,
                    "group": {
                        "id": 2,
                        "name": "Size",
                        "reference": null
                    }
                }
            ],
            "additional_attributes": []
        },
        {
            "id": 3,
            "sku": "8021182-L",
            "reference": null,
            "name": "",
            "summary": "",
            "description": "",
            "barcode": null,
            "buyable": true,
            "visible": true,
            "shippable": true,
            "discountable": true,
            "infinite_stock": false,
            "stock_level": 5,
            "stock_buffer": 0,
            "weight": null,
            "weight_unit": null,
            "volume": null,
            "volume_unit": null,
            "hs": null,
            "origin_country": null,
            "goods_description": null,
            "cost": {
                "amount": null,
                "currency": null
            },
            "price": {
                "amount": 65833.33,
                "tax": 13166.669999999998,
                "currency": "GBP"
            },
            "retail": {
                "amount": null,
                "tax": null,
                "currency": "GBP"
            },
            "prices": [
                {
                    "id": 3,
                    "currency": "GBP",
                    "quantity": 1,
                    "value": {
                        "amount": 65833.33,
                        "tax": 13166.669999999998
                    },
                    "sale_value": {
                        "amount": 65833.33,
                        "tax": 13166.669999999998
                    },
                    "retail_value": {
                        "amount": null,
                        "tax": null
                    },
                    "start_at": null,
                    "end_at": null,
                    "reference": null
                }
            ],
            "images": [],
            "attributes": [
                {
                    "id": 3,
                    "name": "Large",
                    "display_name": "Large",
                    "reference": null,
                    "group": {
                        "id": 1,
                        "name": "Size",
                        "reference": null
                    }
                }
            ],
            "tags": [
                {
                    "id": 4,
                    "name": "Large",
                    "reference": null,
                    "group": {
                        "id": 2,
                        "name": "Size",
                        "reference": null
                    }
                }
            ],
            "additional_attributes": []
        },
        {
            "id": 4,
            "sku": "8021182-XL",
            "reference": null,
            "name": "",
            "summary": "",
            "description": "",
            "barcode": null,
            "buyable": true,
            "visible": true,
            "shippable": true,
            "discountable": true,
            "infinite_stock": false,
            "stock_level": 5,
            "stock_buffer": 0,
            "weight": null,
            "weight_unit": null,
            "volume": null,
            "volume_unit": null,
            "hs": null,
            "origin_country": null,
            "goods_description": null,
            "cost": {
                "amount": null,
                "currency": null
            },
            "price": {
                "amount": 65833.33,
                "tax": 13166.669999999998,
                "currency": "GBP"
            },
            "retail": {
                "amount": null,
                "tax": null,
                "currency": "GBP"
            },
            "prices": [
                {
                    "id": 1,
                    "currency": "GBP",
                    "quantity": 1,
                    "value": {
                        "amount": 65833.33,
                        "tax": 13166.669999999998
                    },
                    "sale_value": {
                        "amount": 65833.33,
                        "tax": 13166.669999999998
                    },
                    "retail_value": {
                        "amount": null,
                        "tax": null
                    },
                    "start_at": null,
                    "end_at": null,
                    "reference": null
                }
            ],
            "images": [],
            "attributes": [
                {
                    "id": 4,
                    "name": "Extra Large",
                    "display_name": "Extra Large",
                    "reference": null,
                    "group": {
                        "id": 1,
                        "name": "Size",
                        "reference": null
                    }
                }
            ],
            "tags": [
                {
                    "id": 5,
                    "name": "Extra Large",
                    "reference": null,
                    "group": {
                        "id": 2,
                        "name": "Size",
                        "reference": null
                    }
                }
            ],
            "additional_attributes": []
        }
    ],
    "additional_attributes": [],
    "settings": []
}
Products

Create Product Endpoint

Structure

Product

Name
Type
Description
Required
id int The id for the product No
model string The unique model identifier for the product Yes
name string The display name of the product Yes
manufacturer string The manufacturer/brand of the product No
summary string A short summary of the product No
description string A detailed description of the product No
active boolean Whether the product is active (available for purchase) No
visible boolean Whether the product is visible in the storefront No
attribute_groups_to_split_by array An array of attribute group names to split listings by (e.g., ["Size"]) No
published_at timestamp When the product was published No
images array An array of Image objects No
categories array An array of Category objects No
tags array An array of Tag objects No
variants array An array of Variant objects Yes
seo object A SEO object No
settings object A Settings object with grouped key-value pairs No
additional_attributes array An array of Additional Attribute objects No
specifications * array An array of Specification objects No
specification_groups * array An array of Specification Group objects No
upsells array An array of Upsell objects No
related_listings array An array of Related Listing objects No

* specifications is if using <1.0.0 version of aerocargo/specifications, otherwise use specification_groups.

Category

Name
Type
Description
Required
name string The category name or breadcrumb (e.g., "Coats" or "Mens > "Coats") Yes

Variant

Name
Type
Description
Required
id int The id for the variant No
sku string The unique SKU for the variant Yes
reference string The unique reference for the variant No
name string Display name of the variant No
summary string A short summary of the variant No
description string A detailed description of the variant No
barcode string The barcode/UPC/EAN of the variant No
buyable boolean Whether the variant can be purchased No
visible boolean Whether the variant is visible in listings No
shippable boolean Whether the variant is shippable No
discountable boolean Whether discounts can be applied to this variant No
hide_when_no_stock boolean Whether the variant should be hidden when out of stock No
infinite_stock boolean Whether the variant has unlimited stock No
stock_level int Current stock level No
stock_buffer int The stock buffer No
tax_group string The tax group applied to the variant No
minimum_quantity int Minimum quantity per purchase No
maximum_quantity int Maximum quantity per purchase No
multiples_of int Purchasable only in multiples of this number No
weight float Weight of the variant No
weight_unit string Unit of weight (e.g., kg, lb) No
volume float Volume of the variant No
volume_unit string Unit of volume (e.g., m^3, cm^3) No
hs string HS (Harmonized System) code for customs No
origin_country string ISO country code of origin (e.g., US, GB) No
goods_description string Description of goods for customs No
attributes array An array of Attribute objects If product has variants
tags array An array of Tag objects No
cost object The Cost Price of the variant No
prices array An array of Price objects Yes
additional_attributes array An array of Additional Attribute objects No
specifications * array An array of Specification objects No
specification_groups * array An array of Specification Group objects No
upsells array An array of Upsell objects No

* specifications is if using <1.0.0 version of aerocargo/specifications, otherwise use specification_groups.

Attribute

Name
Type
Description
Required
name string The name of the attribute (e.g., "Small" or "Red") Yes
tags array An array of Tag objects linked to the attribute No
group object The Attribute Group of the attribute Yes

Attribute Group

Name
Type
Description
Required
name string The name of the attribute group (e.g., "Size", "Colour") Yes

Tag

Name
Type
Description
Required
name string The name of the tag (e.g., "Small" or "Red") Yes
group object The Tag Group of the tag Yes

Tag Group

Name
Type
Description
Required
name string The name of the tag group (e.g., "Size" or "Colour" Yes

Image

Name
Type
Description
Required
src string The source url of the image Yes
alt string Alt text for accessibility and SEO No
is_default boolean Whether this is a default image No
position int Sort order position of the image No
attributes array An array of Attribute objects that apply to this image No

Cost Price

Name
Type
Description
Required
amount float The cost price including tax Yes
currency string Currency code (defaults to store default if not provided) No

Price

Name
Type
Description
Required
price float The base price including tax Yes
sale_price float The sale price including tax No
retail_price float The retail price including tax No
quantity int Quantity required for this price tier (default: 1) No
currency string Currency code (defaults to store default) No
start_at timestamp When this price becomes active (e.g., 2023-09-01 09:29:41) No
end_at timestamp When this price expires No
reference string The unique reference for the price No

SEO

Name
Type
Description
Required
heading string The SEO Heading No
page_title string The SEO Page Title No
meta_description string The SEO Meta Description No
canonical string The SEO Canonical No
noindex boolean The SEO No Index No
nofollow boolean The SEO No Follow No

Settings

Settings are grouped as key-value pairs.

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

Additional Attribute

Name
Type
Description
Required
key string The key of the additional attribute Yes
value string The value of the additional attribute Yes

Specification

Name
Type
Description
Required
group.name string The name of the specification group Yes
name string The name of the specification *
value string The value of the specification No
media array An array of Media objects *

* At least one must be present, futhermore if the group doesn't exist and is to be created you must provide at least one field for it.

This is only for <1.0.0 version of aerocargo/specifications. See Specification Group for 1.x structure.

Specification Group

Name
Type
Description
Required
id int The id of the specification group *
name string The name of the specification group *
fields array An array of Field objects Yes
media array An array of Media objects No
settings object A Settings object with grouped key-value pairs No

* At least one must be present.

This is only for >=1.0.0 version of aerocargo/specifications. See Specification for 0.x structure.

Specification Group Field

Name
Type
Description
Required
id int The id of the specification group field *
name string The name of the specification group field *
value string The value of the specification group field Yes
media array An array of Media objects No
settings object A Settings object with grouped key-value pairs No

* At least one must be present.

Media

Name
Type
Description
Required
id int The id of the media *
source string The source of the media, e.g. test.png *

* At least one must be present.

Upsell

Name
Type
Description
Required
group.key string The upsell group key Yes
attributes array An array of Attribute objects that the upsell shows for No
models array And array of models for the upsell No
skus array And array of SKUs for the upsell No
Name
Type
Description
Required
id int The id of the listing Conditional *
variant_id int The id of the variant (of the listing) Conditional *
sku string The SKU of the variant (of the listing) Conditional *
product_id int The id of the product (of the listing) Conditional *
model string The model of the product (of the listing) Conditional *

* At least one must be present, resolved in the order they are listed top-down.

Example Requests

Simple Product (One variant without any attributes)
POST /api/products
{
    "model": "9021182",
    "name": "Detachable Sleeve Puffer Jacket",
    "manufacturer": "Burberry",
    "categories": [
        { 
            "name": "Mens > Coats > Padded Coats"
        }
    ],
    "summary": "Summary",
    "description": "Description",
    "active": true,
    "visible": true,
    "images": [
        {
            "src": "https://picsum.photos/seed/first/600/400",
            "is_default": true
        }
    ],
    "variants": [
        {
            "sku": "9021182",
            "barcode": "abc123",
            "stock_level": 5,
            "prices": [
                {
                    "currency": "GBP",
                    "price": 790,
                    "quantity": 1
                }
            ],
            "tax_group": "Taxable Product"
        }
    ],
    "tags": [
        {
            "group": { 
                "name": "Colour"
            },
            "name": "Blue"
        }
    ],
    "seo": {
        "heading": "test heading",
        "page_title": "test page title",
        "meta_description": "test meta description",
        "noindex": 0,
        "nofollow": 0
    },
    "additional_attributes": [
        {
            "key": "test_name",
            "value": "test_value"
        }
    ]
}
Variant Product (Multiple variants with shared attribute matrix structure)
POST /api/products
{
    "model": "9021182",
    "name": "Detachable Sleeve Puffer Jacket",
    "manufacturer": "Burberry",
    "categories": [
        {
            "name": "Mens > Coats > Padded Coats"
        }
    ],
    "summary": "Outer: Leather 100%, Polyamide 100%\nLining: Polyester 100%, Goose Down 90%, Wool 70%, Polyamide 20%, Cashmere 10%, Feather 10%",
    "description": "A quintessentially British brand, Burberry creates iconic designs that seamlessly infuse their rich heritage with a contemporary aesthetic. This deep blue wool and cashmere blend detachable sleeve puffer jacket from Burberry features a hood, a high standing collar, a zip and press stud fastening, detachable long sleeves, a contrast logo patch to one side, zipped side slit pockets and a puffer style.",
    "images": [
        {
            "src": "https://picsum.photos/seed/first/600/400",
            "is_default": "1"
        },
        {
            "src": "https://picsum.photos/seed/second/600/400",
            "is_default": "1"
        },
        {
            "src": "https://picsum.photos/seed/third/600/400",
            "is_default": "1"
        },
        {
            "src": "https://picsum.photos/seed/fourth/600/400",
            "is_default": "1",
            "attributes": [
                {
                    "group": {
                        "name": "Size"
                    },
                    "name": "Small"
                }
            ]
        }
    ],
    "variants": [
        {
            "sku": "9021182-S",
            "stock_level": "5",
            "prices": [
                {
                    "currency": "GBP",
                    "price": "790",
                    "quantity": 1
                }
            ],
            "tax_group": "Taxable Product",
            "attributes": [
                {
                    "group": {
                        "name": "Size"
                    },
                    "name": "Small",
                    "tags": [
                        {
                            "group": {
                                "name": "Size"
                            },
                            "name": "Small"
                        }
                    ]
                }
            ],
            "stock_buffer": 0,
            "minimum_quantity": 1,
            "multiples_of": 1
        },
        {
            "sku": "9021182-M",
            "stock_level": "5",
            "prices": [
                {
                    "currency": "GBP",
                    "price": "790",
                    "quantity": 1
                }
            ],
            "tax_group": "Taxable Product",
            "attributes": [
                {
                    "group": {
                        "name": "Size"
                    },
                    "name": "Medium",
                    "tags": [
                        {
                            "group": {
                                "name": "Size"
                            },
                            "name": "Medium"
                        }
                    ]
                }
            ],
            "stock_buffer": 0,
            "minimum_quantity": 1,
            "multiples_of": 1
        },
        {
            "sku": "9021182-L",
            "stock_level": "5",
            "prices": [
                {
                    "currency": "GBP",
                    "price": "790",
                    "quantity": 1
                }
            ],
            "tax_group": "Taxable Product",
            "attributes": [
                {
                    "group": {
                        "name": "Size"
                    },
                    "name": "Large",
                    "tags": [
                        {
                            "group": {
                                "name": "Size"
                            },
                            "name": "Large"
                        }
                    ]
                }
            ],
            "stock_buffer": 0,
            "minimum_quantity": 1,
            "multiples_of": 1
        },
        {
            "sku": "9021182-XL",
            "stock_level": "5",
            "prices": [
                {
                    "currency": "GBP",
                    "price": "790",
                    "quantity": 1
                }
            ],
            "tax_group": "Taxable Product",
            "attributes": [
                {
                    "group": {
                        "name": "Size"
                    },
                    "name": "Extra Large",
                    "tags": [
                        {
                            "group": {
                                "name": "Size"
                            },
                            "name": "Extra Large"
                        }
                    ]
                }
            ],
            "stock_buffer": 0,
            "minimum_quantity": 1,
            "multiples_of": 1
        }
    ],
    "tags": [
        {
            "group": {
                "name": "Colour"
            },
            "name": "Blue"
        }
    ],
    "active": true,
    "visible": true,
    "hide_when_no_stock": false,
    "seo": {
        "heading": "test heading",
        "page_title": "test page title",
        "meta_description": "test meta description",
        "noindex": 0,
        "nofollow": 0
    },
    "settings": {
        "_": {
            "no_group": "value"
        },
        "group": {
            "key": "value"
        }
    },
    "additional_attributes": [
        {
            "key": "test_name",
            "value": "test_value"
        }
    ]
}

Example Response

{
    "product": {
        "id": 1
    }
}
Products

Update Product Endpoint

Structure

Product

Name
Type
Description
Required
name string The name of the product No
manufacturer string The manufacturer of the product No
summary string The summary of the product No
description string The description of the product No
active boolean Whether the product is active No
visible boolean Whether the product is visible No
attribute_groups_to_split_by array An array of attribute group names to split listings by (e.g., ["Size"] No
published_at timestamp When the product was published No
images array An array of Image objects No
categories array An array of Category objects No
tags array An array of Tag objects No
variants array An array of Variant objects No
seo object A SEO object No
settings object A Settings object with grouped key-value pairs No
additional_attributes array An array of Additional Attribute objects No
specifications * array An array of Specification objects No
specification_groups * array An array of Specification Group objects No
upsells array An array of Upsell objects No
related_listings array An array of Related Listing objects No

* specifications is if using <1.0.0 version of aerocargo/specifications, otherwise use specification_groups.

Category

Name
Type
Description
Required
name string The category name or breadcrumb (e.g., "Coats" or "Mens > "Coats") Yes

Variant

Name
Type
Description
Required
sku string The unique SKU for the variant to be updated Yes
reference string The unique reference for the variant No
name string Display name of the variant No
summary string A short summary of the variant No
description string A detailed description of the variant No
barcode string The barcode/UPC/EAN of the variant No
buyable boolean Whether the variant can be purchased No
visible boolean Whether the variant is visible in listings No
shippable boolean Whether the variant is shippable No
discountable boolean Whether discounts can be applied to this variant No
hide_when_no_stock boolean Whether the variant should be hidden when out of stock No
infinite_stock boolean Whether the variant has unlimited stock No
stock_level int Current stock level No
stock_buffer int The stock buffer No
stock_action string The stock action (e.g., set, add, remove & multiply). Defaults to set No
tax_group string The tax group applied to the variant No
minimum_quantity int Minimum quantity per purchase No
maximum_quantity int Maximum quantity per purchase No
multiples_of int Purchasable only in multiples of this number No
weight float Weight of the variant No
weight_unit string Unit of weight (e.g., kg, lb) No
volume float Volume of the variant No
volume_unit string Unit of volume (e.g., m^3, cm^3) No
hs string HS (Harmonized System) code for customs No
origin_country string ISO country code of origin (e.g., US, GB) No
goods_description string Description of goods for customs No
tags array An array of Tag objects No
cost object The Cost Price of the variant No
prices array An array of Price objects No
additional_attributes array An array of Additional Attribute objects No
specifications * array An array of Specification objects No
specification_groups * array An array of Specification Group objects No
upsells array An array of Upsell objects No

Tag

Name
Type
Description
Required
name string The name of the tag (e.g., "Small" or "Red") Yes
group object The Tag Group of the tag Yes

Tag Group

Name
Type
Description
Required
name string The name of the tag group (e.g., "Size" or "Colour" Yes

Image

Name
Type
Description
Required
src string The source url of the image Yes
alt string Alt text for accessibility and SEO No
is_default boolean Whether this is a default image No
position int Sort order position of the image No
attributes array An array of Attribute objects that apply to this image No

Attribute

Name
Type
Description
Required
name string The name of the attribute (e.g., "Small" or "Red") Yes
tags array An array of Tag objects linked to the attribute No
group object The Attribute Group of the attribute Yes

Attribute Group

Name
Type
Description
Required
name string The name of the attribute group (e.g., "Size", "Colour") Yes

Cost Price

Name
Type
Description
Required
amount float The cost price including tax Yes
currency string Currency code (defaults to store default if not provided) No

Price

Name
Type
Description
Required
price float The base price including tax Yes
sale_price float The sale price including tax No
retail_price float The retail price including tax No
quantity int Quantity required for this price tier (default: 1) No
currency string Currency code (defaults to store default) No
start_at timestamp When this price becomes active (e.g., 2023-09-01 09:29:41) No
end_at timestamp When this price expires No
reference string The unique reference for the price No

SEO

Name
Type
Description
Required
heading string The SEO Heading No
page_title string The SEO Page Title No
meta_description string The SEO Meta Description No
canonical string The SEO Canonical No
noindex boolean The SEO No Index No
nofollow boolean The SEO No Follow No

Settings

Settings are grouped as key-value pairs.

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

Additional Attribute

Name
Type
Description
Required
key string The key of the additional attribute Yes
value string The value of the additional attribute Yes

Specification

Name
Type
Description
Required
group.name string The name of the specification group Yes
name string The name of the specification *
value string The value of the specification No
media array An array of Media objects *

* At least one must be present.

This is only for <1.0.0 version of aerocargo/specifications. See Specification Group for 1.x structure.

Specification Group

Name
Type
Description
Required
id int The id of the specification group *
name string The name of the specification group *
fields array An array of Field objects No
media array An array of Media objects No
settings object A Settings object with grouped key-value pairs No

* At least one must be present.

This is only for >=1.0.0 version of aerocargo/specifications. See Specification for 0.x structure.

Specification Group Field

Name
Type
Description
Required
id int The id of the specification group field *
name string The name of the specification group field *
value string The value of the specification group field No
media array An array of Media objects No
settings object A Settings object with grouped key-value pairs No

* At least one must be present.

Media

Name
Type
Description
Required
id int The id of the media *
source string The source of the media, e.g. test.png *

Upsell

Name
Type
Description
Required
group.name string The upsell group name No
attributes array An array of Attribute objects that the upsell shows for No
models array And array of models for the upsell No
skus array And array of SKUs for the upsell No
Name
Type
Description
Required
id int The id of the listing Conditional *
variant_id int The id of the variant (of the listing) Conditional *
sku string The SKU of the variant (of the listing) Conditional *
product_id int The id of the product (of the listing) Conditional *
model string The model of the product (of the listing) Conditional *

* At least one must be present, resolved in the order they are listed top-down.

Example Requests

Update Basic Product Details
PUT /api/products/{id|model}
{
    "name": "Detachable Sleeve Puffer Jacket v2",
    "manufacturer": "Burberry v2",
    "summary": "A lightweight puffer with removable sleeves.",
    "description": "This updated puffer jacket offers versatility with detachable sleeves, premium fill, and water-resistant fabric.",
    "active": true,
    "visible": true
}
Add Categories to Product
PUT /api/products/{id|model}
{
    "categories": [
        { 
            "name": "Mens > Jackets",
        },
        { 
            "name": "Winter Collection"
        }
    ]
}
Add Tags to Product
PUT /api/products/{id|model}
{
    "tags": [
        {
            "group": {
                "name": "Colour"
            },
            "name": "Indigo"
        },
        {
            "group": {
                "name": "Season"
            },
            "name": "Winter 2023"
        }
    ]
}
Update Variant by Sku
PUT /api/products/{id|model}
{
    "variants": [
        {
            "sku": "9021182-S",
            "stock_level": 50,
            "buyable": true,
            "tags": [
                {
                    "group": {
                        "name": "Style"
                    },
                    "name": "Casual"
                }
            ],
            "prices": [
                {
                    "price": 199.99,
                    "sale_price": 179.99,
                    "currency": "GBP"
                }
            ],
            "cost": {
                "amount": 350,
                "currency": "GBP"
            }
        }
    ]
}
Update Images
PUT /api/products/{id|model}
{
    "images": [
        {
            "src": "https://picsum.photos/seed/front/600/400",
            "alt": "Front view of detachable sleeve puffer jacket",
            "is_default": true,
            "position": 1
        },
        {
            "src": "https://picsum.photos/seed/back/600/400",
            "alt": "Back view of detachable sleeve puffer jacket",
            "position": 2
        }
    ]
}
Update Product SEO & Settings
PUT /api/products/{id|model}
{
    "seo": {
        "heading": "Detachable Sleeve Puffer Jacket",
        "page_title": "Men’s Detachable Sleeve Puffer Jacket | Burberry",
        "meta_description": "Shop the Burberry detachable sleeve puffer jacket – versatile winterwear with premium fill and removable sleeves.",
        "canonical": "https://shop.example.com/mens/detachable-sleeve-puffer",
        "noindex": false,
        "nofollow": false
    },
    "settings": {
        "_": {
            "featured": "true"
        },
        "shipping": {
            "oversized": "false"
        }
    }
}

You can use PUT /api/products?model=model if your model is numeric and might clash with an id.

Example Response

{
    "product": {
        "id": 1
    }
}

Variants

Variants

Create Variant Endpoint

Structure

Variant

Name
Type
Description
Required
id int The id for the variant No
sku string The unique SKU for the variant Yes
reference string The unique reference for the variant No
name string Display name of the variant No
summary string A short summary of the variant No
description string A detailed description of the variant No
barcode string The barcode/UPC/EAN of the variant No
buyable boolean Whether the variant can be purchased No
visible boolean Whether the variant is visible in listings No
shippable boolean Whether the variant is shippable No
discountable boolean Whether discounts can be applied to this variant No
hide_when_no_stock boolean Whether the variant should be hidden when out of stock No
infinite_stock boolean Whether the variant has unlimited stock No
stock_level int Current stock level No
stock_buffer int The stock buffer No
tax_group string The tax group applied to the variant No
minimum_quantity int Minimum quantity per purchase No
maximum_quantity int Maximum quantity per purchase No
multiples_of int Purchasable only in multiples of this number No
weight float Weight of the variant No
weight_unit string Unit of weight (e.g., kg, lb) No
volume float Volume of the variant No
volume_unit string Unit of volume (e.g., m^3, cm^3) No
hs string HS (Harmonized System) code for customs No
origin_country string ISO country code of origin (e.g., US, GB) No
goods_description string Description of goods for customs No
attributes array An array of Attribute objects Yes
tags array An array of Tag objects No
images array An array of Image objects No
cost object The Cost Price of the variant No
prices array An array of Price objects Yes
additional_attributes array An array of Additional Attribute objects No
specifications * array An array of Specification objects No
specification_groups * array An array of Specification Group objects No
upsells array An array of Upsell objects No

* specifications is if using <1.0.0 version of aerocargo/specifications, otherwise use specification_groups.

Attribute

Name
Type
Description
Required
name string The name of the attribute (e.g., "Small" or "Red") Yes
tags array An array of Tag objects linked to the attribute No
group object The Attribute Group of the attribute Yes

Attribute Group

Name
Type
Description
Required
name string The name of the attribute group (e.g., "Size", "Colour") Yes

Tag

Name
Type
Description
Required
name string The name of the tag (e.g., "Small" or "Red") Yes
group object The Tag Group of the tag Yes

Tag Group

Name
Type
Description
Required
name string The name of the tag group (e.g., "Size" or "Colour" Yes

Image

Name
Type
Description
Required
src string The source url of the image Yes
alt string Alt text for accessibility and SEO No
is_default boolean Whether this is a default image No
position int Sort order position of the image No
attributes array An array of Attribute objects that apply to this image No

Cost Price

Name
Type
Description
Required
amount float The cost price including tax Yes
currency string Currency code (defaults to store default if not provided) No

Price

Name
Type
Description
Required
price float The base price including tax Yes
sale_price float The sale price including tax No
retail_price float The retail price including tax No
quantity int Quantity required for this price tier (default: 1) No
currency string Currency code (defaults to store default) No
start_at timestamp When this price becomes active (e.g., 2023-09-01 09:29:41) No
end_at timestamp When this price expires No
reference string The unique reference for the price No

Settings

Settings are grouped as key-value pairs.

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

Additional Attribute

Name
Type
Description
Required
key string The key of the additional attribute Yes
value string The value of the additional attribute Yes

Specification

Name
Type
Description
Required
group.name string The name of the specification group Yes
name string The name of the specification *
value string The value of the specification No
media array An array of Media objects *

* At least one must be present, futhermore if the group doesn't exist and is to be created you must provide at least one field for it.

This is only for <1.0.0 version of aerocargo/specifications. See Specification Group for 1.x structure.

Specification Group

Name
Type
Description
Required
id int The id of the specification group *
name string The name of the specification group *
fields array An array of Field objects Yes
media array An array of Media objects No
settings object A Settings object with grouped key-value pairs No

* At least one must be present.

This is only for >=1.0.0 version of aerocargo/specifications. See Specification for 0.x structure.

Specification Group Field

Name
Type
Description
Required
id int The id of the specification group field *
name string The name of the specification group field *
value string The value of the specification group field Yes
media array An array of Media objects No
settings object A Settings object with grouped key-value pairs No

* At least one must be present.

Media

Name
Type
Description
Required
id int The id of the media *
source string The source of the media, e.g. test.png *

* At least one must be present.

Upsell

Name
Type
Description
Required
group.key string The upsell group key Yes
attributes array An array of Attribute objects that the upsell shows for No
models array And array of models for the upsell No
skus array And array of SKUs for the upsell No

Example Request

POST /api/products/{id|model}/variants
POST /api/products/variants?model=model

Using the first request syntax is advised, only use the second if/when the model is numeric, as if a matching id exists that would be resolved instead.

Example Response

{
    "sku": "9021182-XS",
    "stock_level": "5",
    "prices": [
        {
            "currency": "GBP",
            "price": "790",
            "quantity": 1
        }
    ],
    "tax_group": "Taxable Product",
    "attributes": [
        {
            "group": {
                "name": "Size"
            },
            "name": "Extra Small",
            "tags": [
                {
                    "group": {
                        "name": "Size"
                    },
                    "name": "Extra Small"
                }
            ]
        }
    ],
    "stock_buffer": 0,
    "minimum_quantity": 1,
    "multiples_of": 1
}

Variants

Update Variant Endpoint

Structure

Variant

Name
Type
Description
Required
sku string The unique SKU for the variant Yes
reference string The unique reference for the variant No
name string Display name of the variant No
summary string A short summary of the variant No
description string A detailed description of the variant No
barcode string The barcode/UPC/EAN of the variant No
buyable boolean Whether the variant can be purchased No
visible boolean Whether the variant is visible in listings No
shippable boolean Whether the variant is shippable No
discountable boolean Whether discounts can be applied to this variant No
hide_when_no_stock boolean Whether the variant should be hidden when out of stock No
infinite_stock boolean Whether the variant has unlimited stock No
stock_level int Current stock level No
stock_buffer int The stock buffer No
tax_group string The tax group applied to the variant No
minimum_quantity int Minimum quantity per purchase No
maximum_quantity int Maximum quantity per purchase No
multiples_of int Purchasable only in multiples of this number No
weight float Weight of the variant No
weight_unit string Unit of weight (e.g., kg, lb) No
volume float Volume of the variant No
volume_unit string Unit of volume (e.g., m^3, cm^3) No
hs string HS (Harmonized System) code for customs No
origin_country string ISO country code of origin (e.g., US, GB) No
goods_description string Description of goods for customs No
attributes array An array of Attribute objects Yes
tags array An array of Tag objects No
images array An array of Image objects No
cost object The Cost Price of the variant No
prices array An array of Price objects Yes
additional_attributes array An array of Additional Attribute objects No
specifications * array An array of Specification objects No
specification_groups * array An array of Specification Group objects No
upsells array An array of Upsell objects No

* specifications is if using <1.0.0 version of aerocargo/specifications, otherwise use specification_groups.

Attribute

Name
Type
Description
Required
name string The name of the attribute (e.g., "Small" or "Red") Yes
tags array An array of Tag objects linked to the attribute No
group object The Attribute Group of the attribute Yes

Attribute Group

Name
Type
Description
Required
name string The name of the attribute group (e.g., "Size", "Colour") Yes

Tag

Name
Type
Description
Required
name string The name of the tag (e.g., "Small" or "Red") Yes
group object The Tag Group of the tag Yes

Tag Group

Name
Type
Description
Required
name string The name of the tag group (e.g., "Size" or "Colour" Yes

Image

Name
Type
Description
Required
src string The source url of the image Yes
alt string Alt text for accessibility and SEO No
is_default boolean Whether this is a default image No
position int Sort order position of the image No
attributes array An array of Attribute objects that apply to this image No

Cost Price

Name
Type
Description
Required
amount float The cost price including tax Yes
currency string Currency code (defaults to store default if not provided) No

Price

Name
Type
Description
Required
price float The base price including tax Yes
sale_price float The sale price including tax No
retail_price float The retail price including tax No
quantity int Quantity required for this price tier (default: 1) No
currency string Currency code (defaults to store default) No
start_at timestamp When this price becomes active (e.g., 2023-09-01 09:29:41) No
end_at timestamp When this price expires No
reference string The unique reference for the price No

Settings

Settings are grouped as key-value pairs.

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

Additional Attribute

Name
Type
Description
Required
key string The key of the additional attribute Yes
value string The value of the additional attribute Yes

Specification

Name
Type
Description
Required
group.name string The name of the specification group Yes
name string The name of the specification *
value string The value of the specification No
media array An array of Media objects *

* At least one must be present, futhermore if the group doesn't exist and is to be created you must provide at least one field for it.

This is only for <1.0.0 version of aerocargo/specifications. See Specification Group for 1.x structure.

Specification Group

Name
Type
Description
Required
id int The id of the specification group *
name string The name of the specification group *
fields array An array of Field objects Yes
media array An array of Media objects No
settings object A Settings object with grouped key-value pairs No

* At least one must be present.

This is only for >=1.0.0 version of aerocargo/specifications. See Specification for 0.x structure.

Specification Group Field

Name
Type
Description
Required
id int The id of the specification group field *
name string The name of the specification group field *
value string The value of the specification group field Yes
media array An array of Media objects No
settings object A Settings object with grouped key-value pairs No

* At least one must be present.

Media

Name
Type
Description
Required
id int The id of the media *
source string The source of the media, e.g. test.png *

* At least one must be present.

Upsell

Name
Type
Description
Required
group.key string The upsell group key Yes
attributes array An array of Attribute objects that the upsell shows for No
models array And array of models for the upsell No
skus array And array of SKUs for the upsell No

Example Request

Update Basic Variant Details
PUT /api/products/{id|model}/variants/{id|sku}
{
    "stock_level": 50,
    "buyable": true,
    "prices": [
        {
            "price": 199.99,
            "sale_price": 179.99,
            "currency": "GBP"
        }
    ],
    "cost": {
        "amount": 350,
        "currency": "GBP"
    }
}
Add Tags to Variant
PUT /api/products/{id|model}/variants/{id|sku}
{
    "tags": [
        {
            "group": { 
                "name": "Size"
            },
            "name": "Small"
        },
        {
            "group": { 
                "name": "Style"
            },
            "name": "Casual"
        }
    ]
}
Add Images to Variant
PUT /api/products/{id|model}/variants/{id|sku}
{
    "images": [
        {
            "src": "https://picsum.photos/seed/puffer-s/600/400",
            "alt": "Small size jacket, front view",
            "is_default": true,
            "position": 1,
            "attributes": [
                {
                    "name": "Small",
                    "group": {
                        "name": "Size"
                    }
                }
            ]
        }
    ]
}

Variant images must include at least one attribute, and each attribute must exactly match one of the variant’s attributes.

Add Additional Attributes to Variant
PUT /api/products/{id|model}/variants/{id|sku}
{
    "additional_attributes": [
        { 
            "key": "material", 
            "value": "100% leather"
        },
        { 
            "key": "lining", 
            "value": "Polyester"
        }
    ]
}

Example Response

{
    "variant": {
        "id": 1
    }
}

Manufacturers

Manufacturers

Manufacturer Index Endpoint

Structure

See View Manufacturer Endpoint for the structure of the manufacturer payload inside the data array.

Example Request

GET /api/manufacturers?per_page=2

Example Response

{
    "current_page": 1,
    "data": [
      //...
    ],
    "first_page_url": "http://aero.test/api/manufacturers?page=1",
    "from": 1,
    "last_page": 3,
    "last_page_url": "http://aero.test/api/manufacturers?page=3",
    "next_page_url": "http://aero.test/api/manufacturers?page=2",
    "path": "http://aero.test/api/manufacturers",
    "per_page": 2,
    "prev_page_url": null,
    "to": 2,
    "total": 5
}

See View Manufacturer Endpoint for the structure of the manufacturer payload inside the data array.

Manufacturers

View Manufacturer Endpoint

Structure

Manufacturer

Name
Type
Description
name string The name of the manufacturer
slug string The slug of the manufacturer
reference string The reference of the manufacturer
logic string The logic of the rules for the manufacturer
logo object The logo of the manufacturer, see Image
tags array An array of Tag objects
related_manufacturers array The related manufacturers of the manufacturer, see Related Manufacturers
rules array An array of Listing Page Rule objects
content object The Listing Page Content of the category
options object The Listing Page Options of the category
seo object The SEO of the manufacturer
additional_attributes array An array of Additional Attribute objects
settings object A Settings object with grouped key-value pairs

Image

Name
Type
Description
url string The url of the image

Tag

Name
Type
Description
name string The name of the tag (e.g., Small or Red)
group object The tag group, see Tag Group

Tag Group

Name
Type
Description
name string The name of the tag group (e.g., Size or Colour)
Name
Type
Description
id int The id of the manufacturer
name sting The name of the manufacturer

Rule

Name
Type
Description
type string The type of the rule
requirement string The requirement of the rule
logic string The logic of the rule
data object The data for the rule, required keys vary based on type of the rule
data.tags array An array of Tag objects for a have_tags rule
data.manufacturers.*.id int The manufacturer id for a have_manufacturers rule
data.manufacturers.*.name string The manufacturer name for a have_manufacturers rule
data.price_list.id int The price list id for an in_price_list rule
data.price_list.name string The price list name for an in_price_list rule
data.category.id int The category id for an in_category rule
data.category.name string The category name for an in_category rule
data.days int The days for a published_within_days rule
data.start_at timestamp The start at date for a published_within rule
data.end_at timestamp The end at date for a published_within rule
data.min_price float The min price including tax, in whole units (e.g. pounds not pence) for price_between rule
data.max_price float The max price including tax, in whole units (e.g. pounds not pence) for price_between rule
data.currency string The currency code for price_between rule

Content

Name
Type
Description
summary string The summary content
description string The description content
small_image object The Small Image
medium_image object The Medium Image
large_image object The Large Image

Options

Name
Type
Description
categories.mode string The category filters mode (e.g., show_all/hide_all/show_some)
categories.values array The options for categories on the listings page
categories.values.*.id int The id of category
categories.values.*.name string The name of category
filters.mode int The facet filters mode (e.g., show_all/hide_all/show_some)
filters.values array The options for facet filters on the listings page
filters.values.*.name string The name of the facet filter, e.g. Manufacturer, Price, etc...
filters.values.*.collapsed boolean Whether to collapse the facet filter or not
sort_bys array An array of the applied sorts on the listings page (e.g., name-az, name-za, price-low, price-high, etc...)
per_page int The per page of the listings page

SEO

Name
Type
Description
heading string The SEO Heading
page_title string The SEO Page Title
meta_description string The SEO Meta Description
canonical string The SEO Canonical
noindex boolean The SEO No Index
nofollow boolean The SEO No Follow

Additional Attribute

Name
Type
Description
key string The key of the additional attribute
value string The value of the additional attribute

Settings

Settings are grouped as key-value pairs.

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

Example Request

GET /api/manufacturers/{id|name}

Example Response

{
    "id": 1,
    "name": "Burberry",
    "reference": null,
    "slug": "burberry",
    "logo": {
        "url": null
    },
    "content": {
        "summary": "Listing Page Summary Description",
        "description": "Listing Page Content Description",
        "small_image": {
            "url": null
        },
        "medium_image": {
            "url": null
        },
        "large_image": {
            "url": null
        }
    },
    "tags": [],
    "related_manufacturers": [
        {
            "id": 8,
            "name": "Aztech Mountain"
        }
    ],
    "rules": [],
    "options": {
        "categories": {
            "mode": "show_some",
            "values": [
                {
                    "id": 2,
                    "name": "Coats"
                }
            ]
        },
        "filters": {
            "mode": "show_some",
            "values": [
                {
                    "key": "t2",
                    "name": "Colour",
                    "collapsed": true
                },
                {
                    "key": "t1",
                    "name": "Size",
                    "collapsed": false
                },
                {
                    "key": "p",
                    "name": "Price",
                    "collapsed": false
                },
                {
                    "key": "m",
                    "name": "Manufacturer",
                    "collapsed": false
                },
                {
                    "key": "c",
                    "name": "Category",
                    "collapsed": false
                }
            ]
        },
        "sort_bys": [
            "model-az",
            "manufacturer-za"
        ],
        "per_page": 2
    },
    "seo": {
        "heading": "test heading",
        "page_title": "",
        "meta_description": "",
        "open_graph": "",
        "canonical": "",
        "noindex": 0,
        "nofollow": 0
    },
    "settings": [],
    "additional_attributes": [
        {
            "key": "test_name",
            "value": "test_value"
        }
    ]
}

Manufacturers

Create Manufacturer Endpoint

Structure

Manufacturer

Name
Type
Description
Required
id int The id for the manufacturer No
name string The name of the manufacturer Yes
slug string The slug of the manufacturer, if not present it is auto-generated from name No
reference string The reference of the manufacturer No
logic string The logic of the rules for the manufacturer, and/or (defaults to or if not provided) No
logo object The logo of the manufacturer, see Image No
tags array An array of Tag objects No
related_manufacturers array An array of related manufacturers (ids and/or names) No
rules array An array of Listing Page Rule objects No
content object The Listing Page Content of the manufacturer No
options object The Listing Page Options of the manufacturer No
seo object The SEO of the manufacturer No
additional_attributes array An array of Additional Attribute objects No
settings object A Settings object with grouped key-value pairs No

Image

Name
Type
Description
Required
src string The source url of the image Yes

Tag

Name
Type
Description
Required
name string The name of the tag (e.g., Small or Red) Yes
group object The tag group, see Tag Group Yes

Tag Group

Name
Type
Description
Required
name string The name of the tag group (e.g., Size or Colour) Yes

Rule

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

 The rules are nested within arrays to achieve grouping, see rules in Example Request for clarity

Content

Name
Type
Description
Required
summary string The summary content No
description string The description content No
small_image object The Small Image No
medium_image object The Medium Image No
large_image object The Large Image No

Options

Name
Type
Description
Required
categories.mode string Categories filter display mode. Allowed values: show_all, hide_all, show_some. Default: show_all No
categories.values array An array of category ids (or names/breadcrumbs, e.g. Mens > Coats) to show. Required if categories.mode = show_some Conditional
filters.mode int Facet filters display mode. Allowed values: show_all, hide_all, show_some. Default: show_all No
filters.values array The options for facet filters on the listings page. Required if filters.mode = show_some Conditional
filters.values.*.name string The name of the facet filter, e.g. Category, Price, etc... Yes
filters.values.*.collapsed boolean Whether to collapse the facet filter or not Yes
sort_bys array An array of the applied sorts on the listings page (e.g., name-az, name-za, price-low, price-high, etc...) No
per_page int The per page of the listings page (defaults to 24) No

SEO

Name
Type
Description
Required
heading string The SEO Heading No
page_title string The SEO Page Title No
meta_description string The SEO Meta Description No
canonical string The SEO Canonical No
noindex boolean The SEO No Index No
nofollow boolean The SEO No Follow No

Additional Attribute

Name
Type
Description
Required
key string The key of the additional attribute Yes
value string The value of the additional attribute Yes

Settings

Settings are grouped as key-value pairs.

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

Example Request

POST /api/manufacturers/
{
    "name": "Burberry 2",
    "slug": "burberry-2",
    "content": {
        "summary": "Listing Page Summary Description",
        "description": "Listing Page Content Description"
    },
    "tags": [
        {
            "group": {
                "name": "Size"
            },
            "name": "Small"
        }
    ],
    "related_manufacturers": [
        1
    ],
    "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": "published_within_days",
                "requirement": "must",
                "logic": "and",
                "data": {
                    "days": "12"
                }
            },
        ]
    ],
    "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",
        "noindex": 0,
        "nofollow": 0
    },
    "additional_attributes": [
        {
            "key": "test_name",
            "value": "test_value"
        }
    ]
}

Example Response

{
    "manufacturer": {
        "id": 1
    }
}

Manufacturers

Update Manufacturer Endpoint

Structure

Manufacturer

Name
Type
Description
Required
name string The name of the manufacturer No
slug string The slug of the manufacturer, if not present it is auto-generated from name No
reference string The reference of the manufacturer No
logic string The logic of the rules for the manufacturer, and/or (defaults to or if not provided) No
logo object The logo of the manufacturer, see Image No
tags array An array of Tag objects No
related_manufacturers array An array of related manufacturers (ids and/or names) No
rules array An array of Listing Page Rule objects No
content object The Listing Page Content of the manufacturer No
options object The Listing Page Options of the manufacturer No
seo object The SEO of the manufacturer No
additional_attributes array An array of Additional Attribute objects No
settings object A Settings object with grouped key-value pairs No

Image

Name
Type
Description
Required
src string The source url of the image Yes

Tag

Name
Type
Description
Required
name string The name of the tag (e.g., Small or Red) Yes
group object The tag group, see Tag Group Yes

Tag Group

Name
Type
Description
Required
name string The name of the tag group (e.g., Size or Colour) Yes

Rule

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

 The rules are nested within arrays to achieve grouping, see rules in Example Request for clarity

Content

Name
Type
Description
Required
summary string The summary content No
description string The description content No
small_image object The Small Image No
medium_image object The Medium Image No
large_image object The Large Image No

Options

Name
Type
Description
Required
categories.mode string Categories filter display mode. Allowed values: show_all, hide_all, show_some. Default: show_all No
categories.values array An array of category ids (or names/breadcrumbs, e.g. Mens > Coats) to show. Required if categories.mode = show_some Conditional
filters.mode int Facet filters display mode. Allowed values: show_all, hide_all, show_some. Default: show_all No
filters.values array The options for facet filters on the listings page. Required if filters.mode = show_some Conditional
filters.values.*.name string The name of the facet filter, e.g. Category, Price, etc... Yes
filters.values.*.collapsed boolean Whether to collapse the facet filter or not Yes
sort_bys array An array of the applied sorts on the listings page (e.g., name-az, name-za, price-low, price-high, etc...) No
per_page int The per page of the listings page (defaults to 24) No

SEO

Name
Type
Description
Required
heading string The SEO Heading No
page_title string The SEO Page Title No
meta_description string The SEO Meta Description No
canonical string The SEO Canonical No
noindex boolean The SEO No Index No
nofollow boolean The SEO No Follow No

Additional Attribute

Name
Type
Description
Required
key string The key of the additional attribute Yes
value string The value of the additional attribute Yes

Settings

Settings are grouped as key-value pairs.

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

Example Request

PUT /api/manufacturers/{id|name}
{
    "name": "Updated Burberry",
    "slug": "very-burberry",
    "content": {
        "description": "Updated Burberry"
    },
    "seo": {
        "heading": "Updated Burberry"
    },
    "tags": [
        {
            "name": "Green",
            "group": {
                "name": "Colour"
            }
        }
    ]
}

Example Response

{
    "manufacturer": {
        "id": 1
    }
}
Manufacturers

Delete Manufacturer Endpoint

Example Request

DELETE /api/manufacturers/{id|name}

Example Response

204 No Content

Attribute Groups

Attribute Groups

Attribute Group Index Endpoint

Structure

See View Attribute Group Endpoint for the structure of the attribute group payload inside the data array.

Example Request

GET /api/attribute-groups?per_page=2

Example Response

{
    "current_page": 1,
    "data": [
      //...
    ],
    "first_page_url": "http://aero.test/api/attribute-groups?page=1",
    "from": 1,
    "last_page": 3,
    "last_page_url": "http://aero.test/api/attribute-groups?page=3",
    "next_page_url": "http://aero.test/api/attribute-groups?page=2",
    "path": "http://aero.test/api/attribute-groups",
    "per_page": 2,
    "prev_page_url": null,
    "to": 2,
    "total": 5
}

See View Attribute Group Endpoint for the structure of the attribute group payload inside the data array.

Attribute Groups

View Attribute Group Endpoint

Structure

Attribute Group

Name
Type
Description
name string The name of the attribute group (e.g., Size or Colour)
display_as string The display as of the attribute group (e.g.: dropdown, color_swatches, image_swatches, swatches)
reference string The reference of the attribute group
attributes
array An array of Attribute objects

Attribute

Name
Type
Description
name
string The name of the attribute group (e.g., Size or Colour)
display_name string The display name of the attribute
reference string The reference of the attribute group
image object The Image of the attribute
tags array An array of Tag objects

Tag

Name
Type
Description
name string The name of the tag (e.g., Small or Red)
group object The Tag Group of the tag

Tag Group

Name
Type
Description
name string The name of the tag group (e.g., Size or Colour)

Image

Name
Type
Description
url string The url of the image

Example Request

GET /api/attribute-groups/{id|name}

Example Response

{
    "id": 1,
    "name": "Size",
    "display_as": "dropdown",
    "reference": null,
    "attributes": [
        {
            "id": 1,
            "name": "Small",
            "display_name": "",
            "reference": null,
            "image": {
                "url": null
            },
            "tags": []
        }
    ]
}

Attribute Groups

Create Attribute Group Endpoint

Structure

Attribute Group

Name
Type
Description
Required
id int The id for the attribute group No
name string The name of the attribute group (e.g., Size or Colour) Yes
display_as string The display as of the attribute group (e.g.: dropdown, color_swatches, image_swatches, swatches) No
reference string The reference of the attribute group No
attributes array The attributes of the attribute group, see Attribute No

Attribute

Name
Type
Description
Required
id int The id for the attribute No
name string The name of the attribute (e.g., Small or Red) Yes
display_name string The display name of the attribute No
reference string The reference of the attribute No
image object The Image of the attribute No
tags array An array of Tag objects No

Image

Name
Type
Description
Required
src string The source url of the image Yes

Tag

Name
Type
Description
Required
name string The name of the tag (e.g., Small or Red) Yes
group object The tag group, see Tag Group Yes

Tag Group

Name
Type
Description
Required
name string The name of the tag group (e.g., Size or Colour) Yes

Example Request

POST /api/attribute-groups/
{
    "name": "Colour",
    "attributes": [
        {
            "name": "Blue",
            "reference": "blue"
        },
        {
            "name": "red"
        }
    ]
}

Example Response

{
    "attributeGroup": {
        "id": 1
    }
}

Attribute Groups

Update Attribute Group Endpoint

Structure

Name
Type
Description
Required
name string The name of the attribute group (e.g., Size or Colour) No
display_as string The display as of the attribute group (e.g.: dropdown, color_swatches, image_swatches, swatches) No
reference string The reference of the attribute group No

Example Request

PUT /api/attribute-groups/
{
    "name": "Updated Size",
    "display_as": "swatches"
}

Example Response

{
    "attributeGroup": {
        "id": 1
    }
}

Attribute Groups

Delete Attribute Group Endpoint

Example Request

DELETE /api/attribute-groups/{id|name}

Example Response

204 No Content

Attributes

Attributes

Create Attribute Endpoint

Structure

Attribute

Name
Type
Description
Required
id int The id for the attribute No
name string The name of the attribute (e.g., Small or Red) Yes
display_name string The display name of the attribute No
reference string The reference of the attribute No
image object The Image of the attribute No
tags array An array of Tag objects No

Image

Name
Type
Description
Required
src string The source url of the image Yes

Tag

Name
Type
Description
Required
name string The name of the tag (e.g., Small or Red) Yes
group object The tag group, see Tag Group Yes

Tag Group

Name
Type
Description
Required
name string The name of the tag group (e.g., Size or Colour) Yes

Example Request

POST /api/attribute-groups/{id|name}/attributes
{
    "name": "Medium",
    "display_name": "Medium"
}

Example Response

{
    "attribute": {
        "id": 1
    }
}

Attributes

Update Attribute Endpoint

Structure

Attribute

Name
Type
Description
Required
name string The name of the attribute (e.g., Small or Red) No
display_name string The display name of the attribute No
reference string The reference of the attribute No
image object The Image of the attribute No
tags array An array of Tag objects No

Image

Name
Type
Description
Required
src string The source url of the image Yes

Tag

Name
Type
Description
Required
name string The name of the tag (e.g., Small or Red) Yes
group object The tag group, see Tag Group Yes

Tag Group

Name
Type
Description
Required
name string The name of the tag group (e.g., Size or Colour) Yes

Example Request

PUT /api/attribute-groups/{id|name}/attributes/{id|name}
{
    "name": "Updated Small",
    "display_name": "Updated Small"
}

Example Response

{
    "attribute": {
        "id": 1
    }
}
Attributes

Delete Attribute Endpoint

Example Request

DELETE /api/attribute-groups/{id|name}/attributes/{id|name}

Example Response

204 No Content

Categories

Categories

Category Index Endpoint

Structure

See View Category Endpoint for the structure of the category payload inside the data array.

Example Request

GET /api/categories?per_page=2

Example Response

{
    "current_page": 1,
    "data": [
        //...
    ],
    "first_page_url": "http://aero.test/api/categories?page=1",
    "from": 1,
    "last_page": 3,
    "last_page_url": "http://aero.test/api/categories?page=3",
    "next_page_url": "http://aero.test/api/categories?page=2",
    "path": "http://aero.test/api/categories",
    "per_page": 2,
    "prev_page_url": null,
    "to": 2,
    "total": 5
}

See View Category Endpoint for the structure of the category payload inside the data array.

Categories

View Category Endpoint

Structure

Category

Name
Type
Description
name string The name of the category
parent string The parent of the category
slug string The slug of the category, if not present it is auto-generated from name
reference string The reference of the category
logic string The logic of the rules for the category, and/or (defaults to or if not provided)
visible boolean The visibility of the category (defaults to true)
featured_image object The Image of the category
tags array An array of Tag objects
rules array An array of Listing Page Rule objects
content object The Listing Page Content of the category
options object The Listing Page Options of the category
seo object The SEO of the category
additional_attributes array An array of Additional Attribute objects
settings object A Settings object with grouped key-value pairs

Image

Name
Type
Description
url string The url of the image

Tag

Name
Type
Description
name string The name of the tag (e.g., Small or Red)
group object The tag group, see Tag Group

Tag Group

Name
Type
Description
name string The name of the tag group (e.g., Size or Colour)

Rule

Name
Type
Description
type string The type of the rule
requirement string The requirement of the rule
logic string The logic of the rule
data object The data for the rule, required keys vary based on type of the rule
data.tags array An array of Tag objects for a have_tags rule
data.manufacturers.*.id int The manufacturer id for a have_manufacturers rule
data.manufacturers.*.name string The manufacturer name for a have_manufacturers rule
data.price_list.id int The price list id for an in_price_list rule
data.price_list.name string The price list name for an in_price_list rule
data.category.id int The category id for an in_category rule
data.category.name string The category name for an in_category rule
data.days int The days for a published_within_days rule
data.start_at timestamp The start at date for a published_within rule
data.end_at timestamp The end at date for a published_within rule
data.min_price float The min price including tax, in whole units (e.g. pounds not pence) for price_between rule
data.max_price float The max price including tax, in whole units (e.g. pounds not pence) for price_between rule
data.currency string The currency code for price_between rule

Content

Name
Type
Description
summary string The summary content
description string The description content
small_image object The Small Image
medium_image object The Medium Image
large_image object The Large Image

Options

Name
Type
Description
categories.mode string The category filters mode (e.g., show_all/hide_all/show_some)
categories.values array The options for categories on the listings page
categories.values.*.id int The id of category
categories.values.*.name string The name of category
filters.mode int The facet filters mode (e.g., show_all/hide_all/show_some)
filters.values array The options for facet filters on the listings page
filters.values.*.name string The name of the facet filter, e.g. Manufacturer, Price, etc...
filters.values.*.collapsed boolean Whether to collapse the facet filter or not
sort_bys array An array of the applied sorts on the listings page (e.g., name-az, name-za, price-low, price-high, etc...)
per_page int The per page of the listings page

SEO

Name
Type
Description
heading string The SEO Heading
page_title string The SEO Page Title
meta_description string The SEO Meta Description
canonical string The SEO Canonical
noindex boolean The SEO No Index
nofollow boolean The SEO No Follow

Additional Attribute

Name
Type
Description
key string The key of the additional attribute
value string The value of the additional attribute

Settings

Settings are grouped as key-value pairs.

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

Example Request

GET /api/categories/{id|name|breadcrumb}

Example Response

{
    "id": 1,
    "name": "Mens",
    "parent": null,
    "reference": null,
    "slug": "mens",
    "featured_image": {
        "url": null
    },
    "content": {
        "summary": "",
        "description": "",
        "small_image": {
            "url": null
        },
        "medium_image": {
            "url": null
        },
        "large_image": {
            "url": null
        }
    },
    "tags": [],
    "rules": [],
    "options": {
        "categories": {
            "mode": "show_all",
            "values": []
        },
        "filters": {
            "mode": "show_all",
            "values": []
        },
        "sort_bys": [],
        "per_page": 24
    },
    "seo": {
        "heading": "",
        "page_title": "",
        "meta_description": "",
        "open_graph": "",
        "canonical": "",
        "noindex": null,
        "nofollow": null
    },
    "settings": [],
    "additional_attributes": []
}

Categories

Create Category Endpoint

Structure

Category

Name
Type
Description
Required
id int The id for the category No
name string The name of the category Yes
parent string The parent of the category No
slug string The slug of the category, if not present it is auto-generated from name No
reference string The reference of the category No
logic string The logic of the rules for the category, and/or (defaults to or if not provided) No
visible boolean The visibility of the category (defaults to true) No
featured_image object The Image of the category No
tags array An array of Tag objects No
rules array An array of Listing Page Rule objects No
content object The Listing Page Content of the category No
options object The Listing Page Options of the category No
seo object The SEO of the category No
additional_attributes array An array of Additional Attribute objects No
settings object A Settings object with grouped key-value pairs No

Image

Name
Type
Description
Required
src string The source url of the image Yes

Tag

Name
Type
Description
Required
name string The name of the tag (e.g., Small or Red) Yes
group object The tag group, see Tag Group Yes

Tag Group

Name
Type
Description
Required
name string The name of the tag group (e.g., Size or Colour) Yes

Rule

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

 The rules are nested within arrays to achieve grouping, see rules in Example Request for clarity

Content

Name
Type
Description
Required
summary string The summary content No
description string The description content No
small_image object The Small Image No
medium_image object The Medium Image No
large_image object The Large Image No

Options

Name
Type
Description
Required
categories.mode string Categories filter display mode. Allowed values: show_all, hide_all, show_some. Default: show_all No
categories.values array An array of category ids (or names/breadcrumbs, e.g. Mens > Coats) to show. Required if categories.mode = show_some Conditional
filters.mode int Facet filters display mode. Allowed values: show_all, hide_all, show_some. Default: show_all No
filters.values array The options for facet filters on the listings page. Required if filters.mode = show_some Conditional
filters.values.*.name string The name of the facet filter, e.g. Category, Price, etc... Yes
filters.values.*.collapsed boolean Whether to collapse the facet filter or not Yes
sort_bys array An array of the applied sorts on the listings page (e.g., name-az, name-za, price-low, price-high, etc...) No
per_page int The per page of the listings page (defaults to 24) No

SEO

Name
Type
Description
Required
heading string The SEO Heading No
page_title string The SEO Page Title No
meta_description string The SEO Meta Description No
canonical string The SEO Canonical No
noindex boolean The SEO No Index No
nofollow boolean The SEO No Follow No

Additional Attribute

Name
Type
Description
Required
key string The key of the additional attribute Yes
value string The value of the additional attribute Yes

Settings

Settings are grouped as key-value pairs.

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

Example Request

POST /api/categories/
{
    "name": "Mens",
    "slug": "mens",
    "parent": 1,
    "visible": false,
    "content": {
        "summary": "Listing Page Summary Description",
        "description": "Listing Page Content Description"
    },
    "tags": [
        {
            "group": {
                "name": "Size"
            },
            "name": "Small"
        }
    ],
    "rules": [
        [
            {
                "type": "have_tags",
                "requirement": "must",
                "logic": "or",
                "data": {
                    "tags": [
                        1
                    ]
                }
            },
            {
                "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": "published_within_days",
                "requirement": "must",
                "logic": "and",
                "data": {
                    "days": "12"
                }
            },
            {
                "type": "have_manufacturers",
                "requirement": "must",
                "logic": "and",
                "data": {
                    "manufacturers": [
                        1
                    ]
                }
            }
        ]
    ],
    "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": "test page title",
        "meta_description": "test meta description",
        "noindex": 0,
        "nofollow": 0
    },
    "additional_attributes": [
        {
            "key": "test_name",
            "value": "test_value"
        }
    ]
}

Example Response

{
    "category": {
        "id": 1
    }
}

Categories

Update Category Endpoint

Structure

Category

Name
Type
Description
Required
name string The name of the category No
parent string The parent of the category No
slug string The slug of the category, if not present it is auto-generated from name No
reference string The reference of the category No
logic string The logic of the rules for the category, and/or (defaults to or if not provided) No
visible boolean The visibility of the category (defaults to true) No
featured_image object The Image of the category No
tags array An array of Tag objects No
rules array An array of Listing Page Rule objects No
content object The Listing Page Content of the category No
options object The Listing Page Options of the category No
seo object The SEO of the category No
additional_attributes array An array of Additional Attribute objects No
settings object A Settings object with grouped key-value pairs No

Image

Name
Type
Description
Required
src string The source url of the image Yes

Tag

Name
Type
Description
Required
name string The name of the tag (e.g., Small or Red) Yes
group object The tag group, see Tag Group Yes

Tag Group

Name
Type
Description
Required
name string The name of the tag group (e.g., Size or Colour) Yes

Rule

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

 The rules are nested within arrays to achieve grouping, see rules in Example Request for clarity

Content

Name
Type
Description
Required
summary string The summary content No
description string The description content No
small_image object The Small Image No
medium_image object The Medium Image No
large_image object The Large Image No

Options

Name
Type
Description
Required
categories.mode string Categories filter display mode. Allowed values: show_all, hide_all, show_some. Default: show_all No
categories.values array An array of category ids (or names/breadcrumbs, e.g. Mens > Coats) to show. Required if categories.mode = show_some Conditional
filters.mode int Facet filters display mode. Allowed values: show_all, hide_all, show_some. Default: show_all No
filters.values array The options for facet filters on the listings page. Required if filters.mode = show_some Conditional
filters.values.*.name string The name of the facet filter, e.g. Category, Price, etc... Yes
filters.values.*.collapsed boolean Whether to collapse the facet filter or not Yes
sort_bys array An array of the applied sorts on the listings page (e.g., name-az, name-za, price-low, price-high, etc...) No
per_page int The per page of the listings page (defaults to 24) No

SEO

Name
Type
Description
Required
heading string The SEO Heading No
page_title string The SEO Page Title No
meta_description string The SEO Meta Description No
canonical string The SEO Canonical No
noindex boolean The SEO No Index No
nofollow boolean The SEO No Follow No

Additional Attribute

Name
Type
Description
Required
key string The key of the additional attribute Yes
value string The value of the additional attribute Yes

Settings

Settings are grouped as key-value pairs.

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

Example Request

PUT /api/categories/{id|name|breadcrumb}
{
    "name": "Updated Mens",
    "slug": "mens-mens",
    "content": {
        "description": "Updated Mens"
    },
    "seo": {
        "heading": "Updated Mens"
    },
    "tags": [
        {
            "name": "Green",
            "group": {
                "name": "Colour"
            }
        }
    ]
}

Example Response

{
    "category": {
        "id": 1
    }
}

Categories

Delete Category Endpoint

Example Request

DELETE /api/categories/{id|name|breadcrumb}

Example Response

204 No Content

Tag Groups

Tag Groups

Tag Group Index Endpoint

Structure

See View Tag Group Endpoint for the structure of the tag group payload inside the data array.

Example Request

GET /api/tag-groups?per_page=2

Example Response

{
    "current_page": 1,
    "data": [
        //...
    ],
    "first_page_url": "http://aero.test/api/tag-groups?page=1",
    "from": 1,
    "last_page": 3,
    "last_page_url": "http://aero.test/api/tag-groups?page=3",
    "next_page_url": "http://aero.test/api/tag-groups?page=2",
    "path": "http://aero.test/api/tag-groups",
    "per_page": 2,
    "prev_page_url": null,
    "to": 2,
    "total": 5
}

See View Tag Group Endpoint for the structure of the tag group payload inside the data array.

Tag Groups

View Tag Group Endpoint

Structure

Tag Group

Name
Type
Description
name string The name of the tag group (e.g., Size or Colour)
reference string The reference of the tag group
show_in_filters boolean Whether the tag group shows in filters on listings page
tags array An array of Tag objects

Tag

Name
Type
Description
name string The name of the tag (e.g., Small or Red)
slug string The slug of the tag, if not present it is auto-generated from name
reference string The reference of the tag
image object The image of the tag, see Image
has_slug boolean Whether the tag has a slug or not

Image

Name
Type
Description
url string The url of the image

Example Request

GET /api/tag-groups/{id|name}

Example Response

{
    "id": 1,
    "name": "Size",
    "reference": null,
    "show_in_filters": true,
    "tags": [
        {
            "id": 1,
            "name": "Small",
            "reference": null,
            "slug": "small",
            "image": {
                "url": null
            },
            "has_slug": true
        }
    ]
}

Tag Groups

Create Tag Group Endpoint

Structure

Tag Group

Name
Type
Description
Required
id int The id for the tag group No
name string The name of the tag group (e.g., Size or Colour) Yes
reference string The reference of the tag group No
show_in_filters boolean Whether the tag group shows in filters on listings page (defaults to true) No
tags array An array of Tag objects No

Tag

Name
Type
Description
Required
id int The id for the tag No
name string The name of the tag (e.g., Small or Red) Yes
slug string The slug of the tag, if not present it is auto-generated from name (unless has_slug is false) Conditional
reference string The reference of the tag No
image object The Image of the tag No
has_slug boolean Whether the tag has a slug or not (defaults to false, unless slug is provided) No

Image

Name
Type
Description
Required
src string The source url of the image Yes

Example Request

POST /api/tag-groups/
{
    "name": "Colour",
    "show_in_filters": false,
    "tags": [
        {
            "name": "Blue",
            "slug": "blueeee",
            "reference": "blue"
        },
        {
            "name": "red",
            "has_slug": false
        }
    ]
}

Example Response

{
    "tagGroup": {
        "id": 1
    }
}

Tag Groups

Update Tag Group Endpoint

Structure

Name
Type
Description
Required
name string The name of the tag group (e.g., Size or Colour) No
reference string The reference of the tag group No
show_in_filters boolean Whether the tag group shows in filters on listings page No

Example Request

PUT /api/tag-groups/{id|name}
{
    "name": "Updated Size",
    "show_in_filters": false
}

Example Response

{
    "tagGroup": {
        "id": 1
    }
}
Tag Groups

Delete Tag Group Endpoint

Example Request

DELETE /api/tag-groups/{id|name}

Example Response

204 No Content

Tags

Tags

Create Tag Endpoint

Structure

Tag

Name
Type
Description
Required
id int The id for the tag No
name string The name of the tag Yes
slug string The slug of the tag, if not present it is auto-generated from name Conditional
reference string The reference of the tag No
image object The Image of the tag No
has_slug boolean Whether the tag has a slug or not (defaults to false unless slug is provided) No

Image

Name
Type
Description
Required
src string The source url of the image Yes

Example Request

POST /api/tag-groups/{id|name}/tags
{
    "name": "Medium",
    "slug": "med-ium"
}

Example Response

{
    "tag": {
        "id": 1
    }
}

Tags

Update Tag Endpoint

Structure

Tag

Name
Type
Description
Required
name string The name of the tag No
slug string The slug of the tag No
reference string The reference of the tag No
image object The Image of the tag No
has_slug boolean Whether the tag has a slug or not No

Image

Name
Type
Description
Required
src string The source url of the image Yes

Example Request

PUT /api/tag-groups/{id|name}/tags/{id|name}
{
    "name": "Medium",
    "slug": "med-ium"
}

Example Response

{
    "tag": {
        "id": 1
    }
}

Tags

Delete Tag Endpoint

Example Request

DELETE /api/tag-groups/{id|name}/tags/{id|name}

Example Response

204 No Content

Collections

Collections

Collection Index Endpoint

Structure

See View Collection Endpoint for the structure of the collection payload inside the data array.

Example Request

GET /api/collections?per_page=2

Example Response

{
    "current_page": 1,
    "data": [
      //...
    ],
    "first_page_url": "http://aero.test/api/collections?page=1",
    "from": 1,
    "last_page": 3,
    "last_page_url": "http://aero.test/api/collections?page=3",
    "next_page_url": "http://aero.test/api/collections?page=2",
    "path": "http://aero.test/api/collections",
    "per_page": 2,
    "prev_page_url": null,
    "to": 2,
    "total": 5
}

See View Collection Endpoint for the structure of the collection payload inside the data array.

Collections

View Collection Endpoint

Structure

Collection

Name
Type
Description
name string The name of the collection
slug string The slug of the collection
reference string The reference of the collection
logic string The logic of the rules for the collection
rules array The listing page rules of the collection, see Rule
content object The listing page content of the collection, see Content
options object The listing page options of the collection, see Options
seo object The SEO of the collection
additional_attributes array An array of Additional Attribute objects
settings object A Settings object with grouped key-value pairs

Image

Name
Type
Description
url string The url of the image

Tag

Name
Type
Description
name string The name of the tag (e.g., Small or Red)
group object The tag group, see Tag Group

Tag Group

Name
Type
Description
name string The name of the tag group (e.g., Size or Colour)

Rule

Name
Type
Description
type string The type of the rule
requirement string The requirement of the rule
logic string The logic of the rule
data object The data for the rule, required keys vary based on type of the rule
data.tags array An array of Tag objects for a have_tags rule
data.manufacturers.*.id int The manufacturer id for a have_manufacturers rule
data.manufacturers.*.name string The manufacturer name for a have_manufacturers rule
data.price_list.id int The price list id for an in_price_list rule
data.price_list.name string The price list name for an in_price_list rule
data.category.id int The category id for an in_category rule
data.category.name string The category name for an in_category rule
data.days int The days for a published_within_days rule
data.start_at timestamp The start at date for a published_within rule
data.end_at timestamp The end at date for a published_within rule
data.min_price float The min price including tax, in whole units (e.g. pounds not pence) for price_between rule
data.max_price float The max price including tax, in whole units (e.g. pounds not pence) for price_between rule
data.currency string The currency code for price_between rule

Content

Name
Type
Description
summary string The summary content
description string The description content
small_image object The Small Image
medium_image object The Medium Image
large_image object The Large Image

Options

Name
Type
Description
categories.mode string The category filters mode (e.g., show_all/hide_all/show_some)
categories.values array The options for categories on the listings page
categories.values.*.id int The id of category
categories.values.*.name string The name of category
filters.mode int The facet filters mode (e.g., show_all/hide_all/show_some)
filters.values array The options for facet filters on the listings page
filters.values.*.name string The name of the facet filter, e.g. Manufacturer, Price, etc...
filters.values.*.collapsed boolean Whether to collapse the facet filter or not
sort_bys array An array of the applied sorts on the listings page (e.g., name-az, name-za, price-low, price-high, etc...)
per_page int The per page of the listings page

SEO

Name
Type
Description
heading string The SEO Heading
page_title string The SEO Page Title
meta_description string The SEO Meta Description
canonical string The SEO Canonical
noindex boolean The SEO No Index
nofollow boolean The SEO No Follow

Additional Attribute

Name
Type
Description
key string The key of the additional attribute
value string The value of the additional attribute

Settings

Settings are grouped as key-value pairs.

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

Example Request

GET /api/collections/{id|name}

Example Response

{
    "id": 1,
    "name": "Sale",
    "reference": null,
    "slug": "sale",
    "published_at": "2025-01-08T12:28:14.000000Z",
    "content": {
        "summary": "Combination Summary",
        "description": "Combination Description",
        "small_image": {
            "url": null
        },
        "medium_image": {
            "url": null
        },
        "large_image": {
            "url": null
        }
    },
    "rules": [],
    "options": {
        "categories": {
            "mode": "show_all",
            "values": []
        },
        "filters": {
            "mode": "show_all",
            "values": []
        },
        "sort_bys": [],
        "per_page": 24
    },
    "seo": {
        "heading": "SEO Heading",
        "page_title": "SEO Page Title",
        "meta_description": "SEO Meta Description",
        "open_graph": "",
        "canonical": "",
        "noindex": 0,
        "nofollow": 0
    },
    "settings": [],
    "additional_attributes": []
}

Collections

Create Collection Endpoint

Structure

Collection

Name
Type
Description
Required
id int The id for the collection No
name string The name of the collection Yes
slug string The slug of the collection, if not present it is auto-generated from name No
reference string The reference of the collection No
logic string The logic of the rules for the collection, and/or (defaults to or if not provided) No
published_at timestamp The published at of the collection No
rules array An array of Listing Page Rule objects No
content object The Listing Page Content of the collection No
options object The Listing Page Options of the collection No
seo object The SEO of the collection No
additional_attributes array An array of Additional Attribute objects No
settings object A Settings object with grouped key-value pairs No

Image

Name
Type
Description
Required
src string The source url of the image Yes

Rule

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

 The rules are nested within arrays to achieve grouping, see rules in Example Request for clarity

Content

Name
Type
Description
Required
summary string The summary content No
description string The description content No
small_image object The Small Image No
medium_image object The Medium Image No
large_image object The Large Image No

Options

Name
Type
Description
Required
categories.mode string Categories filter display mode. Allowed values: show_all, hide_all, show_some. Default: show_all No
categories.values array An array of category ids (or names/breadcrumbs, e.g. Mens > Coats) to show. Required if categories.mode = show_some Conditional
filters.mode int Facet filters display mode. Allowed values: show_all, hide_all, show_some. Default: show_all No
filters.values array The options for facet filters on the listings page. Required if filters.mode = show_some Conditional
filters.values.*.name string The name of the facet filter, e.g. Category, Price, etc... Yes
filters.values.*.collapsed boolean Whether to collapse the facet filter or not Yes
sort_bys array An array of the applied sorts on the listings page (e.g., name-az, name-za, price-low, price-high, etc...) No
per_page int The per page of the listings page (defaults to 24) No

SEO

Name
Type
Description
Required
heading string The SEO Heading No
page_title string The SEO Page Title No
meta_description string The SEO Meta Description No
canonical string The SEO Canonical No
noindex boolean The SEO No Index No
nofollow boolean The SEO No Follow No

Additional Attribute

Name
Type
Description
Required
key string The key of the additional attribute Yes
value string The value of the additional attribute Yes

Settings

Settings are grouped as key-value pairs.

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

Example Request

POST /api/collections/
{
  "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

{
    "collection": {
        "id": 1
    }
}

Collections

Update Collection Endpoint

Structure

Collection

Name
Type
Description
Required
name string The name of the collection No
slug string The slug of the collection, if not present it is auto-generated from name No
reference string The reference of the collection No
logic string The logic of the rules for the collection, and/or (defaults to or if not provided) No
published_at timestamp The published at of the collection No
rules array An array of Listing Page Rule objects No
content object The Listing Page Content of the collection No
options object The Listing Page Options of the collection No
seo object The SEO of the collection No
additional_attributes array An array of Additional Attribute objects No
settings object A Settings object with grouped key-value pairs No

Image

Name
Type
Description
Required
src string The source url of the image Yes

Rule

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

 The rules are nested within arrays to achieve grouping, see rules in Example Request for clarity

Content

Name
Type
Description
Required
summary string The summary content No
description string The description content No
small_image object The Small Image No
medium_image object The Medium Image No
large_image object The Large Image No

Options

Name
Type
Description
Required
categories.mode string Categories filter display mode. Allowed values: show_all, hide_all, show_some. Default: show_all No
categories.values array An array of category ids (or names/breadcrumbs, e.g. Mens > Coats) to show. Required if categories.mode = show_some Conditional
filters.mode int Facet filters display mode. Allowed values: show_all, hide_all, show_some. Default: show_all No
filters.values array The options for facet filters on the listings page. Required if filters.mode = show_some Conditional
filters.values.*.name string The name of the facet filter, e.g. Category, Price, etc... Yes
filters.values.*.collapsed boolean Whether to collapse the facet filter or not Yes
sort_bys array An array of the applied sorts on the listings page (e.g., name-az, name-za, price-low, price-high, etc...) No
per_page int The per page of the listings page (defaults to 24) No

SEO

Name
Type
Description
Required
heading string The SEO Heading No
page_title string The SEO Page Title No
meta_description string The SEO Meta Description No
canonical string The SEO Canonical No
noindex boolean The SEO No Index No
nofollow boolean The SEO No Follow No

Additional Attribute

Name
Type
Description
Required
key string The key of the additional attribute Yes
value string The value of the additional attribute Yes

Settings

Settings are grouped as key-value pairs.

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

Example Request

PUT /api/collections/{id|name}
{
    "name": "Updated Sale",
    "slug": "big-sale",
    "content": {
        "description": "Updated Sale"
    },
    "seo": {
        "heading": "Updated Sale"
    }
}

Example Response

{
    "collection": {
        "id": 1
    }
}

Collections

Delete Collection Endpoint

Example Request

DELETE /api/collections/{id|name}

Example Response

204 No Content

Customers

Customers

Customer Index Endpoint

Structure

See View Customer Endpoint for the structure of the customer payload inside the data array.

Filters

Name
Description
Example
emails Only return customers with specific emails ?emails=test@gmail.com,example@gmail.com
names Only return customers with specific names ?names=Test,Another Test
groups Only return customers with specific groups ?groups=VIP,Retail

Example Request

GET /api/customers?per_page=2

Example Response

{
    "current_page": 1,
    "data": [
        //...
    ],
    "first_page_url": "http://aero.test/api/customers?page=1",
    "from": 1,
    "last_page": 1,
    "last_page_url": "http://aero.test/api/customers?page=1",
    "next_page_url": null,
    "path": "http://aero.test/api/customers",
    "per_page": 2,
    "prev_page_url": null,
    "to": 1,
    "total": 1
}

See View Customer Endpoint for the structure of the customer payload inside the data array.

Customers

View Customer Endpoint

Structure

Customer

Name
Type
Description
id int The id of the customer
name string The name of the customer
email string The email of the customer
created_at timestamp The date that the customer was created at
group object The group the customer belongs to, see Group
addresses array An array of Address objects
tax_group object The Tax Group of the customer
additional_attributes object An array of Additional Attribute objects

Group

Name
Type
Description
id int The id of the customer group
name string The name of the customer group
tax_group object The tax group of the customer group, see Tax Group

Address

Name
Type
Description
name string The name of the address
first_name string The first name for the address
last_name string The last name for the address
company string The company for the address
mobile string The mobile number for the address
phone string The phone number for the address
line_1 string The first line for the address
line_2 string The second line for the address
city string The city for the address
county string The county for the address
zone string The zone code for the address
postcode string The postcode for the address
country string The country code for the address
reference string The unique reference for the address
eori_number string The EORI number for the address
is_default boolean Whether the address is default

Tax Group

Name
Type
Description
id int The id of the customer tax group
name string The name of the customer tax group

Additional Attributes

Name
Type
Description
key string The key of the additional attribute
value string The value of the additional attribute

Example Request

GET /api/customers/{id|email}

Example Response

{
    "id": 1,
    "name": "test test",
    "email": "test@gmail.com",
    "created_at": "2025-06-27T13:00:47.000000Z",
    "group": {
        "id": 1,
        "name": "test",
        "tax_group": {
            "id": 1,
            "name": "Retail Customer"
        }
    },
    "addresses": [
        {
            "id": 1,
            "name": null,
            "first_name": "test",
            "last_name": "test",
            "company": "test",
            "mobile": null,
            "phone": null,
            "line_1": "test",
            "line_2": null,
            "city": "test",
            "county": "Test",
            "zone": null,
            "postcode": "te57 10l",
            "country": "GB",
            "reference": null,
            "eori_number": null,
            "is_default": 0
        },
        {
            "id": 2,
            "name": null,
            "first_name": "test",
            "last_name": "test",
            "company": "test",
            "mobile": null,
            "phone": null,
            "line_1": "test",
            "line_2": null,
            "city": "test",
            "county": null,
            "zone": null,
            "postcode": "te57 10l",
            "country": "GB",
            "reference": null,
            "eori_number": null,
            "is_default": 1
        }
    ],
    "tax_group": null,
    "additional_attributes": []
}

Customers

Create Customer Endpoint

Structure

Customer

Name
Type
Description
Required
id int The id for the customer No
name string The name of the customer Yes
email string The email of the customer Yes
password string The plain-text password of the customer Conditional *
password_hash string The hashed password of the customer Conditional *
group string The group name of the customer No
tax_group string The tax group name of the customer No
addresses array The addresses of the customer, see Address No
additional_attributes array The additional attributes of the customer, see Additional Attribute No

* One of password or password_hash must be provided. Using password_hash is recommended. Ensure the hashing algorithm matches the store’s configuration (usually bcrypt).

Address

Name
Type
Description
Required
name string The name of the address No
first_name string The first name for the address Yes
last_name string The last name for the address Yes
company string The company for the address No
mobile string The mobile number for the address No
phone string The phone number for the address No
line_1 string The first line for the address Yes
line_2 string The second line for the address No
city string The city for the address Yes
county string The county for the address No
zone string The zone code for the address, required for some countries (e.g., US, AU, etc) Conditional
postcode string The postcode for the address, required for some countries (e.g., GB, US, etc) Conditional
country string The country code for the address Yes
reference string The unique reference for the address No
eori_number string The EORI number for the address No
is_default boolean Whether the address is default No

Additional Attribute

Name
Type
Description
Required
key string The key of the additional attribute Yes
value string The value of the additional attribute Yes

Example Request

POST /api/customers
{
    "name": "Test",
    "email": "test@gmail.com",
    "password_hash": "$2y$10$0QFHb4QU0wAsaskZPQv0Re72Xa2KXrWt5YR32O5aBxIwc0c41bbwm",
    "group": "Group Name",
    "addresses": [
        {
            "name": "API Address",
            "first_name": "test",
            "last_name": "test",
            "company": "test",
            "mobile": null,
            "phone": null,
            "line_1": "test",
            "line_2": null,
            "city": "test",
            "county" : "Test",
            "zone": null,
            "postcode": "te57 10l",
            "country": "GB",
            "reference": null,
            "eori_number": null,
            "is_default": true
        }
    ],
    "additional_attributes": [
        {
            "key": "api",
            "value": "true"
        }
    ]
}

Example Response

{
    "customer": {
        "id": 1
    }
}

Customers

Update Customer Endpoint

Structure

Customer

Name
Type
Description
Required
id int The id for the customer No
name string The name of the customer No
email string The email of the customer No
group string The group name of the customer No
tax_group string The tax group name of the customer No
additional_attributes array The additional attributes of the customer, see Additional Attribute No

Additional Attribute

Name
Type
Description
Required
key string The key of the additional attribute Yes
value string The value of the additional attribute Yes

Example Request

PUT /api/customers/{id|email}
{
    "name": "Test",
    "email": "test@gmail.com",
    "group": "Group Name",
    "additional_attributes": [
        {
            "key": "last-api-update",
            "value": "2023-09-01 09:29:41"
        }
    ]
}

Example Response

{
    "customer": {
        "id": 1
    }
}

Addresses

Addresses

Create Address Endpoint

Structure

Name
Type
Description
Required
id int The id for the address No
name string The name of the address No
first_name string The first name for the address Yes
last_name string The last name for the address Yes
company string The company for the address No
mobile string The mobile number for the address No
phone string The phone number for the address No
line_1 string The first line for the address Yes
line_2 string The second line for the address No
city string The city for the address Yes
county string The county for the address No
zone string The zone code for the address, required for some countries (e.g., US, AU, etc) Conditional
postcode string The postcode for the address, required for some countries (e.g., GB, US, etc) Conditional
country string The country code for the address Yes
reference string The unique reference for the address No
eori_number string The EORI number for the address No
is_default boolean Whether the address is default No

Example Request

POST /api/customers/{id}/addresses
{
    "name": "API Address",
    "first_name": "test",
    "last_name": "test",
    "company": "test",
    "mobile": null,
    "phone": null,
    "line_1": "test",
    "line_2": null,
    "city": "test",
    "county": "Test",
    "zone": null,
    "postcode": "te57 10l",
    "country": "GB",
    "reference": null,
    "eori_number": null,
    "is_default": true
}

Example Response

{
    "address": {
        "id": 1
    }
}

Addresses

Update Address Endpoint

Structure

Name
Type
Description
Required
id int The id for the address No
name string The name of the address No
first_name string The first name for the address No
last_name string The last name for the address No
company string The company for the address No
mobile string The mobile number for the address No
phone string The phone number for the address No
line_1 string The first line for the address No
line_2 string The second line for the address No
city string The city for the address No
county string The county for the address No
zone string The zone code for the address, required for some countries (e.g., US, AU, etc) No
postcode string The postcode for the address, required for some countries (e.g., GB, US, etc) No
country string The country code for the address No
reference string The unique reference for the address No
eori_number string The EORI number for the address No
is_default boolean Whether the address is default No

Example Request

PUT /api/customers/{id}/addresses/{id}
{
    "name": "API Address Updated",
    "first_name": "test2",
    "county": "Test 2"
}

Example Response

{
    "address": {
        "id": 1
    }
}

Addresses

Delete Address Endpoint

Example Request

DELETE /api/customers/{id}/addresses/{id}

Example Response

204 No Content

Payment Methods

Payment Methods

Payment Method Index Endpoint

Structure

See View Payment Method Endpoint for the structure of the payment method payload inside the data array.

Example Request

GET /api/payment-methods?per_page=2

Example Response

{
    "current_page": 1,
    "data": [
        //...
    ],
    "first_page_url": "http://aero.test/api/payment-methods?page=1",
    "from": 1,
    "last_page": 1,
    "last_page_url": "http://aero.test/api/payment-methods?page=1",
    "next_page_url": null,
    "path": "http://aero.test/api/payment-methods",
    "per_page": 2,
    "prev_page_url": null,
    "to": 2,
    "total": 2
}

See View Payment Method Endpoint for the structure of the payment method payload inside the data array.

Payment Methods

View Payment Method Endpoint

Structure

Name
Type
Description
id int The id of the payment method
name string The name of the payment method
driver string The driver for the payment method
available boolean Whether the payment method is available for use

Example Request

GET /api/payment-methods/{id}

Example Response

{
    "id": 1,
    "name": "Cash",
    "driver": "cash",
    "available": true
}

Shipping Methods

Shipping Methods

Shipping Method Index Endpoint

Structure

See View Shipping Method Endpoint for the structure of the shipping method payload inside the data array.

Example Request

GET /api/shipping-methods?per_page=2

Example Response

{
    "current_page": 1,
    "data": [
        //...
    ],
    "first_page_url": "http://aero.test/api/shipping-methods?page=1",
    "from": 1,
    "last_page": 2,
    "last_page_url": "http://aero.test/api/shipping-methods?page=2",
    "next_page_url": "http://aero.test/api/shipping-methods?page=2",
    "path": "http://aero.test/api/shipping-methods",
    "per_page": 2,
    "prev_page_url": null,
    "to": 2,
    "total": 4
}

See View Shipping Method Endpoint for the structure of the shipping method payload inside the data array.

Shipping Methods

View Shipping Method Endpoint

Structure

Shipping Method

Name
Type
Description
id int The id of the shipping method
name string The name of the shipping method
available boolean Whether the shipping method is available for use
rates array An array of Rate objects

Rate

Name
Type
Description
id int The id of the shipping rate
currency string ISO currency code of the shipping rate (e.g., GBP)
min_price float Minimum cart total price for this rate to apply
max_price float Maximum cart total price for this rate to apply (nullable = no limit)
min_weight float Minimum total weight for this rate to apply
max_weight float Maximum total weight for this rate to apply (nullable = no limit)
min_volume float Minimum total volume for this rate to apply
max_volume float Maximum total volume for this rate to apply (nullable = no limit)
price float The cost of shipping, expressed in the specified currency’s smallest units

Example Request

GET /api/shipping-methods/{id}

Example Response

{
    "id": 2,
    "name": "Standard",
    "available": true,
    "rates": [
        {
            "id": 2,
            "currency": "GBP",
            "min_price": 1000,
            "max_price": null,
            "min_weight": 0,
            "max_weight": null,
            "min_volume": 0,
            "max_volume": null,
            "price": 12300
        }
    ]
}

Locations

Locations

Location Index Endpoint

Structure

See View Location Endpoint for the structure of the location payload inside the data array.

Example Request

GET /api/locations?per_page=2

Example Response

{
    "current_page": 1,
    "data": [
        //...
    ],
    "first_page_url": "http://aero.test/api/locations?page=1",
    "from": 1,
    "last_page": 3,
    "last_page_url": "http://aero.test/api/locations?page=3",
    "next_page_url": "http://aero.test/api/locations?page=2",
    "path": "http://aero.test/api/locations",
    "per_page": 2,
    "prev_page_url": null,
    "to": 2,
    "total": 5
}

See View Location Endpoint for the structure of the location payload inside the data array.

Locations

View Location Endpoint

Structure

Location

Name
Type
Description
id int The id for the location
name string The name of the location
email string The email of the location
phone string The phone number for the location
line_1 string The first line for the location
line_2 string The second line for the location
city string The city for the location
county string The county for the location
zone string The zone code for the location, required for some countries (e.g., US, AU, etc)
postcode string The postcode for the location, required for some countries (e.g., GB, US, etc)
country string The country code for the location
latitude float The latitude for the location
longitude float The longitude for the location
opening_hours object See Opening Hours
additional_attributes array An array of Additional Attribute objects

Opening Hours

Name
Type
Description
sunday.times array An array of Time objects
monday.times array An array of Time objects
tuesday.times array An array of Time objects
wednesday.times array An array of Time objects
thursday.times array An array of Time objects
friday.times array An array of Time objects
saturday.times array An array of Time objects
overrides object See Overrides

Time

Name
Type
Description
start time The start of the time range
end time The end of the time range

Overrides

Name
Type
Description
date date The date the override is for
label string The label for the override
times array An array of Time objects

Additional Attribute

Name
Type
Description
key string The key of the additional attribute
value string The value of the additional attribute

Example Request

GET /api/locations/{id|name}

Example Response

{
    "id": 1,
    "name": "Aero Commerce",
    "email": null,
    "phone": null,
    "latitude": null,
    "longitude": null,
    "line_1": "28-32 Albert Rd",
    "line_2": null,
    "city": "Middlesbrough",
    "county": null,
    "zone": null,
    "postcode": "TS1 1QD",
    "country": "GB",
    "opening_hours": {
        "sunday": {
            "times": []
        },
        "monday": {
            "times": [
                {
                    "start": "07:00",
                    "end": "12:00"
                },
                {
                    "start": "12:30",
                    "end": "15:00"
                }
            ]
        },
        "tuesday": {
            "times": [
                {
                    "start": "07:00",
                    "end": "12:00"
                },
                {
                    "start": "12:30",
                    "end": "15:00"
                }
            ]
        },
        "wednesday": {
            "times": [
                {
                    "start": "07:00",
                    "end": "12:00"
                },
                {
                    "start": "12:30",
                    "end": "15:00"
                }
            ]
        },
        "thursday": {
            "times": [
                {
                    "start": "07:00",
                    "end": "12:00"
                },
                {
                    "start": "12:30",
                    "end": "15:00"
                }
            ]
        },
        "friday": {
            "times": [
                {
                    "start": "07:00",
                    "end": "12:00"
                },
                {
                    "start": "12:30",
                    "end": "15:00"
                }
            ]
        },
        "saturday": {
            "times": []
        },
        "overrides": [
            {
                "date": "2025-12-25",
                "label": "Christmas Day",
                "times": []
            },
            {
                "date": "2025-08-25",
                "label": "Bank Holiday",
                "times": []
            }
        ]
    },
    "additional_attributes": []
}

Locations

Create Location Endpoint

Structure

Location

Name
Type
Description
Required
id int The id for the location No
name string The name of the location Yes
email string The email of the location No
phone string The phone number for the location No
line_1 string The first line for the location Yes
line_2 string The second line for the location No
city string The city for the location Yes
county string The county for the location No
zone string The zone code for the location, required for some countries (e.g., US, AU, etc) Conditional
postcode string The postcode for the location, required for some countries (e.g., GB, US, etc) Conditional
country string The country code for the location Yes
latitude float The latitude for the location No
longitude float The longitude for the location No
opening_hours object See Opening Hours No
additional_attributes array An array of Additional Attribute objects No

Opening Hours

Name
Type
Description
Required
sunday.times array An array of Time objects No
monday.times array An array of Time objects No
tuesday.times array An array of Time objects No
wednesday.times array An array of Time objects No
thursday.times array An array of Time objects No
friday.times array An array of Time objects No
saturday.times array An array of Time objects No
overrides object See Overrides No

Time

Name
Type
Description
Required
start time The start of the time range Yes
end time The end of the time range Yes

Overrides

Name
Type
Description
Required
date date The date the override is for Yes
label string The label for the override No
times array An array of Time objects No

Additional Attribute

Name
Type
Description
Required
key string The key of the additional attribute Yes
value string The value of the additional attribute Yes

Example Request

POST /api/locations/
{
    "name": "Aero Commerce",
    "line_1": "28-32 Albert Rd",
    "city": "Middlesbrough",
    "postcode": "TS1 1QD",
    "country": "GB",
    "opening_hours": {
        "monday": {
            "times": [
                {
                    "start": "07:00",
                    "end": "12:00"
                },
                {
                    "start": "12:30",
                    "end": "15:00"
                }
            ]
        },
        "tuesday": {
            "times": [
                {
                    "start": "07:00",
                    "end": "12:00"
                },
                {
                    "start": "12:30",
                    "end": "15:00"
                }
            ]
        },
        "wednesday": {
            "times": [
                {
                    "start": "07:00",
                    "end": "12:00"
                },
                {
                    "start": "12:30",
                    "end": "15:00"
                }
            ]
        },
        "thursday": {
            "times": [
                {
                    "start": "07:00",
                    "end": "12:00"
                },
                {
                    "start": "12:30",
                    "end": "15:00"
                }
            ]
        },
        "friday": {
            "times": [
                {
                    "start": "07:00",
                    "end": "12:00"
                },
                {
                    "start": "12:30",
                    "end": "15:00"
                }
            ]
        },
        "overrides": [
            {
                "date": "2025-12-25",
                "label": "Christmas Day"
            },
            {
                "date": "2025-08-25",
                "label": "Bank Holiday"
            }
        ]
    }
}

Example Response

{
    "location": {
        "id": 1
    }
}

Locations

Update Location Endpoint

Structure

Location

Name
Type
Description
Required
id int The id for the location No
name string The name of the location No
email string The email of the location No
phone string The phone number for the location No
line_1 string The first line for the location No
line_2 string The second line for the location No
city string The city for the location No
county string The county for the location No
zone string The zone code for the location, required for some countries (e.g., US, AU, etc) No
postcode string The postcode for the location, required for some countries (e.g., GB, US, etc) No
country string The country code for the location No
latitude float The latitude for the location No
longitude float The longitude for the location No
opening_hours object See Opening Hours No
additional_attributes array An array of Additional Attribute objects No

Opening Hours

Name
Type
Description
Required
sunday.times array An array of Time objects No
monday.times array An array of Time objects No
tuesday.times array An array of Time objects No
wednesday.times array An array of Time objects No
thursday.times array An array of Time objects No
friday.times array An array of Time objects No
saturday.times array An array of Time objects No
overrides object See Overrides No

Time

Name
Type
Description
Required
start time The start of the time range Yes
end time The end of the time range Yes

Overrides

Name
Type
Description
Required
date date The date the override is for Yes
label string The label for the override No
times array An array of Time objects No

Additional Attribute

Name
Type
Description
Required
key string The key of the additional attribute Yes
value string The value of the additional attribute Yes

Example Request

PUT /api/locations/{id|name}
{
    "opening_hours": {
        "monday": {
            "times": [
                {
                    "start": "09:00",
                    "end": "12:30"
                },
                {
                    "start": "13:00",
                    "end": "17:00"
                }
            ]
        },
        "overrides": [
            {
                "date": "2025-12-26",
                "label": "Boxing Day",
                "times": []
            }
        ]
    },
}

Example Response

{
    "location": {
        "id": 1
    }
}

Flags

Flags

Flag Index Endpoint

Structure

See View Flag Endpoint for the structure of the flag payload inside the data array.

Example Request

GET /api/flags?per_page=2

Example Response

{
    "current_page": 1,
    "data": [
        //...
    ],
    "first_page_url": "http://aero.test/api/flags?page=1",
    "from": 1,
    "last_page": 3,
    "last_page_url": "http://aero.test/api/flags?page=3",
    "next_page_url": "http://aero.test/api/flags?page=2",
    "path": "http://aero.test/api/flags",
    "per_page": 2,
    "prev_page_url": null,
    "to": 2,
    "total": 5
}

See View Flag Endpoint for the structure of the flag payload inside the data array.

Flags

View Flag Endpoint

Structure

Name
Type
Description
id int The id of the flag
name string The unique name for the flag
color hexcode The colour of the flag (format ##RRGGBB)
created_at timestamp The date the flag was created

Example Request

GET /api/flags/{id|name}

Example Response

{
    "id": 1,
    "name": "Flag",
    "color": "#7f3434",
    "created_at": "2025-06-30T08:14:27.000000Z"
}

Flags

Create Flag Endpoint

Structure

Name
Type
Description
Required
id int The id for the flag No
name string The name of the flag Yes
color hexcode The color of the flag (format ##RRGGBB) Yes

Example Request

POST /api/flags/
{
    "name": "API Flag",
    "color": "#000000",
}

Example Response

{
    "flag": {
        "id": 1
    }
}

Flags

Update Flag Endpoint

Structure

Name
Type
Description
Required
name string The name of the flag No
color hexcode The color of the flag (format ##RRGGBB) No

Example Request

PUT /api/flags/{id|name}
{
    "name": "API Flag Updated",
    "color": "#A1B2C3",
}

Example Response

{
    "flag": {
        "id": 1
    }
}

Flags

Delete Flag Endpoint

Example Request

DELETE /api/flags/{id|name}

Example Response

204 No Content

Price Lists

Price Lists

Price List Index Endpoint

Structure

See View Price List Endpoint for the structure of the price list payload inside the data array.

Example Request

GET /api/price-lists?per_page=2

Example Response

{
    "current_page": 1,
    "data": [
        //...
    ],
    "first_page_url": "http://aero.test/api/price-lists?page=1",
    "from": 1,
    "last_page": 3,
    "last_page_url": "http://aero.test/api/price-lists?page=3",
    "next_page_url": "http://aero.test/api/price-lists?page=2",
    "path": "http://aero.test/api/price-lists",
    "per_page": 2,
    "prev_page_url": null,
    "to": 2,
    "total": 5
}

See View Price List Endpoint for the structure of the price list payload inside the data array.

Price Lists

View Price List Endpoint

Structure

Price List

Name
Type
Description
id int The id of the price list
name string The name of the price list
applies_to string The applies to of the price list (e.g., everyone, not-customers, customers, groups)
start_at timestamp The start at of the price list
end_at timestamp The end at of the price list
entries array An array of Entry objects
customer_groups array An array of Customer Group objects

Entry

Name
Type
Description
id int The id of the price list entry
for string What the entry applies to (e.g., all_products, all_products_unless_reduced, product, variant, category, tag, manufacturer)
target string Identifier of the target (if applicable) — e.g. product id, variant id, category id, etc...
type string Type of price adjustment (e.g., fixed_price, fixed_price_decrease, fixed_price_increase, percentage_decrease, percentage_increase)
price object The Price object (only present when type is fixed based)
percentage float Percentage value (only present when type is percentage based)
for_price string Which price the entry affects (e.g., sale_price, base_price, rrp, cost_price)

Price

Name
Type
Description
amount float The price including tax, in whole units (e.g., 10 = £10)
currency string The currency for the price (e.g., GBP)

Customer Group

Name
Type
Description
id int The id of the customer group
name string The name of the customer group
start_at timestamp The start at for the customer group
end_at timestamp The end at for the customer group

Example Request

GET /api/price-lists/{id}

Example Response

{
  "id": 1,
  "name": "API Test",
  "applies_to": "everyone",
  "start_at": null,
  "end_at": null,
  "entries": [
    {
      "id": 1,
      "for": "all_products",
      "target": null,
      "type": "fixed_price",
      "price": {
        "amount": 10,
        "currency": "GBP"
      },
      "for_price": "base_price"
    },
    {
      "id": 2,
      "for": "all_products_unless_reduced",
      "target": null,
      "type": "fixed_price_decrease",
      "price": {
        "amount": 10,
        "currency": "GBP"
      },
      "for_price": "base_price"
    },
    {
      "id": 3,
      "for": "product",
      "target": 1,
      "type": "percentage_decrease",
      "percentage": 10,
      "for_price": "sale_price"
    },
    {
      "id": 4,
      "for": "variant",
      "target": 1,
      "type": "percentage_decrease",
      "percentage": 10,
      "for_price": "sale_price"
    },
    {
      "id": 5,
      "for": "category",
      "target": 1,
      "type": "percentage_decrease",
      "percentage": 10,
      "for_price": "sale_price"
    },
    {
      "id": 6,
      "for": "tag",
      "target": 1,
      "type": "percentage_decrease",
      "percentage": 10,
      "for_price": "sale_price"
    },
    {
      "id": 7,
      "for": "manufacturer",
      "target": 1,
      "type": "percentage_decrease",
      "percentage": 10,
      "for_price": "sale_price"
    }
  ],
  "customer_groups": []
}

Price Lists

Create Price List

Structure

Price List

Name
Type
Description
Required
id int The id of the price list No
name string The name of the price list Yes
applies_to string The applies to of the price list (everyone, not-customers, customers, groups) Yes
start_at timestamp The start at of the price list No
end_at timestamp The end at of the price list No
entries array An array of Entry objects No
customer_groups array An array of Customer Group objects (only required when applies_to = "groups") No

Entry

Name
Type
Description
Required
id int The id for the entry No
for string What the entry applies to (e.g., all_products, all_products_unless_reduced, product, variant, category, tag, manufacturer) Yes
target string Identifier of the target (e.g., id corresponding to the for or model for product, or sku for variant or name for category/tag/manufacturer) Conditional
type string Type of the price adjustment (e.g., fixed_price, fixed_price_decrease, fixed_price_increase, percentage_decrease, percentage_increase) Yes
price object The Price object (not required when type is percentage based) Conditional
percentage float The percentage of the price list entry (only required when type is percentage based) Conditional
for_price string Which price the entry affects (e.g., sale_price, base_price, rrp, cost_price) Yes

Price

Name
Type
Description
Required
amount float The price including tax, in whole units (e.g., 10 = £10) Yes
currency string The currency for the price (e.g., GBP) Yes

Customer Group

Name
Type
Description
Required
id int The id of the customer group Yes
start_at timestamp The start at for the customer group No
end_at timestamp The end at for the customer group No

Example Request

POST /api/price-lists
{
  "id": 1,
  "name": "API Test",
  "applies_to": "everyone",
  "entries": [
    {
      "for": "all_products",
      "type": "fixed_price",
      "price": {
        "amount": 10,
        "currency": "GBP"
      },
      "for_price": "base_price"
    },
    {
      "for": "all_products_unless_reduced",
      "type": "fixed_price_decrease",
      "price": {
        "amount": 10,
        "currency": "GBP"
      },
      "for_price": "base_price"
    },
    {
      "for": "product",
      "target": 1,
      "type": "percentage_decrease",
      "percentage": 10,
      "for_price": "sale_price"
    },
    {
      "for": "variant",
      "target": 1,
      "type": "percentage_decrease",
      "percentage": 10,
      "for_price": "sale_price"
    },
    {
      "for": "category",
      "target": 1,
      "type": "percentage_decrease",
      "percentage": 10,
      "for_price": "sale_price"
    },
    {
      "for": "tag",
      "target": 1, 
      "type": "percentage_decrease",
      "percentage": 10,
      "for_price": "sale_price"
    },
    {
      "for": "manufacturer",
      "target": 1,
      "type": "percentage_decrease",
      "percentage": 10,
      "for_price": "sale_price"
    }
  ],
  "customer_groups": []
}

Example Response

{
    "priceList": {
        "id": 1
    }
}

Price Lists

Update Price List

Structure

Price List

Name
Type
Description
Required
name string The name of the price list No
applies_to string The applies to of the price list (everyone, not-customers, customers, groups) No
start_at timestamp The start at of the price list No
end_at timestamp The end at of the price list No
customer_groups array An array of Customer Group objects (only required when applies_to = "groups") No

Customer Group

Name
Type
Description
Required
id int The id of the customer group Yes
start_at timestamp The start at for the customer group No
end_at timestamp The end at for the customer group No

Example Request

PUT /api/price-lists/{id}
{
    "name": "API Test Updated",
    "applies_to": "customers"
}

Example Response

{
    "priceList": {
        "id": 1
    }
}

Price List Entries

Price List Entries

Create Price List Entry Endpoint

Structure

Price List Entry

Name
Type
Description
Required
id int The id for the entry No
for string What the entry applies to (e.g., all_products, all_products_unless_reduced, product, variant, category, tag, manufacturer) Yes
target string Identifier of the target (e.g., id corresponding to the for or model for product, or sku for variant or name for category/tag/manufacturer) Conditional
type string Type of the price adjustment (e.g., fixed_price, fixed_price_decrease, fixed_price_increase, percentage_decrease, percentage_increase) Yes
price object The Price object (not required when type is percentage based) Conditional
percentage float The percentage of the price list entry (only required when type is percentage based) Conditional
for_price string Which price the entry affects (e.g., sale_price, base_price, rrp, cost_price) Yes

Price

Name
Type
Description
Required
amount float The price including tax, in whole units (e.g. pounds not pence) Yes
currency string The currency for the price, e.g. GBP Yes

Example Request

POST /api/price-lists/{id}/entries
{
    "for": "variant",
    "target": "sku",
    "type": "percentage_decrease",
    "percentage": 20,
    "for_price": "base_price"
}

Example Response

{
    "priceListEntry": {
        "id": 1
    }
}

Price List Entries

Update Price List Entry Endpoint

Structure

Price List Entry

Name
Type
Description
Required
id int The id for the entry No
for string What the entry applies to (e.g., all_products, all_products_unless_reduced, product, variant, category, tag, manufacturer) No
target string Identifier of the target (e.g., id corresponding to the for or model for product, or sku for variant or name for category/tag/manufacturer) No
type string Type of the price adjustment (e.g., fixed_price, fixed_price_decrease, fixed_price_increase, percentage_decrease, percentage_increase) No
price object The Price object (not when type is percentage based) No
percentage float The percentage of the price list entry (only when type is percentage based) No
for_price string Which price the entry affects (e.g., sale_price, base_price, rrp, cost_price) No

Price

Name
Type
Description
Required
amount float The price including tax, in whole units (e.g. pounds not pence) Yes
currency string The currency for the price, e.g. GBP Yes

Example Request

PUT /api/price-lists/{id}/entries/{id}
{
    "for": "product",
    "target": "model",
    "type": "percentage_decrease",
    "percentage": 20
}

Example Response

{
    "priceListEntry": {
        "id": 1
    }
}

Specification Groups

Specification Groups

Specification Group Index Endpoint

This endpoint is only available if aerocargo/specifications is installed.

Structure

See View Specification Group for the structure of the specification group payloads inside the data array.

Example Request

GET /api/specification-groups?per_page=2

Example Response

{
    "current_page": 1,
    "data": [
        //...
    ],
    "first_page_url": "http://aero.test/api/specification-groups?page=1",
    "from": 1,
    "last_page": 3,
    "last_page_url": "http://aero.test/api/specification-groups?page=3",
    "next_page_url": "http://aero.test/api/specification-groups?page=2",
    "path": "http://aero.test/api/specification-groups",
    "per_page": 2,
    "prev_page_url": null,
    "to": 2,
    "total": 5
}

See View Specification Group for the structure of the specification group payloads inside the data array.

Specification Groups

View Specification Group Endpoint

This endpoint is only available if aerocargo/specifications is installed.

Structure

Specification Group

Name
Type
Description
Version
id int The id of the specification group >=0.1.0
name string The name for the specification group >=0.1.0
sort int The sort for the specification group >=1.0.0
fields array An array of Field objects >=0.1.0
media array An array of Media objects >=0.3.2
settings object A Settings object with grouped key-value pairs >=1.0.0

Field

Name
Type
Description
Version
name string The name of the field >=0.1.0
presets array An array of strings to use as preset options >=0.1.0
default string The default value for the field, note: _p:0 means the first preset >=0.1.0
prefix string The prefix for the field >=0.1.0
suffix string The suffix for the field >=0.1.0
sort int The sort for the field >=1.0.0
media array An array of Media objects >=1.0.0
settings object A Settings object with grouped key-value pairs >=1.0.0

Media

Name
Type
Description
id int The id of the media
slug string The slug of the media
disk string The disk used to store the media
path string The path of the media on the disk
title string The title of the media
type string The mimetype of the media
extension string The file extension of the media
size int The file size of the media in bytes
meta object The meta data of the media
source string The source file name of the media
is_protected bool Whether the media is protected

Settings

Settings are grouped as key-value pairs.

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

Example Request

GET /api/specification-groups/{id}

Example Response

{
    "id": 1,
    "name": "API Test",
    "fields": [
        {
            "name": "Field 1",
            "presets": ["A", "B", "C"],
            "default": "D",
            "prefix": "prefix",
            "suffix": "suffix",
            "media": [],
            "settings": {
                "test": {
                    "test": 123
                }
            }
        }
    ],
    "media": [],
    "settings": {
        "test": {
            "test": 456
        }
    }
}

Specification Groups

Create Specification Group Endpoint

This endpoint is only available if aerocargo/specifications is installed.

Structure

Specification Group

Name
Type
Description
Required
Version
id int The id of the specification group No >=0.1.0
name string The name for the specification group Yes >=0.1.0
sort int The sort for the specification group No >=1.0.0
fields array An array of Field objects No >=0.1.0
media array An array of Media objects No >=0.3.2
settings object A Settings object with grouped key-value pairs No >=1.0.0

Field

Name
Type
Description
Required
Version
name string The name of the field Yes >=0.1.0
presets array An array of strings to use as preset options No >=0.1.0
default string The default value for the field, note: _p:0 means the first preset Yes >=0.1.0
prefix string The prefix for the field No >=0.1.0
suffix string The suffix for the field No >=0.1.0
sort int The sort for the field No >=1.0.0
media array An array of Media objects No >=1.0.0
settings object A Settings object with grouped key-value pairs No >=1.0.0

Media

Name
Type
Description
Required
id int The id of the media *
source string The source of the media, e.g. test.png *

* At least one must be present.

Settings

Settings are grouped as key-value pairs.

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

Example Request

POST /api/specification-groups/
{
    "name": "API Test",
    "fields": [
        {
            "name": "Field 1",
            "presets": ["A", "B", "C"],
            "default": "D",
            "prefix": "prefix",
            "suffix": "suffix",
            "media": [
                {
                    "id": 1
                }
            ],
            "settings": {
                "test": {
                    "test": "123"
                }
            }
        }
    ],
    "media": [
        {
            "id": 1
        }
    ],
    "settings": {
        "test": {
            "test": "456"
        }
    }
}

Example Response

{
    "specificationGroup": {
        "id": 1
    }
}

Specification Groups

Update Specification Group Endpoint

This endpoint is only available if aerocargo/specifications is installed.

Structure

Specification Group

Name
Type
Description
Required
Version
id int The id of the specification group No >=0.1.0
name string The name for the specification group No >=0.1.0
sort int The sort for the specification group No >=1.0.0
fields array An array of Field objects No >=0.1.0
media array An array of Media objects No >=0.3.2
settings object A Settings object with grouped key-value pairs No >=1.0.0

Field

Name
Type
Description
Required
Version
name string The name of the field Yes >=0.1.0
presets array An array of strings to use as preset options No >=0.1.0
default string The default value for the field, note: _p:0 means the first preset Yes >=0.1.0
prefix string The prefix for the field No >=0.1.0
suffix string The suffix for the field No >=0.1.0
sort int The sort for the field No >=1.0.0
media array An array of Media objects No >=1.0.0
settings object A Settings object with grouped key-value pairs No >=1.0.0

Media

Name
Type
Description
Required
id int The id of the media *
source string The source of the media, e.g. test.png *

* At least one must be present.

Settings

Settings are grouped as key-value pairs.

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

Example Request

PUT /api/specification-groups/{id}
{
    "name": "API Test",
    "fields": [
        {
            "id": 1,
            "name": "Field 1 Updated",
            "presets": ["D", "E", "F"],
            "default": "G"
        }
    ]
}

Example Response

{
    "specificationGroup": {
        "id": 1
    }
}

Upsell Groups

Upsell Groups

Upsell Group Index Endpoint

This endpoint is only available if aerocargo/upsells is installed.

Structure

See View Upsell Group Endpoint for the structure of the upsell group payload inside the data array.

Example Request

GET /api/upsell-groups?per_page=2

Example Response

{
    "current_page": 1,
    "data": [
        //...
    ],
    "first_page_url": "http://aero.test/api/upsell-groups?page=1",
    "from": 1,
    "last_page": 3,
    "last_page_url": "http://aero.test/api/upsell-groups?page=3",
    "next_page_url": "http://aero.test/api/upsell-groups?page=2",
    "path": "http://aero.test/api/upsell-groups",
    "per_page": 2,
    "prev_page_url": null,
    "to": 2,
    "total": 5
}

See View Upsell Group Endpoint for the structure of the upsell group payload inside the data array.

Upsell Groups

View Upsell Group Endpoint

This endpoint is only available if aerocargo/upsells is installed.

Structure

Name
Type
Description
key string The key of the upsell group
name string The name for the upsell group

Example Request

GET /api/upsell-groups/{key}

Example Response

{
    "key": "api-test",
    "name": "API Test"
}
Upsell Groups

Create Upsell Group Endpoint

This endpoint is only available if aerocargo/upsells is installed.

Structure

Name
Type
Description
Required
key int The key of the upsell group Yes
name string The name for the upsell group Yes

Example Request

POST /api/upsell-groups/
{
    "key": "api-test",
    "name": "API Test",
}

Example Response

{
    "upsellGroup": {
        "key": "api-test"
    }
}
Upsell Groups

Update Upsell Group Endpoint

This endpoint is only available if aerocargo/upsells is installed.

Structure

Name
Type
Description
Required
key int The key of the upsell group No
name string The name for the upsell group No

Example Request

PUT /api/upsell-groups/{key}
{
    "name": "API Test Updated",
}

Example Response

{
    "upsellGroup": {
        "key": "api-test"
    }
}

Listing Collection Groups

Listing Collection Groups

Listing Collection Group Index

This endpoint is only available if aerocargo/listing-collections is installed.

Structure

See View Listing Collection Group Endpoint for the structure of the listing collection group payload inside the data array.

Example Request

GET /api/listing-collection-groups?per_page=2

Example Response

{
    "current_page": 1,
    "data": [
        //...
    ],
    "first_page_url": "http://aero.test/api/listing-collection-groups?page=1",
    "from": 1,
    "last_page": 3,
    "last_page_url": "http://aero.test/api/listing-collection-groups?page=3",
    "next_page_url": "http://aero.test/api/listing-collection-groups?page=2",
    "path": "http://aero.test/api/listing-collection-groups",
    "per_page": 2,
    "prev_page_url": null,
    "to": 2,
    "total": 5
}

Listing Collection Groups

View Listing Collection Group Endpoint

This endpoint is only available if aerocargo/listing-collections is installed.

Structure

Listing Collection Group

Name
Type
Description
key string The key of the listing collection group
name string The name for the listing collection group
listings array An array of Listing objects

Listing

Name
Type
Description
id int The id of the listing
product_id int The id of the product linked to the listing
sort int The sort of the listing within the group

Example Request

GET /api/listing-collection-groups/{key}

Example Response

{
    "key": "api",
    "name": "API Test",
    "listings": [
        {
            "id": 1,
            "product_id": 1
        }
    ]
}

Listing Collection Groups

Create Listing Collection Group Endpoint

This endpoint is only available if aerocargo/listing-collections is installed.

Structure

Listing Collection Group

Name
Type
Description
Required
key string The key of the listing collection group Yes
name string The name for the listing collection group Yes
listings array An array of Listing objects  No

Listing

Name
Type
Description
Required
id int The id of the listing Conditional *
variant_id int The id of the variant (of the listing) Conditional *
sku string The SKU of the variant (of the listing) Conditional *
product_id int The id of the product (of the listing) Conditional *
model string The model of the product (of the listing) Conditional *

* At least one must be present, resolved in the order they are listed top-down.

Example Request

POST /api/listing-collection-groups/
{
    "key": "api",
    "name": "API Test",
    "listings": [
        {
          "id": 1
        }
    ]
}

Example Response

{
    "listingCollectionGroup": {
        "key": "api"
    }
}

Listing Collection Groups

Update Listing Collection Group Endpoint

This endpoint is only available if aerocargo/listing-collections is installed.

Structure

Listing Collection Group

Name
Type
Description
Required
key string The key of the listing collection group No
name string The name for the listing collection group No
listings array An array of Listing objects  No

Listing

Name
Type
Description
Required
id int The id of the listing Conditional *
variant_id int The id of the variant (of the listing) Conditional *
sku string The SKU of the variant (of the listing) Conditional *
product_id int The id of the product (of the listing) Conditional *
model string The model of the product (of the listing) Conditional *

* At least one must be present, resolved in the order they are listed top-down.

Example Request

PUT /api/listing-collection-groups/{key}
{
    "name": "API Test Updated",
    "listings": [
        {
            "id": 2
        }
    ]
}

Example Response

{
    "listingCollectionGroup": {
        "key": "api"
    }
}

Stock

Stock

Update Stock Endpoint

Structure

Name
Type
Description

*.sku string The SKU of the variant Yes
*.stock_level int The new stock_level of the variant Yes
*.stock_action string The stock action (e.g., set, add, remove & multiply). Defaults to set No

Example Request

POST /api/stock

Example Response

[
    {
        "sku": "ABC123",
        "stock_level": 23
    },
    {
        "sku": "DEF456",
        "stock_level": 3,
        "stock_action": "add"
    },
    {
        "sku": "GHI789",
        "stock_level": 1,
        "stock_action": "remove"
    },
    {
        "sku": "JKL101",
        "stock_level": 2,
        "stock_action": "multiply"
    }
]

Size Guides

Size Guides

Size Guide Index Endpoint

This endpoint is only available if aerocargo/size-guides is installed.

Structure

See View Size Guide Endpoint for the structure of the size guide payload inside the data array.

Example Request

GET /api/size-guides?per_page=2

Example Response

{
    "current_page": 1,
    "data": [
        //...
    ],
    "first_page_url": "http://aero.test/api/size-guides?page=1",
    "from": 1,
    "last_page": 3,
    "last_page_url": "http://aero.test/api/size-guides?page=3",
    "next_page_url": "http://aero.test/api/size-guides?page=2",
    "path": "http://aero.test/api/size-guides",
    "per_page": 2,
    "prev_page_url": null,
    "to": 2,
    "total": 5
}

Size Guides

View Size Guide Endpoint

This endpoint is only available if aerocargo/size-guides is installed.

Structure

Size Guide

Name
Type
Description
Version
id int The id of the size guide >=0.1.0
type
string The type of the size guide >=2.0.0
name string The name for the size guide >=0.1.0
heading
string The heading of the size guide >=0.1.0
view
string The view of the size guide >=0.1.0
content
string The content of the size guide >=2.0.0
small_image object The Small Image >=0.1.0
medium_image object The Medium Image >=0.1.0
large_image object The Large Image >=0.1.0
products
array An array of Product objects >=0.1.0
manufacturers
array An array of Manufacturer objects >=0.1.0
categories
array An array of Category objects >=0.1.0
tags
array An array of Tag objects >=0.1.0
groups
array An array of Group objects >=0.1.0

Group

Name
Type
Description
Version
id int The id of the size guide group >=0.1.0
heading
string The heading of the size guide >=0.1.0
sections
array An array of Section objects >=0.1.0

Section

Name
Type
Description
Version
id int The id of the size guide section >=0.1.0
heading
string The heading of the size guide section >=0.1.0
content
string The content of the size guide section >=0.1.0

Product

Name
Type
Description
Version
id int The id of the product >=0.1.0
model
string The model of the product >=0.1.0
name string The name of the product >=0.1.0

Manufacturer

Name
Type
Description
Version
id int The id of the manufacturer >=0.1.0
name string The name of the manufacturer >=0.1.0

Category

Name
Type
Description
Version
id int The id of the category >=0.1.0
name string The name of the category >=0.1.0
breadcrumb
string The breadcrumb for the category >=0.1.0

Tag

Name
Type
Description
Version
id int The id of the tag >=0.1.0
name string The name of the tag (e.g., Small or Red) >=0.1.0
group object The tag group, see Tag Group >=0.1.0

Tag Group

Name
Type
Description
Version
id int The id of the tag group >=0.1.0
name string The name of the tag group (e.g., Size or Colour) >=0.1.0

Image

Name
Type
Description
Version
url string The url of the image >=0.1.0

Example Request

GET /api/size-guides/{id}

Example Response

Example - Version 1.x
{
    "id": 1,
    "name": "API Test",
    "heading": "Test",
    "view": "test",
    "small_image": {
        "url": null
    },
    "medium_image": {
        "url": null
    },
    "large_image": {
        "url": null
    },
    "products": [],
    "manufacturers": [
        {
            "id": 1,
            "name": "Burberry"
        }
    ],
    "categories": [
        {
            "id": 1,
            "name": "Coats",
            "breadcrumb": "Mens » Coats"
        }
    ],
    "tags": [
        {
            "id": 1,
            "name": "Blue",
            "group": {
                "id": 1,
                "name": "Colour"
            }
        }
    ],
    "groups": [
        {
            "id": 1,
            "heading": "Group Heading",
            "sections": [
                {
                    "id": 1,
                    "heading": "Section Heading",
                    "content": "Section Content"
                }
            ]
        }
    ]
}
Example - Version 2.x
{
    "id": 1,
    "type": "rich_text",
    "name": "API Test",
    "heading": "Test",
    "view": "test",
    "content": "Section Content",
    "small_image": {
        "url": null
    },
    "medium_image": {
        "url": null
    },
    "large_image": {
        "url": null
    },
    "products": [],
    "manufacturers": [
        {
            "id": 1,
            "name": "Burberry"
        }
    ],
    "categories": [
        {
            "id": 1,
            "name": "Coats",
            "breadcrumb": "Mens » Coats"
        }
    ],
    "tags": [
        {
            "id": 1,
            "name": "Blue",
            "group": {
                "id": 1,
                "name": "Colour"
            }
        }
    ],
    "groups": []
}

Size Guides

Create Size Guide Endpoint

This endpoint is only available if aerocargo/size-guides is installed.

Structure

Size Guide

Name
Type
Description
Required
Version
id int The id of the size guide No >=0.1.0
type
string The type of the size guide No >=2.0.0
name string The name for the size guide Yes >=0.1.0
heading
string The heading of the size guide Yes >=0.1.0
view
string The view of the size guide No >=0.1.0
content
string The content of the size guide If type is rich_text >=2.0.0
small_image object The Small Image No >=0.1.0
medium_image object The Medium Image No >=0.1.0
large_image object The Large Image No >=0.1.0
products
array An array of product ids or models Conditional * >=0.1.0
manufacturers
array An array of manufacturer ids or names Conditional * >=0.1.0
categories
array An array of category ids or breadcrumbs Conditional * >=0.1.0
tags
array An array of tag ids or names Conditional * >=0.1.0
groups
array An array of Group objects No >=0.1.0

Valid Types: image, rich_text & legacy (resolved from payload structure if not provided).

* Either products is required or manufacturers and/or categories and/or tags are.

Group

Name
Type
Description
Required
Version
id int The id of the size guide group No >=0.1.0
heading
string The heading of the size guide Yes >=0.1.0
sections
array An array of Section objects No >=0.1.0

Section

Name
Type
Description
Required
Version
id int The id of the size guide section No >=0.1.0
heading
string The heading of the size guide section Yes >=0.1.0
content
string The content of the size guide section Yes >=0.1.0

Image

Name
Type
Description
Required
Version
src string The source url of the image Yes >=0.1.0

Example Request

Example - Version 1.x
POST /api/size-guides/
{
    "name": "API Test",
    "heading": "Test",
    "view": "test",
    "products": [],
    "manufacturers": [
        "Burberry"
    ],
    "categories": [
        "Mens > Coats"
    ],
    "tags": [
        "Blue"
    ],
    "groups": [
        {
            "heading": "Group Heading",
            "sections": [
                {
                    "heading": "Section Heading",
                    "content": "Section Content"
                }
            ]
        }
    ]
}
Example - Version 2.x
POST /api/size-guides/
{
    "name": "API Test",
    "heading": "Test",
    "view": "test",
    "content": "Section Content",
    "products": [],
    "manufacturers": [
        "Burberry"
    ],
    "categories": [
        "Mens > Coats"
    ],
    "tags": [
        "Blue"
    ]
}

Because content is present, the type is automatically resolved as rich_text.

Example Response

{
    "sizeGuide": {
        "id": 1
    }
}

Size Guides

Update Size Guide Endpoint

This endpoint is only available if aerocargo/size-guides is installed.

Structure

Size Guide

Name
Type
Description
Required
Version
type
string The type of the size guide No >=2.0.0
name string The name for the size guide No >=0.1.0
heading
string The heading of the size guide No >=0.1.0
view
string The view of the size guide No >=0.1.0
content
string The content of the size guide No >=2.0.0
small_image object The Small Image No >=0.1.0
medium_image object The Medium Image No >=0.1.0
large_image object The Large Image No >=0.1.0
products
array An array of product ids or models No >=0.1.0
manufacturers
array An array of manufacturer ids or names No >=0.1.0
categories
array An array of category ids or breadcrumbs No >=0.1.0
tags
array An array of tag ids or names No >=0.1.0
groups
array An array of Group objects No >=0.1.0

Valid Types: image, rich_text & legacy (resolved from payload structure if not provided).

Group

Name
Type
Description
Required
Version
id int The id of the size guide group No >=0.1.0
heading
string The heading of the size guide No >=0.1.0
sections
array An array of Section objects No >=0.1.0

Section

Name
Type
Description
Required
Version
id int The id of the size guide section No >=0.1.0
heading
string The heading of the size guide section No >=0.1.0
content
string The content of the size guide section No >=0.1.0

Image

Name
Type
Description
Required
Version
src string The source url of the image Yes >=0.1.0

Example Request

Example - Version 1.x
PUT /api/size-guides/{id}
{
    "name": "API Test",
    "heading": "Test",
    "view": "test",
    "products": [],
    "manufacturers": [
        "Burberry"
    ],
    "categories": [
        "Mens > Coats"
    ],
    "tags": [
        "Blue"
    ],
    "groups": [
        {
            "heading": "Group Heading",
            "sections": [
                {
                    "heading": "Section Heading",
                    "content": "Section Content"
                }
            ]
        }
    ]
}
Example - Version 2.x
PUT /api/size-guides/{id}
{
    "name": "API Test",
    "heading": "Test",
    "view": "test",
    "content": "Section Content"
    "products": [],
    "manufacturers": [
        "Burberry"
    ],
    "categories": [
        "Mens > Coats"
    ],
    "tags": [
        "Blue"
    ]
}

Example Response

{
    "sizeGuide": {
        "id": 1
    }
}