Tài liệu API người bán
REST API cho phép người bán tự động đẩy sản phẩm lên MMOP2P. Mỗi tài khoản người bán được cấp 1 API key (yêu cầu trong Tài khoản › API bán hàng, quản trị viên duyệt cấp phép).
Base URL
https://mmop2p.com
Xác thực
Gửi API key trong header Authorization dạng Bearer. Khóa chỉ hiển thị một lần khi tạo — hãy lưu lại; mất thì tạo lại khóa.
Authorization: Bearer YOUR_API_KEY
Giới hạn tần suất
Tối đa 50 request/phút cho mỗi API key. Vượt giới hạn trả mã 429.
Vòng đời & chế độ đăng
- Người bán yêu cầu cấp key trong trang tài khoản → nhận khóa (hiện 1 lần).
- Quản trị viên duyệt cấp phép key và chọn chế độ đăng cho key đó:
- • Đăng ngay: sản phẩm hiển thị công khai ngay (khi có kho).
- • Chờ duyệt: sản phẩm vào hàng chờ, admin duyệt từng SP mới hiển thị.
- Kiểm tra chế độ hiện tại của key qua
GET /api/seller/me.
Endpoints
| Method | Path | Mô tả |
|---|---|---|
| POST | /api/seller/products | Đẩy 1 sản phẩm. |
| GET | /api/seller/products | Danh sách SP đã đăng + trạng thái duyệt. |
| GET | /api/seller/categories | Danh mục hợp lệ để đăng. |
| GET | /api/seller/me | Kiểm tra key + chế độ đăng. |
POST /api/seller/products
Các trường trong body JSON:
| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
| name | string | Bắt buộc | Tên sản phẩm (≤ 200 ký tự). |
| categorySlug | string | Bắt buộc | Slug danh mục có sẵn (lấy qua GET /categories). KHÔNG tạo danh mục mới. |
| price | number | Bắt buộc | Giá bán (VND, > 0). |
| description | string | Tùy chọn | Mô tả (≤ 5000 ký tự). |
| oldPrice | number | Tùy chọn | Giá gạch (hiển thị giảm giá). |
| warrantyDays | number | Tùy chọn | Số ngày bảo hành (mặc định 1). |
| imageUrl | string | Tùy chọn | Link ảnh http/https CÓ SẴN. Hệ thống tự tải & lưu; không upload file. Nếu có mà tải lỗi sẽ báo lỗi. |
| stock | string[] | Tùy chọn | Mảng dòng credential để giao (mỗi phần tử = 1 đơn vị, tối đa 2000). Được mã hóa khi lưu; không xuất hiện trong log. |
Ví dụ (curl):
curl -X POST https://mmop2p.com/api/seller/products \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Tài khoản Netflix Premium 1 tháng",
"categorySlug": "netflix",
"price": 59000,
"oldPrice": 89000,
"warrantyDays": 30,
"description": "Xem 4K UHD, bảo hành đăng nhập.",
"imageUrl": "https://cdn.example.com/netflix.png",
"stock": ["user1@mail.com|pass1", "user2@mail.com|pass2"]
}'Phản hồi thành công (201):
{
"ok": true,
"data": {
"id": "b1a2...",
"slug": "tai-khoan-netflix-premium-1-thang",
"status": "approved",
"stockAdded": 2
}
}GET /api/seller/products
Liệt kê sản phẩm bạn đã đăng (mới nhất trước) kèm trạng thái duyệt và tồn kho. Tham số: limit (mặc định 50, tối đa 100), offset.
curl "https://mmop2p.com/api/seller/products?limit=20&offset=0" -H "Authorization: Bearer YOUR_API_KEY"
{
"ok": true,
"data": {
"products": [
{
"listingId": "…", "slug": "netflix-...", "productId": "…",
"name": "Tài khoản Netflix Premium 1 tháng", "categorySlug": "netflix",
"price": 59000, "oldPrice": 89000, "warrantyDays": 30,
"approvalStatus": "approved",
"listingStatus": "active",
"stock": 12,
"imageUrl": "/api/img/logos/….webp",
"createdAt": "2026-08-21T…"
}
],
"total": 137, "limit": 20, "offset": 0
}
}GET /api/seller/categories
curl https://mmop2p.com/api/seller/categories -H "Authorization: Bearer YOUR_API_KEY"
{ "ok": true, "data": [ { "slug": "netflix", "name": "Netflix" }, ... ] }GET /api/seller/me
{ "ok": true, "data": { "sellerId": "...", "status": "approved", "autoPublish": true, "publishMode": "auto", "rateLimit": "50/min" } }Mã lỗi
| HTTP | Khi nào |
|---|---|
| 400 | Body JSON sai / thiếu trường bắt buộc / danh mục không hợp lệ / ảnh tải lỗi. |
| 401 | Thiếu hoặc sai API key (header Authorization). |
| 403 | API key chưa được duyệt / đang bị tắt / gian hàng bị khóa bán. |
| 429 | Vượt 50 request/phút. |
| 500 | Lỗi máy chủ. |
Mọi phản hồi lỗi có dạng { "ok": false, "error": "..." }.
Lưu ý
- Không hỗ trợ tạo danh mục mới — chỉ dùng slug có sẵn.
- Không upload file ảnh — chỉ truyền
imageUrl(link công khai http/https, ≤ 5MB, định dạng ảnh). - Mỗi sản phẩm 1 ảnh bìa.
- Mọi call đều được ghi log; credential trong
stockkhông bao giờ lưu vào log.