REST API va webhooklar
Saytingiz, 1C, Telegram bot yoki boshqa dasturni Sklat bilan ulash uchun. Sozlamalar → API va webhooklar. Biznes va Korporativ tariflarda.
Token
- Token yaratish → nomi va ruxsat: Faqat o'qish yoki O'qish va yozish.
- Token (
sk_live_…) faqat bir marta ko'rsatiladi — nusxalab, xavfsiz joyda saqlang. - Kerak bo'lmasa — Bekor qilish: u bilan ishlovchi dastur darhol to'xtaydi.
Token uni yaratgan xodim nomidan ishlaydi va uning huquqlaridan ko'p ruxsat ololmaydi.
So'rovlar
Manzil: https://api.sklat.uz/api/v1. Har bir so'rovda sarlavha:
bash
curl https://api.sklat.uz/api/v1/products?search=un \
-H "Authorization: Bearer sk_live_..."| Usul | Yo'l | Nima |
|---|---|---|
| GET | /products?search=&folderId=&limit=&offset=&stockStoreId=all | Tovarlar (qoldiq bilan) |
| GET / POST / PUT | /products/{id}, /products | Tovar o'qish, yaratish, o'zgartirish |
| GET | /products/by-barcode/{shtrixkod} | Shtrix-kod bo'yicha tovar |
| GET / POST / PUT | /counterparties, /counterparties/{id} | Kontragentlar |
| GET | /documents?type=demand&limit=&offset= | Hujjatlar ro'yxati |
| GET / POST / PUT | /documents/{id}, /documents | Hujjat o'qish, yaratish ("post": true — o'tkazish bilan) |
| POST | /documents/{id}/post, /documents/{id}/unpost | O'tkazish / bekor qilish |
| GET | /reports/stock?storeId= | Qoldiqlar |
| GET | /stores, /uoms, /price-types, /organizations | Ma'lumotnomalar |
- Ro'yxatlar:
{ "rows": [...], "meta": { "size", "limit", "offset" } };limit— standart 100, ko'pi bilan 1000. - Pul summalari tiyinda (butun son): 12 500 so'm =
1250000. Miqdor — satr:"2.5". - Xatolar:
{ "errors": [{ "code", "message", "field" }] }— 401 token noto'g'ri, 403 ruxsat yo'q, 422 ma'lumot xato, 409 qoldiq yetmaydi, 429 juda ko'p so'rov. - Cheklov: bir token uchun daqiqasiga 600 so'rov.
Hujjat yaratish misoli (jo'natish, o'tkazish bilan):
bash
curl -X POST https://api.sklat.uz/api/v1/documents \
-H "Authorization: Bearer sk_live_..." -H "Content-Type: application/json" \
-d '{"type":"demand","storeId":"…","counterpartyId":"…","post":true,
"positions":[{"productId":"…","qty":"2","price":1500000}]}'Webhooklar
Sklat o'zgarish bo'lganda sizning manzilingizga POST yuboradi: hujjat yaratildi / o'zgardi / o'tkazildi / bekor qilindi / o'chirildi, tovar va kontragent yaratildi / o'zgardi.
json
{ "event": "document.posted", "occurredAt": "2026-10-13T09:00:00.000Z", "data": { "type": "document", "id": "…" } }Xabarda faqat nima o'zgargani bor — to'liq ma'lumotni API orqali oling (GET /documents/{id}).
- Javobingiz 2xx bo'lsa — yetkazildi. Aks holda qayta urinish: 1 daq, 5 daq, 30 daq, 2 soat, 12 soatdan keyin; keyin "Xato".
- Jurnal tugmasi oxirgi 50 ta xabar holatini ko'rsatadi; Sinov xabari —
ping. - Manzil ichki tarmoqqa (localhost, 192.168.x.x…) qaray olmaydi.
Imzoni tekshirish
Har bir xabarda X-Sklat-Signature: t=<vaqt>,v1=<imzo>. Imzo = HMAC-SHA256(secret, "<vaqt>.<so'rov tanasi>"):
js
import { createHmac, timingSafeEqual } from 'node:crypto';
function verify(rawBody, header, secret) {
const [, t, v1] = header.match(/^t=(\d+),v1=([0-9a-f]+)$/);
if (Math.abs(Date.now() / 1000 - Number(t)) > 300) return false; // 5 daqiqadan eski
const expected = createHmac('sha256', secret).update(`${t}.${rawBody}`).digest('hex');
return timingSafeEqual(Buffer.from(expected), Buffer.from(v1));
}