Documentation Index
Fetch the complete documentation index at: https://docs.foodsave.kz/llms.txt
Use this file to discover all available pages before exploring further.
Reviews API
Base path: /api/v1/reviews
Overview
Customer reviews are tied to completed orders and can be moderated by admins.
Only one review per order is allowed. Duplicate submissions are rejected.
POST /api/v1/reviews
Create a review after completing an order.
curl --request POST \
--url https://api.foodsave.kz/api/v1/reviews \
-H 'Authorization: Bearer $CUSTOMER_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"orderId":"o-1001","rating":5,"text":"Fresh and fast"}'
const response = await fetch('https://api.foodsave.kz/api/v1/reviews', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.CUSTOMER_TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ orderId: 'o-1001', rating: 5, text: 'Fresh and fast' })
})
console.log(await response.json())
import os
import requests
response = requests.post(
'https://api.foodsave.kz/api/v1/reviews',
headers={'Authorization': f"Bearer {os.environ['CUSTOMER_TOKEN']}"},
json={'orderId': 'o-1001', 'rating': 5, 'text': 'Fresh and fast'}
)
print(response.json())
{ "id":"r-1", "orderId":"o-1001", "rating":5, "status":"PUBLISHED" }
Errors
| Code | Meaning | How to fix |
|---|
| 400 | VALIDATION_ERROR | Rating must be between 1 and 5 |
| 409 | CONFLICT | Review for order already exists |
GET /api/v1/reviews/partners/{id}
List reviews for a partner.
[{ "id":"r-1", "rating":5, "text":"Fresh and fast" }]
PUT /api/v1/reviews/{id}
Update your own review before moderation finalizes it.
{ "id":"r-1", "status":"PENDING" }
PUT /api/v1/reviews/admin/{id}/moderate
Moderate a review.
{ "id":"r-1", "status":"APPROVED" }
GET /api/v1/reviews/partners/{id}/rating
Return aggregate rating for a partner.
{ "partnerId":"p-1", "avgRating":4.8, "reviewCount":152 }