Products (storefront API)
Storefront and customer routes of the products module. Send Accept-Language (or X-Locale from a browser) on every call; a customer route needs the session cookie.
GET /v1/products
Section titled “GET /v1/products”List active products
Parameters:
brandin query (string, optional).categoryIdin query (string, optional).idsin query (string, optional).isFeaturedin query (boolean, optional).maxPricein query (number, min 0, optional).minPricein query (number, min 0, optional).pagein query (number, min 1, optional).pageSizein query (number, min 1, max 100, optional).sortByin query (string, optional).specsin query (string, pattern/^[a-z0-9-]+:[a-z0-9-]+(,[a-z0-9-]+:[a-z0-9-]+)*$/, max length 1024, optional).tagsin query (string, pattern/^[a-z0-9-]+:[a-z0-9-]+(,[a-z0-9-]+:[a-z0-9-]+)*$/, max length 512, optional).
Responses:
200: Products retrieved.400: Invalid query parameters.
GET /v1/products/{slug}
Section titled “GET /v1/products/{slug}”Get product by slug
Parameters:
slugin path (string, required).
Responses:
200: Product retrieved.404: Product not found.
GET /v1/products/{slug}/questions
Section titled “GET /v1/products/{slug}/questions”List product questions
Parameters:
slugin path (string, required).pagein query (number, min 1, optional).pageSizein query (number, min 1, max 100, optional).
Responses:
200: Questions retrieved.404: Product not found.
POST /v1/products/{slug}/questions
Section titled “POST /v1/products/{slug}/questions”Create product question
Parameters:
slugin path (string, required).
Request body: CreateQuestionDto.
Responses:
201: Question created.400: Invalid input.401: Unauthorized.404: Product not found.
GET /v1/products/{slug}/reviews
Section titled “GET /v1/products/{slug}/reviews”List product reviews
Parameters:
slugin path (string, required).pagein query (number, min 1, optional).pageSizein query (number, min 1, max 100, optional).ratingin query (number, min 1, max 5, optional).
Responses:
200: Reviews retrieved.404: Product not found.
POST /v1/products/{slug}/reviews
Section titled “POST /v1/products/{slug}/reviews”Create product review
Parameters:
slugin path (string, required).
Request body: CreateReviewDto.
Responses:
201: Review created.400: Invalid input.401: Unauthorized.404: Product not found.
GET /v1/products/{slug}/reviews/eligibility
Section titled “GET /v1/products/{slug}/reviews/eligibility”Whether the caller may review this product
Parameters:
slugin path (string, required).
Responses:
200: Eligibility resolved.401: Authentication required.404: Product not found.
GET /v1/products/{slug}/reviews/mine
Section titled “GET /v1/products/{slug}/reviews/mine”Get the caller’s own review for a product
Parameters:
slugin path (string, required).
Responses:
200: Own review retrieved (null when none).401: Authentication required.404: Product not found.
GET /v1/products/{slug}/reviews/summary
Section titled “GET /v1/products/{slug}/reviews/summary”Get review summary
Parameters:
slugin path (string, required).
Responses:
200: Summary retrieved.404: Product not found.
GET /v1/products/brands
Section titled “GET /v1/products/brands”List brand facets for the catalogue
Parameters:
categoryIdin query (string, max length 64, optional).
Responses:
200: Brand facets retrieved.400: Invalid query parameters.
GET /v1/products/spec-facets
Section titled “GET /v1/products/spec-facets”List filterable specification facets
Responses:
200: Facets retrieved.
Schemas
Section titled “Schemas”CreateQuestionDto
Section titled “CreateQuestionDto”question(string, max length 1000, required).
CreateReviewDto
Section titled “CreateReviewDto”rating(number, min 1, max 5, required).title(string, max length 200, optional).body(string, max length 5000, required).assetIds(array of string, optional).