Orders Endpoint
https://orderrepo.com/api/orders/track
Integration Guide
Bu sahifada buyurtma yuborish, buyurtmalar va ularning statuslarini olish hamda event yuborish jarayoni berilgan. Bu yerda loyiha sozlamalari, domenlar, kalitlar, so'rov strukturalari, misollar va xatolar diagnostikasi bor.
Orders Endpoint
https://orderrepo.com/api/orders/track
Order Update Endpoint
https://orderrepo.com/api/orders/update
Order Status Endpoint
https://orderrepo.com/api/external/orders
Events Endpoint
https://orderrepo.com/api/events/track
API so'rovlari uchun quyidagi header'larni yuboring.
Content-Type: application/json X-API-KEY: <your_api_key>
Domen tekshiruvi Origin header orqali qilinadi. Domen loyihada qo'shilgan va active bo'lishi kerak.
Muhim: agar so'rov brauzerdan tashqaridan yuborilsa (masalan, server skript), Origin header'ni qo'lda yuboring, aks holda API 403 Invalid Origin header qaytaradi.
Endpoint: POST https://orderrepo.com/api/orders/track
Mavjud buyurtma statusi yoki maʼlumotlarini yangilash uchun alohida endpointdan foydalaning: POST https://orderrepo.com/api/orders/update
| Maydon | Turi | Majburiy | Tavsif |
|---|---|---|---|
id |
string | Ha | Loyiha ichidagi noyob buyurtma ID (dublikat qabul qilinmaydi). |
total |
integer | Ha | Buyurtma summasi minor units ko‘rinishidagi butun son. |
currency |
string | Yo'q | ISO 4217 valuta kodi. Standart qiymat RUB. |
phone |
string | Yo'q | Mijoz telefoni. |
email |
Yo'q | Mijoz emaili (to'g'ri format). | |
username |
string | Tavsiya etiladi | Mijoz ismi/logini. |
products |
array | Yo'q | Buyurtma tovarlari ro'yxati. |
products[].name |
string | Ha (products bo'lsa) | Tovar nomi. |
products[].price |
integer | Ha (products bo'lsa) | Bitta tovar narxi. |
products[].count |
integer | Ha (products bo'lsa) | Tovar soni. |
products[].image |
url | Ha (products bo'lsa) | Tovar rasmi uchun to'liq URL. |
data |
array | Yo'q | Buyurtma uchun qo'shimcha ma'lumotlar: { name, value } obyektlari massivi. |
data[].name |
string | Ha (data bo'lsa) | Qo'shimcha maydon nomi, masalan "Telefon". |
data[].value |
string | Ha (data bo'lsa) | Qo'shimcha maydon qiymati, masalan "+998888214888". |
Fetch misoli (brauzer)
await fetch('https://orderrepo.com/api/orders/track', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-KEY': 'YOUR_API_KEY'
},
body: JSON.stringify({
id: 'order-100234',
total: 99000,
currency: 'RUB',
username: 'john_doe',
email: 'john@example.com',
phone: '+998901112233',
data: [
{ name: 'Имя', value: 'John Doe' },
{ name: 'Телефон', value: '+998901112233' }
],
products: [
{
name: 'Sneakers X',
price: 99000,
count: 1,
image: 'https://example.com/images/sneakers-x.jpg'
}
]
})
});
cURL misoli (server)
curl -X POST 'https://orderrepo.com/api/orders/track' \\
-H 'Content-Type: application/json' \\
-H 'X-API-KEY: YOUR_API_KEY' \\
-H 'Origin: https://example.com' \\
-d '{
"id": "order-100234",
"total": 99000,
"currency": "RUB",
"username": "john_doe",
"email": "john@example.com",
"phone": "+998901112233",
"data": [
{ "name": "Имя", "value": "John Doe" },
{ "name": "Телефон", "value": "+998901112233" }
],
"products": [
{
"name": "Sneakers X",
"price": 99000,
"count": 1,
"image": "https://example.com/images/sneakers-x.jpg"
}
]
}'
API key orqali yaratilgan buyurtmalarni olish va ularning joriy statusini tekshirish uchun bu endpoint'lardan server yoki integratsiya servisida foydalaning.
Endpoint: GET https://orderrepo.com/api/external/orders
Endpoint: GET https://orderrepo.com/api/external/orders/{external_id}
API key har bir javobni bitta loyiha bilan cheklaydi. Kalit boshqa loyiha yoki workspace buyurtmalarini o'qiy olmaydi. Bu GET endpoint'lar uchun Origin header talab qilinmaydi.
| Maydon | Turi | Majburiy | Tavsif |
|---|---|---|---|
X-API-KEY |
header | Ha | Loyihaning active API key qiymati. |
status |
query string | Yo'q | Buyurtma statusi bo'yicha filter: new, processing, done yoki cancelled. |
per_page |
query integer | Yo'q | Bir sahifadagi buyurtmalar soni, 1 dan 100 gacha. Standart qiymat 50. |
page |
query integer | Yo'q | Ro'yxat javobi uchun sahifa raqami. |
external_id |
path string | Bitta buyurtma uchun ha | POST /api/orders/track endpoint'iga yuborilgan o'sha id. |
Buyurtmalar ro'yxati
curl 'https://orderrepo.com/api/external/orders?status=done&per_page=50' \\ -H 'X-API-KEY: YOUR_API_KEY'
external_id bo'yicha bitta buyurtma
curl 'https://orderrepo.com/api/external/orders/order-100234' \\ -H 'X-API-KEY: YOUR_API_KEY'
Javob misoli
{
"data": {
"external_id": "order-100234",
"status": "done",
"total": "99000",
"currency": "RUB",
"email": "john@example.com",
"phone": "+998901112233",
"created_at": "2026-05-04T12:00:00+00:00",
"updated_at": "2026-05-04T12:30:00+00:00",
"closed_at": "2026-05-04T12:30:00+00:00"
}
}
Endpoint: POST https://orderrepo.com/api/events/track
Event faqat API key to'g'ri bo'lsa, domen ruxsat etilgan bo'lsa, event key loyihada mavjud bo'lsa va event active bo'lsa qabul qilinadi.
| Maydon | Turi | Majburiy | Tavsif |
|---|---|---|---|
event |
string | Ha | Events bo'limidagi event key (masalan: cfsdfsfds). |
data |
array | Ha | Obyektlar massivi, masalan [{"name":"Ism","value":"Ruslan Garapov"}]. |
Fetch misoli (brauzer)
await fetch('https://orderrepo.com/api/events/track', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-KEY': 'YOUR_API_KEY'
},
body: JSON.stringify({
event: 'cfsdfsfds',
data: [
{ name: 'Имя', value: 'Ruslan Garapov' },
{ name: 'Телефон', value: '+998888214888' }
]
})
});
cURL misoli (server)
curl -X POST 'https://orderrepo.com/api/events/track' \\
-H 'Content-Type: application/json' \\
-H 'X-API-KEY: YOUR_API_KEY' \\
-H 'Origin: https://example.com' \\
-d '{
"event": "cfsdfsfds",
"data": [
{ "name": "Имя", "value": "Ruslan Garapov" },
{ "name": "Телефон", "value": "+998888214888" }
]
}'
Ushbu helper'ni frontend kodga qo'shib, orders/events yuborishni bitta joydan boshqaring.
const OR_API_BASE = 'https://orderrepo.com';
const OR_API_KEY = 'YOUR_API_KEY';
async function sendOrder(payload) {
return sendToOrderReport('/api/orders/track', payload);
}
async function sendEvent(payload) {
return sendToOrderReport('/api/events/track', payload);
}
async function sendToOrderReport(path, payload) {
const res = await fetch(`${OR_API_BASE}${path}`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-KEY': OR_API_KEY
},
body: JSON.stringify(payload)
});
const body = await res.json().catch(() => ({}));
if (!res.ok) {
throw new Error(`OrderReport API error: ${res.status} ${body.message || 'Unknown error'}`);
}
return body;
}
// Example:
// await sendOrder({
// id: 'order-1',
// total: 50000,
// currency: 'RUB',
// username: 'user_1',
// email: 'user1@example.com',
// phone: '+998901112233',
// data: [
// { name: 'Имя', value: 'User One' },
// { name: 'Телефон', value: '+998901112233' }
// ],
// products: [
// {
// name: 'T-Shirt Basic',
// price: 20000,
// count: 1,
// image: 'https://example.com/images/tshirt-basic.jpg'
// },
// {
// name: 'Cap Black',
// price: 30000,
// count: 1,
// image: 'https://example.com/images/cap-black.jpg'
// }
// ]
// });
// await sendEvent({
// event: 'cfsdfsfds',
// data: [
// { name: 'Имя', value: 'Ruslan Garapov' },
// { name: 'Телефон', value: '+998888214888' }
// ]
// });
| HTTP kod | message | Sabab | Nima qilish kerak |
|---|---|---|---|
| 401 | API key missing / Invalid API key | API key yo'q, noto'g'ri yoki nofaol. | X-API-KEY header va kalit holatini tekshiring. |
| 403 | Invalid Origin header / Domain not allowed | Origin yo'q yoki domen loyiha bilan bog'lanmagan. | Domenni loyihaga qo'shing va faollashtiring. |
| 401 | Invalid event key / Event is not active | Event key noto'g'ri yoki event o'chirilgan. | event maydoni va event holatini tekshiring. |
| 422 | Validation error / Invalid data payload | So'rov strukturasi noto'g'ri. | Payloadni jadvaldagi maydonlar bilan tekshiring. |
| 404 | Order not found | Bu external_id qiymatli buyurtma API key bog'langan loyihada mavjud emas. | external_id qiymatini tekshiring va shu loyiha kalitidan foydalanayotganingizga ishonch hosil qiling. |
| 402 | Monthly order limit reached for this account. | Joriy tarif uchun oy limitiga yetilgan. | Tarifni yangilang yoki keyingi davrni kuting. |