/order-reviews/{orderId}. ThecanReview on each order of the Orders reusable)./order-reviews/.{
"state": "Open",
"orderReview": {
"orderId": "Order Id",
"orderCode": "ORD00000027",
"state": "Open",
"reviewableFrom": "2026-01-08T00:00:00.0000000+00:00",
"reviewableUntil": "2026-02-07T00:00:00.0000000+00:00",
"moderationMode": "Manual",
"products": [
{
"productId": "Product Id",
"title": "Sample product title",
"mediaItem": {
"id": "Media Item Id",
"link": "https://example.com/media/sample.jpg",
"alt": "sample.jpg"
},
"link": "sample-product-alias",
"variantIds": ["Variant Id"],
"status": "Eligible",
"existingReview": null
},
{
"productId": "Product Id",
"title": "Sample product title",
"mediaItem": null,
"link": "sample-product-alias",
"variantIds": ["Variant Id"],
"status": "AlreadyReviewed",
"existingReview": {
"id": "Review Id",
"rating": 5,
"comment": "Sample text",
"status": "Pending",
"createdAt": "2026-01-10T00:00:00.0000000+00:00"
}
},
"..."
]
},
"name": "OrderReviews",
"view": "Default",
"section": "SectionA",
"settings": {
"id": "Component Id",
"section": "SectionA",
"type": "NoirOrderReviews",
"name": "OrderReviews",
"view": "Default",
"cssClass": "",
"header": ""
},
"translations": {
"title": "Review your order",
"notStarted": "Sample text",
"ended": "Sample text",
"notAvailable": "Sample text",
"...": "..."
}
}state: Open, NotStarted, Ended or NotAvailable.orderReviewstate is NotAvailable: the order has no review request, it belongs to another customerproducts is empty unless state is Open.moderationMode is Manual (a submitted review waits for the merchant) or AutoPublish (it isorderReview.products[]status: Eligible (can be reviewed), AlreadyReviewed (from this order or an earlier one),ProductUnavailable (no longer sold in the store) or NotInRequest.title, mediaItem and link are null when the product can no longer be shown.existingReview is the customer's review of the product, shown read-only.translations.*model.Settings.Idmodel.Settings.CssClassComponents/OrderReviews/Default.js exposes:<section x-data="orderreviewsdefault.initComponent()">GET /api/product-reviews/orders/{orderId} returns the same data as orderReview, or a 404 problemPOST /api/product-reviews/orders/{orderId}/reviews with{ "reviews": [{ "productId": "...", "rating": 5, "comment": "..." }] } reviews 1 to 100 products, onerating is 1 to 5. comment is optional plain text, at most 1,000 characters.200 with { "orderId": "...", "results": [{ "productId", "outcome", "reviewId", "status" }] }.outcome is Created, AlreadyReviewed, NotInRequest or ProductUnavailable. When the reviewstatus is Pending or Published.400 (invalid rating or comment, or a product sent twice), 401404 (the order can no longer be reviewed), 422 (the review period is closed;state is NotStarted or Ended) and 502 (temporarily unavailable).x-text or | escape, never asNotAvailable.Open (order number, review end date and products), NotStarted,Ended and NotAvailable.ProductUnavailable translation.--loading modifier class is applied.