Skip to content

REST API va webhooklar ​

Saytingiz, 1C, Telegram bot yoki boshqa dasturni Sklat bilan ulash uchun. Sozlamalar → API va webhooklar. Biznes va Korporativ tariflarda.

Token ​

  1. Token yaratish → nomi va ruxsat: Faqat o'qish yoki O'qish va yozish.
  2. Token (sk_live_…) faqat bir marta ko'rsatiladi — nusxalab, xavfsiz joyda saqlang.
  3. 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_..."
UsulYo'lNima
GET/products?search=&folderId=&limit=&offset=&stockStoreId=allTovarlar (qoldiq bilan)
GET / POST / PUT/products/{id}, /productsTovar 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}, /documentsHujjat o'qish, yaratish ("post": true — o'tkazish bilan)
POST/documents/{id}/post, /documents/{id}/unpostO'tkazish / bekor qilish
GET/reports/stock?storeId=Qoldiqlar
GET/stores, /uoms, /price-types, /organizationsMa'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));
}