URLY.UZ

Integratsiyalar

URLY.UZ ni REST API, imzolangan vebxuklar, MCP, Telegram boti va brauzer kengaytmasi orqali Zapier, Make, n8n hamda oʻz tizimlaringizga ulang.

OpenAPI spetsifikatsiyasini yuklab olish API

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.

Hodisalar
HodisaVazifasi
link.createdhavola yaratildi
link.updatedhavola oʻzgartirildi
link.deletedhavola savatga oʻtkazildi
clicks.hourlyoʻtishlar soatlik jamlanmasi
link.clickedhar bir oʻtish (Business)
domain.verifieddomen tasdiqlandi
subscription.changedtarif 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:

  1. «Webhooks → Custom webhook» moduli yarating va uning manzilidan nusxa oling.
  2. Manzilni URLY kabinetidagi Vebxuklar boʻlimida qoʻshing va hodisalarni tanlang.
  3. Harakatlar uchun «HTTP → Make a request» modulida Authorization: Bearer sarlavhasi bilan URLY API ni chaqiring.

n8n

n8n da:

  1. «Webhook» trigger tugunini qoʻshing (POST) va production manzilini URLY ga vebxuk sifatida kiriting.
  2. Imzoni «Code» tugunida yuqoridagi Node.js misoli bilan tekshiring (Webhook tugunida «Raw body» ni yoqing).
  3. 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.