Klinikalar uchun API va vebhuklar | Dentum
Dentum

API va integratsiyalar

Uchta yoʻl: kodsiz — filial Telegram-chati va kalendar; dasturchilar uchun — REST API va vebhuklar.

Telegram-chat

Yozuvlar «Tasdiqlash» tugmasi bilan qabulxona chatiga keladi. Kabinet → «Yozuvlar haqida xabarlar».

Kalendar (ICS)

Barcha yozuvlar Google yoki Apple kalendarida obuna orqali. Kabinet → «Kalendar».

REST API va vebhuklar

Har bir yozuv haqida xabar, statuslar, CRM dan bandlik. Pastda.

Kalit

Kabinet → «Integratsiyalar» → «Kalit yaratish». Kalit bir marta koʻrsatiladi; uni serverda saqlang. Har bir soʻrovda sarlavha: Authorization: Bearer dk_live_… Chegara — daqiqasiga 120 soʻrov.

https://dentum.uz/api/cabinet/v1

Endpointlar

GET/clinicFilial, jadval, onlayn yozilish holati
GET/bookings?since=2026-10-01T00:00:00Z&limit=100since dan keyin oʻzgargan yozuvlar (kursor: next_since)
GET/bookings/D-261001-K3F7Raqam boʻyicha yozuv
POST/bookings/D-261001-K3F7/statusStatus: confirmed, declined, arrived, paid, noshow
PUT/busyCRM bandligi: oyna toʻliq almashtiriladi (idempotent)
GET/busy?from=2026-10-01&to=2026-10-14Saqlangan bandlik
curl https://dentum.uz/api/cabinet/v1/bookings?since=2026-10-01T00:00:00Z \
  -H "Authorization: Bearer dk_live_…"

curl -X POST https://dentum.uz/api/cabinet/v1/bookings/D-261001-K3F7/status \
  -H "Authorization: Bearer dk_live_…" -H "Content-Type: application/json" \
  -d '{"status":"confirmed"}'

curl -X PUT https://dentum.uz/api/cabinet/v1/busy \
  -H "Authorization: Bearer dk_live_…" -H "Content-Type: application/json" \
  -d '{"from":"2026-10-03T00:00:00+05:00","to":"2026-10-17T00:00:00+05:00","source":"my-crm",
       "blocks":[{"start":"2026-10-03T15:00:00+05:00","end":"2026-10-03T16:30:00+05:00","id":"visit-881"}]}'

Yozuv obyekti

Vaqt — Toshkent boʻyicha (+05:00). Bemor maʼlumotlari faqat sizning klinikangizga yozilishni qayta ishlash uchun.

{
  "ref": "D-261001-K3F7",
  "status": "requested",
  "service": "Имплантация",
  "source": "web",
  "created_at": "2026-10-01T09:12:44.120Z",
  "updated_at": "2026-10-01T09:12:44.120Z",
  "slot": { "start": "2026-10-03T10:00:00+05:00", "preference": null, "timezone": "Asia/Tashkent" },
  "patient": { "name": "Азиз", "phone": "+998901234567", "telegram_linked": true }
}

Ikki marta yozilishsiz

CRM band vaqtni PUT /v1/busy orqali yuborsa, Dentum uni bemorlarga va AI-agentlarga taklif qilmaydi. Har 5–15 daqiqada oynani (masalan, keyingi 14 kun) yuboring.

Vebhuklar

Kabinetda https-manzilni kiriting — sir (whsec_…) bir marta koʻrsatiladi. Hodisalar: booking.created, booking.updated (previous_status bilan), ping. 8 soniya ichida 2xx bilan javob bering; aks holda takrorlaymiz: 1 daq, 5 daq, 30 daq, 2 s, 6 s, 12 s (jami 7 urinish). Imzoni albatta tekshiring:

Dentum-Signature: t=<unix>,v1=<hex> — HMAC-SHA256(sir, t + "." + soʻrov tanasi). 5 daqiqadan eski t ni rad eting.

import { createHmac, timingSafeEqual } from 'node:crypto';

// raw — тело запроса строкой, как пришло (до JSON.parse)
export function verifyDentum(raw, header, secret) {
  const m = /^t=(\d+),v1=([0-9a-f]{64})$/.exec(header || '');
  if (!m || Math.abs(Date.now() / 1000 - Number(m[1])) > 300) return false;
  const want = createHmac('sha256', secret).update(m[1] + '.' + raw).digest();
  const got = Buffer.from(m[2], 'hex');
  return got.length === want.length && timingSafeEqual(got, want);
}
function verify_dentum(string $raw, string $header, string $secret): bool {
  if (!preg_match('/^t=(\d+),v1=([0-9a-f]{64})$/', $header, $m)) return false;
  if (abs(time() - (int)$m[1]) > 300) return false;
  return hash_equals(hash_hmac('sha256', $m[1] . '.' . $raw, $secret), $m[2]);
}

Kalendar (ICS)

Kabinet → «Kalendar» havolasi. Google Calendar: «Boshqa kalendarlar» → «+» → «URL orqali». Apple: «Fayl» → «Yangi kalendar obunasi». Google obunalarni bir necha soatda yangilaydi — tezkor xabarlar uchun Telegram-chatdan foydalaning. Kalendarda telefon yashirilgan (toʻliq raqam — kabinetda).

Spetsifikatsiya

OpenAPI 3.1: /openapi-clinic.json

Savollar: info@dentum.uz yoki @dentumcrmbot. AI-agentlar uchun alohida API — AI-agentlar uchun.

Stomatologga yozilish

1-qadam / 2 · xizmat va vaqt

Xizmat
Klinika
Kun
Vaqt

Bepul · ariza raqami darhol · Telefon orqali qulayroqmi? +998 91 787 00 08 (du–sh 9:00–19:00)