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.
| 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
- Keys generally match the attribute name on their respective models.
- Exception: Attributes ending in "_code" should omit the suffix when passed to the API, e.g.
currency_code => currency
Relationship Conventions
- Nested data should use a snake_case version of the relationship method name where present, e.g.:
shippingMethod => shipping_method
Price Conventions
- Prices retrieved from the API are mostly in the currency's smallest unit, e.g.
1000 = 10 GBP
- Prices should generally be provided in the currency’s standard unit, e.g.
10 = 10 GBP (unless otherwise stated)
- Prices should generally be passed as an object, e.g.:
{
"price": {
"amount": 400, // Excluding tax
"tax": 80
}
}
Exception: Some endpoints support passing a single tax-inclusive value:
{
"price": 480 // Including tax
}
See the relevant endpoint docs to see if this is supported for an endpoint
Date Conventions
- Dates must be Carbon-parseable, supported formats include:
- 2023-09-01T09:29:41.000000Z
- 2023-09-01 09:29:41
- 2023-09-01 (defaults to midnight if no time is provided)
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
- Index endpoints support a scope parameter, which is a comma-separated list of scopes.
- Supported scopes are endpoint-specific and documented in endpoint-specific example docs.
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) |
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 |
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.
- Use "_" for ungrouped settings.
- Each group contains its own object of 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 |
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.
- Use "_" for ungrouped settings.
- Each group contains its own object of 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.
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.
- Use "_" for ungrouped settings.
- Each group contains its own object of 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.
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.
- Use "_" for ungrouped settings.
- Each group contains its own object of 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.
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.
- Use "_" for ungrouped settings.
- Each group contains its own object of 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.
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.
- Use "_" for ungrouped settings.
- Each group contains its own object of 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.
- Use "_" for ungrouped settings.
- Each group contains its own object of 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.
- Use "_" for ungrouped settings.
- Each group contains its own object of 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.
- Use "_" for ungrouped settings.
- Each group contains its own object of 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.
- Use "_" for ungrouped settings.
- Each group contains its own object of 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.
- Use "_" for ungrouped settings.
- Each group contains its own object of 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.
- Use "_" for ungrouped settings.
- Each group contains its own object of 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.
- Use "_" for ungrouped settings.
- Each group contains its own object of 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.
- Use "_" for ungrouped settings.
- Each group contains its own object of 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 |
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.
- Use "_" for ungrouped settings.
- Each group contains its own object of 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 |
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.
- Use "_" for ungrouped settings.
- Each group contains its own object of 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 |
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.
- Use "_" for ungrouped settings.
- Each group contains its own object of 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
}
}