সফল উত্তর
{
"ok": true,
"data": { ... },
"meta": { "page": 1, "per_page": 20, "total": 143 }
}সমস্ত ফ্রন্টএন্ড (ওয়েবসাইট, Admin Panel, POS, মোবাইল অ্যাপ এবং AI এজেন্ট) একই /api/v1 API ব্যবহার করে। কোনো ফ্রন্টএন্ড সরাসরি ডেটাবেসে যায় না।
{
"ok": true,
"data": { ... },
"meta": { "page": 1, "per_page": 20, "total": 143 }
}{
"ok": false,
"error": {
"code": "INSUFFICIENT_STOCK",
"message": "স্টক পর্যাপ্ত নয়",
"details": [{ "product_id": 12 }]
},
"requestId": "abc-123"
}সব টাকার মান পূর্ণসংখ্যা (poisha) হিসেবে সংরক্ষিত — কখনো দশমিক ভগ্নাংশ (float) নয়। আর পরিমাণ সংরক্ষিত হয় milli-unit হিসেবে। তাই ৳ ১২৫.৫০ = 12550 এবং ১.৫ কেজি = 1500 ।
// ভুল — float দিয়ে টাকা রাখা যাবে না 0.1 + 0.2 === 0.30000000000000004 // সঠিক — পূর্ণসংখ্যা (poisha) দিয়ে হিসাব 12550 /* poisha */ = ৳ 125.50
POS বা মোবাইল অ্যাপ offline অবস্থায় কাজ করলে প্রতিটি operation-এ একটি ইউনিক X-Client-Op-Id হেডার পাঠাবে। একই আইডি দ্বিতীয়বার এলে সার্ভার আগের উত্তরটাই ফিরিয়ে দেয় — কখনো দুবার বিক্রয় হবে না।
POST /api/v1/sales X-Client-Op-Id: 6f1c...a93 Content-Type: application/json // দ্বিতীয়বার একই অনুরোধ → // X-Idempotent-Replay: true + আগের ফলাফল
| Method | Path | বিবরণ | Auth |
|---|---|---|---|
| GET | /api/v1/health | সার্ভার, ডেটাবেস ও binding-এর অবস্থা | সবার জন্য |
| GET | /api/v1/health/live | Liveness probe | সবার জন্য |
| GET | /api/v1/health/ready | Readiness probe (ডেটাবেস) | সবার জন্য |
| GET | /api/v1/meta | ব্র্যান্ড, সীমা ও ফিচার মেটাডেটা | সবার জন্য |
আরও endpoint ধাপে ধাপে যুক্ত হবে — মুনির কালেকশন প্ল্যাটফর্মের প্রতিটি phase শেষ হলে এই তালিকা আপডেট হয়。