Integratsiyalar
URLY.UZ ni REST API, imzolangan vebxuklar, MCP, Telegram boti va brauzer kengaytmasi orqali Zapier, Make, n8n hamda oʻz tizimlaringizga ulang.
Autentifikatsiya
Barcha soʻrovlar API kalit bilan yuboriladi (kabinet → API kalitlar). Kalitga faqat kerakli huquqlarni bering, masalan vebxuklar uchun webhooks:write.
Authorization: Bearer urly_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Vebxuklar
Vebxuk manzilini kabinetda yoki POST /api/v1/webhooks orqali qoʻshing. URLY har bir hodisani JSON koʻrinishida POST soʻrovi bilan yuboradi; urly-webhook-id sarlavhasi takroriy yetkazishlarda oʻzgarmaydi, shuning uchun uni takrorlarni aniqlash uchun ishlating.
| Hodisa | Vazifasi |
|---|---|
link.created | havola yaratildi |
link.updated | havola oʻzgartirildi |
link.deleted | havola savatga oʻtkazildi |
clicks.hourly | oʻtishlar soatlik jamlanmasi |
link.clicked | har bir oʻtish (Business) |
domain.verified | domen tasdiqlandi |
subscription.changed | tarif yoki obuna oʻzgardi |
curl -s https://urly.uz/api/v1/webhooks \
-H "Authorization: Bearer $URLY_API_KEY" -H "Content-Type: application/json" \
-d '{"url":"https://hooks.example.uz/urly","events":["link.created","clicks.hourly"]}'
Imzoni tekshirish
urly-signature sarlavhasi t=<vaqt>,v1=<imzo> koʻrinishida. Imzo — sirli kalit bilan hisoblangan HMAC-SHA256("<vaqt>.<soʻrov tanasi>"). Kalit almashtirilgandan keyin 24 soat davomida ikkita v1 qiymat keladi. 5 daqiqadan eski soʻrovlarni rad eting.
// Node.js
const crypto = require("crypto");
function verify(rawBody, header, secret) {
const items = header.split(",").map((kv) => kv.split("="));
const t = Number(items.find(([k]) => k === "t")[1]);
const want = crypto.createHmac("sha256", secret).update(`${t}.${rawBody}`).digest("hex");
const fresh = Math.abs(Date.now() / 1000 - t) < 300;
return fresh && items.some(([k, v]) => k === "v1" && v.length === want.length &&
crypto.timingSafeEqual(Buffer.from(v), Buffer.from(want)));
}
# Python
import hashlib, hmac, time
def verify(raw_body: bytes, header: str, secret: str) -> bool:
items = [kv.split("=", 1) for kv in header.split(",")]
t = int(next(v for k, v in items if k == "t"))
want = hmac.new(secret.encode(), f"{t}.".encode() + raw_body, hashlib.sha256).hexdigest()
return abs(time.time() - t) < 300 and any(
k == "v1" and hmac.compare_digest(v, want) for k, v in items)
2xx boʻlmagan javobda URLY 30 soniyadan 12 soatgacha boʻlgan oraliqlarda 9 martagacha qayta urinadi. Ketma-ket muvaffaqiyatsizliklardan yoki 410 javobidan soʻng manzil oʻchiriladi.
Zapier
Zapier da URLY ni Webhooks by Zapier va API Request harakatlari bilan ulash mumkin:
- Trigger: «Catch Hook» manzilini URLY da vebxuk sifatida qoʻshing (REST hook: POST /api/v1/webhooks bilan obuna, DELETE /api/v1/webhooks/{id} bilan bekor qilish).
- Harakat: POST /api/v1/links — qisqa havola yaratish; javobda short_url maydoni bor.
- Soʻrov orqali trigger: GET /api/v1/links?limit=25 eng yangi havolalarni qaytaradi (id boʻyicha takrorlarni olib tashlang).
Make
Make da:
- «Webhooks → Custom webhook» moduli yarating va uning manzilidan nusxa oling.
- Manzilni URLY kabinetidagi Vebxuklar boʻlimida qoʻshing va hodisalarni tanlang.
- Harakatlar uchun «HTTP → Make a request» modulida Authorization: Bearer sarlavhasi bilan URLY API ni chaqiring.
n8n
n8n da:
- «Webhook» trigger tugunini qoʻshing (POST) va production manzilini URLY ga vebxuk sifatida kiriting.
- Imzoni «Code» tugunida yuqoridagi Node.js misoli bilan tekshiring (Webhook tugunida «Raw body» ni yoqing).
- Harakatlar uchun «HTTP Request» tugunida Header Auth (Authorization: Bearer …) dan foydalaning.
MCP
AI yordamchilar (Claude, IDE va boshqa MCP mijozlari) Streamable HTTP orqali /api/v1/mcp ga API kalit bilan ulanadi.
{
"mcpServers": {
"urly": {
"type": "http",
"url": "https://urly.uz/api/v1/mcp",
"headers": { "Authorization": "Bearer ${URLY_API_KEY}" }
}
}
}
Vositalar: create_link, list_links, get_link_stats, create_qr. Ular kalit huquqlariga boʻysunadi.
Telegram
Kabinetda Sozlamalar → Telegram boʻlimida botni ulang: havolalarni chatda qisqartiring, statistika va QR kodlarni oling.
Brauzer kengaytmasi
Chrome va Firefox uchun kengaytma joriy sahifani bir tugma bilan qisqartiradi, natijani nusxalaydi va QR kodni koʻrsatadi. U faqat siz kiritgan API kalitdan foydalanadi va tashqi kod yuklamaydi.