API-н баримт бичиг
wallmarkets-ыг аппликейшнүүддээ нэгтгэ. Хүргэлт, буцаалт, бүтээгдэхүүн, супермаркетуудыг програмчлалын аргаар удирд.
API нь бета шатандаа байна. Төгсгөлийн цэгүүд болон хариу формат өөрчлөгдөж болно. Гэнэтийн өөрчлөлтөөс зайлсхийхийн тулд интеграцаа тодорхой API хувилбарт холбо.
Танилцуулга
wallmarkets API нь хүргэлт, буцаалт, бүтээгдэхүүн, супермаркет дансуудыг програмчлалын аргаар удирдах боломжийг олгоно. Бүх төгсгөлийн цэгүүд JSON буцаадаг бөгөөд API түлхүүрээр баталгаажуулах шаардлагатай.
Суурь URL
https://www.wallmarkets.store/api/v1
Хариултын формат
Хариу бүр статус талбар болон өгөгдлийн ачааллыг (эсвэл алдаа гарсан тохиолдолд алдааны объект) агуулна.
{
"status": "success",
"data": { ... }
}
Нэвтрэлт
Хүсэлт бүрийг Authorization толгой хэсэгт Bearer токен хэлбэрээр API түлхүүрээ оруулан баталгаажуул.
API түлхүүр үүсгэх
Дансны тохиргоо > API түлхүүрүүд хэсэгт түлхүүрүүд үүсгэ. Түлхүүр бүр дараахыг дэмждэг:
- Хүрээ: Нөөц тус бүрээр хандалтыг хязгаарлах (жишээ нь
deliveries:read,returns:write,products:read) - Хугацаа дуусах: Сонголттой дуусах огноо — хугацаа дууссан түлхүүрүүд автоматаар татгалзагдана
- Эргэлт: Түлхүүрийг эргүүлэх нь түлхүүрийн ID-г өөрчлөхгүйгээр шинэ нууц авах боломжийг олгоно
Нэвтрэлтийн толгой
Authorization: Bearer YOUR_API_KEY
Жишээ хүсэлт
curl -X GET \ https://www.wallmarkets.store/api/v1/deliveries \ -H 'Authorization: Bearer wm_live_abc123...'
Хурдны хязгаар
Хурдны хязгаарлалт нь үйлчилгээний тогтвортой байдлыг хамгаална. Хязгаарлалт нь төлөвлөгөөгөөр ялгаатай:
Төлөвлөгөөгөөр хязгаарлалт
| API төлөвлөгөө | Цагийн хүсэлтийн хязгаар | Минутын тэсрэлтийн хязгаар |
|---|---|---|
| Үнэгүй | 60 requests/hour | 10 requests/minute |
| Pro | 1,000 requests/hour | 60 requests/minute |
| Бизнес | 10,000 requests/hour | 300 requests/minute |
Хурдны хязгаарын толгой
Хариу бүр дараах толгой хэсгүүдийг агуулна:
X-RateLimit-Limit: Цагт хамгийн их хүсэлтX-RateLimit-Remaining: Одоогийн цонхонд үлдсэн хүсэлтүүдX-RateLimit-Reset: Цонх шинэчлэгдэх UTC эпох секунд
Хүргэлтийн API
Шаардлагатай хүрээ: deliveries:read / deliveries:write
Хүргэлтийн жагсаалт
/api/v1/deliveries
Баталгаажуулсан хэрэглэгчийн хүргэлтүүдийн хуудасласан жагсаалтыг буцаана.
# Query Parameters ?page=1&per_page=20&status=pending&date_from=2024-01-01&supermarket_id=5
Хүргэлт авах
/api/v1/deliveries/{delivery_id}
{
"id": 123,
"supermarket_name": "E-mart",
"subchain_name": "Sukhbaatar Branch",
"products": [
{"product_id": 8, "name": "Product A", "quantity": 10, "unit_price": 5000},
{"product_id": 15, "name": "Product B", "quantity": 5, "unit_price": 12000}
],
"total_value": 110000,
"delivery_date": "2024-10-15",
"status": "completed",
"created_at": "2024-10-01T10:30:00Z"
}
Хүргэлт үүсгэх
/api/v1/deliveries
{
"supermarket_id": 5,
"subchain_id": 12,
"products": [
{"product_id": 8, "quantity": 10},
{"product_id": 15, "quantity": 5}
],
"delivery_date": "2024-10-20",
"notes": "Urgent delivery"
}
Хүргэлтийн төлөв шинэчлэх
/api/v1/deliveries/{delivery_id}
{
"status": "completed"
}
Хүчинтэй шилжилтүүд: pending → in_transit → completed, эсвэл pending → cancelled.
Буцаалтын API
Шаардлагатай хүрээ: returns:read / returns:write
Буцаалтын жагсаалт
/api/v1/returns
Хуудасласан жагсаалтыг буцаана. Хүргэлт, супермаркет, шалтгаан эсвэл огнооны мужаар шүү.
# Query Parameters ?page=1&per_page=20&reason=damaged&delivery_id=123
Буцаалт үүсгэх
/api/v1/returns
{
"delivery_id": 123,
"product_id": 8,
"quantity": 3,
"reason": "damaged",
"return_date": "2024-10-18",
"description": "Products arrived damaged during transit"
}
Буцаалт авах
/api/v1/returns/{return_id}
{
"id": 42,
"delivery_id": 123,
"product_id": 8,
"product_name": "Product A",
"quantity": 3,
"reason": "damaged",
"description": "Products arrived damaged during transit",
"return_date": "2024-10-18",
"credit_amount": 15000,
"created_at": "2024-10-18T09:15:00Z"
}
Бүтээгдэхүүний API
Шаардлагатай хүрээ: products:read / products:write
Бүтээгдэхүүний жагсаалт
/api/v1/products
Баталгаажуулсан хэрэглэгчийн бүх бүтээгдэхүүнийг буцаана. Ангилалаар шүүх эсвэл нэрээр хайх.
# Query Parameters ?page=1&per_page=50&category=Dairy&search=milk
Бүтээгдэхүүн авах
/api/v1/products/{product_id}
{
"id": 8,
"sequential_id": "P-0008",
"name": "Whole Milk 1L",
"weight": 1.05,
"price": 5000,
"category": "Dairy",
"created_at": "2024-08-01T12:00:00Z"
}
Бүтээгдэхүүн үүсгэх
/api/v1/products
{
"name": "Whole Milk 1L",
"weight": 1.05,
"price": 5000,
"category": "Dairy"
}
Өвөрмөц sequential_id автоматаар оноогдоно.
Бүтээгдэхүүн шинэчлэх
/api/v1/products/{product_id}
{
"price": 5500
}
Зөвхөн оруулсан талбарууд шинэчлэгдэнэ. Түүхэн хүргэлтийн бүртгэлд нөлөөлөхгүй.
Супермаркетын API
Шаардлагатай хүрээ: supermarkets:read / supermarkets:write
Супермаркетын жагсаалт
/api/v1/supermarkets
[
{
"id": 5,
"name": "E-mart",
"branches": [
{"id": 12, "name": "Sukhbaatar Branch", "address": "..."},
{"id": 13, "name": "Bayangol Branch", "address": "..."}
]
}
]
Супермаркет авах
/api/v1/supermarkets/{supermarket_id}
Супермаркетийн дэлгэрэнгүй мэдээллийг бүх салбар, хүргэлтийн цонх, холбоо барих мэдээллийн хамт буцаана.
Супермаркет үүсгэх
/api/v1/supermarkets
{
"name": "E-mart",
"contact_email": "buyer@emart.mn",
"branches": [
{
"name": "Sukhbaatar Branch",
"address": "Peace Avenue 15, UB",
"delivery_window": "08:00-12:00"
}
]
}
Вебхукууд
Үйл явдал болоход бодит цагийн HTTP дуудлага хүлээн авахын тулд вебхукуудад бүртгүүл. 10 дараалсан хүргэлтийн алдааны дараа вебхукууд автоматаар идэвхгүй болно.
Үйл явдлын төрөл
| Вебхук үйл явдал | Дуудлагын утга |
|---|---|
| delivery.created | Шинэ хүргэлт үүсгэгдсэн |
| delivery.in_transit | Хүргэлт илгээгдсэн |
| delivery.completed | Хүргэлт дууссан гэж тэмдэглэгдсэн |
| delivery.cancelled | Хүргэлт цуцлагдсан |
| return.created | Шинэ буцаалт боловсруулагдсан |
| product.created | Шинэ бүтээгдэхүүн нэмэгдсэн |
| product.updated | Бүтээгдэхүүн өөрчлөгдсөн |
Вебхук ачааллын жишээ
{
"event": "delivery.completed",
"timestamp": "2024-10-15T14:30:00Z",
"data": {
"delivery_id": 123,
"supermarket_name": "E-mart",
"subchain_name": "Sukhbaatar Branch",
"total_value": 110000,
"completed_at": "2024-10-15T14:30:00Z"
}
}
Дахин оролдох бодлого
Амжилтгүй хүргэлтүүдийг экспоненциал бэкаффоор (1 мин, 5 мин, 30 мин) дахин оролдоно. 10 дараалсан алдааны дараа захиалга автоматаар идэвхгүй болно. Вебхук тохиргооноос дахин идэвхжүүл.
Алдаа боловсруулалт
HTTP статус кодууд
| HTTP код | Хариу төлөв | Хөгжүүлэгчийн утга |
|---|---|---|
| 200 | OK | Хүсэлт амжилттай |
| 201 | Created | Нөөц амжилттай үүсгэгдлээ |
| 400 | Bad Request | Буруу эсвэл дутуу параметрүүд |
| 401 | Unauthorized | API түлхүүр байхгүй, буруу эсвэл хугацаа нь дууссан |
| 403 | Forbidden | Түлхүүр нь энэ төгсгөлийн цэгт шаардлагатай хамрах хүрээгүй байна |
| 404 | Not Found | Нөөц байхгүй эсвэл танд хамаарахгүй |
| 429 | Too Many Requests | Хурдны хязгаар хэтэрсэн — X-RateLimit-Reset толгойг шалгана уу |
| 500 | Internal Server Error | Манай талд алдаа гарлаа — дахин оролдох эсвэл дэмжлэгт хандана уу |
Алдааны хариуны формат
{
"status": "error",
"error": {
"code": "validation_error",
"message": "delivery_date must be in the future",
"field": "delivery_date"
}
}
Эхлэхэд бэлэн үү?
API түлхүүрээ үүсгэж, wallmarkets-ыг өөрийн аппликейшнд нэгтгэж эхлээрэй.